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: Thu, 15 Nov 2018 11:39:31 +0000 Message-ID: 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> <409ac4f0-e925-8d21-8b47-604b6b6b9d76@linux.intel.com> <154212901095.16646.5024253150960098472@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 E8E2A6E617 for ; Thu, 15 Nov 2018 11:39:33 +0000 (UTC) In-Reply-To: <154212901095.16646.5024253150960098472@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 Ck9uIDEzLzExLzIwMTggMTc6MTAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE4LTExLTEzIDEwOjI0OjQzKQo+Pgo+PiBPbiAwOS8xMS8yMDE4IDExOjQ0 LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4+PiBRdW90aW5nIFR2cnRrbyBVcnN1bGluICgyMDE4LTEx LTA5IDA3OjMwOjM0KQo+Pj4+Cj4+Pj4gT24gMDgvMTEvMjAxOCAxNjo0OCwgQ2hyaXMgV2lsc29u IHdyb3RlOgo+Pj4+PiBRdW90aW5nIFR2cnRrbyBVcnN1bGluICgyMDE4LTExLTA4IDE2OjIzOjA4 KQo+Pj4+Pj4KPj4+Pj4+IE9uIDA4LzExLzIwMTggMDg6MTcsIENocmlzIFdpbHNvbiB3cm90ZToK Pj4+Pj4+PiBJZ25vcmUgdHJ5aW5nIHRvIHNocmluayBmcm9tIGk5MTUgaWYgd2UgZmFpbCB0byBh Y3F1aXJlIHRoZSBzdHJ1Y3RfbXV0ZXgKPj4+Pj4+PiBpbiB0aGUgc2hyaW5rZXIgd2hpbGUgcGVy Zm9ybWluZyBkaXJlY3QtcmVjbGFpbS4gVGhlIHRyYWRlLW9mZiBiZWluZwo+Pj4+Pj4+IChtdWNo KSBsb3dlciBsYXRlbmN5IGZvciBub24taTkxNSBjbGllbnRzIGF0IGFuIGluY3JlYXNlZCByaXNr IG9mIGJlaW5nCj4+Pj4+Pj4gdW5hYmxlIHRvIG9idGFpbiBhIHBhZ2UgZnJvbSBkaXJlY3QtcmVj bGFpbSB3aXRob3V0IGhpdHRpbmcgdGhlCj4+Pj4+Pj4gb29tLW5vdGlmaWVyLiBUaGUgcHJvdmlz byBiZWluZyB0aGF0IHdlIHN0aWxsIGtlZXAgdHJ5aW5nIHRvIGhhcmQKPj4+Pj4+PiBvYnRhaW4g dGhlIGxvY2sgZm9yIG9vbSBzbyB0aGF0IHdlIGNhbiByZWFwIHVuZGVyIGhlYXZ5IG1lbW9yeSBw cmVzc3VyZS4KPj4+Pj4+Pgo+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hy aXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+Pj4+Pj4+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtv LnVyc3VsaW5AaW50ZWwuY29tPgo+Pj4+Pj4+IC0tLQo+Pj4+Pj4+ICAgICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYyB8IDI0ICsrKysrKysrKysrLS0tLS0tLS0tLS0t LQo+Pj4+Pj4+ICAgICAgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDEzIGRlbGV0 aW9ucygtKQo+Pj4+Pj4+Cj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3Nocmlua2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJp bmtlci5jCj4+Pj4+Pj4gaW5kZXggZWE5MGQzYTBkNTExLi5kNDYxZjQ1OGY0YWYgMTAwNjQ0Cj4+ Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYwo+Pj4+ Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKPj4+Pj4+ PiBAQCAtMzYsNyArMzYsOSBAQAo+Pj4+Pj4+ICAgICAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4+ Pj4+Pj4gICAgICAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgo+Pj4+Pj4+ICAgICAgCj4+Pj4+Pj4g LXN0YXRpYyBib29sIHNocmlua2VyX2xvY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs IGJvb2wgKnVubG9jaykKPj4+Pj4+PiArc3RhdGljIGJvb2wgc2hyaW5rZXJfbG9jayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgZmxhZ3MsCj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAq dW5sb2NrKQo+Pj4+Pj4+ICAgICAgewo+Pj4+Pj4+ICAgICAgICAgIHN3aXRjaCAobXV0ZXhfdHJ5 bG9ja19yZWN1cnNpdmUoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpKSB7Cj4+Pj4+Pj4gICAgICAg ICAgY2FzZSBNVVRFWF9UUllMT0NLX1JFQ1VSU0lWRToKPj4+Pj4+PiBAQCAtNDUsMTUgKzQ3LDEx IEBAIHN0YXRpYyBib29sIHNocmlua2VyX2xvY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIGJvb2wgKnVubG9jaykKPj4+Pj4+PiAgICAgIAo+Pj4+Pj4+ICAgICAgICAgIGNhc2UgTVVU RVhfVFJZTE9DS19GQUlMRUQ6Cj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAqdW5sb2NrID0gZmFs c2U7Cj4+Pj4+Pj4gLSAgICAgICAgICAgICBwcmVlbXB0X2Rpc2FibGUoKTsKPj4+Pj4+PiAtICAg ICAgICAgICAgIGRvIHsKPj4+Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgY3B1X3JlbGF4KCk7 Cj4+Pj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgIGlmIChtdXRleF90cnlsb2NrKCZpOTE1LT5k cm0uc3RydWN0X211dGV4KSkgewo+Pj4+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICp1bmxvY2sgPSB0cnVlOwo+Pj4+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOwo+Pj4+Pj4+IC0gICAgICAgICAgICAgICAgICAgICB9Cj4+Pj4+Pj4gLSAgICAgICAgICAg ICB9IHdoaWxlICghbmVlZF9yZXNjaGVkKCkpOwo+Pj4+Pj4+IC0gICAgICAgICAgICAgcHJlZW1w dF9lbmFibGUoKTsKPj4+Pj4+PiArICAgICAgICAgICAgIGlmIChmbGFncyAmIEk5MTVfU0hSSU5L X0FDVElWRSkgewo+Pj4+Pj4KPj4+Pj4+IFNvIHVudGlsIEk5MTVfU0hSSU5LX0FDVElWRSwgd2hp Y2ggaXMgdGhlIGxhc3QgZGl0Y2ggYXR0ZW1wdCB0byBzaHJpbmsKPj4+Pj4+IGluIHRoZSBub3Jt YWwgY2FzZSAoZGlyZWN0IHJlY2xhaW0/KSBvciBvb20sIHdlIGJhaWwgb3V0IG9uIHRoZSBmaXJz dAo+Pj4+Pj4gc2lnbiBvZiBzdHJ1Y3QgbXV0ZXggY29udGVudGlvbi4gRG9lc24ndCB0aGlzIG1h a2Ugb3VyIHNocmlua2VyIG11Y2gKPj4+Pj4+IGxlc3MgZWZmZWN0aXZlIGF0IHJ1bnRpbWUgYW5k IHdoeSBpcyB0aGF0IE9LPwo+Pj4+Pgo+Pj4+PiBBcyBJIHNhaWQsIGl0J3MgYSB0cmFkZW9mZiBi ZXR3ZWVuIGJsb2NraW5nIG90aGVycyBmb3IgX3NldmVyYWxfCj4+Pj4+IF9zZWNvbmRzXyBhbmQg bWFraW5nIG5vIHByb2dyZXNzIGFuZCByZXR1cm5pbmcgaW1tZWRpYXRlbHkgYW5kIG1ha2luZyBu bwo+Pj4+PiBwcm9ncmVzcy4gTXkgYXJndW1lbnQgaXMgYWxvbmcgdGhlIGxpbmVzIG9mIGlmIGRp cmVjdC1yZWNsYWltIGlzIHJ1bm5pbmcKPj4+Pj4gaW4gYW5vdGhlciBwcm9jZXNzIGFuZCBzb21l dGhpbmcgZWxzZSBpcyBlbmdhZ2VkIGluIHRoZSBkcml2ZXIgaG9wZWZ1bGx5Cj4+Pj4+IHRoZSBk cml2ZXIgd2lsbCBiZSBjbGVhbmluZyB1cCBhcyBpdCBnb2VzIGFsb25nIG9yIGVsc2Ugd2hhdCBy ZW1haW5zIGlzCj4+Pj4+IGFjdGl2ZSBhbmQgd29uJ3QgYmUgcmVhcGVkIGFueXdheS4gSWYgZGly ZWN0IHJlY2xhaW0gaXMgZmFpbGluZywgdGhlCj4+Pj4+IGRlbGF5IGJlZm9yZSB0cnlpbmcgdGhl IG9vbSBwYXRoIGlzIGluc2lnbmlmaWNhbnQuCj4+Pj4KPj4+PiBXaGF0IHdhcyB0aGUgcmF0aW9u YWxlIGJlaGluZCBidXN5IGxvb3BpbmcgdGhlcmUgYnR3Pwo+Pj4KPj4+IEVtdWxhdGluZyB0aGUg b3B0aW1pc3RpYyBzcGluIGZvciBtdXRleCAobXkgcGF0Y2hlcyB0byBleHBvc2UgaXQgZnJvbQo+ Pj4ga2VybmVsL2xvY2tpbmcgd2VyZSBrZXB0IGhpZGRlbiBmb3IgcHVibGljIGRlY2VuY3kpLiBN eSB0aGlua2luZyB3YXMgdGhlCj4+PiBleGFjdCBvcHBvc2l0ZSB0byB0aGlzIHBhdGNoLCB0aGF0 IGRpcmVjdCByZWNsYWltIHdhcyBvZiBwYXJhbW91bnQKPj4+IGltcG9ydGFuY2UgYW5kIHNwZW5k aW5nIHRoZSB0aW1lIHRvIHRyeSBhbmQgZW5zdXJlIHdlIGdyYWJiZWQgdGhlCj4+PiBzdHJ1Y3Rf bXV0ZXggdG8gc2VhcmNoIGZvciBzb21lIHBhZ2VzIHRvIGZyZWUgd2FzIHByZWZlcmFibGUuCj4+ Pgo+Pj4gSXQncyBqdXN0IG9uIHRoZSBiYXNpcyBvZiBsb29raW5nIGF0IHRoZSBhY3R1YWwgc3lz bGF0ZW5jeSBhbmQgcmVhbGlzaW5nCj4+PiB0aGUgY2F1c2UgaXMgdGhpcyBzcGlubmVyLCBJIHdh bnQgdG8gc3dpbmcgdGhlIGF4ZSBpbiBvdGhlciBkaXJlY3Rpb24uCj4+Pgo+Pj4gKFRoZXJlJ3Mg cHJvYmFibHkgYSBjb21wcm9taXNlLCBidXQgaG9uZXN0bHkgSSdkIHByZWZlciB0byBzZWxsIHRo ZQo+Pj4gc3RydWN0X211dGV4IGZyZWUgdmVyc2lvbiBvZiB0aGUgc2hyaW5rZXIgZmlyc3QgOikK Pj4+Cj4+Pj4gQ29tcGFyZWQgdG8KPj4+PiBwZXJoYXBzIGFuIGFsdGVybmF0aXZlIG9mIG1pY3Jv LXNsZWVwcyBhbmQgdHJ5aW5nIGEgZmV3IHRpbWVzPyBJIGtub3cgaXQKPj4+PiB3b3VsZCBiZSBv cHBvc2l0ZSBmcm9tIHdoYXQgdGhpcyBwYXRjaCBpcyB0cnlpbmcgdG8gYWNoaWV2ZSwgSSBKdXN0 Cj4+Pj4gZG9uJ3QgaGFkIGEgZ29vZCBqdWRnbWVudCBvbiB3aGF0IG1ha2VzIG1vc3Qgc2Vuc2Ug Zm9yIHRoZSBzaHJpbmtlci4gSXMKPj4+PiBpdCBiZXR0ZXIgdG8gcGVyaGFwcyB0cnkgYSBsaXR0 bGUgYml0IGhhcmRlciBpbnN0ZWFkIG9mIGdpdmluZyB1cAo+Pj4+IGltbWVkaWF0ZWx5LCBidXQg dHJ5IGEgbGl0dGxlIGJpdCBoYXJkZXIgaW4gYSBzb2Z0ZXIgd2F5PyBPciB0aGF0IGVuZHMKPj4+ PiB1cCBibG9ja2luZyB0aGUgY2FsbGVycyBhbmQgaGFzIHRoZSBzYW1lIGVmZmVjdCBvZiBtYWtp bmcgbm8gcHJvZ3Jlc3M/Cj4+Pgo+Pj4gRXhhY3RseS4gV2UgY2FuIGRlZmluaXRlbHkgbWVhc3Vy ZSB0aGUgaW1wYWN0IG9mIHRoZSBzcGlubmVyIG9uCj4+PiB1bnJlbGF0ZWQgcHJvY2Vzc2VzLCBi dXQgZGV0ZWN0aW5nIHRoZSBwcmVtYXR1cmUgYWxsb2NhdGlvbiBmYWlsdXJlIGlzCj4+PiBoYXJk ZXIgKHdlIHdhaXQgZm9yIG1vcmUgZG1lc2ctd2FybnMpLiBUaGUgY29tcHJvbWlzZSB0aGF0IEkn dmUgdHJpZWQgdG8KPj4+IHJlYWNoIGhlcmUgaXMgdGhhdCBpZiBkaXJlY3QtcmVjbGFpbSBpc24n dCBlbm91Z2gsIHRoZW4gd2Ugc2hvdWxkIHN0aWxsCj4+PiB0cnkgaGFyZCB0byBncmFiIHRoZSBz dHJ1Y3RfbXV0ZXguIChUaGF0IGxlYXZlcyBfX0dGUF9SRVRSWV9NQVlGQUlMCj4+PiB2dWxuZXJh YmxlIHRvIG5vdCBzaHJpbmtpbmcgaTkxNSwgYnV0IGEgd29ydGh3aGlsZSBjb21wcm9taXNlIGFz IGl0J3MKPj4+IGFsbG93ZWQgdG8gZmFpbD8pCj4+Pgo+Pj4+Pj4gT3IgaW4gb3RoZXIgd29yZHMs IGZvciB3aGF0IHVzZSBjYXNlcywgdGVzdHMgb3IgYmVuY2htYXJrIHdhcyB0aGUKPj4+Pj4+IGV4 aXN0aW5nIGFwcHJvYWNoIG9mIGJ1c3kgbG9vcGluZyBhIHByb2JsZW0/Cj4+Pj4+Cj4+Pj4+IERv IHNvbWV0aGluZyBsaWtlICdmaW5kIC8gLWV4ZWMgY2F0JyB3aGlsZSBydW5uaW5nIGk5MTUgYW5k IHNlZSBob3cgbG9uZwo+Pj4+PiB5b3UgaGF2ZSB0byB3YWl0IGZvciBhIGtodW5ndGFza2QgOnwK Pj4+Pgo+Pj4+IEkgY291bGRuJ3QgcmVwcm9kdWNlIGFueXRoaW5nIHN0cmFuZ2Ugd2l0aCB0aGlz LiBBc3N1bWluZyB5b3UgbWVhbnQKPj4+PiBzb21ldGhpbmcgbGlrZSAtZXhlYyBjYXQgeyB9IFw7 ID5kZXYvbnVsbC4KPj4+Pgo+Pj4+IEVpdGhlciBjYXNlIEkgdGhpbmsgZXhwbGFuYXRpb25zIGxp a2UgdGhpcyBzaG91bGQgZ28gaW50byB0aGUgY29tbWl0Cj4+Pj4gbWVzc2FnZS4KPj4+Cj4+PiBX ZWlyZCwgSSBzcGVudCBzbyBsb25nIG92ZXIgdGhlIGxhc3QgZmV3IHdlZWtzIHRhbGtpbmcgYWJv dXQgdGhlIGltcGFjdAo+Pj4gb24gZ2VtX3N5c2xhdGVuY3ksIEkgdGhvdWdodCBpdCB3YXMgbWVu dGlvbmVkIGhlcmUuCj4+Pgo+Pj4+PiBnZW1fc3lzbGF0ZW5jeSByZXBvcnRzIG1heCBsYXRlbmNp ZXMgb2Ygb3ZlciA2MDBzLCBhbmQgSSdtIHN1cmUgaXQncwo+Pj4+PiBwcmV0dHkgbXVjaCB1bmJv dW5kZWQuIEl0J3MgYmFkIGVub3VnaCB0aGF0IEkgZXhwZWN0IHdlIGFyZSB0aGUgY2F1c2Ugb2YK Pj4+Pj4gc2lnbmlmaWNhbnQgaGl0Y2hpbmcgKG1haW5seSBpbiBvdGhlciB0YXNrcykgb24gdGhl IGRlc2t0b3AgcnVubmluZyBhdAo+Pj4+PiBtZW1vcnkgY2FwYWNpdHkuCj4+Pj4KPj4+PiBSdW5u aW5nIGdlbV9zeXNsYXRlbmN5IGluIHBhcmFsbGVsIHRvIHRoZSBmaW5kLCBvciBnZW1fc3lzbGF0 ZW5jeSAtYiBpbgo+Pj4+IHBhcmFsbGVsIG9yIG5vdCBkaWQgbm90IGRvIGFueXRoaW5nLgo+Pj4K Pj4+IGdlbV9zeXNsYXRlbmN5IC1iIC1tCj4+Pgo+Pj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+IHwg ICAgICB4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8Cj4+PiB8ICAgICAgeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4gLgo+Pj4gLgo+Pj4gLgo+ Pj4gfCAgICAgIHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwKPj4+IHwgICAgICB4IHh4eCAgICAgIHh4IHggICAgICAgICAg IHggIHggICAgICB4ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh8Cj4+PiB8fF9fX19fTV9B X19fX19fX3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfAo+Pj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+ICAgICAgIE4gICAgICAgICAgIE1pbiAg ICAgICAgICAgTWF4ICAgICAgICBNZWRpYW4gICAgICAgICAgIEF2ZyAgICAgICAgU3RkZGV2Cj4+ PiB4IDEyMCAgICAgICAyMjg0OTI4ICA2Ljc1MjA4NWUrMDggICAgICAgMzM4NTA5NyAgICAgIDIw ODI1MzYyICAgICAgODAzNTI2NDUKPj4+Cj4+PiBVbnBhdGNoZWQsIGFuZCBzaW1pbGFyIGhhdmUg YmVlbiBvYnNlcnZlZCBvbiBpdmIvYnl0L2Jkdy9ic3cvc2tsL2tibCBhbmQKPj4+IHdoaWxlIHdl IHdlcmUgZmlnaHRpbmcga3NvZnRpcnFkLiA2NzVzIG1heGltdW0gbGF0ZW5jeSBmb3IgYSBSVCB0 aHJlYWQgdG8gd2FrZSB1cC4KPj4+Cj4+PiBQYXRjaGVkLCBtYXggaXMgYXJvdW5kIDI2MW1zIGFu ZCBvcmRlciBvZiBtYWduaXR1ZGUgYmV0dGVyIHRoYW4gdGhlIGJlc3QKPj4+IHByZXZpb3VzbHkh Cj4+Cj4+IFllcyBJIGhhdmUgcmVwcm9kdWNlZCB0aGUgfjIweCBiZXR0ZXIgbWF4IGxhdGVuY3kg bXlzZWxmLiBNZWFuIGxhdGVuY3kKPj4gc3RheXMgcm91Z2hseSB0aGUgc2FtZSBidXQgaGFzIGxl c3MgdmFyaWFuY2UuIEZyb20gdGhhdCBwb2ludCBvZiB2aWV3Cj4+IHRoaXMgaXMgdmVyeSBnb29k Lgo+Pgo+Pj4KPj4+PiBUaGVuIEkgdHJpZXMgZ2VtX3NocmluayBidXQgdGhhdCBkb2Vzbid0IHNl ZW0gdG8gYmUgbWFraW5nIGFueSBwcm9ncmVzcwo+Pj4+IHdpdGggb3Igd2l0aG91dCB0aGUgcGF0 Y2guIEJ1dCBpdCdzIG5vdCBldmVuIGhpdHRpbmcgdGhlIGk5MTUgaGFyZCwgYnV0Cj4+Pj4gcGVy aGFwcyBJIG5lZWQgdG8gdHVybiBvZmYgbG9ja2RlcC4uIFdoaWNoIHdvdWxkIGJlIGEgYnVtbWVy IHNpbmNlIEkKPj4+PiB3YW50ZWQgdG8gaGF2ZSBhIGxvY2tkZXAgdG8gY2hlY2sgdGhlIG5leHQg Yml0Li4KPj4+Cj4+PiBnZW1fc2hyaW5rIG5ldmVyIGhhcyBjb21wbGV0ZWQuLi4gSXQncyBub3Qg cXVpdGUgdGhlIHJpZ2h0IHRlc3QgZm9yIHRoaXMKPj4+IGFzIHdlIG5lZWQgdG8gaGl0IHRoZSBz aHJpbmtlciAmIG9vbSBvbiBib3RoIGk5MTUgYW5kIG5vbi1pOTE1IHBhdGhzIHRvCj4+PiB0cnkg YW5kIGhpdCBhbGwgdGhlIGRpZmZlcmVudCBsb2NrIGNoYWlucy4KPj4KPj4gT2suIDopCj4+Cj4+ Pgo+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBtdXRleF9sb2NrX25lc3RlZCgmaTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCwKPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSTkxNV9NTV9TSFJJTktFUik7Cj4+Pj4+Pgo+Pj4+Pj4gX25lc3RlZCBpcyBuZWVk ZWQgc2luY2UgYWJhbmRvbmluZyB0cnlsb2NrIHdvdWxkIG90aGVyd2lzZSBjYXVzZSBsb2NrZGVw Cj4+Pj4+PiBpc3N1ZXM/IEJ1dCBpcyBpdCByZWFsbHkgc2FmZT8gSSBkb24ndCBrbm93Li4gaG93 IGNhbiBpdCBiZT8gSXQgaXMKPj4+Pj4+IGd1YXJhbnRlZWQgdG8gYmUgYSBkaWZmZXJlbnQgcHJv Y2VzcyBoZXJlIG90aGVyd2lzZSB0aGUgcmVzdWx0IHdvdWxkbid0Cj4+Pj4+PiBiZSBNVVRFWF9U UllMT0NLX0ZBSUxFRC4KPj4+Pj4KPj4+Pj4gVGhlIGVhc3kgb3B0aW9uIHdhcyB0byBvbmx5IGZv cmNlIHRoZSBtdXRleF9sb2NrIGZvciBrc3dhcGQuIEhvd2V2ZXIsCj4+Pj4+IG5vdGluZyB0aGF0 IHdlIGRvIG5lZWQgdG8gZm9yY2libHkgc2hyaW5rIGJlZm9yZSBvb20sIEkgb3B0ZWQgZm9yIHRo ZQo+Pj4+PiBtb3JlIGluY2x1c2l2ZSBhdHRlbXB0IHRvIHRha2UgaXQgaW4gYm90aC4gRm9yIHRo ZSBvb20gYXBwcm9hY2gsIG15IG9ubHkKPj4+Pj4gaGFuZHdhdmluZyBpcyB3ZSBzaG91bGRuJ3Qg YmUgbmVzdGVkIHVuZGVyIG9vbSBzZXJpYWxpc2F0aW9uIGFuZCBzbwo+Pj4+PiBhdm9pZCBhbiBB QkJBIGRlYWRsb2NrLiBJdCdzIHN1cnZpdmVkIHNvbWUgb29tIGFidXNlLCBidXQgdGhlIG1hY2hp bmUKPj4+Pj4gc3RpbGwgYmVjb21lcyB1bnJlc3BvbnNpdmUgKGJ1dCBwaW5nYWJsZSkgZXZlbnR1 YWxseSAoYXMgaXQgZG9lcyBiZWZvcmUKPj4+Pj4gdGhlIHBhdGNoKS4KPj4+Pgo+Pj4+IC4uLndo aWNoIEkgY29tcGxldGVseSBkaWQgbm90IHVuZGVyc3RhbmQhIDooCj4+Pj4KPj4+PiBXaGVuIHlv dSBzYXkga3N3YXBkIC0gdGhhdCBtZWFucyBtdXRleC0+b3duZXIgIT0gY3VycmVudCBpbiB0aGUg c2hyaW5rZXIKPj4+PiBhbmQgb3RoZXJ3aXNlIGl0IGlzIGRpcmVjdCByZWNsYWltPwo+Pj4+Cj4+ Pj4gSWYgdHJ1ZSwgaG93IGlzIHRoZSBuZXN0ZWQgYW5ub3RhdGlvbiBjb3JyZWN0IGZvciB0aGUg a3N3YXBkIGNhc2U/Cj4+Pgo+Pj4gV2UgaGF2ZSAzIHBhdGhzLAo+Pj4gZGlyZWN0LXJlY2xhaW0g LyBvb20gZnJvbSB1bmRlciBpOTE1ICsgc3RydWN0X211dGV4Cj4+PiBkaXJlY3QtcmVjbGFpbSAv IG9vbSBmcm9tIGVsc2V3aGVyID4ga3N3YXBkCj4+Cj4+IElzIHRoZSBrZXJuZWwgZ3VhcmFudGVl aW5nIG9ubHkgb25lIHJlY2xhaW0gcGF0aCBhdCBhIHRpbWUgY2FuIGhhcHBlbj8KPj4gSW4gb3Ro ZXIgd29yZHMgaWYgaXQgaXMgZG9pbmcgZGlyZWN0IHJlY2xhaW0sIGtzd2FwZCB3b24ndCBlbnRl ciB0aGUKPj4gc2FtZSBzaHJpbmtpbmcgbm90aWZpZXIgYW5kIHZpY2UgdmVyc2E/Cj4gCj4gZGly ZWN0LXJlY2xhaW0gaXMgcGFyYWxsZWxpc2VkOyB0aGUgc2hyaW5rX3NsYWIgaXMgb25seSBndWFy ZGVkIGJ5IGEKPiByZWFkIGxvY2sgKHRvIHByZXZlbnQgdGhlIHNocmlua2VyIGxpc3RzIGJlaW5n IG1vZGlmaWVkKS4gTXVsdGlwbGUKPiBjYWxsZXJzIGludG8gZGlyZWN0LXJlY2xhaW0gaXMgYWxs b3dlZCwgYW5kIHRoZSBjYWxsZXIgaXMgbm90IGFsd2F5cwo+IGd1YXJhbnRlZWQgb2Ygb2J0YWlu aW5nIHRoZSBwYWdlcyB0aGV5IHRoZW1zZWx2ZXMgZnJlZWQuIEFmYWlrLCB0aGVyZSdzCj4gbm8g bG9jayB0aGVyZSB0byBjYXVzZSBjb250ZW50aW9uIGFuZCBpbnZlcnNpb24gZm9yIHVzLgo+IAo+ Pj4gVGhlIG5lc3RlZCBhbm5vdGF0aW9uIGRvZXNuJ3QgbWVhbiB0aGF0IHRoZSBsb2NrIGlzIG5l c3RlZCBwZXItc2UsIGl0Cj4+PiBqdXN0IG1lYW5zIHRoYXQgaGVyZSBpdCBpcyBhY3RpbmcgYXMg YSBkaWZmZXJlbnQgc3ViY2xhc3Mgb2YgdGhlIGxvY2suCj4+PiBTaW5jZSB0aGUga3N3YXBkIHBh dGggY2FuJ3QgaGF2ZSBzdHJ1Y3RfbXV0ZXgsIGl0IGlzIHNhZmUgZnJvbSBiZWluZwo+Pj4gY29u ZnVzZWQuIFRoZSBjb21wbGljYXRpb24gaXMgaWYgdGhlcmUgaXMgc2VyaWFsaXNhdGlvbiBvbgo+ Pj4gZGlyZWN0LXJlY2xhaW0gKHdoaWNoIEkgdGhpbmsgY2FuIGJlIHJ1biBjb25jdXJyZW50bHks IGkuZS4gbm8KPj4+IG11dGV4L3NlbWFwaG9yZSBuZXN0aW5nKSBvciBvb20uIEZvciBvb20sIHRo ZXJlIGlzIGEgbG9jayBidXQgYWZhaWN0IHRoZQo+Pj4gZ3VhcmQgaXMganVzdCBhIHRyeWxvY2sg c28gc2hvdWxkbid0IGNhdXNlIGFuIEFCQkEgZGVhZGxvY2sgaWYgd2Ugb29tCj4+PiB1bmRlciBz dHJ1Y3RfbXV0ZXggd2hpbGUgZmlnaHRpbmcgYW4gb29tIGluIGFub3RoZXIgcHJvY2Vzcy4KPj4K Pj4gV2hlbiB5b3Ugc2F5IGRpcmVjdCByZWNsYWltIGNhbiBydW4gY29uY3VycmVudGx5LCBpbiB0 aGF0IGNhc2Ugd2Ugd291bGQKPj4gaGF2ZSBvbmUgdGhyZWFkIHBvdGVudGlhbGx5IGhvbGRpbmcg dGhlIHN0cnVjdF9tdXRleCBhbmQgZW50ZXJpbmcKPj4gc2hyaW5rZXIuIFNlY29uZCB0aHJlYWQg d291bGQgZ3JhYiB0aGUgbXV0ZXggaW4gdGhlIHNocmlua2VyIHdpdGggdGhlCj4+IG5lc3RlZCBh bm5vdGF0aW9uLiBCdXQgaXQgaXMgbm90IG5lc3RlZCBidXQgb3ZlcmxhcHBpbmcuIEFuZCB5b3Ug c2F5Cj4+IG5lc3RlZCBpcyBlZmZlY3RpdmVseSBhIGhhY2sgdG8gZW5hYmxlIGRpZmZlcmVudCBs b2NrIGNsYXNzZXMuCj4+Cj4+IEFjdHVhbGx5IGluIHRoaXMgY2FzZSBpdCBpcyB0aGUgc2FtZSBz aXR1YXRpb24gZm9yIGFueSB0d28gc2ltdWx0YW5lb3VzCj4+IHRocmVhZHMgaW4gZGlyZWN0IHJl Y2xhaW0sIGV2ZW4gaWYgbm9uZSBob2xkcyBzdHJ1Y3QgbXV0ZXggb24gZW50cnkuIEJ1dAo+PiBp biB0aGlzIGNhc2UgdGhlIGxvY2tkZXAgYW5ub3RhdGlvbiBpcyBhbHNvIG5vdCBuZWVkZWQuCj4+ Cj4+IEhtLi4gbWF5YmUgdG8gdHVybiB0aGUgcXVlc3Rpb24gb24gaXQncyBoZWFkLi4gaWYgeW91 IGhhZCBhIG5vcm1hbAo+PiBtdXRleF9sb2NrIGluIHRoZXJlLCB3aGF0IGRlYWRsb2NrIHdvdWxk IGxvY2tkZXAgbm90aWNlPwo+IAo+IFRoZSBkaXJlY3QtcmVjbGFpbSBwYXRocyBhcmUgZXhwbGlj aXRseSBtYXJrZWQgdXAgc28gYXMgdG8gYXZvaWQgdGFraW5nCj4gYSBtdXRleCBpbnNpZGUgdGhl IHNocmlua2VyIHRoYXQgbWF5IGJlIGhlbGQgd2hpbGUgYWxsb2NhdGluZy4gVGhhdCdzCj4gdGhl IGNvbnRlbnRpb24gd2UgYXZvaWQgYnkgc3BlY2lhbCBjYXNpbmcgdGhlIHJlY3Vyc2l2ZSBtdXRl eDsgYnV0IGl0Cj4gYWxzbyBtZWFucyB3ZSBjYW4ndCB1c2UgYSBwbGFpbiBtdXRleF9sb2NrKCkg Zm9yIHRoZSBjYXNlcyB3aGVyZSB3ZSBhcmUKPiBoYXBweSB0aGF0IHdlIHdvbid0IGRlYWRsb2Nr LiBIZW5jZSB3aHkgcHJldmlvdXNseSBpdCB3YXMgYSB0cnlsb2NrIHRvCj4gYXZvaWQgdGhlIHNh bWUgbG9ja2RlcCB3YXJuaW5nLgoKU2hvdWxkIHdlIG5vdyBkcm9wIHVzZSBvZiBtdXRleF90cnls b2NrX3JlY3Vyc2l2ZSB0byBlbXBsb3kgdGhlIG93bmVyIAp0cmljayBkaXJlY3RseSBmcm9tIHRo ZSBzaHJpbmtlcj8gTGlrZSBtb3JlIG9yIGxlc3M6CgpzaHJpbmtlcl9sb2NrKC4uKQp7CiAgICAg ICAgIGlmICh1bmxpa2VseShfX211dGV4X293bmVyKGxvY2spID09IGN1cnJlbnQpKSB7CgkJKnVu bG9jayA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwoJfQoKCW11dGV4X2xv Y2tfbmVzdGVkKC4uLikKCSp1bmxvY2sgPSB0cnVlOwoKCXJldHVybiB0cnVlOwp9CgpSZWdhcmRz LAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=