From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 2/3] drm/i915: Return immediately if trylock fails for direct-reclaim Date: Tue, 13 Nov 2018 10:24:43 +0000 Message-ID: <409ac4f0-e925-8d21-8b47-604b6b6b9d76@linux.intel.com> References: <20181108081740.25615-1-chris@chris-wilson.co.uk> <20181108081740.25615-2-chris@chris-wilson.co.uk> <892ae58f-33ed-b468-fe7c-bd655f8567d4@linux.intel.com> <154169568572.30559.8677186074374608822@skylake-alporthouse-com> <154176386252.30559.14154050634192265445@skylake-alporthouse-com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id BA3AF6E34B for ; Tue, 13 Nov 2018 10:24:46 +0000 (UTC) In-Reply-To: <154176386252.30559.14154050634192265445@skylake-alporthouse-com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA5LzExLzIwMTggMTE6NDQsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE4LTExLTA5IDA3OjMwOjM0KQo+Pgo+PiBPbiAwOC8xMS8yMDE4IDE2OjQ4 LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4+PiBRdW90aW5nIFR2cnRrbyBVcnN1bGluICgyMDE4LTEx LTA4IDE2OjIzOjA4KQo+Pj4+Cj4+Pj4gT24gMDgvMTEvMjAxOCAwODoxNywgQ2hyaXMgV2lsc29u IHdyb3RlOgo+Pj4+PiBJZ25vcmUgdHJ5aW5nIHRvIHNocmluayBmcm9tIGk5MTUgaWYgd2UgZmFp bCB0byBhY3F1aXJlIHRoZSBzdHJ1Y3RfbXV0ZXgKPj4+Pj4gaW4gdGhlIHNocmlua2VyIHdoaWxl IHBlcmZvcm1pbmcgZGlyZWN0LXJlY2xhaW0uIFRoZSB0cmFkZS1vZmYgYmVpbmcKPj4+Pj4gKG11 Y2gpIGxvd2VyIGxhdGVuY3kgZm9yIG5vbi1pOTE1IGNsaWVudHMgYXQgYW4gaW5jcmVhc2VkIHJp c2sgb2YgYmVpbmcKPj4+Pj4gdW5hYmxlIHRvIG9idGFpbiBhIHBhZ2UgZnJvbSBkaXJlY3QtcmVj bGFpbSB3aXRob3V0IGhpdHRpbmcgdGhlCj4+Pj4+IG9vbS1ub3RpZmllci4gVGhlIHByb3Zpc28g YmVpbmcgdGhhdCB3ZSBzdGlsbCBrZWVwIHRyeWluZyB0byBoYXJkCj4+Pj4+IG9idGFpbiB0aGUg bG9jayBmb3Igb29tIHNvIHRoYXQgd2UgY2FuIHJlYXAgdW5kZXIgaGVhdnkgbWVtb3J5IHByZXNz dXJlLgo+Pj4+Pgo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlz LXdpbHNvbi5jby51az4KPj4+Pj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBp bnRlbC5jb20+Cj4+Pj4+IC0tLQo+Pj4+PiAgICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fc2hyaW5rZXIuYyB8IDI0ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+Pj4+PiAgICAgMSBm aWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQo+Pj4+Pgo+Pj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKPj4+Pj4gaW5kZXggZWE5 MGQzYTBkNTExLi5kNDYxZjQ1OGY0YWYgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKPj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fc2hyaW5rZXIuYwo+Pj4+PiBAQCAtMzYsNyArMzYsOSBAQAo+Pj4+PiAgICAg I2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4+Pj4+ICAgICAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgo+ Pj4+PiAgICAgCj4+Pj4+IC1zdGF0aWMgYm9vbCBzaHJpbmtlcl9sb2NrKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LCBib29sICp1bmxvY2spCj4+Pj4+ICtzdGF0aWMgYm9vbCBzaHJpbmtl cl9sb2NrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+Pj4+PiArICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIGJvb2wgKnVubG9jaykKPj4+Pj4gICAgIHsKPj4+Pj4gICAgICAgICBzd2l0Y2ggKG11dGV4 X3RyeWxvY2tfcmVjdXJzaXZlKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KSkgewo+Pj4+PiAgICAg ICAgIGNhc2UgTVVURVhfVFJZTE9DS19SRUNVUlNJVkU6Cj4+Pj4+IEBAIC00NSwxNSArNDcsMTEg QEAgc3RhdGljIGJvb2wgc2hyaW5rZXJfbG9jayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwgYm9vbCAqdW5sb2NrKQo+Pj4+PiAgICAgCj4+Pj4+ICAgICAgICAgY2FzZSBNVVRFWF9UUllM T0NLX0ZBSUxFRDoKPj4+Pj4gICAgICAgICAgICAgICAgICp1bmxvY2sgPSBmYWxzZTsKPj4+Pj4g LSAgICAgICAgICAgICBwcmVlbXB0X2Rpc2FibGUoKTsKPj4+Pj4gLSAgICAgICAgICAgICBkbyB7 Cj4+Pj4+IC0gICAgICAgICAgICAgICAgICAgICBjcHVfcmVsYXgoKTsKPj4+Pj4gLSAgICAgICAg ICAgICAgICAgICAgIGlmIChtdXRleF90cnlsb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KSkg ewo+Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdW5sb2NrID0gdHJ1ZTsKPj4+ Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4+IC0gICAgICAgICAg ICAgICAgICAgICB9Cj4+Pj4+IC0gICAgICAgICAgICAgfSB3aGlsZSAoIW5lZWRfcmVzY2hlZCgp KTsKPj4+Pj4gLSAgICAgICAgICAgICBwcmVlbXB0X2VuYWJsZSgpOwo+Pj4+PiArICAgICAgICAg ICAgIGlmIChmbGFncyAmIEk5MTVfU0hSSU5LX0FDVElWRSkgewo+Pj4+Cj4+Pj4gU28gdW50aWwg STkxNV9TSFJJTktfQUNUSVZFLCB3aGljaCBpcyB0aGUgbGFzdCBkaXRjaCBhdHRlbXB0IHRvIHNo cmluawo+Pj4+IGluIHRoZSBub3JtYWwgY2FzZSAoZGlyZWN0IHJlY2xhaW0/KSBvciBvb20sIHdl IGJhaWwgb3V0IG9uIHRoZSBmaXJzdAo+Pj4+IHNpZ24gb2Ygc3RydWN0IG11dGV4IGNvbnRlbnRp b24uIERvZXNuJ3QgdGhpcyBtYWtlIG91ciBzaHJpbmtlciBtdWNoCj4+Pj4gbGVzcyBlZmZlY3Rp dmUgYXQgcnVudGltZSBhbmQgd2h5IGlzIHRoYXQgT0s/Cj4+Pgo+Pj4gQXMgSSBzYWlkLCBpdCdz IGEgdHJhZGVvZmYgYmV0d2VlbiBibG9ja2luZyBvdGhlcnMgZm9yIF9zZXZlcmFsXwo+Pj4gX3Nl Y29uZHNfIGFuZCBtYWtpbmcgbm8gcHJvZ3Jlc3MgYW5kIHJldHVybmluZyBpbW1lZGlhdGVseSBh bmQgbWFraW5nIG5vCj4+PiBwcm9ncmVzcy4gTXkgYXJndW1lbnQgaXMgYWxvbmcgdGhlIGxpbmVz IG9mIGlmIGRpcmVjdC1yZWNsYWltIGlzIHJ1bm5pbmcKPj4+IGluIGFub3RoZXIgcHJvY2VzcyBh bmQgc29tZXRoaW5nIGVsc2UgaXMgZW5nYWdlZCBpbiB0aGUgZHJpdmVyIGhvcGVmdWxseQo+Pj4g dGhlIGRyaXZlciB3aWxsIGJlIGNsZWFuaW5nIHVwIGFzIGl0IGdvZXMgYWxvbmcgb3IgZWxzZSB3 aGF0IHJlbWFpbnMgaXMKPj4+IGFjdGl2ZSBhbmQgd29uJ3QgYmUgcmVhcGVkIGFueXdheS4gSWYg ZGlyZWN0IHJlY2xhaW0gaXMgZmFpbGluZywgdGhlCj4+PiBkZWxheSBiZWZvcmUgdHJ5aW5nIHRo ZSBvb20gcGF0aCBpcyBpbnNpZ25pZmljYW50Lgo+Pgo+PiBXaGF0IHdhcyB0aGUgcmF0aW9uYWxl IGJlaGluZCBidXN5IGxvb3BpbmcgdGhlcmUgYnR3Pwo+IAo+IEVtdWxhdGluZyB0aGUgb3B0aW1p c3RpYyBzcGluIGZvciBtdXRleCAobXkgcGF0Y2hlcyB0byBleHBvc2UgaXQgZnJvbQo+IGtlcm5l bC9sb2NraW5nIHdlcmUga2VwdCBoaWRkZW4gZm9yIHB1YmxpYyBkZWNlbmN5KS4gTXkgdGhpbmtp bmcgd2FzIHRoZQo+IGV4YWN0IG9wcG9zaXRlIHRvIHRoaXMgcGF0Y2gsIHRoYXQgZGlyZWN0IHJl Y2xhaW0gd2FzIG9mIHBhcmFtb3VudAo+IGltcG9ydGFuY2UgYW5kIHNwZW5kaW5nIHRoZSB0aW1l IHRvIHRyeSBhbmQgZW5zdXJlIHdlIGdyYWJiZWQgdGhlCj4gc3RydWN0X211dGV4IHRvIHNlYXJj aCBmb3Igc29tZSBwYWdlcyB0byBmcmVlIHdhcyBwcmVmZXJhYmxlLgo+IAo+IEl0J3MganVzdCBv biB0aGUgYmFzaXMgb2YgbG9va2luZyBhdCB0aGUgYWN0dWFsIHN5c2xhdGVuY3kgYW5kIHJlYWxp c2luZwo+IHRoZSBjYXVzZSBpcyB0aGlzIHNwaW5uZXIsIEkgd2FudCB0byBzd2luZyB0aGUgYXhl IGluIG90aGVyIGRpcmVjdGlvbi4KPiAKPiAoVGhlcmUncyBwcm9iYWJseSBhIGNvbXByb21pc2Us IGJ1dCBob25lc3RseSBJJ2QgcHJlZmVyIHRvIHNlbGwgdGhlCj4gc3RydWN0X211dGV4IGZyZWUg dmVyc2lvbiBvZiB0aGUgc2hyaW5rZXIgZmlyc3QgOikKPiAKPj4gQ29tcGFyZWQgdG8KPj4gcGVy aGFwcyBhbiBhbHRlcm5hdGl2ZSBvZiBtaWNyby1zbGVlcHMgYW5kIHRyeWluZyBhIGZldyB0aW1l cz8gSSBrbm93IGl0Cj4+IHdvdWxkIGJlIG9wcG9zaXRlIGZyb20gd2hhdCB0aGlzIHBhdGNoIGlz IHRyeWluZyB0byBhY2hpZXZlLCBJIEp1c3QKPj4gZG9uJ3QgaGFkIGEgZ29vZCBqdWRnbWVudCBv biB3aGF0IG1ha2VzIG1vc3Qgc2Vuc2UgZm9yIHRoZSBzaHJpbmtlci4gSXMKPj4gaXQgYmV0dGVy IHRvIHBlcmhhcHMgdHJ5IGEgbGl0dGxlIGJpdCBoYXJkZXIgaW5zdGVhZCBvZiBnaXZpbmcgdXAK Pj4gaW1tZWRpYXRlbHksIGJ1dCB0cnkgYSBsaXR0bGUgYml0IGhhcmRlciBpbiBhIHNvZnRlciB3 YXk/IE9yIHRoYXQgZW5kcwo+PiB1cCBibG9ja2luZyB0aGUgY2FsbGVycyBhbmQgaGFzIHRoZSBz YW1lIGVmZmVjdCBvZiBtYWtpbmcgbm8gcHJvZ3Jlc3M/Cj4gCj4gRXhhY3RseS4gV2UgY2FuIGRl ZmluaXRlbHkgbWVhc3VyZSB0aGUgaW1wYWN0IG9mIHRoZSBzcGlubmVyIG9uCj4gdW5yZWxhdGVk IHByb2Nlc3NlcywgYnV0IGRldGVjdGluZyB0aGUgcHJlbWF0dXJlIGFsbG9jYXRpb24gZmFpbHVy ZSBpcwo+IGhhcmRlciAod2Ugd2FpdCBmb3IgbW9yZSBkbWVzZy13YXJucykuIFRoZSBjb21wcm9t aXNlIHRoYXQgSSd2ZSB0cmllZCB0bwo+IHJlYWNoIGhlcmUgaXMgdGhhdCBpZiBkaXJlY3QtcmVj bGFpbSBpc24ndCBlbm91Z2gsIHRoZW4gd2Ugc2hvdWxkIHN0aWxsCj4gdHJ5IGhhcmQgdG8gZ3Jh YiB0aGUgc3RydWN0X211dGV4LiAoVGhhdCBsZWF2ZXMgX19HRlBfUkVUUllfTUFZRkFJTAo+IHZ1 bG5lcmFibGUgdG8gbm90IHNocmlua2luZyBpOTE1LCBidXQgYSB3b3J0aHdoaWxlIGNvbXByb21p c2UgYXMgaXQncwo+IGFsbG93ZWQgdG8gZmFpbD8pCj4gCj4+Pj4gT3IgaW4gb3RoZXIgd29yZHMs IGZvciB3aGF0IHVzZSBjYXNlcywgdGVzdHMgb3IgYmVuY2htYXJrIHdhcyB0aGUKPj4+PiBleGlz dGluZyBhcHByb2FjaCBvZiBidXN5IGxvb3BpbmcgYSBwcm9ibGVtPwo+Pj4KPj4+IERvIHNvbWV0 aGluZyBsaWtlICdmaW5kIC8gLWV4ZWMgY2F0JyB3aGlsZSBydW5uaW5nIGk5MTUgYW5kIHNlZSBo b3cgbG9uZwo+Pj4geW91IGhhdmUgdG8gd2FpdCBmb3IgYSBraHVuZ3Rhc2tkIDp8Cj4+Cj4+IEkg Y291bGRuJ3QgcmVwcm9kdWNlIGFueXRoaW5nIHN0cmFuZ2Ugd2l0aCB0aGlzLiBBc3N1bWluZyB5 b3UgbWVhbnQKPj4gc29tZXRoaW5nIGxpa2UgLWV4ZWMgY2F0IHsgfSBcOyA+ZGV2L251bGwuCj4+ Cj4+IEVpdGhlciBjYXNlIEkgdGhpbmsgZXhwbGFuYXRpb25zIGxpa2UgdGhpcyBzaG91bGQgZ28g aW50byB0aGUgY29tbWl0Cj4+IG1lc3NhZ2UuCj4gCj4gV2VpcmQsIEkgc3BlbnQgc28gbG9uZyBv dmVyIHRoZSBsYXN0IGZldyB3ZWVrcyB0YWxraW5nIGFib3V0IHRoZSBpbXBhY3QKPiBvbiBnZW1f c3lzbGF0ZW5jeSwgSSB0aG91Z2h0IGl0IHdhcyBtZW50aW9uZWQgaGVyZS4KPiAKPj4+IGdlbV9z eXNsYXRlbmN5IHJlcG9ydHMgbWF4IGxhdGVuY2llcyBvZiBvdmVyIDYwMHMsIGFuZCBJJ20gc3Vy ZSBpdCdzCj4+PiBwcmV0dHkgbXVjaCB1bmJvdW5kZWQuIEl0J3MgYmFkIGVub3VnaCB0aGF0IEkg ZXhwZWN0IHdlIGFyZSB0aGUgY2F1c2Ugb2YKPj4+IHNpZ25pZmljYW50IGhpdGNoaW5nIChtYWlu bHkgaW4gb3RoZXIgdGFza3MpIG9uIHRoZSBkZXNrdG9wIHJ1bm5pbmcgYXQKPj4+IG1lbW9yeSBj YXBhY2l0eS4KPj4KPj4gUnVubmluZyBnZW1fc3lzbGF0ZW5jeSBpbiBwYXJhbGxlbCB0byB0aGUg ZmluZCwgb3IgZ2VtX3N5c2xhdGVuY3kgLWIgaW4KPj4gcGFyYWxsZWwgb3Igbm90IGRpZCBub3Qg ZG8gYW55dGhpbmcuCj4gCj4gZ2VtX3N5c2xhdGVuY3kgLWIgLW0KPiAKPiArLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKwo+IHwgICAgICB4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8Cj4gfCAgICAgIHggICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiAuCj4gLgo+IC4K PiB8ICAgICAgeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfAo+IHwgICAgICB4IHh4eCAgICAgIHh4IHggICAgICAgICAgIHgg IHggICAgICB4ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh8Cj4gfHxfX19fX01fQV9fX19f X198ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwKPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ICAgICAgTiAgICAgICAgICAgTWluICAgICAgICAgICBN YXggICAgICAgIE1lZGlhbiAgICAgICAgICAgQXZnICAgICAgICBTdGRkZXYKPiB4IDEyMCAgICAg ICAyMjg0OTI4ICA2Ljc1MjA4NWUrMDggICAgICAgMzM4NTA5NyAgICAgIDIwODI1MzYyICAgICAg ODAzNTI2NDUKPiAKPiBVbnBhdGNoZWQsIGFuZCBzaW1pbGFyIGhhdmUgYmVlbiBvYnNlcnZlZCBv biBpdmIvYnl0L2Jkdy9ic3cvc2tsL2tibCBhbmQKPiB3aGlsZSB3ZSB3ZXJlIGZpZ2h0aW5nIGtz b2Z0aXJxZC4gNjc1cyBtYXhpbXVtIGxhdGVuY3kgZm9yIGEgUlQgdGhyZWFkIHRvIHdha2UgdXAu Cj4gCj4gUGF0Y2hlZCwgbWF4IGlzIGFyb3VuZCAyNjFtcyBhbmQgb3JkZXIgb2YgbWFnbml0dWRl IGJldHRlciB0aGFuIHRoZSBiZXN0Cj4gcHJldmlvdXNseSEKClllcyBJIGhhdmUgcmVwcm9kdWNl ZCB0aGUgfjIweCBiZXR0ZXIgbWF4IGxhdGVuY3kgbXlzZWxmLiBNZWFuIGxhdGVuY3kgCnN0YXlz IHJvdWdobHkgdGhlIHNhbWUgYnV0IGhhcyBsZXNzIHZhcmlhbmNlLiBGcm9tIHRoYXQgcG9pbnQg b2YgdmlldyAKdGhpcyBpcyB2ZXJ5IGdvb2QuCgo+IAo+PiBUaGVuIEkgdHJpZXMgZ2VtX3Nocmlu ayBidXQgdGhhdCBkb2Vzbid0IHNlZW0gdG8gYmUgbWFraW5nIGFueSBwcm9ncmVzcwo+PiB3aXRo IG9yIHdpdGhvdXQgdGhlIHBhdGNoLiBCdXQgaXQncyBub3QgZXZlbiBoaXR0aW5nIHRoZSBpOTE1 IGhhcmQsIGJ1dAo+PiBwZXJoYXBzIEkgbmVlZCB0byB0dXJuIG9mZiBsb2NrZGVwLi4gV2hpY2gg d291bGQgYmUgYSBidW1tZXIgc2luY2UgSQo+PiB3YW50ZWQgdG8gaGF2ZSBhIGxvY2tkZXAgdG8g Y2hlY2sgdGhlIG5leHQgYml0Li4KPiAKPiBnZW1fc2hyaW5rIG5ldmVyIGhhcyBjb21wbGV0ZWQu Li4gSXQncyBub3QgcXVpdGUgdGhlIHJpZ2h0IHRlc3QgZm9yIHRoaXMKPiBhcyB3ZSBuZWVkIHRv IGhpdCB0aGUgc2hyaW5rZXIgJiBvb20gb24gYm90aCBpOTE1IGFuZCBub24taTkxNSBwYXRocyB0 bwo+IHRyeSBhbmQgaGl0IGFsbCB0aGUgZGlmZmVyZW50IGxvY2sgY2hhaW5zLgoKT2suIDopCgo+ IAo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgbXV0ZXhfbG9ja19uZXN0ZWQoJmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgsCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJOTE1X01NX1NIUklOS0VSKTsKPj4+Pgo+Pj4+IF9uZXN0ZWQgaXMgbmVlZGVkIHNpbmNl IGFiYW5kb25pbmcgdHJ5bG9jayB3b3VsZCBvdGhlcndpc2UgY2F1c2UgbG9ja2RlcAo+Pj4+IGlz c3Vlcz8gQnV0IGlzIGl0IHJlYWxseSBzYWZlPyBJIGRvbid0IGtub3cuLiBob3cgY2FuIGl0IGJl PyBJdCBpcwo+Pj4+IGd1YXJhbnRlZWQgdG8gYmUgYSBkaWZmZXJlbnQgcHJvY2VzcyBoZXJlIG90 aGVyd2lzZSB0aGUgcmVzdWx0IHdvdWxkbid0Cj4+Pj4gYmUgTVVURVhfVFJZTE9DS19GQUlMRUQu Cj4+Pgo+Pj4gVGhlIGVhc3kgb3B0aW9uIHdhcyB0byBvbmx5IGZvcmNlIHRoZSBtdXRleF9sb2Nr IGZvciBrc3dhcGQuIEhvd2V2ZXIsCj4+PiBub3RpbmcgdGhhdCB3ZSBkbyBuZWVkIHRvIGZvcmNp Ymx5IHNocmluayBiZWZvcmUgb29tLCBJIG9wdGVkIGZvciB0aGUKPj4+IG1vcmUgaW5jbHVzaXZl IGF0dGVtcHQgdG8gdGFrZSBpdCBpbiBib3RoLiBGb3IgdGhlIG9vbSBhcHByb2FjaCwgbXkgb25s eQo+Pj4gaGFuZHdhdmluZyBpcyB3ZSBzaG91bGRuJ3QgYmUgbmVzdGVkIHVuZGVyIG9vbSBzZXJp YWxpc2F0aW9uIGFuZCBzbwo+Pj4gYXZvaWQgYW4gQUJCQSBkZWFkbG9jay4gSXQncyBzdXJ2aXZl ZCBzb21lIG9vbSBhYnVzZSwgYnV0IHRoZSBtYWNoaW5lCj4+PiBzdGlsbCBiZWNvbWVzIHVucmVz cG9uc2l2ZSAoYnV0IHBpbmdhYmxlKSBldmVudHVhbGx5IChhcyBpdCBkb2VzIGJlZm9yZQo+Pj4g dGhlIHBhdGNoKS4KPj4KPj4gLi4ud2hpY2ggSSBjb21wbGV0ZWx5IGRpZCBub3QgdW5kZXJzdGFu ZCEgOigKPj4KPj4gV2hlbiB5b3Ugc2F5IGtzd2FwZCAtIHRoYXQgbWVhbnMgbXV0ZXgtPm93bmVy ICE9IGN1cnJlbnQgaW4gdGhlIHNocmlua2VyCj4+IGFuZCBvdGhlcndpc2UgaXQgaXMgZGlyZWN0 IHJlY2xhaW0/Cj4+Cj4+IElmIHRydWUsIGhvdyBpcyB0aGUgbmVzdGVkIGFubm90YXRpb24gY29y cmVjdCBmb3IgdGhlIGtzd2FwZCBjYXNlPwo+IAo+IFdlIGhhdmUgMyBwYXRocywKPiBkaXJlY3Qt cmVjbGFpbSAvIG9vbSBmcm9tIHVuZGVyIGk5MTUgKyBzdHJ1Y3RfbXV0ZXgKPiBkaXJlY3QtcmVj bGFpbSAvIG9vbSBmcm9tIGVsc2V3aGVyID4ga3N3YXBkCgpJcyB0aGUga2VybmVsIGd1YXJhbnRl ZWluZyBvbmx5IG9uZSByZWNsYWltIHBhdGggYXQgYSB0aW1lIGNhbiBoYXBwZW4/IApJbiBvdGhl ciB3b3JkcyBpZiBpdCBpcyBkb2luZyBkaXJlY3QgcmVjbGFpbSwga3N3YXBkIHdvbid0IGVudGVy IHRoZSAKc2FtZSBzaHJpbmtpbmcgbm90aWZpZXIgYW5kIHZpY2UgdmVyc2E/Cgo+IAo+IFRoZSBu ZXN0ZWQgYW5ub3RhdGlvbiBkb2Vzbid0IG1lYW4gdGhhdCB0aGUgbG9jayBpcyBuZXN0ZWQgcGVy LXNlLCBpdAo+IGp1c3QgbWVhbnMgdGhhdCBoZXJlIGl0IGlzIGFjdGluZyBhcyBhIGRpZmZlcmVu dCBzdWJjbGFzcyBvZiB0aGUgbG9jay4KPiBTaW5jZSB0aGUga3N3YXBkIHBhdGggY2FuJ3QgaGF2 ZSBzdHJ1Y3RfbXV0ZXgsIGl0IGlzIHNhZmUgZnJvbSBiZWluZwo+IGNvbmZ1c2VkLiBUaGUgY29t cGxpY2F0aW9uIGlzIGlmIHRoZXJlIGlzIHNlcmlhbGlzYXRpb24gb24KPiBkaXJlY3QtcmVjbGFp bSAod2hpY2ggSSB0aGluayBjYW4gYmUgcnVuIGNvbmN1cnJlbnRseSwgaS5lLiBubwo+IG11dGV4 L3NlbWFwaG9yZSBuZXN0aW5nKSBvciBvb20uIEZvciBvb20sIHRoZXJlIGlzIGEgbG9jayBidXQg YWZhaWN0IHRoZQo+IGd1YXJkIGlzIGp1c3QgYSB0cnlsb2NrIHNvIHNob3VsZG4ndCBjYXVzZSBh biBBQkJBIGRlYWRsb2NrIGlmIHdlIG9vbQo+IHVuZGVyIHN0cnVjdF9tdXRleCB3aGlsZSBmaWdo dGluZyBhbiBvb20gaW4gYW5vdGhlciBwcm9jZXNzLgoKV2hlbiB5b3Ugc2F5IGRpcmVjdCByZWNs YWltIGNhbiBydW4gY29uY3VycmVudGx5LCBpbiB0aGF0IGNhc2Ugd2Ugd291bGQgCmhhdmUgb25l IHRocmVhZCBwb3RlbnRpYWxseSBob2xkaW5nIHRoZSBzdHJ1Y3RfbXV0ZXggYW5kIGVudGVyaW5n IApzaHJpbmtlci4gU2Vjb25kIHRocmVhZCB3b3VsZCBncmFiIHRoZSBtdXRleCBpbiB0aGUgc2hy aW5rZXIgd2l0aCB0aGUgCm5lc3RlZCBhbm5vdGF0aW9uLiBCdXQgaXQgaXMgbm90IG5lc3RlZCBi dXQgb3ZlcmxhcHBpbmcuIEFuZCB5b3Ugc2F5IApuZXN0ZWQgaXMgZWZmZWN0aXZlbHkgYSBoYWNr IHRvIGVuYWJsZSBkaWZmZXJlbnQgbG9jayBjbGFzc2VzLgoKQWN0dWFsbHkgaW4gdGhpcyBjYXNl IGl0IGlzIHRoZSBzYW1lIHNpdHVhdGlvbiBmb3IgYW55IHR3byBzaW11bHRhbmVvdXMgCnRocmVh ZHMgaW4gZGlyZWN0IHJlY2xhaW0sIGV2ZW4gaWYgbm9uZSBob2xkcyBzdHJ1Y3QgbXV0ZXggb24g ZW50cnkuIEJ1dCAKaW4gdGhpcyBjYXNlIHRoZSBsb2NrZGVwIGFubm90YXRpb24gaXMgYWxzbyBu b3QgbmVlZGVkLgoKSG0uLiBtYXliZSB0byB0dXJuIHRoZSBxdWVzdGlvbiBvbiBpdCdzIGhlYWQu LiBpZiB5b3UgaGFkIGEgbm9ybWFsIAptdXRleF9sb2NrIGluIHRoZXJlLCB3aGF0IGRlYWRsb2Nr IHdvdWxkIGxvY2tkZXAgbm90aWNlPwoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK