From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH] drm/i915: Look for an active kernel context before switching Date: Tue, 10 Jul 2018 12:59:26 -0700 Message-ID: <20180710195926.GF9764@intel.com> References: <20180524081135.15278-1-chris@chris-wilson.co.uk> <87po1l86c0.fsf@gaia.fi.intel.com> <152717348308.7027.17218853083342504410@mail.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 822226EAE2 for ; Tue, 10 Jul 2018 19:59:29 +0000 (UTC) Content-Disposition: inline In-Reply-To: <152717348308.7027.17218853083342504410@mail.alporthouse.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBNYXkgMjQsIDIwMTggYXQgMDM6NTE6MjNQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFF1b3RpbmcgTWlrYSBLdW9wcGFsYSAoMjAxOC0wNS0yNCAxNTo0MDo0NykKPiA+IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPiB3cml0ZXM6Cj4gPiAKPiA+ID4g V2Ugd2VyZSBub3QgdmVyeSBjYXJlZnVsbHkgY2hlY2tpbmcgdG8gc2VlIGlmIGFuIG9sZGVyIHJl cXVlc3Qgb24gdGhlCj4gPiA+IGVuZ2luZSB3YXMgYW4gZWFybGllciBzd2l0Y2gtdG8ta2VybmVs LWNvbnRleHQgYmVmb3JlIGRlY2lkaW5nIHRvIGVtaXQgYQo+ID4gPiBuZXcgc3dpdGNoLiBUaGUg ZW5kIHJlc3VsdCB3b3VsZCBiZSB0aGF0IHdlIGNvdWxkIGdldCBpbnRvIGEgcGVybWFuZW50Cj4g PiA+IGxvb3Agb2YgdHJ5aW5nIHRvIGVtaXQgYSBuZXcgcmVxdWVzdCB0byBwZXJmb3JtIHRoZSBz d2l0Y2ggc2ltcGx5IHRvCj4gPiA+IGZsdXNoIHRoZSBleGlzdGluZyBzd2l0Y2guCj4gPiA+Cj4g PiA+IFdoYXQgd2UgbmVlZCBpcyBhIG1lYW5zIG9mIHRyYWNraW5nIHRoZSBjb21wbGV0aW9uIG9m IGVhY2ggdGltZWxpbmUKPiA+ID4gdmVyc3VzIHRoZSBrZXJuZWwgY29udGV4dCwgdGhhdCBpcyB0 byBkZXRlY3QgaWYgYSBtb3JlIHJlY2VudCByZXF1ZXN0Cj4gPiA+IGhhcyBiZWVuIHN1Ym1pdHRl ZCB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHN3aXRjaCBhd2F5IGZyb20gdGhlIGtlcm5lbAo+ID4g PiBjb250ZXh0LiBUbyByZWFsaXNlIHRoaXMsIHdlIG5lZWQgb25seSB0byBsb29rIGluIG91ciBz eW5jbWFwIG9uIHRoZQo+ID4gPiBrZXJuZWwgY29udGV4dCBhbmQgY2hlY2sgdGhhdCB3ZSBoYXZl IHN5bmNocm9uaXplZCBhZ2FpbnN0IGFsbCBhY3RpdmUKPiA+ID4gcmluZ3MuCj4gPiA+Cj4gPiA+ IHYyOiBTaW5jZSBhbGwgcmluZ2J1ZmZlciBjbGllbnRzIGN1cnJlbnRseSBzaGFyZSB0aGUgc2Ft ZSB0aW1lbGluZSwgd2UgZG8KPiA+ID4gaGF2ZSB0byB1c2UgdGhlIGdlbV9jb250ZXh0IHRvIGRp c3Rpbmd1aXNoIGNsaWVudHMuCj4gPiA+Cj4gPiA+IEFzIGEgYm9udXMsIGluY2x1ZGUgYWxsIHRo ZSB0cmFjaW5nIHVzZWQgdG8gZGVidWcgdGhlIGRlYXRoIGluc2lkZQo+ID4gPiBzdXNwZW5kLgo+ ID4gPgo+ID4gPiB2MzogVGVzdCwgdGVzdCwgdGVzdC4gQ29uc3RydWN0IGEgc2VsZnRlc3QgdG8g ZXhlcmNpc2UgYW5kIGFzc2VydCB0aGUKPiA+ID4gZXhwZWN0ZWQgYmVoYXZpb3VyIHRoYXQgbXVs dGlwbGUgc3dpdGNoLXRvLWNvbnRleHRzIGRvIG5vdCBlbWl0Cj4gPiA+IHJlZHVuZGFudCByZXF1 ZXN0cy4KPiA+ID4KPiA+ID4gUmVwb3J0ZWQtYnk6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBh bGFAaW50ZWwuY29tPgo+ID4gPiBGaXhlczogYTg5ZDFmOTIxYzE1ICgiZHJtL2k5MTU6IFNwbGl0 IGk5MTVfZ2VtX3RpbWVsaW5lIGludG8gaW5kaXZpZHVhbCB0aW1lbGluZXMiKQo+ID4gPiBTaWdu ZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiA+ID4g Q2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAaW50ZWwuY29tPgo+ID4gPiAtLS0KPiA+ ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAgICB8ICAgNyAr Cj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5oICAgICAgICAgICAgICAgfCAg IDMgKwo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICAgICAg IHwgIDg2ICsrKysrKysrKy0tCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVl c3QuYyAgICAgICAgICAgfCAgIDUgKy0KPiA+ID4gIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfZ2VtX2NvbnRleHQuYyB8IDE0NCArKysrKysrKysrKysrKysrKysKPiA+ID4gIC4uLi9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oICB8ICAgMSArCj4gPiA+ICA2 IGZpbGVzIGNoYW5nZWQsIDIzMSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKPiA+ID4K PiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gPiA+IGluZGV4IDAzODc0YjUwYWRhOS4uMDVm NDRjYTM1YTA2IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiA+ID4gQEAg LTM3MDMsNiArMzcwMyw5IEBAIHN0YXRpYyBpbnQgd2FpdF9mb3JfZW5naW5lcyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiA+ID4gIAo+ID4gPiAgaW50IGk5MTVfZ2VtX3dhaXRfZm9y X2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVkIGludCBmbGFncykK PiA+ID4gIHsKPiA+ID4gKyAgICAgR0VNX1RSQUNFKCJmbGFncz0leCAoJXMpXG4iLAo+ID4gPiAr ICAgICAgICAgICAgICAgZmxhZ3MsIGZsYWdzICYgSTkxNV9XQUlUX0xPQ0tFRCA/ICJsb2NrZWQi IDogInVubG9ja2VkIik7Cj4gPiA+ICsKPiA+ID4gICAgICAgLyogSWYgdGhlIGRldmljZSBpcyBh c2xlZXAsIHdlIGhhdmUgbm8gcmVxdWVzdHMgb3V0c3RhbmRpbmcgKi8KPiA+ID4gICAgICAgaWYg KCFSRUFEX09OQ0UoaTkxNS0+Z3QuYXdha2UpKQo+ID4gPiAgICAgICAgICAgICAgIHJldHVybiAw Owo+ID4gPiBAQCAtMzcxOSw2ICszNzIyLDcgQEAgaW50IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVkIGludCBmbGFncykKPiA+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiA+ID4gICAgICAgICAg ICAgICB9Cj4gPiA+ICAgICAgICAgICAgICAgaTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkxNSk7Cj4g PiA+ICsgICAgICAgICAgICAgR0VNX0JVR19PTihpOTE1LT5ndC5hY3RpdmVfcmVxdWVzdHMpOwo+ ID4gPiAgCj4gPiA+ICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRfZm9yX2VuZ2luZXMoaTkxNSk7 Cj4gPiA+ICAgICAgIH0gZWxzZSB7Cj4gPiA+IEBAIC00OTAxLDYgKzQ5MDUsNyBAQCBzdGF0aWMg dm9pZCBhc3NlcnRfa2VybmVsX2NvbnRleHRfaXNfY3VycmVudChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKPiA+ID4gICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ ID4gPiAgICAgICBlbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiA+ID4gIAo+ID4gPiArICAgICBH RU1fQlVHX09OKGk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cyk7Cj4gPiA+ICAgICAgIGZvcl9lYWNo X2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gPiA+ICAgICAgICAgICAgICAgR0VNX0JVR19P TihfX2k5MTVfZ2VtX2FjdGl2ZV9wZWVrKCZlbmdpbmUtPnRpbWVsaW5lLmxhc3RfcmVxdWVzdCkp Owo+ID4gPiAgICAgICAgICAgICAgIEdFTV9CVUdfT04oZW5naW5lLT5sYXN0X3JldGlyZWRfY29u dGV4dC0+Z2VtX2NvbnRleHQgIT0ga2N0eCk7Cj4gPiA+IEBAIC00OTMyLDYgKzQ5MzcsOCBAQCBp bnQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g PiA+ICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsKPiA+ID4g ICAgICAgaW50IHJldDsKPiA+ID4gIAo+ID4gPiArICAgICBHRU1fVFJBQ0UoIlxuIik7Cj4gPiA+ ICsKPiA+ID4gICAgICAgaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ID4gPiAgICAg ICBpbnRlbF9zdXNwZW5kX2d0X3Bvd2Vyc2F2ZShkZXZfcHJpdik7Cj4gPiA+ICAKPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5oCj4gPiA+IGluZGV4IDViZjI0Y2ZjMjE4Yy4uNjJlZTRlMzg1MzY1 IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5oCj4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmgKPiA+ID4gQEAgLTYzLDkgKzYz LDEyIEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlOwo+ID4gPiAgI2lmIElTX0VOQUJMRUQoQ09O RklHX0RSTV9JOTE1X1RSQUNFX0dFTSkKPiA+ID4gICNkZWZpbmUgR0VNX1RSQUNFKC4uLikgdHJh Y2VfcHJpbnRrKF9fVkFfQVJHU19fKQo+ID4gPiAgI2RlZmluZSBHRU1fVFJBQ0VfRFVNUCgpIGZ0 cmFjZV9kdW1wKERVTVBfQUxMKQo+ID4gPiArI2RlZmluZSBHRU1fVFJBQ0VfRFVNUF9PTihleHBy KSBcCj4gPiA+ICsgICAgIGRvIHsgaWYgKGV4cHIpIGZ0cmFjZV9kdW1wKERVTVBfQUxMKTsgfSB3 aGlsZSAoMCkKPiA+ID4gICNlbHNlCj4gPiA+ICAjZGVmaW5lIEdFTV9UUkFDRSguLi4pIGRvIHsg fSB3aGlsZSAoMCkKPiA+ID4gICNkZWZpbmUgR0VNX1RSQUNFX0RVTVAoKSBkbyB7IH0gd2hpbGUg KDApCj4gPiA+ICsjZGVmaW5lIEdFTV9UUkFDRV9EVU1QX09OKGV4cHIpIEJVSUxEX0JVR19PTl9J TlZBTElEKGV4cHIpCj4gPiA+ICAjZW5kaWYKPiA+ID4gIAo+ID4gPiAgI2RlZmluZSBJOTE1X05V TV9FTkdJTkVTIDgKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ ID4gPiBpbmRleCBiNjliMThlZjgxMjAuLjQ1MzkzZjZlMDIwOCAxMDA2NDQKPiA+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ID4gPiBAQCAtNTc2LDMwICs1NzYs NzIgQEAgbGFzdF9yZXF1ZXN0X29uX2VuZ2luZShzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxp bmUsCj4gPiA+ICB7Cj4gPiA+ICAgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ID4gPiAg Cj4gPiA+IC0gICAgIGlmICh0aW1lbGluZSA9PSAmZW5naW5lLT50aW1lbGluZSkKPiA+ID4gLSAg ICAgICAgICAgICByZXR1cm4gTlVMTDsKPiA+ID4gKyAgICAgR0VNX0JVR19PTih0aW1lbGluZSA9 PSAmZW5naW5lLT50aW1lbGluZSk7Cj4gPiA+ICAKPiA+ID4gICAgICAgcnEgPSBpOTE1X2dlbV9h Y3RpdmVfcmF3KCZ0aW1lbGluZS0+bGFzdF9yZXF1ZXN0LAo+ID4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmVuZ2luZS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gPiA+IC0g ICAgIGlmIChycSAmJiBycS0+ZW5naW5lID09IGVuZ2luZSkKPiA+ID4gKyAgICAgaWYgKHJxICYm IHJxLT5lbmdpbmUgPT0gZW5naW5lKSB7Cj4gPiA+ICsgICAgICAgICAgICAgR0VNX1RSQUNFKCJs YXN0IHJlcXVlc3QgZm9yICVzIG9uIGVuZ2luZSAlczogJWxseDolZFxuIiwKPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgdGltZWxpbmUtPm5hbWUsIGVuZ2luZS0+bmFtZSwKPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgcnEtPmZlbmNlLmNvbnRleHQsIHJxLT5mZW5jZS5zZXFubyk7 Cj4gPiA+ICsgICAgICAgICAgICAgR0VNX0JVR19PTihycS0+dGltZWxpbmUgIT0gdGltZWxpbmUp Owo+ID4gPiAgICAgICAgICAgICAgIHJldHVybiBycTsKPiA+ID4gKyAgICAgfQo+ID4gPiAgCj4g PiA+ICAgICAgIHJldHVybiBOVUxMOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+IC1zdGF0aWMgYm9v bCBlbmdpbmVfaGFzX2lkbGVfa2VybmVsX2NvbnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ID4gPiArc3RhdGljIGJvb2wgZW5naW5lX2hhc19rZXJuZWxfY29udGV4dF9iYXJy aWVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiA+ID4gIHsKPiA+ID4gLSAgICAg c3RydWN0IGxpc3RfaGVhZCAqIGNvbnN0IGFjdGl2ZV9yaW5ncyA9ICZlbmdpbmUtPmk5MTUtPmd0 LmFjdGl2ZV9yaW5nczsKPiA+ID4gKyAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUg PSBlbmdpbmUtPmk5MTU7Cj4gPiA+ICsgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0ICog Y29uc3QgY2UgPQo+ID4gPiArICAgICAgICAgICAgIHRvX2ludGVsX2NvbnRleHQoaTkxNS0+a2Vy bmVsX2NvbnRleHQsIGVuZ2luZSk7Cj4gPiA+ICsgICAgIHN0cnVjdCBpOTE1X3RpbWVsaW5lICpi YXJyaWVyID0gY2UtPnJpbmctPnRpbWVsaW5lOwo+ID4gPiAgICAgICBzdHJ1Y3QgaW50ZWxfcmlu ZyAqcmluZzsKPiA+ID4gKyAgICAgYm9vbCBhbnlfYWN0aXZlID0gZmFsc2U7Cj4gPiA+ICAKPiA+ ID4gLSAgICAgbG9ja2RlcF9hc3NlcnRfaGVsZCgmZW5naW5lLT5pOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiA+ID4gKyAgICAgbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gPiA+ICsgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkocmluZywgJmk5MTUtPmd0LmFj dGl2ZV9yaW5ncywgYWN0aXZlX2xpbmspIHsKPiA+ID4gKyAgICAgICAgICAgICBzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycTsKPiA+ID4gKwo+ID4gPiArICAgICAgICAgICAgIHJxID0gbGFzdF9yZXF1 ZXN0X29uX2VuZ2luZShyaW5nLT50aW1lbGluZSwgZW5naW5lKTsKPiA+ID4gKyAgICAgICAgICAg ICBpZiAoIXJxKQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiA+ICAK PiA+ID4gLSAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShyaW5nLCBhY3RpdmVfcmluZ3MsIGFjdGl2 ZV9saW5rKSB7Cj4gPiA+IC0gICAgICAgICAgICAgaWYgKGxhc3RfcmVxdWVzdF9vbl9lbmdpbmUo cmluZy0+dGltZWxpbmUsIGVuZ2luZSkpCj4gPiA+ICsgICAgICAgICAgICAgYW55X2FjdGl2ZSA9 IHRydWU7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgICAgICBpZiAocnEtPmdlbV9jb250ZXh0ID09 IGk5MTUtPmtlcm5lbF9jb250ZXh0KQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgY29udGlu dWU7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgICAgICAvKgo+ID4gPiArICAgICAgICAgICAgICAq IFdhcyB0aGlzIHJlcXVlc3Qgc3VibWl0dGVkIGFmdGVyIHRoZSBwcmV2aW91cwo+ID4gPiArICAg ICAgICAgICAgICAqIHN3aXRjaC10by1rZXJuZWwtY29udGV4dD8KPiA+ID4gKyAgICAgICAgICAg ICAgKi8KPiA+ID4gKyAgICAgICAgICAgICBpZiAoIWk5MTVfdGltZWxpbmVfc3luY19pc19sYXRl cihiYXJyaWVyLCAmcnEtPmZlbmNlKSkgewo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgR0VN X1RSQUNFKCIlcyBuZWVkcyBiYXJyaWVyIGZvciAlbGx4OiVkXG4iLAo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJpbmctPnRpbWVsaW5lLT5uYW1lLAo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJxLT5mZW5jZS5jb250ZXh0LAo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJxLT5mZW5jZS5zZXFubyk7Cj4gPiA+ICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gPiA+ICsgICAgICAgICAgICAgfQo+ID4gPiAr Cj4gPiA+ICsgICAgICAgICAgICAgR0VNX1RSQUNFKCIlcyBoYXMgYmFycmllciBhZnRlciAlbGx4 OiVkXG4iLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICByaW5nLT50aW1lbGluZS0+bmFt ZSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcnEtPmZlbmNlLmNvbnRleHQsCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIHJxLT5mZW5jZS5zZXFubyk7Cj4gPiA+ICAgICAgIH0K PiA+ID4gIAo+ID4gPiAtICAgICByZXR1cm4gaW50ZWxfZW5naW5lX2hhc19rZXJuZWxfY29udGV4 dChlbmdpbmUpOwo+ID4gPiArICAgICAvKgo+ID4gPiArICAgICAgKiBJZiBhbnkgb3RoZXIgdGlt ZWxpbmUgd2FzIHN0aWxsIGFjdGl2ZSBhbmQgYmVoaW5kIHRoZSBsYXN0IGJhcnJpZXIsCj4gPiA+ ICsgICAgICAqIHRoZW4gb3VyIGxhc3Qgc3dpdGNoLXRvLWtlcm5lbC1jb250ZXh0IG11c3Qgc3Rp bGwgYmUgcXVldWVkIGFuZAo+ID4gPiArICAgICAgKiB3aWxsIHJ1biBsYXN0IChsZWF2aW5nIHRo ZSBlbmdpbmUgaW4gdGhlIGtlcm5lbCBjb250ZXh0IHdoZW4gaXQKPiA+ID4gKyAgICAgICogZXZl bnR1YWxseSBpZGxlcykuCj4gPiA+ICsgICAgICAqLwo+ID4gPiArICAgICBpZiAoYW55X2FjdGl2 ZSkKPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPiA+ID4gKwo+ID4gPiArICAgICAv KiBUaGUgZW5naW5lIGlzIGlkbGU7IGNoZWNrIHRoYXQgaXQgaXMgaWRsaW5nIGluIHRoZSBrZXJu ZWwgY29udGV4dC4gKi8KPiA+ID4gKyAgICAgcmV0dXJuIGVuZ2luZS0+bGFzdF9yZXRpcmVkX2Nv bnRleHQgPT0gY2U7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gIGludCBpOTE1X2dlbV9zd2l0Y2hf dG9fa2VybmVsX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gPiA+IEBA IC02MDcsNyArNjQ5LDEwIEBAIGludCBpOTE1X2dlbV9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gPiA+ICAgICAgIHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZTsKPiA+ID4gICAgICAgZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4g PiA+ICAKPiA+ID4gKyAgICAgR0VNX1RSQUNFKCJcbiIpOwo+ID4gPiArCj4gPiA+ICAgICAgIGxv Y2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ID4gPiArICAgICBH RU1fQlVHX09OKCFpOTE1LT5rZXJuZWxfY29udGV4dCk7Cj4gPiA+ICAKPiA+ID4gICAgICAgaTkx NV9yZXRpcmVfcmVxdWVzdHMoaTkxNSk7Cj4gPiA+ICAKPiA+ID4gQEAgLTYxNSw5ICs2NjAsMTIg QEAgaW50IGk5MTVfZ2VtX3N3aXRjaF90b19rZXJuZWxfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKPiA+ID4gICAgICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfcmluZyAqcmlu ZzsKPiA+ID4gICAgICAgICAgICAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiA+ID4gIAo+ ID4gPiAtICAgICAgICAgICAgIGlmIChlbmdpbmVfaGFzX2lkbGVfa2VybmVsX2NvbnRleHQoZW5n aW5lKSkKPiA+ID4gKyAgICAgICAgICAgICBHRU1fQlVHX09OKCF0b19pbnRlbF9jb250ZXh0KGk5 MTUtPmtlcm5lbF9jb250ZXh0LCBlbmdpbmUpKTsKPiA+ID4gKyAgICAgICAgICAgICBpZiAoZW5n aW5lX2hhc19rZXJuZWxfY29udGV4dF9iYXJyaWVyKGVuZ2luZSkpCj4gPiA+ICAgICAgICAgICAg ICAgICAgICAgICBjb250aW51ZTsKPiA+ID4gIAo+ID4gPiArICAgICAgICAgICAgIEdFTV9UUkFD RSgiZW1pdCBiYXJyaWVyIG9uICVzXG4iLCBlbmdpbmUtPm5hbWUpOwo+ID4gPiArCj4gPiA+ICAg ICAgICAgICAgICAgcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBpOTE1LT5rZXJuZWxf Y29udGV4dCk7Cj4gPiA+ICAgICAgICAgICAgICAgaWYgKElTX0VSUihycSkpCj4gPiA+ICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihycSk7Cj4gPiA+IEBAIC02MjcsMTAgKzY3 NSwyMCBAQCBpbnQgaTkxNV9nZW1fc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGk5 MTVfcmVxdWVzdCAqcHJldjsKPiA+ID4gIAo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgcHJl diA9IGxhc3RfcmVxdWVzdF9vbl9lbmdpbmUocmluZy0+dGltZWxpbmUsIGVuZ2luZSk7Cj4gPiA+ IC0gICAgICAgICAgICAgICAgICAgICBpZiAocHJldikKPiA+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaTkxNV9zd19mZW5jZV9hd2FpdF9zd19mZW5jZV9nZnAoJnJxLT5zdWJtaXQs Cj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZwcmV2LT5zdWJtaXQsCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEk5MTVfRkVOQ0VfR0ZQKTsK PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldikKPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIGlmIChwcmV2LT5nZW1fY29udGV4dCA9PSBpOTE1LT5rZXJuZWxfY29udGV4dCkKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiA+ICsKPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgIEdFTV9UUkFDRSgiYWRkIGJhcnJpZXIgb24gJXMgZm9yICVs bHg6JWRcbiIsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lLT5u YW1lLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXYtPmZlbmNlLmNv bnRleHQsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldi0+ZmVuY2Uu c2Vxbm8pOwo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgaTkxNV9zd19mZW5jZV9hd2FpdF9z d19mZW5jZV9nZnAoJnJxLT5zdWJtaXQsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJldi0+c3VibWl0LAo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTkxNV9GRU5D RV9HRlApOwo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgaTkxNV90aW1lbGluZV9zeW5jX3Nl dChycS0+dGltZWxpbmUsICZwcmV2LT5mZW5jZSk7Cj4gPiA+ICAgICAgICAgICAgICAgfQo+ID4g PiAgCj4gPiA+ICAgICAgICAgICAgICAgLyoKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1 ZXN0LmMKPiA+ID4gaW5kZXggZmM0OTliY2JkMTA1Li5mMTg3MjUwZTYwYzYgMTAwNjQ0Cj4gPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gPiA+IEBAIC0zMjAsNiArMzIwLDcg QEAgc3RhdGljIHZvaWQgYWR2YW5jZV9yaW5nKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3Qp Cj4gPiA+ICAgICAgICAgICAgICAgICogaXMganVzdCBhYm91dCB0byBiZS4gRWl0aGVyIHdvcmtz LCBpZiB3ZSBtaXNzIHRoZSBsYXN0IHR3bwo+ID4gPiAgICAgICAgICAgICAgICAqIG5vb3BzIC0g dGhleSBhcmUgc2FmZSB0byBiZSByZXBsYXllZCBvbiBhIHJlc2V0Lgo+ID4gPiAgICAgICAgICAg ICAgICAqLwo+ID4gPiArICAgICAgICAgICAgIEdFTV9UUkFDRSgibWFya2luZyAlcyBhcyBpbmFj dGl2ZVxuIiwgcmluZy0+dGltZWxpbmUtPm5hbWUpOwo+ID4gPiAgICAgICAgICAgICAgIHRhaWwg PSBSRUFEX09OQ0UocmVxdWVzdC0+dGFpbCk7Cj4gPiA+ICAgICAgICAgICAgICAgbGlzdF9kZWwo JnJpbmctPmFjdGl2ZV9saW5rKTsKPiA+ID4gICAgICAgfSBlbHNlIHsKPiA+ID4gQEAgLTEwOTUs OCArMTA5NiwxMCBAQCB2b2lkIF9faTkxNV9yZXF1ZXN0X2FkZChzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpyZXF1ZXN0LCBib29sIGZsdXNoX2NhY2hlcykKPiA+ID4gICAgICAgaTkxNV9nZW1fYWN0aXZl X3NldCgmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCwgcmVxdWVzdCk7Cj4gPiA+ICAKPiA+ID4gICAg ICAgbGlzdF9hZGRfdGFpbCgmcmVxdWVzdC0+cmluZ19saW5rLCAmcmluZy0+cmVxdWVzdF9saXN0 KTsKPiA+ID4gLSAgICAgaWYgKGxpc3RfaXNfZmlyc3QoJnJlcXVlc3QtPnJpbmdfbGluaywgJnJp bmctPnJlcXVlc3RfbGlzdCkpCj4gPiA+ICsgICAgIGlmIChsaXN0X2lzX2ZpcnN0KCZyZXF1ZXN0 LT5yaW5nX2xpbmssICZyaW5nLT5yZXF1ZXN0X2xpc3QpKSB7Cj4gPiA+ICsgICAgICAgICAgICAg R0VNX1RSQUNFKCJtYXJraW5nICVzIGFzIGFjdGl2ZVxuIiwgcmluZy0+dGltZWxpbmUtPm5hbWUp Owo+ID4gPiAgICAgICAgICAgICAgIGxpc3RfYWRkKCZyaW5nLT5hY3RpdmVfbGluaywgJnJlcXVl c3QtPmk5MTUtPmd0LmFjdGl2ZV9yaW5ncyk7Cj4gPiA+ICsgICAgIH0KPiA+ID4gICAgICAgcmVx dWVzdC0+ZW1pdHRlZF9qaWZmaWVzID0gamlmZmllczsKPiA+ID4gIAo+ID4gPiAgICAgICAvKgo+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2Vt X2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250 ZXh0LmMKPiA+ID4gaW5kZXggZGRiMDNmMDA5MjMyLi45OGEzM2E4ZmIwNDYgMTAwNjQ0Cj4gPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMK PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRl eHQuYwo+ID4gPiBAQCAtMjYsNiArMjYsNyBAQAo+ID4gPiAgI2luY2x1ZGUgImlndF9mbHVzaF90 ZXN0LmgiCj4gPiA+ICAKPiA+ID4gICNpbmNsdWRlICJtb2NrX2RybS5oIgo+ID4gPiArI2luY2x1 ZGUgIm1vY2tfZ2VtX2RldmljZS5oIgo+ID4gPiAgI2luY2x1ZGUgImh1Z2VfZ2VtX29iamVjdC5o Igo+ID4gPiAgCj4gPiA+ICAjZGVmaW5lIERXX1BFUl9QQUdFIChQQUdFX1NJWkUgLyBzaXplb2Yo dTMyKSkKPiA+ID4gQEAgLTQyMCw2ICs0MjEsMTMwIEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9leGVj KHZvaWQgKmFyZykKPiA+ID4gICAgICAgcmV0dXJuIGVycjsKPiA+ID4gIH0KPiA+ID4gIAo+ID4g PiArc3RhdGljIGNvbnN0IGNoYXIgKl9fZW5naW5lX25hbWUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgZW5naW5lcykKPiA+ID4gK3sKPiA+ID4gKyAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lOwo+ID4gPiArICAgICB1bnNpZ25lZCBpbnQgdG1wOwo+ID4gPiArCj4gPiA+ICsgICAg IGlmIChlbmdpbmVzID09IEFMTF9FTkdJTkVTKQo+ID4gPiArICAgICAgICAgICAgIHJldHVybiAi YWxsIjsKPiA+ID4gKwo+ID4gPiArICAgICBmb3JfZWFjaF9lbmdpbmVfbWFza2VkKGVuZ2luZSwg aTkxNSwgZW5naW5lcywgdG1wKQo+ID4gPiArICAgICAgICAgICAgIHJldHVybiBlbmdpbmUtPm5h bWU7Cj4gPiA+ICsKPiA+ID4gKyAgICAgcmV0dXJuICJub25lIjsKPiA+ID4gK30KPiA+ID4gKwo+ ID4gPiArc3RhdGljIGludCBfX2lndF9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGVuZ2luZXMpCj4gPiA+ ICt7Cj4gPiA+ICsgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiA+ID4gKyAg ICAgdW5zaWduZWQgaW50IHRtcDsKPiA+ID4gKyAgICAgaW50IGVycjsKPiA+ID4gKwo+ID4gPiAr ICAgICBHRU1fVFJBQ0UoIlRlc3RpbmcgJXNcbiIsIF9fZW5naW5lX25hbWUoaTkxNSwgZW5naW5l cykpOwo+ID4gPiArICAgICBmb3JfZWFjaF9lbmdpbmVfbWFza2VkKGVuZ2luZSwgaTkxNSwgZW5n aW5lcywgdG1wKSB7Cj4gPiA+ICsgICAgICAgICAgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7 Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgICAgICBycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdp bmUsIGN0eCk7Cj4gPiA+ICsgICAgICAgICAgICAgaWYgKElTX0VSUihycSkpCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihycSk7Cj4gPiA+ICsKPiA+ID4gKyAgICAg ICAgICAgICBpOTE1X3JlcXVlc3RfYWRkKHJxKTsKPiA+ID4gKyAgICAgfQo+ID4gPiArCj4gPiA+ ICsgICAgIGVyciA9IGk5MTVfZ2VtX3N3aXRjaF90b19rZXJuZWxfY29udGV4dChpOTE1KTsKPiA+ ID4gKyAgICAgaWYgKGVycikKPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ID4gPiAr Cj4gPiA+ICsgICAgIGZvcl9lYWNoX2VuZ2luZV9tYXNrZWQoZW5naW5lLCBpOTE1LCBlbmdpbmVz LCB0bXApIHsKPiA+ID4gKyAgICAgICAgICAgICBpZiAoIWVuZ2luZV9oYXNfa2VybmVsX2NvbnRl eHRfYmFycmllcihlbmdpbmUpKSB7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBwcl9lcnIo Imtlcm5lbCBjb250ZXh0IG5vdCBsYXN0IG9uIGVuZ2luZSAlcyFcbiIsCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZW5naW5lLT5uYW1lKTsKPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiArICAgICAgICAgICAgIH0KPiA+ID4gKyAgICAg fQo+ID4gPiArCj4gPiA+ICsgICAgIGVyciA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoaTkxNSwg STkxNV9XQUlUX0xPQ0tFRCk7Cj4gPiA+ICsgICAgIGlmIChlcnIpCj4gPiA+ICsgICAgICAgICAg ICAgcmV0dXJuIGVycjsKPiA+ID4gKwo+ID4gPiArICAgICBHRU1fQlVHX09OKGk5MTUtPmd0LmFj dGl2ZV9yZXF1ZXN0cyk7Cj4gPiA+ICsgICAgIGZvcl9lYWNoX2VuZ2luZV9tYXNrZWQoZW5naW5l LCBpOTE1LCBlbmdpbmVzLCB0bXApIHsKPiA+ID4gKyAgICAgICAgICAgICBpZiAoZW5naW5lLT5s YXN0X3JldGlyZWRfY29udGV4dC0+Z2VtX2NvbnRleHQgIT0gaTkxNS0+a2VybmVsX2NvbnRleHQp IHsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHByX2VycigiZW5naW5lICVzIG5vdCBpZGxp bmcgaW4ga2VybmVsIGNvbnRleHQhXG4iLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVuZ2luZS0+bmFtZSk7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsKPiA+ID4gKyAgICAgICAgICAgICB9Cj4gPiA+ICsgICAgIH0KPiA+ID4gKwo+ID4gPiAr ICAgICBlcnIgPSBpOTE1X2dlbV9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoaTkxNSk7Cj4gPiA+ ICsgICAgIGlmIChlcnIpCj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiA+ID4gKwo+ ID4gPiArICAgICBpZiAoaTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKSB7Cj4gPiA+ICsgICAgICAg ICAgICAgcHJfZXJyKCJzd2l0Y2gtdG8ta2VybmVsLWNvbnRleHQgZW1pdHRlZCAlZCByZXF1ZXN0 cyBldmVuIHRob3VnaCBpdCBzaG91bGQgYWxyZWFkeSBiZSBpZGxpbmcgaW4gdGhlIGtlcm5lbCBj b250ZXh0XG4iLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICBpOTE1LT5ndC5hY3RpdmVfcmVx dWVzdHMpOwo+ID4gPiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiArICAgICB9 Cj4gPiA+ICsKPiA+ID4gKyAgICAgZm9yX2VhY2hfZW5naW5lX21hc2tlZChlbmdpbmUsIGk5MTUs IGVuZ2luZXMsIHRtcCkgewo+ID4gPiArICAgICAgICAgICAgIGlmICghaW50ZWxfZW5naW5lX2hh c19rZXJuZWxfY29udGV4dChlbmdpbmUpKSB7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBw cl9lcnIoImtlcm5lbCBjb250ZXh0IG5vdCBsYXN0IG9uIGVuZ2luZSAlcyFcbiIsCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lLT5uYW1lKTsKPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiArICAgICAgICAgICAgIH0KPiA+ID4g KyAgICAgfQo+ID4gPiArCj4gPiA+ICsgICAgIHJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4g PiA+ICtzdGF0aWMgaW50IGlndF9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQodm9pZCAqYXJnKQo+ ID4gPiArewo+ID4gPiArICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsK PiA+ID4gKyAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ID4gPiArICAgICBz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ID4gPiArICAgICBlbnVtIGludGVsX2VuZ2lu ZV9pZCBpZDsKPiA+ID4gKyAgICAgaW50IGVycjsKPiA+ID4gKwo+ID4gPiArICAgICAvKgo+ID4g PiArICAgICAgKiBBIGNvcmUgcHJlbWlzZSBvZiBzd2l0Y2hpbmcgdG8gdGhlIGtlcm5lbCBjb250 ZXh0IGlzIHRoYXQKPiA+ID4gKyAgICAgICogaWYgYW4gZW5naW5lIGlzIGFscmVhZHkgaWRsaW5n IGluIHRoZSBrZXJuZWwgY29udGV4dCwgd2UKPiA+ID4gKyAgICAgICogZG8gbm90IGVtaXQgYW5v dGhlciByZXF1ZXN0IGFuZCB3YWtlIGl0IHVwLiBUaGUgb3RoZXIgYmVpbmcKPiA+ID4gKyAgICAg ICogdGhhdCB3ZSBkbyBpbmRlZWQgZW5kIHVwIGlkbGluZyBpbiB0aGUga2VybmVsIGNvbnRleHQu Cj4gPiA+ICsgICAgICAqLwo+ID4gPiArCj4gPiA+ICsgICAgIG11dGV4X2xvY2soJmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwo+ID4gCj4gPiBBcyBkaXNjdXNzZWQgaW4gaXJjLAo+ID4gCj4gPiBB ZGQgY29tbWVudCBvciByZW5hbWUgdGhlIGN0eCBoZXJlIGFuZCBpbiBfX2lndF9zd2l0Y2hfdG9f a2VybmVsX2NvbnRleHQKPiA+IHNvIHRoYXQgdGhlIHJlYWRlciBrbm93cyB0aGF0IHRoaXMgbW9j ayBrZXJuZWwgY29udGV4dCBpcwo+ID4gdXNlZCBhcyBjb252ZW5pZW50IHdheSB0byBpbmplY3Qg dGVzdCByZXF1ZXN0cy4KPiA+IAo+ID4gUmV2aWV3ZWQtYnk6IE1pa2EgS3VvcHBhbGEgPG1pa2Eu a3VvcHBhbGFAbGludXguaW50ZWwuY29tPgo+ID4gCj4gPiAKPiA+ID4gKyAgICAgY3R4ID0ga2Vy bmVsX2NvbnRleHQoaTkxNSk7Cj4gCj4gSSBjYW4gc2VlIGhvdyB0aGF0IG1pZ2h0IGxvb2sgY29u ZnVzaW5nLiBXaWxsIHRyeSB0byBhZGRyZXNzIHRoZSBpc3N1ZQo+IHdpdGggdGhlIGZhY3Rvcnkg bmFtZXMuCj4gCj4gVGhhbmsgeW91IGZvciB5b3VyIHBhdGllbmNlIGluIGZpbmRpbmcgdGhlIGJ1 Zywgc3VnZ2VzdGluZyBhIGZpeCBhbmQgaW4KPiByZXZpZXdpbmcgdGhlIGFmdGVybWF0aC4gUHVz aGVkLCBmb3IgdG9tb3Jyb3cgd2UgbmVlZCB0byBmaXggc3VzcGVuZCEKCkhpIENocmlzLCB0aGlz IGZhaWxlZCB0aGUgY2hlcnJ5LXBpY2sgZm9yIGRybS1pbnRlbC1maXhlcywgYnV0IGxvb2tpbmcK dG8gdGhlIGxvZyBpdCBzZWVtcyBzb21ldGhpbmcgd2Ugd2FudCB0aGVyZSByaWdodD8hCgpJZiBz bywgY291bGQgeW91IHBsZWFzZSBzZW5kIHRoZSBwb3J0ZWQgdmVyc2lvbiBmb3IgZHJtLWludGVs LWZpeGVzCnRhcmdldGluZyA0LjE4PwoKVGhhbmtzLApSb2RyaWdvLgoKPiAtQ2hyaXMKPiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBt YWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==