From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 08/10] drm/i915: Cancel non-persistent contexts on close Date: Fri, 11 Oct 2019 14:55:00 +0100 Message-ID: <7bfc079e-e76b-9e43-de61-a00ab6b97b72@linux.intel.com> References: <20191010071434.31195-1-chris@chris-wilson.co.uk> <20191010071434.31195-8-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id E073F6EC47 for ; Fri, 11 Oct 2019 13:55:04 +0000 (UTC) In-Reply-To: <20191010071434.31195-8-chris@chris-wilson.co.uk> 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 Ck9uIDEwLzEwLzIwMTkgMDg6MTQsIENocmlzIFdpbHNvbiB3cm90ZToKPiBOb3JtYWxseSwgd2Ug cmVseSBvbiBvdXIgaGFuZ2NoZWNrIHRvIHByZXZlbnQgcGVyc2lzdGVudCBiYXRjaGVzIGZyb20K PiBob2dnaW5nIHRoZSBHUFUuIEhvd2V2ZXIsIGlmIHRoZSB1c2VyIGRpc2FibGVzIGhhbmdjaGVj aywgdGhpcyBtZWNoYW5pc20KPiBicmVha3MgZG93bi4gRGVzcGl0ZSBvdXIgaW5zaXN0ZW5jZSB0 aGF0IHRoaXMgaXMgdW5zYWZlLCB0aGUgdXNlcnMgYXJlCj4gZXF1YWxseSBpbnNpc3RlbnQgdGhh dCB0aGV5IHdhbnQgdG8gdXNlIGVuZGxlc3MgYmF0Y2hlcyBhbmQgd2lsbCBkaXNhYmxlCj4gdGhl IGhhbmdjaGVjayBtZWNoYW5pc20uIFdlIGFyZSBsb29raW5nIGF0IHBlcmhhcHMgcmVwbGFjaW5n IGhhbmdjaGVjawo+IHdpdGggYSBzb2Z0ZXIgbWVjaGFuaXNtLCB0aGF0IHNlbmRzIGEgcHVsc2Ug ZG93biB0aGUgZW5naW5lIHRvIGNoZWNrIGlmCj4gaXQgaXMgd2VsbC4gV2UgY2FuIHVzZSB0aGUg c2FtZSBwcmVlbXB0aXZlIHB1bHNlIHRvIGZsdXNoIGFuIGFjdGl2ZQo+IHBlcnNpc3RlbnQgY29u dGV4dCBvZmYgdGhlIEdQVSB1cG9uIGNvbnRleHQgY2xvc2UsIHByZXZlbnRpbmcgcmVzb3VyY2Vz Cj4gYmVpbmcgbG9zdCBhbmQgdW5raWxsYWJsZSByZXF1ZXN0cyByZW1haW5pbmcgb24gdGhlIEdQ VSBhZnRlciBwcm9jZXNzCj4gdGVybWluYXRpb24uIFRvIGF2b2lkIGNoYW5naW5nIHRoZSBBQkkg YW5kIGFjY2lkZW50YWxseSBicmVha2luZwo+IGV4aXN0aW5nIHVzZXJzcGFjZSwgd2UgbWFrZSB0 aGUgcGVyc2lzdGVuY2Ugb2YgYSBjb250ZXh0IGV4cGxpY2l0IGFuZAo+IGVuYWJsZSBpdCBieSBk ZWZhdWx0IChtYXRjaGluZyBjdXJyZW50IEFCSSkuIFVzZXJzcGFjZSBjYW4gb3B0IG91dCBvZgo+ IHBlcnNpc3RlbnQgbW9kZSAoZm9yY2luZyByZXF1ZXN0cyB0byBiZSBjYW5jZWxsZWQgd2hlbiB0 aGUgY29udGV4dCBpcwo+IGNsb3NlZCBieSBwcm9jZXNzIHRlcm1pbmF0aW9uIG9yIGV4cGxpY2l0 bHkpIGJ5IGEgY29udGV4dCBwYXJhbWV0ZXIuIFRvCj4gZmFjaWxpdGF0ZSBleGlzdGluZyB1c2Ut Y2FzZXMgb2YgZGlzYWJsaW5nIGhhbmdjaGVjaywgaWYgdGhlIG1vZHBhcmFtIGlzCj4gZGlzYWJs ZWQgKGk5MTUuZW5hYmxlX2hhbmdjaGVjaz0wKSwgd2UgZGlzYWJsZSBwZXJzaXN0ZW5jZSBtb2Rl IGJ5Cj4gZGVmYXVsdC4gIChOb3RlLCBvbmUgb2YgdGhlIG91dGNvbWVzIGZvciBzdXBwb3J0aW5n IGVuZGxlc3MgbW9kZSB3aWxsIGJlCj4gdGhlIHJlbW92YWwgb2YgaGFuZ2NoZWNraW5nLCBhdCB3 aGljaCBwb2ludCBvcHRpbmcgaW50byBwZXJzaXN0ZW50IG1vZGUKPiB3aWxsIGJlIG1hbmRhdG9y eSwgb3IgbWF5YmUgdGhlIGRlZmF1bHQgcGVyaGFwcyBjb250cm9sbGVkIGJ5IGNncm91cHMuKQo+ IAo+IHYyOiBDaGVjayBmb3IgaGFuZ2NoZWNraW5nIGF0IGNvbnRleHQgdGVybWluYXRpb24sIHNv IHRoYXQgd2UgYXJlIG5vdAo+IGxlZnQgd2l0aCB1bmR5aW5nIGNvbnRleHRzIGZyb20gYSBjcmFm dHkgdXNlci4KPiAKPiBUZXN0Y2FzZTogaWd0L2dlbV9jdHhfcGVyc2lzdGVuY2UKPiBTaWduZWQt b2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogSm9v bmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgo+IENjOiBNaWNo YcWCIFdpbmlhcnNraSA8bWljaGFsLndpbmlhcnNraUBpbnRlbC5jb20+Cj4gQ2M6IEpvbiBCbG9v bWZpZWxkIDxqb24uYmxvb21maWVsZEBpbnRlbC5jb20+Cj4gUmV2aWV3ZWQtYnk6IEpvbiBCbG9v bWZpZWxkIDxqb24uYmxvb21maWVsZEBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jICAgfCAxMzIgKysrKysrKysrKysrKysrKysr Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5oICAgfCAgMTUg KysKPiAgIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHRfdHlwZXMuaCB8ICAg MSArCj4gICAuLi4vZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMgfCAg IDIgKwo+ICAgaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAgICAgICAgICAgIHwg IDE1ICsrCj4gICA1IGZpbGVzIGNoYW5nZWQsIDE2NSBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggNWQ4MjIxYzdi YTgzLi40NmU1YjNiNTMyODggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9jb250ZXh0LmMKPiBAQCAtNzAsNiArNzAsNyBAQAo+ICAgI2luY2x1ZGUgPGRybS9pOTE1 X2RybS5oPgo+ICAgCj4gICAjaW5jbHVkZSAiZ3QvaW50ZWxfbHJjX3JlZy5oIgo+ICsjaW5jbHVk ZSAiZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5oIgo+ICAgI2luY2x1ZGUgImd0L2ludGVsX2Vu Z2luZV91c2VyLmgiCj4gICAKPiAgICNpbmNsdWRlICJpOTE1X2dlbV9jb250ZXh0LmgiCj4gQEAg LTI2OSw2ICsyNzAsNzggQEAgdm9pZCBpOTE1X2dlbV9jb250ZXh0X3JlbGVhc2Uoc3RydWN0IGty ZWYgKnJlZikKPiAgIAkJc2NoZWR1bGVfd29yaygmZ2MtPmZyZWVfd29yayk7Cj4gICB9Cj4gICAK PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqCj4gK19fY29udGV4dF9l bmdpbmVzX3N0YXRpYyhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICt7Cj4gKwlyZXR1 cm4gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChjdHgtPmVuZ2luZXMsIHRydWUpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBraWxsX2NvbnRleHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCkKPiArewo+ICsJaW50ZWxfZW5naW5lX21hc2tfdCB0bXAsIGFjdGl2ZSwgcmVzZXQ7Cj4gKwlz dHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gJmN0eC0+aTkxNS0+Z3Q7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1f ZW5naW5lc19pdGVyIGl0Owo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJ c3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+ICsKPiArCS8qCj4gKwkgKiBJZiB3ZSBhcmUgYWxy ZWFkeSBiYW5uZWQsIGl0IHdhcyBkdWUgdG8gYSBndWlsdHkgcmVxdWVzdCBjYXVzaW5nCj4gKwkg KiBhIHJlc2V0IGFuZCB0aGUgZW50aXJlIGNvbnRleHQgYmVpbmcgZXZpY3RlZCBmcm9tIHRoZSBH UFUuCj4gKwkgKi8KPiArCWlmIChpOTE1X2dlbV9jb250ZXh0X2lzX2Jhbm5lZChjdHgpKQo+ICsJ CXJldHVybjsKPiArCj4gKwlpOTE1X2dlbV9jb250ZXh0X3NldF9iYW5uZWQoY3R4KTsKPiArCj4g KwkvKgo+ICsJICogTWFwIHRoZSB1c2VyJ3MgZW5naW5lIGJhY2sgdG8gdGhlIGFjdHVhbCBlbmdp bmVzOyBvbmUgdmlydHVhbAo+ICsJICogZW5naW5lIHdpbGwgYmUgbWFwcGVkIHRvIG11bHRpcGxl IGVuZ2luZXMsIGFuZCB1c2luZyBjdHgtPmVuZ2luZVtdCj4gKwkgKiB0aGUgc2FtZSBlbmdpbmUg bWF5IGJlIGhhdmUgbXVsdGlwbGUgaW5zdGFuY2VzIGluIHRoZSB1c2VyJ3MgbWFwLgo+ICsJICog SG93ZXZlciwgd2Ugb25seSBjYXJlIGFib3V0IHBlbmRpbmcgcmVxdWVzdHMsIHNvIG9ubHkgaW5j bHVkZQo+ICsJICogZW5naW5lcyBvbiB3aGljaCB0aGVyZSBhcmUgaW5jb21wbGV0ZSByZXF1ZXN0 cy4KPiArCSAqLwo+ICsJYWN0aXZlID0gMDsKPiArCWZvcl9lYWNoX2dlbV9lbmdpbmUoY2UsIF9f Y29udGV4dF9lbmdpbmVzX3N0YXRpYyhjdHgpLCBpdCkgewo+ICsJCXN0cnVjdCBkbWFfZmVuY2Ug KmZlbmNlOwo+ICsKPiArCQlpZiAoIWNlLT50aW1lbGluZSkKPiArCQkJY29udGludWU7Cj4gKwo+ ICsJCWZlbmNlID0gaTkxNV9hY3RpdmVfZmVuY2VfZ2V0KCZjZS0+dGltZWxpbmUtPmxhc3RfcmVx dWVzdCk7Cj4gKwkJaWYgKCFmZW5jZSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWVuZ2luZSA9 IHRvX3JlcXVlc3QoZmVuY2UpLT5lbmdpbmU7Cj4gKwkJaWYgKEhBU19FWEVDTElTVFMoZ3QtPmk5 MTUpKQo+ICsJCQllbmdpbmUgPSBpbnRlbF9jb250ZXh0X2luZmxpZ2h0KGNlKTsKCk9rYXkgcHJl ZW1wdGlvbiBpbXBsaWVzIGV4ZWNsaXN0cywgd2FzIGNvbmZ1c2VkIGZvciBhIG1vbWVudC4KCldo ZW4gY2FuIGVuZ2luZSBiZSBOVUxMIGhlcmU/Cgo+ICsJCWlmIChlbmdpbmUpCj4gKwkJCWFjdGl2 ZSB8PSBlbmdpbmUtPm1hc2s7Cj4gKwo+ICsJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+ICsJfQo+ ICsKPiArCS8qCj4gKwkgKiBTZW5kIGEgImhpZ2ggcHJpb3JpdHkgcHVsc2UiIGRvd24gdGhlIGVu Z2luZSB0byBjYXVzZSB0aGUKPiArCSAqIGN1cnJlbnQgcmVxdWVzdCB0byBiZSBtb21lbnRhcmls eSBwcmVlbXB0ZWQuIChJZiBpdCBmYWlscyB0bwo+ICsJICogYmUgcHJlZW1wdGVkLCBpdCB3aWxs IGJlIHJlc2V0KS4gQXMgd2UgaGF2ZSBtYXJrZWQgb3VyIGNvbnRleHQKPiArCSAqIGFzIGJhbm5l ZCwgYW55IGluY29tcGxldGUgcmVxdWVzdCwgaW5jbHVkaW5nIGFueSBydW5uaW5nLCB3aWxsCj4g KwkgKiBiZSBza2lwcGVkIGZvbGxvd2luZyB0aGUgcHJlZW1wdGlvbi4KPiArCSAqLwo+ICsJcmVz ZXQgPSAwOwo+ICsJZm9yX2VhY2hfZW5naW5lX21hc2tlZChlbmdpbmUsIGd0LT5pOTE1LCBhY3Rp dmUsIHRtcCkKPiArCQlpZiAoaW50ZWxfZW5naW5lX3B1bHNlKGVuZ2luZSkpCj4gKwkJCXJlc2V0 IHw9IGVuZ2luZS0+bWFzazsKCldoYXQgaWYgd2Ugd2VyZSBhYmxlIHRvIHNlbmQgYSBwdWxzZSwg YnV0IHRoZSBob2cgY2Fubm90IGJlIHByZWVtcHRlZCAKYW5kIGhhbmdjaGVjayBpcyBvYnZpb3Vz bHkgZGlzYWJsZWQgLSB3aG8gd2lsbCBkbyB0aGUgcmVzZXQ/Cgo+ICsKPiArCS8qCj4gKwkgKiBJ ZiB3ZSBhcmUgdW5hYmxlIHRvIHNlbmQgYSBwcmVlbXB0aXZlIHB1bHNlIHRvIGJ1bXAKPiArCSAq IHRoZSBjb250ZXh0IGZyb20gdGhlIEdQVSwgd2UgaGF2ZSB0byByZXNvcnQgdG8gYSBmdWxsCj4g KwkgKiByZXNldC4gV2UgaG9wZSB0aGUgY29sbGF0ZXJhbCBkYW1hZ2UgaXMgd29ydGggaXQuCj4g KwkgKi8KPiArCWlmIChyZXNldCkKPiArCQlpbnRlbF9ndF9oYW5kbGVfZXJyb3IoZ3QsIHJlc2V0 LCAwLAo+ICsJCQkJICAgICAgImNvbnRleHQgY2xvc3VyZSBpbiAlcyIsIGN0eC0+bmFtZSk7Cj4g K30KPiArCj4gICBzdGF0aWMgdm9pZCBjb250ZXh0X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHgpCj4gICB7Cj4gICAJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07Cj4gQEAg LTI5MSw5ICszNjQsNDcgQEAgc3RhdGljIHZvaWQgY29udGV4dF9jbG9zZShzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4KQo+ICAgCWx1dF9jbG9zZShjdHgpOwo+ICAgCj4gICAJbXV0ZXhfdW5s b2NrKCZjdHgtPm11dGV4KTsKPiArCj4gKwkvKgo+ICsJICogSWYgdGhlIHVzZXIgaGFzIGRpc2Fi bGVkIGhhbmdjaGVja2luZywgd2UgY2FuIG5vdCBiZSBzdXJlIHRoYXQKPiArCSAqIHRoZSBiYXRj aGVzIHdpbGwgZXZlciBjb21wbGV0ZSBhZnRlciB0aGUgY29udGV4dCBpcyBjbG9zZWQsCj4gKwkg KiBrZWVwIHRoZSBjb250ZXh0IGFuZCBhbGwgcmVzb3VyY2VzIHBpbm5lZCBmb3JldmVyLiBTbyBp biB0aGlzCgpzL2tlZXAva2VlcGluZy8sIEkgdGhpbmsuCgo+ICsJICogY2FzZSB3ZSBvcHQgdG8g Zm9yY2libHkga2lsbCBvZmYgYWxsIHJlbWFpbmluZyByZXF1ZXN0cyBvbgo+ICsJICogY29udGV4 dCBjbG9zZS4KPiArCSAqLwo+ICsJaWYgKCFpOTE1X2dlbV9jb250ZXh0X2lzX3BlcnNpc3RlbnQo Y3R4KSB8fAo+ICsJICAgICFpOTE1X21vZHBhcmFtcy5lbmFibGVfaGFuZ2NoZWNrKQo+ICsJCWtp bGxfY29udGV4dChjdHgpOwo+ICsKPiAgIAlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOwo+ICAg fQo+ICAgCj4gK3N0YXRpYyBpbnQgX19jb250ZXh0X3NldF9wZXJzaXN0ZW5jZShzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LCBib29sIHN0YXRlKQo+ICt7Cj4gKwlpZiAoaTkxNV9nZW1fY29u dGV4dF9pc19wZXJzaXN0ZW50KGN0eCkgPT0gc3RhdGUpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJ aWYgKHN0YXRlKSB7Cj4gKwkJLyoKPiArCQkgKiBPbmx5IGNvbnRleHRzIHRoYXQgYXJlIHNob3J0 LWxpdmVkIFt0aGF0IHdpbGwgZXhwaXJlIG9yIGJlCj4gKwkJICogcmVzZXRdIGFyZSBhbGxvd2Vk IHRvIHN1cnZpdmUgcGFzdCB0ZXJtaW5hdGlvbi4gV2UgcmVxdWlyZQo+ICsJCSAqIGhhbmdjaGVj ayB0byBlbnN1cmUgdGhhdCB0aGUgcGVyc2lzdGVudCByZXF1ZXN0cyBhcmUgaGVhbHRoeS4KPiAr CQkgKi8KPiArCQlpZiAoIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9oYW5nY2hlY2spCj4gKwkJCXJl dHVybiAtRUlOVkFMOwo+ICsKPiArCQlpOTE1X2dlbV9jb250ZXh0X3NldF9wZXJzaXN0ZW5jZShj dHgpOwo+ICsJfSBlbHNlIHsKPiArCQkvKiBUbyBjYW5jZWwgYSBjb250ZXh0IHdlIHVzZSAicHJl ZW1wdC10by1pZGxlIiAqLwo+ICsJCWlmICghKGN0eC0+aTkxNS0+Y2Fwcy5zY2hlZHVsZXIgJiBJ OTE1X1NDSEVEVUxFUl9DQVBfUFJFRU1QVElPTikpCj4gKwkJCXJldHVybiAtRU5PREVWOwo+ICsK PiArCQlpOTE1X2dlbV9jb250ZXh0X2NsZWFyX3BlcnNpc3RlbmNlKGN0eCk7Cj4gKwl9Cj4gKwo+ ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gICBzdGF0aWMgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg Kgo+ICAgX19jcmVhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAg IHsKPiBAQCAtMzI4LDYgKzQzOSw3IEBAIF9fY3JlYXRlX2NvbnRleHQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCj4gICAKPiAgIAlpOTE1X2dlbV9jb250ZXh0X3NldF9iYW5uYWJsZShj dHgpOwo+ICAgCWk5MTVfZ2VtX2NvbnRleHRfc2V0X3JlY292ZXJhYmxlKGN0eCk7Cj4gKwlfX2Nv bnRleHRfc2V0X3BlcnNpc3RlbmNlKGN0eCwgdHJ1ZSAvKiBjZ3JvdXAgaG9vaz8gKi8pOwo+ICAg Cj4gICAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3R4LT5oYW5nX3RpbWVzdGFtcCk7IGkr KykKPiAgIAkJY3R4LT5oYW5nX3RpbWVzdGFtcFtpXSA9IGppZmZpZXMgLSBDT05URVhUX0ZBU1Rf SEFOR19KSUZGSUVTOwo+IEBAIC00ODQsNiArNTk2LDcgQEAgaTkxNV9nZW1fY29udGV4dF9jcmVh dGVfa2VybmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBpbnQgcHJpbykKPiAgIAkJ cmV0dXJuIGN0eDsKPiAgIAo+ICAgCWk5MTVfZ2VtX2NvbnRleHRfY2xlYXJfYmFubmFibGUoY3R4 KTsKPiArCWk5MTVfZ2VtX2NvbnRleHRfc2V0X3BlcnNpc3RlbmNlKGN0eCk7Cj4gICAJY3R4LT5z Y2hlZC5wcmlvcml0eSA9IEk5MTVfVVNFUl9QUklPUklUWShwcmlvKTsKPiAgIAo+ICAgCUdFTV9C VUdfT04oIWk5MTVfZ2VtX2NvbnRleHRfaXNfa2VybmVsKGN0eCkpOwo+IEBAIC0xNTk0LDYgKzE3 MDcsMTYgQEAgZ2V0X2VuZ2luZXMoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAly ZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBpbnQKPiArc2V0X3BlcnNpc3RlbmNlKHN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gKwkJY29uc3Qgc3RydWN0IGRybV9pOTE1X2dl bV9jb250ZXh0X3BhcmFtICphcmdzKQo+ICt7Cj4gKwlpZiAoYXJncy0+c2l6ZSkKPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiArCj4gKwlyZXR1cm4gX19jb250ZXh0X3NldF9wZXJzaXN0ZW5jZShjdHgs IGFyZ3MtPnZhbHVlKTsKPiArfQo+ICsKPiAgIHN0YXRpYyBpbnQgY3R4X3NldHBhcmFtKHN0cnVj dCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZwcml2LAo+ICAgCQkJc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmN0eCwKPiAgIAkJCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJn cykKPiBAQCAtMTY3MSw2ICsxNzk0LDEwIEBAIHN0YXRpYyBpbnQgY3R4X3NldHBhcmFtKHN0cnVj dCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZwcml2LAo+ICAgCQlyZXQgPSBzZXRfZW5naW5lcyhj dHgsIGFyZ3MpOwo+ICAgCQlicmVhazsKPiAgIAo+ICsJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1f UEVSU0lTVEVOQ0U6Cj4gKwkJcmV0ID0gc2V0X3BlcnNpc3RlbmNlKGN0eCwgYXJncyk7Cj4gKwkJ YnJlYWs7Cj4gKwo+ICAgCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0JBTl9QRVJJT0Q6Cj4gICAJ ZGVmYXVsdDoKPiAgIAkJcmV0ID0gLUVJTlZBTDsKPiBAQCAtMjEyMyw2ICsyMjUwLDExIEBAIGlu dCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCj4gICAJCXJldCA9IGdldF9lbmdpbmVzKGN0eCwgYXJncyk7Cj4gICAJCWJy ZWFrOwo+ICAgCj4gKwljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9QRVJTSVNURU5DRToKPiArCQlh cmdzLT5zaXplID0gMDsKPiArCQlhcmdzLT52YWx1ZSA9IGk5MTVfZ2VtX2NvbnRleHRfaXNfcGVy c2lzdGVudChjdHgpOwo+ICsJCWJyZWFrOwo+ICsKPiAgIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJB TV9CQU5fUEVSSU9EOgo+ICAgCWRlZmF1bHQ6Cj4gICAJCXJldCA9IC1FSU5WQUw7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5oCj4gaW5kZXggOTIzNDU4Njgz MGQxLi4yZWVjMDM1MzgyYTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX2NvbnRleHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9jb250ZXh0LmgKPiBAQCAtNzYsNiArNzYsMjEgQEAgc3RhdGljIGlubGluZSB2b2lkIGk5 MTVfZ2VtX2NvbnRleHRfY2xlYXJfcmVjb3ZlcmFibGUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmMKPiAgIAljbGVhcl9iaXQoVUNPTlRFWFRfUkVDT1ZFUkFCTEUsICZjdHgtPnVzZXJfZmxhZ3Mp Owo+ICAgfQo+ICAgCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9jb250ZXh0X2lzX3Bl cnNpc3RlbnQoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiArewo+ICsJcmV0 dXJuIHRlc3RfYml0KFVDT05URVhUX1BFUlNJU1RFTkNFLCAmY3R4LT51c2VyX2ZsYWdzKTsKPiAr fQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfc2V0X3BlcnNpc3Rl bmNlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gK3sKPiArCXNldF9iaXQoVUNPTlRF WFRfUEVSU0lTVEVOQ0UsICZjdHgtPnVzZXJfZmxhZ3MpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5s aW5lIHZvaWQgaTkxNV9nZW1fY29udGV4dF9jbGVhcl9wZXJzaXN0ZW5jZShzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4KQo+ICt7Cj4gKwljbGVhcl9iaXQoVUNPTlRFWFRfUEVSU0lTVEVOQ0Us ICZjdHgtPnVzZXJfZmxhZ3MpOwo+ICt9Cj4gKwo+ICAgc3RhdGljIGlubGluZSBib29sIGk5MTVf Z2VtX2NvbnRleHRfaXNfYmFubmVkKGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgp Cj4gICB7Cj4gICAJcmV0dXJuIHRlc3RfYml0KENPTlRFWFRfQkFOTkVELCAmY3R4LT5mbGFncyk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0 X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dF90eXBl cy5oCj4gaW5kZXggYWI4ZTEzNjdkZmM4Li5hM2VjZDE5ZjIzMDMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHRfdHlwZXMuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmgKPiBAQCAtMTM3 LDYgKzEzNyw3IEBAIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0IHsKPiAgICNkZWZpbmUgVUNPTlRF WFRfTk9fRVJST1JfQ0FQVFVSRQkxCj4gICAjZGVmaW5lIFVDT05URVhUX0JBTk5BQkxFCQkyCj4g ICAjZGVmaW5lIFVDT05URVhUX1JFQ09WRVJBQkxFCQkzCj4gKyNkZWZpbmUgVUNPTlRFWFRfUEVS U0lTVEVOQ0UJCTQKPiAgIAo+ICAgCS8qKgo+ICAgCSAqIEBmbGFnczogc21hbGwgc2V0IG9mIGJv b2xlYW5zCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMv bW9ja19jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL21vY2tf Y29udGV4dC5jCj4gaW5kZXggNzRkZGQ2ODJjOWNkLi4yOWI4OTg0ZjBlNDcgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKPiBA QCAtMjIsNiArMjIsOCBAQCBtb2NrX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCj4gICAJSU5JVF9MSVNUX0hFQUQoJmN0eC0+bGluayk7Cj4gICAJY3R4LT5pOTE1ID0gaTkx NTsKPiAgIAo+ICsJaTkxNV9nZW1fY29udGV4dF9zZXRfcGVyc2lzdGVuY2UoY3R4KTsKPiArCj4g ICAJbXV0ZXhfaW5pdCgmY3R4LT5lbmdpbmVzX211dGV4KTsKPiAgIAllID0gZGVmYXVsdF9lbmdp bmVzKGN0eCk7Cj4gICAJaWYgKElTX0VSUihlKSkKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBp L2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gaW5kZXggMzBj NTQyMTQ0MDE2Li5lYjllNzA0ZDcxN2EgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9p OTE1X2RybS5oCj4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gQEAgLTE1NjUs NiArMTU2NSwyMSBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gewo+ICAgICog ICBpOTE1X2NvbnRleHRfZW5naW5lc19ib25kIChJOTE1X0NPTlRFWFRfRU5HSU5FU19FWFRfQk9O RCkKPiAgICAqLwo+ICAgI2RlZmluZSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUwkweGEKPiAr Cj4gKy8qCj4gKyAqIEk5MTVfQ09OVEVYVF9QQVJBTV9QRVJTSVNURU5DRToKPiArICoKPiArICog QWxsb3cgdGhlIGNvbnRleHQgYW5kIGFjdGl2ZSByZW5kZXJpbmcgdG8gc3Vydml2ZSB0aGUgcHJv Y2VzcyB1bnRpbAo+ICsgKiBjb21wbGV0aW9uLiBQZXJzaXN0ZW5jZSBhbGxvd3MgZmlyZS1hbmQt Zm9yZ2V0IGNsaWVudHMgdG8gcXVldWUgdXAgYQo+ICsgKiBidW5jaCBvZiB3b3JrLCBoYW5kIHRo ZSBvdXRwdXQgb3ZlciB0byBhIGRpc3BsYXkgc2VydmVyIGFuZCB0aGUgcXVpdC4KPiArICogSWYg dGhlIGNvbnRleHQgaXMgbm90IG1hcmtlZCBhcyBwZXJzaXN0ZW50LCB1cG9uIGNsb3NpbmcgKGVp dGhlciB2aWEKPiArICogYW4gZXhwbGljaXQgRFJNX0k5MTVfR0VNX0NPTlRFWFRfREVTVFJPWSBv ciBpbXBsaWNpdGx5IGZyb20gZmlsZSBjbG9zdXJlCj4gKyAqIG9yIHByb2Nlc3MgdGVybWluYXRp b24pLCB0aGUgY29udGV4dCBhbmQgYW55IG91dHN0YW5kaW5nIHJlcXVlc3RzIHdpbGwgYmUKPiAr ICogY2FuY2VsbGVkIChhbmQgZXhwb3J0ZWQgZmVuY2VzIGZvciBjYW5jZWxsZWQgcmVxdWVzdHMg bWFya2VkIGFzIC1FSU8pLgo+ICsgKgo+ICsgKiBCeSBkZWZhdWx0LCBuZXcgY29udGV4dHMgYWxs b3cgcGVyc2lzdGVuY2UuCj4gKyAqLwo+ICsjZGVmaW5lIEk5MTVfQ09OVEVYVF9QQVJBTV9QRVJT SVNURU5DRQkweGIKPiAgIC8qIE11c3QgYmUga2VwdCBjb21wYWN0IC0tIG5vIGhvbGVzIGFuZCB3 ZWxsIGRvY3VtZW50ZWQgKi8KPiAgIAo+ICAgCV9fdTY0IHZhbHVlOwo+IAoKUmVnYXJkcywKClR2 cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=