From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 07/10] drm/i915/execlists: Cancel banned contexts on schedule-out Date: Fri, 11 Oct 2019 10:47:26 +0100 Message-ID: References: <20191010071434.31195-1-chris@chris-wilson.co.uk> <20191010071434.31195-7-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 mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 465F96EBFA for ; Fri, 11 Oct 2019 09:47:30 +0000 (UTC) In-Reply-To: <20191010071434.31195-7-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 Ck9uIDEwLzEwLzIwMTkgMDg6MTQsIENocmlzIFdpbHNvbiB3cm90ZToKPiBPbiBjb21wbGV0aW9u IG9mIGEgYmFubmVkIGNvbnRleHQsIHNjcnViIHRoZSBjb250ZXh0IGltYWdlIHNvIHRoYXQgd2Ug ZG8KCnMvY29tcGxldGlvbi9zY2hlZHVsZSBvdXQvIGxpa2UgaW4gdGhlIHN1YmplY3QgbGluZT8g T3RoZXJ3aXNlIEkgCnN0cnVnZ2xlIHRvIHVuZGVyc3RhbmQgaG93IGJhbm5lZCBjb250ZXh0IGlz IGNvbXBsZXRpbmcuIFByZXN1bWFibHkgaXQgCndhcyBiYW5uZWQgYmVjYXVzZSBpdCBrZWVwcyBo YW5naW5nLgoKPiBub3QgcmVwbGF5IHRoZSBhY3RpdmUgcGF5bG9hZC4gVGhlIGludGVudCBpcyB0 aGF0IHdlIHNraXAgYmFubmVkCj4gcGF5bG9hZHMgb24gcmVxdWVzdCBzdWJtaXNzaW9uIHNvIHRo YXQgdGhlIHRpbWVsaW5lIGFkdmFuY2VtZW50Cj4gY29udGludWVzIG9uIGluIHRoZSBiYWNrZ3Jv dW5kLiBIb3dldmVyLCBpZiB3ZSBhcmUgcmV0dXJuaW5nIHRvIGEKPiBwcmVlbXB0ZWQgcmVxdWVz dCwgaTkxNV9yZXF1ZXN0X3NraXAoKSBpcyBpbmVmZmVjdGl2ZSBhbmQgaW5zdGVhZCB3ZQo+IG5l ZWQgdG8gcGF0Y2ggdXAgdGhlIGNvbnRleHQgaW1hZ2Ugc28gdGhhdCBpdCBjb250aW51ZXMgZnJv bSB0aGUgc3RhcnQKPiBvZiB0aGUgbmV4dCByZXF1ZXN0LgoKQnV0IGlmIHRoZSBjb250ZXh0IGlz IGJhbm5lZCB3aHkgZG8gd2Ugd2FudCB0byBjb250aW51ZSBmcm9tIHRoZSBzdGFydCAKb2YgdGhl IG5leHQgcmVxdWVzdD8gRG9uJ3Qgd2Ugd2FudCB0byB6YXAgYWxsIHN1Ym1pdHRlZCBzbyBmYXI/ Cgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgICAgfCAg NTggKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYyB8IDI3 MyArKysrKysrKysrKysrKysrKysrKysrKysrCj4gICAyIGZpbGVzIGNoYW5nZWQsIDMzMSBpbnNl cnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiBpbmRleCBlYjk5 ZjFlODA0ZjcuLjc5YzdlYmVhMmZjYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xy Yy5jCj4gQEAgLTIzNCw2ICsyMzQsOSBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfaW5pdF9yZWdf c3RhdGUodTMyICpyZWdfc3RhdGUsCj4gICAJCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCj4gICAJCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcmluZyAqcmlu ZywKPiAgIAkJCQkgICAgIGJvb2wgY2xvc2UpOwo+ICtzdGF0aWMgdm9pZAo+ICtfX2V4ZWNsaXN0 c191cGRhdGVfcmVnX3N0YXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKPiArCQkJ ICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICAgCj4gICBzdGF0 aWMgdm9pZCBfX2NvbnRleHRfcGluX2FjcXVpcmUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+ ICAgewo+IEBAIC0xMDIyLDYgKzEwMjUsNTggQEAgc3RhdGljIHZvaWQga2lja19zaWJsaW5ncyhz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+ICAgCQl0 YXNrbGV0X3NjaGVkdWxlKCZ2ZS0+YmFzZS5leGVjbGlzdHMudGFza2xldCk7Cj4gICB9Cj4gICAK PiArc3RhdGljIHZvaWQKPiArbWFya19jb21wbGV0ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICt7Cj4gKwljb25zdCBzdHJ1Y3QgaW50 ZWxfdGltZWxpbmUgKiBjb25zdCB0bCA9IHJjdV9kZXJlZmVyZW5jZShycS0+dGltZWxpbmUpOwo+ ICsKPiArCSoodTMyICopdGwtPmh3c3Bfc2Vxbm8gPSBycS0+ZmVuY2Uuc2Vxbm87Cj4gKwlHRU1f QlVHX09OKCFpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSk7Cj4gKwo+ICsJbGlzdF9mb3JfZWFj aF9lbnRyeV9mcm9tX3JldmVyc2UocnEsICZ0bC0+cmVxdWVzdHMsIGxpbmspIHsKPiArCQlpZiAo aTkxNV9yZXF1ZXN0X3NpZ25hbGVkKHJxKSkKPiArCQkJYnJlYWs7Cj4gKwo+ICsJCW1hcmtfZWlv KHJxKTsKClRoaXMgd291bGQgLUVJTyByZXF1ZXN0cyB3aGljaCBoYXZlIHBvdGVudGlhbGx5IGJl IGNvbXBsZXRlZCBidXQgbm90IApyZXRpcmVkIHlldD8gSWYgc28gd2h5PwoKPiArCX0KPiArCj4g KwlpbnRlbF9lbmdpbmVfcXVldWVfYnJlYWRjcnVtYnMoZW5naW5lKTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgY2FuY2VsX2FjdGl2ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKPiArCQkJICBz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jb250 ZXh0ICogY29uc3QgY2UgPSBycS0+aHdfY29udGV4dDsKPiArCXUzMiAqcmVncyA9IGNlLT5scmNf cmVnX3N0YXRlOwo+ICsKPiArCWlmIChpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSkKPiArCQly ZXR1cm47Cj4gKwo+ICsJR0VNX1RSQUNFKCIlcyglcyk6IHsgcnE9JWxseDolbGxkIH1cbiIsCj4g KwkJICBfX2Z1bmNfXywgZW5naW5lLT5uYW1lLCBycS0+ZmVuY2UuY29udGV4dCwgcnEtPmZlbmNl LnNlcW5vKTsKPiArCV9fY29udGV4dF9waW5fYWNxdWlyZShjZSk7Cj4gKwo+ICsJLyogU2NydWIg dGhlIGNvbnRleHQgaW1hZ2UgdG8gcHJldmVudCByZXBsYXlpbmcgdGhlIHByZXZpb3VzIGJhdGNo ICovCj4gKwltZW1jcHkocmVncywgLyogc2tpcCByZXN0b3JpbmcgdGhlIHZhbmlsbGEgUFBIV1NQ ICovCj4gKwkgICAgICAgZW5naW5lLT5waW5uZWRfZGVmYXVsdF9zdGF0ZSArIExSQ19TVEFURV9Q TiAqIFBBR0VfU0laRSwKPiArCSAgICAgICBlbmdpbmUtPmNvbnRleHRfc2l6ZSAtIFBBR0VfU0la RSk7Cgpjb250ZXh0X3NpemUgLSBMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkUgPwoKPiArCWV4ZWNs aXN0c19pbml0X3JlZ19zdGF0ZShyZWdzLCBjZSwgZW5naW5lLCBjZS0+cmluZywgZmFsc2UpOwo+ ICsKPiArCS8qIFJpbmcgd2lsbCBiZSBhZHZhbmNlZCBvbiByZXRpcmU7IGhlcmUgd2UgbmVlZCB0 byByZXNldCB0aGUgY29udGV4dCAqLwo+ICsJY2UtPnJpbmctPmhlYWQgPSBpbnRlbF9yaW5nX3dy YXAoY2UtPnJpbmcsIHJxLT53YV90YWlsKTsKPiArCV9fZXhlY2xpc3RzX3VwZGF0ZV9yZWdfc3Rh dGUoY2UsIGVuZ2luZSk7Cj4gKwo+ICsJLyogV2UndmUgc3dpdGNoZWQgYXdheSwgc28gdGhpcyBz aG91bGQgYmUgYSBuby1vcCwgYnV0IGludGVudCBtYXR0ZXJzICovCj4gKwljZS0+bHJjX2Rlc2Mg fD0gQ1RYX0RFU0NfRk9SQ0VfUkVTVE9SRTsKPiArCj4gKwkvKiBMZXQgZXZlcnlvbmUga25vdyB0 aGF0IHRoZSByZXF1ZXN0IG1heSBub3cgYmUgcmV0aXJlZCAqLwo+ICsJcmN1X3JlYWRfbG9jaygp Owo+ICsJbWFya19jb21wbGV0ZShycSwgZW5naW5lKTsKPiArCXJjdV9yZWFkX3VubG9jaygpOwo+ ICsKPiArCV9fY29udGV4dF9waW5fcmVsZWFzZShjZSk7Cj4gK30KPiArCj4gICBzdGF0aWMgaW5s aW5lIHZvaWQKPiAgIF9fZXhlY2xpc3RzX3NjaGVkdWxlX291dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSwKPiAgIAkJCSBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICogY29uc3QgZW5naW5lKQo+IEBA IC0xMDMyLDYgKzEwODcsOSBAQCBfX2V4ZWNsaXN0c19zY2hlZHVsZV9vdXQoc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEsCj4gICAJZXhlY2xpc3RzX2NvbnRleHRfc3RhdHVzX2NoYW5nZShycSwgSU5U RUxfQ09OVEVYVF9TQ0hFRFVMRV9PVVQpOwo+ICAgCWludGVsX2d0X3BtX3B1dChlbmdpbmUtPmd0 KTsKPiAgIAo+ICsJaWYgKHVubGlrZWx5KGk5MTVfZ2VtX2NvbnRleHRfaXNfYmFubmVkKGNlLT5n ZW1fY29udGV4dCkpKQo+ICsJCWNhbmNlbF9hY3RpdmUocnEsIGVuZ2luZSk7CgpPciB5b3UgYXJl IGNvdW50aW5nIHRoaXMgaXMgYWxyZWFkeSB0aGUgbGFzdCBydW5uYWJsZSByZXF1ZXN0IGZyb20g dGhpcyAKY29udGV4dCBkdWUgY29hbGVzY2luZz8gSXQgd291bGRuJ3Qgd29yayBpZiBmb3IgYW55 IHJlYXNvbiBjb2FsZXNjaW5nIAp3b3VsZCBiZSBwcmV2ZW50ZWQuIEVpdGhlciB3aXRoIEdWVCwg b3IgSSBoYWQgc29tZSBpZGVhcyB0byBwcmV2ZW50IApjb2FsZXNjaW5nIGZvciBjb250ZXh0cyB3 aGVyZSB3YXRjaGRvZyBpcyBlbmFibGVkIGluIHRoZSBmdXR1cmUuIEluIAp3aGljaCBjYXNlIHRo aXMgd291bGQgYmUgYSBoaWRkZW4gZ290Y2hhLiBNYXliZSBhbGwgdGhhdCdzIG5lZWRlZCBpbiAK bWFya19jb21wbGV0ZSBpcyBhbHNvIHRvIGxvb2sgdG93YXJkcyB0aGUgZW5kIG9mIHRoZSBsaXN0 PwoKUmVnYXJkcywKClR2cnRrbwoKPiArCj4gICAJLyoKPiAgIAkgKiBJZiB0aGlzIGlzIHBhcnQg b2YgYSB2aXJ0dWFsIGVuZ2luZSwgaXRzIG5leHQgcmVxdWVzdCBtYXkKPiAgIAkgKiBoYXZlIGJl ZW4gYmxvY2tlZCB3YWl0aW5nIGZvciBhY2Nlc3MgdG8gdGhlIGFjdGl2ZSBjb250ZXh0Lgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jCj4gaW5kZXggMTk4Y2YyZjc1NGY0Li4x NzAzMTMwZWYwZWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRl c3RfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYwo+ IEBAIC03LDYgKzcsNyBAQAo+ICAgI2luY2x1ZGUgPGxpbnV4L3ByaW1lX251bWJlcnMuaD4KPiAg IAo+ICAgI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9wbS5oIgo+ICsjaW5jbHVkZSAiZ3QvaW50ZWxf ZW5naW5lX2hlYXJ0YmVhdC5oIgo+ICAgI2luY2x1ZGUgImd0L2ludGVsX3Jlc2V0LmgiCj4gICAK PiAgICNpbmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCj4gQEAgLTk4Niw2ICs5ODcsMjc3IEBAIHN0 YXRpYyBpbnQgbGl2ZV9ub3ByZWVtcHQodm9pZCAqYXJnKQo+ICAgCWdvdG8gZXJyX2NsaWVudF9i Owo+ICAgfQo+ICAgCj4gK3N0cnVjdCBsaXZlX3ByZWVtcHRfY2FuY2VsIHsKPiArCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArCXN0cnVjdCBwcmVlbXB0X2NsaWVudCBhLCBiOwo+ ICt9Owo+ICsKPiArc3RhdGljIGludCBfX2NhbmNlbF9hY3RpdmUwKHN0cnVjdCBsaXZlX3ByZWVt cHRfY2FuY2VsICphcmcpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ICsJc3Ry dWN0IGlndF9saXZlX3Rlc3QgdDsKPiArCWludCBlcnI7Cj4gKwo+ICsJLyogUHJlZW1wdCBjYW5j ZWwgb2YgRUxTUDAgKi8KPiArCUdFTV9UUkFDRSgiJXMoJXMpXG4iLCBfX2Z1bmNfXywgYXJnLT5l bmdpbmUtPm5hbWUpOwo+ICsKPiArCWlmIChpZ3RfbGl2ZV90ZXN0X2JlZ2luKCZ0LCBhcmctPmVu Z2luZS0+aTkxNSwKPiArCQkJCV9fZnVuY19fLCBhcmctPmVuZ2luZS0+bmFtZSkpCj4gKwkJcmV0 dXJuIC1FSU87Cj4gKwo+ICsJY2xlYXJfYml0KENPTlRFWFRfQkFOTkVELCAmYXJnLT5hLmN0eC0+ ZmxhZ3MpOwo+ICsJcnEgPSBzcGlubmVyX2NyZWF0ZV9yZXF1ZXN0KCZhcmctPmEuc3BpbiwKPiAr CQkJCSAgICBhcmctPmEuY3R4LCBhcmctPmVuZ2luZSwKPiArCQkJCSAgICBNSV9BUkJfQ0hFQ0sp Owo+ICsJaWYgKElTX0VSUihycSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIocnEpOwo+ICsKPiArCWk5 MTVfcmVxdWVzdF9nZXQocnEpOwo+ICsJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4gKwlpZiAoIWln dF93YWl0X2Zvcl9zcGlubmVyKCZhcmctPmEuc3BpbiwgcnEpKSB7Cj4gKwkJZXJyID0gLUVJTzsK PiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwlpOTE1X2dlbV9jb250ZXh0X3NldF9iYW5uZWQo YXJnLT5hLmN0eCk7Cj4gKwllcnIgPSBpbnRlbF9lbmdpbmVfcHVsc2UoYXJnLT5lbmdpbmUpOwo+ ICsJaWYgKGVycikKPiArCQlnb3RvIG91dDsKPiArCj4gKwlpZiAoaTkxNV9yZXF1ZXN0X3dhaXQo cnEsIDAsIEhaIC8gNSkgPCAwKSB7Cj4gKwkJZXJyID0gLUVJTzsKPiArCQlnb3RvIG91dDsKPiAr CX0KPiArCj4gKwlpZiAocnEtPmZlbmNlLmVycm9yICE9IC1FSU8pIHsKPiArCQlwcl9lcnIoIkNh bmNlbGxlZCBpbmZsaWdodDAgcmVxdWVzdCBkaWQgbm90IHJlcG9ydCAtRUlPXG4iKTsKPiArCQll cnIgPSAtRUlOVkFMOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArb3V0Ogo+ICsJaTkxNV9y ZXF1ZXN0X3B1dChycSk7Cj4gKwlpZiAoaWd0X2xpdmVfdGVzdF9lbmQoJnQpKQo+ICsJCWVyciA9 IC1FSU87Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IF9fY2FuY2VsX2Fj dGl2ZTEoc3RydWN0IGxpdmVfcHJlZW1wdF9jYW5jZWwgKmFyZykKPiArewo+ICsJc3RydWN0IGk5 MTVfcmVxdWVzdCAqcnFbMl0gPSB7fTsKPiArCXN0cnVjdCBpZ3RfbGl2ZV90ZXN0IHQ7Cj4gKwlp bnQgZXJyOwo+ICsKPiArCS8qIFByZWVtcHQgY2FuY2VsIG9mIEVMU1AxICovCj4gKwlHRU1fVFJB Q0UoIiVzKCVzKVxuIiwgX19mdW5jX18sIGFyZy0+ZW5naW5lLT5uYW1lKTsKPiArCj4gKwlpZiAo aWd0X2xpdmVfdGVzdF9iZWdpbigmdCwgYXJnLT5lbmdpbmUtPmk5MTUsCj4gKwkJCQlfX2Z1bmNf XywgYXJnLT5lbmdpbmUtPm5hbWUpKQo+ICsJCXJldHVybiAtRUlPOwo+ICsKPiArCWNsZWFyX2Jp dChDT05URVhUX0JBTk5FRCwgJmFyZy0+YS5jdHgtPmZsYWdzKTsKPiArCXJxWzBdID0gc3Bpbm5l cl9jcmVhdGVfcmVxdWVzdCgmYXJnLT5hLnNwaW4sCj4gKwkJCQkgICAgICAgYXJnLT5hLmN0eCwg YXJnLT5lbmdpbmUsCj4gKwkJCQkgICAgICAgTUlfTk9PUCk7IC8qIG5vIHByZWVtcHRpb24gKi8K PiArCWlmIChJU19FUlIocnFbMF0pKQo+ICsJCXJldHVybiBQVFJfRVJSKHJxWzBdKTsKPiArCj4g KwlpOTE1X3JlcXVlc3RfZ2V0KHJxWzBdKTsKPiArCWk5MTVfcmVxdWVzdF9hZGQocnFbMF0pOwo+ ICsJaWYgKCFpZ3Rfd2FpdF9mb3Jfc3Bpbm5lcigmYXJnLT5hLnNwaW4sIHJxWzBdKSkgewo+ICsJ CWVyciA9IC1FSU87Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJY2xlYXJfYml0KENPTlRF WFRfQkFOTkVELCAmYXJnLT5iLmN0eC0+ZmxhZ3MpOwo+ICsJcnFbMV0gPSBzcGlubmVyX2NyZWF0 ZV9yZXF1ZXN0KCZhcmctPmIuc3BpbiwKPiArCQkJCSAgICAgICBhcmctPmIuY3R4LCBhcmctPmVu Z2luZSwKPiArCQkJCSAgICAgICBNSV9BUkJfQ0hFQ0spOwo+ICsJaWYgKElTX0VSUihycVsxXSkp IHsKPiArCQllcnIgPSBQVFJfRVJSKHJxWzFdKTsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4g KwlpOTE1X3JlcXVlc3RfZ2V0KHJxWzFdKTsKPiArCWVyciA9IGk5MTVfcmVxdWVzdF9hd2FpdF9k bWFfZmVuY2UocnFbMV0sICZycVswXS0+ZmVuY2UpOwo+ICsJaTkxNV9yZXF1ZXN0X2FkZChycVsx XSk7Cj4gKwlpZiAoZXJyKQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCWk5MTVfZ2VtX2NvbnRleHRf c2V0X2Jhbm5lZChhcmctPmIuY3R4KTsKPiArCWVyciA9IGludGVsX2VuZ2luZV9wdWxzZShhcmct PmVuZ2luZSk7Cj4gKwlpZiAoZXJyKQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCWlndF9zcGlubmVy X2VuZCgmYXJnLT5hLnNwaW4pOwo+ICsJaWYgKGk5MTVfcmVxdWVzdF93YWl0KHJxWzFdLCAwLCBI WiAvIDUpIDwgMCkgewo+ICsJCWVyciA9IC1FSU87Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ ICsJaWYgKHJxWzBdLT5mZW5jZS5lcnJvciAhPSAwKSB7Cj4gKwkJcHJfZXJyKCJOb3JtYWwgaW5m bGlnaHQwIHJlcXVlc3QgZGlkIG5vdCBjb21wbGV0ZVxuIik7Cj4gKwkJZXJyID0gLUVJTlZBTDsK PiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwlpZiAocnFbMV0tPmZlbmNlLmVycm9yICE9IC1F SU8pIHsKPiArCQlwcl9lcnIoIkNhbmNlbGxlZCBpbmZsaWdodDEgcmVxdWVzdCBkaWQgbm90IHJl cG9ydCAtRUlPXG4iKTsKPiArCQllcnIgPSAtRUlOVkFMOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ ICsKPiArb3V0Ogo+ICsJaTkxNV9yZXF1ZXN0X3B1dChycVsxXSk7Cj4gKwlpOTE1X3JlcXVlc3Rf cHV0KHJxWzBdKTsKPiArCWlmIChpZ3RfbGl2ZV90ZXN0X2VuZCgmdCkpCj4gKwkJZXJyID0gLUVJ TzsKPiArCXJldHVybiBlcnI7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgX19jYW5jZWxfcXVldWVk KHN0cnVjdCBsaXZlX3ByZWVtcHRfY2FuY2VsICphcmcpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxWzNdID0ge307Cj4gKwlzdHJ1Y3QgaWd0X2xpdmVfdGVzdCB0Owo+ICsJaW50IGVy cjsKPiArCj4gKwkvKiBGdWxsIEVMU1AgYW5kIG9uZSBpbiB0aGUgd2luZ3MgKi8KPiArCUdFTV9U UkFDRSgiJXMoJXMpXG4iLCBfX2Z1bmNfXywgYXJnLT5lbmdpbmUtPm5hbWUpOwo+ICsKPiArCWlm IChpZ3RfbGl2ZV90ZXN0X2JlZ2luKCZ0LCBhcmctPmVuZ2luZS0+aTkxNSwKPiArCQkJCV9fZnVu Y19fLCBhcmctPmVuZ2luZS0+bmFtZSkpCj4gKwkJcmV0dXJuIC1FSU87Cj4gKwo+ICsJY2xlYXJf Yml0KENPTlRFWFRfQkFOTkVELCAmYXJnLT5hLmN0eC0+ZmxhZ3MpOwo+ICsJcnFbMF0gPSBzcGlu bmVyX2NyZWF0ZV9yZXF1ZXN0KCZhcmctPmEuc3BpbiwKPiArCQkJCSAgICAgICBhcmctPmEuY3R4 LCBhcmctPmVuZ2luZSwKPiArCQkJCSAgICAgICBNSV9BUkJfQ0hFQ0spOwo+ICsJaWYgKElTX0VS UihycVswXSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIocnFbMF0pOwo+ICsKPiArCWk5MTVfcmVxdWVz dF9nZXQocnFbMF0pOwo+ICsJaTkxNV9yZXF1ZXN0X2FkZChycVswXSk7Cj4gKwlpZiAoIWlndF93 YWl0X2Zvcl9zcGlubmVyKCZhcmctPmEuc3BpbiwgcnFbMF0pKSB7Cj4gKwkJZXJyID0gLUVJTzsK PiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwljbGVhcl9iaXQoQ09OVEVYVF9CQU5ORUQsICZh cmctPmIuY3R4LT5mbGFncyk7Cj4gKwlycVsxXSA9IGlndF9yZXF1ZXN0X2FsbG9jKGFyZy0+Yi5j dHgsIGFyZy0+ZW5naW5lKTsKPiArCWlmIChJU19FUlIocnFbMV0pKSB7Cj4gKwkJZXJyID0gUFRS X0VSUihycVsxXSk7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJaTkxNV9yZXF1ZXN0X2dl dChycVsxXSk7Cj4gKwllcnIgPSBpOTE1X3JlcXVlc3RfYXdhaXRfZG1hX2ZlbmNlKHJxWzFdLCAm cnFbMF0tPmZlbmNlKTsKPiArCWk5MTVfcmVxdWVzdF9hZGQocnFbMV0pOwo+ICsJaWYgKGVycikK PiArCQlnb3RvIG91dDsKPiArCj4gKwlycVsyXSA9IHNwaW5uZXJfY3JlYXRlX3JlcXVlc3QoJmFy Zy0+Yi5zcGluLAo+ICsJCQkJICAgICAgIGFyZy0+YS5jdHgsIGFyZy0+ZW5naW5lLAo+ICsJCQkJ ICAgICAgIE1JX0FSQl9DSEVDSyk7Cj4gKwlpZiAoSVNfRVJSKHJxWzJdKSkgewo+ICsJCWVyciA9 IFBUUl9FUlIocnFbMl0pOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCWk5MTVfcmVxdWVz dF9nZXQocnFbMl0pOwo+ICsJZXJyID0gaTkxNV9yZXF1ZXN0X2F3YWl0X2RtYV9mZW5jZShycVsy XSwgJnJxWzFdLT5mZW5jZSk7Cj4gKwlpOTE1X3JlcXVlc3RfYWRkKHJxWzJdKTsKPiArCWlmIChl cnIpCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJaTkxNV9nZW1fY29udGV4dF9zZXRfYmFubmVkKGFy Zy0+YS5jdHgpOwo+ICsJZXJyID0gaW50ZWxfZW5naW5lX3B1bHNlKGFyZy0+ZW5naW5lKTsKPiAr CWlmIChlcnIpCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJaWYgKGk5MTVfcmVxdWVzdF93YWl0KHJx WzJdLCAwLCBIWiAvIDUpIDwgMCkgewo+ICsJCWVyciA9IC1FSU87Cj4gKwkJZ290byBvdXQ7Cj4g Kwl9Cj4gKwo+ICsJaWYgKHJxWzBdLT5mZW5jZS5lcnJvciAhPSAtRUlPKSB7Cj4gKwkJcHJfZXJy KCJDYW5jZWxsZWQgaW5mbGlnaHQwIHJlcXVlc3QgZGlkIG5vdCByZXBvcnQgLUVJT1xuIik7Cj4g KwkJZXJyID0gLUVJTlZBTDsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwlpZiAocnFbMV0t PmZlbmNlLmVycm9yICE9IDApIHsKPiArCQlwcl9lcnIoIk5vcm1hbCBpbmZsaWdodDEgcmVxdWVz dCBkaWQgbm90IGNvbXBsZXRlXG4iKTsKPiArCQllcnIgPSAtRUlOVkFMOwo+ICsJCWdvdG8gb3V0 Owo+ICsJfQo+ICsKPiArCWlmIChycVsyXS0+ZmVuY2UuZXJyb3IgIT0gLUVJTykgewo+ICsJCXBy X2VycigiQ2FuY2VsbGVkIHF1ZXVlZCByZXF1ZXN0IGRpZCBub3QgcmVwb3J0IC1FSU9cbiIpOwo+ ICsJCWVyciA9IC1FSU5WQUw7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICtvdXQ6Cj4gKwlp OTE1X3JlcXVlc3RfcHV0KHJxWzJdKTsKPiArCWk5MTVfcmVxdWVzdF9wdXQocnFbMV0pOwo+ICsJ aTkxNV9yZXF1ZXN0X3B1dChycVswXSk7Cj4gKwlpZiAoaWd0X2xpdmVfdGVzdF9lbmQoJnQpKQo+ ICsJCWVyciA9IC1FSU87Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGxp dmVfcHJlZW1wdF9jYW5jZWwodm9pZCAqYXJnKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IGFyZzsKPiArCXN0cnVjdCBsaXZlX3ByZWVtcHRfY2FuY2VsIGRhdGE7Cj4g KwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiArCWludCBlcnIgPSAtRU5PTUVNOwo+ICsKPiAr CS8qCj4gKwkgKiBUbyBjYW5jZWwgYW4gaW5mbGlnaHQgY29udGV4dCwgd2UgbmVlZCB0byBmaXJz dCByZW1vdmUgaXQgZnJvbSB0aGUKPiArCSAqIEdQVS4gVGhhdCBzb3VuZHMgbGlrZSBwcmVlbXB0 aW9uISBQbHVzIGEgbGl0dGxlIGJpdCBvZiBib29ra2VlcGluZy4KPiArCSAqLwo+ICsKPiArCWlm ICghSEFTX0xPR0lDQUxfUklOR19QUkVFTVBUSU9OKGk5MTUpKQo+ICsJCXJldHVybiAwOwo+ICsK PiArCWlmIChwcmVlbXB0X2NsaWVudF9pbml0KGk5MTUsICZkYXRhLmEpKQo+ICsJCXJldHVybiAt RU5PTUVNOwo+ICsJaWYgKHByZWVtcHRfY2xpZW50X2luaXQoaTkxNSwgJmRhdGEuYikpCj4gKwkJ Z290byBlcnJfY2xpZW50X2E7Cj4gKwo+ICsJZm9yX2VhY2hfZW5naW5lKGRhdGEuZW5naW5lLCBp OTE1LCBpZCkgewo+ICsJCWlmICghaW50ZWxfZW5naW5lX2hhc19wcmVlbXB0aW9uKGRhdGEuZW5n aW5lKSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWVyciA9IF9fY2FuY2VsX2FjdGl2ZTAoJmRh dGEpOwo+ICsJCWlmIChlcnIpCj4gKwkJCWdvdG8gZXJyX3dlZGdlZDsKPiArCj4gKwkJZXJyID0g X19jYW5jZWxfYWN0aXZlMSgmZGF0YSk7Cj4gKwkJaWYgKGVycikKPiArCQkJZ290byBlcnJfd2Vk Z2VkOwo+ICsKPiArCQllcnIgPSBfX2NhbmNlbF9xdWV1ZWQoJmRhdGEpOwo+ICsJCWlmIChlcnIp Cj4gKwkJCWdvdG8gZXJyX3dlZGdlZDsKPiArCX0KPiArCj4gKwllcnIgPSAwOwo+ICtlcnJfY2xp ZW50X2I6Cj4gKwlwcmVlbXB0X2NsaWVudF9maW5pKCZkYXRhLmIpOwo+ICtlcnJfY2xpZW50X2E6 Cj4gKwlwcmVlbXB0X2NsaWVudF9maW5pKCZkYXRhLmEpOwo+ICsJcmV0dXJuIGVycjsKPiArCj4g K2Vycl93ZWRnZWQ6Cj4gKwlHRU1fVFJBQ0VfRFVNUCgpOwo+ICsJaWd0X3NwaW5uZXJfZW5kKCZk YXRhLmIuc3Bpbik7Cj4gKwlpZ3Rfc3Bpbm5lcl9lbmQoJmRhdGEuYS5zcGluKTsKPiArCWludGVs X2d0X3NldF93ZWRnZWQoJmk5MTUtPmd0KTsKPiArCWdvdG8gZXJyX2NsaWVudF9iOwo+ICt9Cj4g Kwo+ICAgc3RhdGljIGludCBsaXZlX3N1cHByZXNzX3NlbGZfcHJlZW1wdCh2b2lkICphcmcpCj4g ICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7Cj4gQEAgLTIyNzAs NiArMjU0Miw3IEBAIGludCBpbnRlbF9leGVjbGlzdHNfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJCVNVQlRFU1QobGl2ZV9wcmVlbXB0KSwKPiAgIAkJ U1VCVEVTVChsaXZlX2xhdGVfcHJlZW1wdCksCj4gICAJCVNVQlRFU1QobGl2ZV9ub3ByZWVtcHQp LAo+ICsJCVNVQlRFU1QobGl2ZV9wcmVlbXB0X2NhbmNlbCksCj4gICAJCVNVQlRFU1QobGl2ZV9z dXBwcmVzc19zZWxmX3ByZWVtcHQpLAo+ICAgCQlTVUJURVNUKGxpdmVfc3VwcHJlc3Nfd2FpdF9w cmVlbXB0KSwKPiAgIAkJU1VCVEVTVChsaXZlX2NoYWluX3ByZWVtcHQpLAo+IApfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=