From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH] drm/i915/selftests: Verify whitelist of context registers Date: Tue, 16 Apr 2019 15:50:27 +0100 Message-ID: <38631fbf-d116-7ec1-a405-de692dbe4a62@linux.intel.com> References: <20190416081024.20536-4-chris@chris-wilson.co.uk> <20190416091235.26089-1-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 mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 300E989DEC for ; Tue, 16 Apr 2019 14:50:30 +0000 (UTC) In-Reply-To: <20190416091235.26089-1-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 Ck9uIDE2LzA0LzIwMTkgMTA6MTIsIENocmlzIFdpbHNvbiB3cm90ZToKPiBUaGUgUklOR19OT05Q UklWIGFsbG93cyB1cyB0byBhZGQgcmVnaXN0ZXJzIHRvIGEgd2hpdGVsaXN0IHRoYXQgYWxsb3dz Cj4gdXNlcnNwYWNlIHRvIG1vZGlmeSB0aGVtLiBJZGVhbGx5IHN1Y2ggcmVnaXN0ZXJzIHNob3Vs ZCBiZSBzYWZlIGFuZAo+IHNhdmVkIHdpdGhpbiB0aGUgY29udGV4dCBzdWNoIHRoYXQgdGhleSBk byBub3QgaW1wYWN0IHN5c3RlbSBiZWhhdmlvdXIKPiBmb3Igb3RoZXIgdXNlcnMuIFRoaXMgc2Vs ZnRlc3QgdmVyaWZpZXMgdGhhdCB0aG9zZSByZWdpc3RlcnMgd2UgZG8gYWRkCj4gYXJlIChhKSB0 aGVuIHdyaXRhYmxlIGJ5IHVzZXJzcGFjZSBhbmQgKGIpIG9ubHkgYWZmZWN0IGEgc2luZ2xlIGNs aWVudC4KPiAKPiBPcGVuczoKPiAtIElzIEdFTjlfU0xJQ0VfQ09NTU9OX0VDT19DSElDS0VOMSBy ZWFsbHkgd3JpdGUtb25seT8KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGlu QGludGVsLmNvbT4KPiAtLS0KPiBDb21waWxlIGZpeCBmb3Igd3JpdGVvbmx5X3JlZygpCj4gLS0t Cj4gICAuLi4vZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMgICAgfCAzMjAg KysrKysrKysrKysrKysrKysrCj4gICAxIGZpbGUgY2hhbmdlZCwgMzIwIGluc2VydGlvbnMoKykK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3dv cmthcm91bmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fy b3VuZHMuYwo+IGluZGV4IGEzNjM3NDhhN2E0Zi4uZjQwZTA5MzdlYzk2IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF93b3JrYXJvdW5kcy5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMKPiBA QCAtNzAwLDYgKzcwMCwzMjUgQEAgc3RhdGljIGludCBsaXZlX3Jlc2V0X3doaXRlbGlzdCh2b2lk ICphcmcpCj4gICAJcmV0dXJuIGVycjsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgaW50IHJlYWRfd2hp dGVsaXN0ZWRfcmVnaXN0ZXJzKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gKwkJCQkg ICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gKwkJCQkgICAgICBzdHJ1Y3Qg aTkxNV92bWEgKnJlc3VsdHMpCj4gK3sKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICsJ c3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gKwl1MzIgc3JtLCAqY3M7Cj4gKwlpbnQgZXJyLCBp Owo+ICsKPiArCXJxID0gRVJSX1BUUigtRU5PREVWKTsKPiArCXdpdGhfaW50ZWxfcnVudGltZV9w bShlbmdpbmUtPmk5MTUsIHdha2VyZWYpCj4gKwkJcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5n aW5lLCBjdHgpOwo+ICsJaWYgKElTX0VSUihycSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIocnEpOwo+ ICsKPiArCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHJlc3VsdHMsIHJxLCBFWEVDX09C SkVDVF9XUklURSk7Cj4gKwlpZiAoZXJyKQo+ICsJCWdvdG8gZXJyX3JlcTsKCldoeSBkbyB5b3Ug dHJhY2sgdGhlIHZtYT8gVGhlcmUncyBhIHdhaXQgYmVsb3cgYW5kIGluIHNjcnViIHlvdSBldmVu IApmbHVzaCBtYW51YWxseS4KCj4gKwo+ICsJc3JtID0gTUlfU1RPUkVfUkVHSVNURVJfTUVNOwo+ ICsJaWYgKElOVEVMX0dFTihjdHgtPmk5MTUpID49IDgpCj4gKwkJc3JtKys7Cj4gKwo+ICsJY3Mg PSBpbnRlbF9yaW5nX2JlZ2luKHJxLCA0ICogZW5naW5lLT53aGl0ZWxpc3QuY291bnQpOwo+ICsJ aWYgKElTX0VSUihjcykpIHsKPiArCQllcnIgPSBQVFJfRVJSKGNzKTsKPiArCQlnb3RvIGVycl9y ZXE7Cj4gKwl9Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGVuZ2luZS0+d2hpdGVsaXN0LmNvdW50 OyBpKyspIHsKPiArCQl1NjQgb2Zmc2V0ID0gcmVzdWx0cy0+bm9kZS5zdGFydCArIHNpemVvZih1 MzIpICogaTsKPiArCj4gKwkJKmNzKysgPSBzcm07Cj4gKwkJKmNzKysgPSBpOTE1X21taW9fcmVn X29mZnNldChlbmdpbmUtPndoaXRlbGlzdC5saXN0W2ldLnJlZyk7Cj4gKwkJKmNzKysgPSBsb3dl cl8zMl9iaXRzKG9mZnNldCk7Cj4gKwkJKmNzKysgPSB1cHBlcl8zMl9iaXRzKG9mZnNldCk7Cj4g Kwl9Cj4gKwlpbnRlbF9yaW5nX2FkdmFuY2UocnEsIGNzKTsKPiArCj4gK2Vycl9yZXE6Cj4gKwlp OTE1X3JlcXVlc3RfYWRkKHJxKTsKPiArCj4gKwlpZiAoaTkxNV9yZXF1ZXN0X3dhaXQocnEsIEk5 MTVfV0FJVF9MT0NLRUQsIEhaIC8gNSkgPCAwKQo+ICsJCWVyciA9IC1FSU87Cj4gKwo+ICsJcmV0 dXJuIGVycjsKPiArfQo+ICsKPiArc3RhdGljIGludCBzY3J1Yl93aGl0ZWxpc3RlZF9yZWdpc3Rl cnMoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiArCQkJCSAgICAgICBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ ICsJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKmJhdGNoOwo+ ICsJaW50IGksIGVycjsKPiArCXUzMiAqY3M7Cj4gKwo+ICsJYmF0Y2ggPSBjcmVhdGVfYmF0Y2go Y3R4KTsKPiArCWlmIChJU19FUlIoYmF0Y2gpKQo+ICsJCXJldHVybiBQVFJfRVJSKGJhdGNoKTsK PiArCj4gKwljcyA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGJhdGNoLT5vYmosIEk5MTVfTUFQ X1dDKTsKPiArCWlmIChJU19FUlIoY3MpKSB7Cj4gKwkJZXJyID0gUFRSX0VSUihjcyk7Cj4gKwkJ Z290byBlcnJfYmF0Y2g7Cj4gKwl9Cj4gKwo+ICsJKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lN TShlbmdpbmUtPndoaXRlbGlzdC5jb3VudCk7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgZW5naW5lLT53 aGl0ZWxpc3QuY291bnQ7IGkrKykgewo+ICsJCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQo ZW5naW5lLT53aGl0ZWxpc3QubGlzdFtpXS5yZWcpOwo+ICsJCSpjcysrID0gMHhmZmZmZmZmZjsK PiArCX0KPiArCSpjcysrID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKPiArCj4gKwlpOTE1X2dlbV9v YmplY3RfZmx1c2hfbWFwKGJhdGNoLT5vYmopOwo+ICsJaTkxNV9nZW1fY2hpcHNldF9mbHVzaChj dHgtPmk5MTUpOwo+ICsKPiArCXJxID0gRVJSX1BUUigtRU5PREVWKTsKPiArCXdpdGhfaW50ZWxf cnVudGltZV9wbShlbmdpbmUtPmk5MTUsIHdha2VyZWYpCj4gKwkJcnEgPSBpOTE1X3JlcXVlc3Rf YWxsb2MoZW5naW5lLCBjdHgpOwo+ICsJaWYgKElTX0VSUihycSkpCj4gKwkJZ290byBlcnJfdW5w aW47Cj4gKwo+ICsJaWYgKGVuZ2luZS0+ZW1pdF9pbml0X2JyZWFkY3J1bWIpIHsgLyogQmUgbmlj ZSBpZiB3ZSBoYW5nICovCj4gKwkJZXJyID0gZW5naW5lLT5lbWl0X2luaXRfYnJlYWRjcnVtYihy cSk7Cj4gKwkJaWYgKGVycikKPiArCQkJZ290byBlcnJfcmVxdWVzdDsKPiArCX0KPiArCj4gKwll cnIgPSBlbmdpbmUtPmVtaXRfYmJfc3RhcnQocnEsIGJhdGNoLT5ub2RlLnN0YXJ0LCAwLCAwKTsK CldoeSBpcyBiYXRjaCBuZWVkZWQgaGVyZSB3aGVuIGV2ZXJ5dGhpbmcgZWxzZSBpcyBoYXBweSB0 byBydW4gZnJvbSB0aGUgcmluZz8KCj4gKwo+ICtlcnJfcmVxdWVzdDoKPiArCWk5MTVfcmVxdWVz dF9hZGQocnEpOwo+ICsJaWYgKGk5MTVfcmVxdWVzdF93YWl0KHJxLCBJOTE1X1dBSVRfTE9DS0VE LCBIWiAvIDUpIDwgMCkKPiArCQllcnIgPSAtRUlPOwo+ICsKPiArZXJyX3VucGluOgo+ICsJaTkx NV9nZW1fb2JqZWN0X3VucGluX21hcChiYXRjaC0+b2JqKTsKPiArZXJyX2JhdGNoOgo+ICsJaTkx NV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmJhdGNoLCAwKTsKPiArCXJldHVybiBlcnI7Cj4gK30K PiArCj4gK3N0YXRpYyBib29sIHBhcmRvbl9yZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIGk5MTVfcmVnX3QgcmVnKQo+ICt7Cj4gKwkvKiBBbGFzLCB3ZSBtdXN0IHBhcmRvbiBzb21l IHdoaXRlbGlzdHMgKi8KPiArCXN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+ICsJCWk5MTVfcmVnX3Qg cmVnOwo+ICsJCXVuc2lnbmVkIGxvbmcgZ2VuX21hc2s7Cj4gKwl9IHBhcmRvbltdID0gewo+ICsJ CXsgR0VOOV9DVFhfUFJFRU1QVF9SRUcsIElOVEVMX0dFTl9NQVNLKDksIDkpIH0sCj4gKwkJeyBH RU44X0wzU1FDUkVHNCwgSU5URUxfR0VOX01BU0soOSwgOSkgfSwKPiArCX07Cj4gKwl1MzIgb2Zm c2V0ID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKTsKPiArCWludCBpOwo+ICsKPiArCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKHBhcmRvbik7IGkrKykgewo+ICsJCWlmIChJTlRFTF9JTkZP KGk5MTUpLT5nZW5fbWFzayAmIHBhcmRvbltpXS5nZW5fbWFzayAmJgo+ICsJCSAgICBpOTE1X21t aW9fcmVnX29mZnNldChwYXJkb25baV0ucmVnKSA9PSBvZmZzZXQpCj4gKwkJCXJldHVybiB0cnVl Owo+ICsJfQo+ICsKPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICsKPiArc3RhdGljIGludCBlcV93 aGl0ZWxpc3RlZF9yZWdpc3RlcnMoc3RydWN0IGk5MTVfdm1hICpBLAo+ICsJCQkJICAgIHN0cnVj dCBpOTE1X3ZtYSAqQiwKPiArCQkJCSAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gK3sKPiArCXUzMiAqYSwgKmI7Cj4gKwlpbnQgaSwgZXJyOwo+ICsKPiArCWEgPSBpOTE1X2dl bV9vYmplY3RfcGluX21hcChBLT5vYmosIEk5MTVfTUFQX1dCKTsKPiArCWlmIChJU19FUlIoYSkp Cj4gKwkJcmV0dXJuIFBUUl9FUlIoYSk7Cj4gKwo+ICsJYiA9IGk5MTVfZ2VtX29iamVjdF9waW5f bWFwKEItPm9iaiwgSTkxNV9NQVBfV0IpOwo+ICsJaWYgKElTX0VSUihiKSkgewo+ICsJCWVyciA9 IFBUUl9FUlIoYik7Cj4gKwkJZ290byBlcnJfYTsKPiArCX0KPiArCj4gKwllcnIgPSAwOwo+ICsJ Zm9yIChpID0gMDsgaSA8IGVuZ2luZS0+d2hpdGVsaXN0LmNvdW50OyBpKyspIHsKPiArCQlpZiAo YVtpXSAhPSBiW2ldICYmCj4gKwkJICAgICFwYXJkb25fcmVnKGVuZ2luZS0+aTkxNSwgZW5naW5l LT53aGl0ZWxpc3QubGlzdFtpXS5yZWcpKSB7Cj4gKwkJCXByX2VycigiWyVkXSBXaGl0ZWxpc3Rl ZCByZWdpc3RlciAweCU0eCBub3QgY29udGV4dCBzYXZlZDogQT0lMDh4LCBCPSUwOHhcbiIsCj4g KwkJCSAgICAgICBpLCBpOTE1X21taW9fcmVnX29mZnNldChlbmdpbmUtPndoaXRlbGlzdC5saXN0 W2ldLnJlZyksCj4gKwkJCSAgICAgICBhW2ldLCBiW2ldKTsKPiArCQkJZXJyID0gLUVJTlZBTDsK PiArCQl9Cj4gKwl9Cj4gKwo+ICsJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChCLT5vYmopOwo+ ICtlcnJfYToKPiArCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoQS0+b2JqKTsKPiArCXJldHVy biBlcnI7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIHdyaXRlb25seV9yZWcoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsIGk5MTVfcmVnX3QgcmVnKQo+ICt7Cj4gKwlzdGF0aWMgY29uc3Qg c3RydWN0IHsKPiArCQlpOTE1X3JlZ190IHJlZzsKPiArCQl1bnNpZ25lZCBsb25nIGdlbl9tYXNr Owo+ICsJfSB3b1tdID0gewo+ICsJCXsgR0VOOV9TTElDRV9DT01NT05fRUNPX0NISUNLRU4xLCBJ TlRFTF9HRU5fTUFTSyg5LCA5KSB9LAo+ICsJfTsKCldoYXQgaXMgdGhlIGRpZmZlcmVuY2UgYmV0 d2VlbiBwYXJkb25lZCBhbmQgd2hpdGVsaXN0ZWQ/Cgo+ICsJdTMyIG9mZnNldCA9IGk5MTVfbW1p b19yZWdfb2Zmc2V0KHJlZyk7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRSh3byk7IGkrKykgewo+ICsJCWlmIChJTlRFTF9JTkZPKGk5MTUpLT5nZW5fbWFzayAm IHdvW2ldLmdlbl9tYXNrICYmCj4gKwkJICAgIGk5MTVfbW1pb19yZWdfb2Zmc2V0KHdvW2ldLnJl ZykgPT0gb2Zmc2V0KQo+ICsJCQlyZXR1cm4gdHJ1ZTsKPiArCX0KPiArCj4gKwlyZXR1cm4gZmFs c2U7CgpZb3UgY291bGQgY29uc29saWRhdGUgaW50byBvbmUgZmluZF9yZWcgd2hpY2ggdGFrZXMg dGhlIGFycmF5LgoKPiArfQo+ICsKPiArc3RhdGljIGludCBuZXFfd2hpdGVsaXN0ZWRfcmVnaXN0 ZXJzKHN0cnVjdCBpOTE1X3ZtYSAqQSwKPiArCQkJCSAgICAgc3RydWN0IGk5MTVfdm1hICpCLAo+ ICsJCQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCXUzMiAq YSwgKmI7Cj4gKwlpbnQgaSwgZXJyOwo+ICsKPiArCWEgPSBpOTE1X2dlbV9vYmplY3RfcGluX21h cChBLT5vYmosIEk5MTVfTUFQX1dCKTsKPiArCWlmIChJU19FUlIoYSkpCj4gKwkJcmV0dXJuIFBU Ul9FUlIoYSk7Cj4gKwo+ICsJYiA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKEItPm9iaiwgSTkx NV9NQVBfV0IpOwo+ICsJaWYgKElTX0VSUihiKSkgewo+ICsJCWVyciA9IFBUUl9FUlIoYik7Cj4g KwkJZ290byBlcnJfYTsKPiArCX0KPiArCj4gKwllcnIgPSAwOwo+ICsJZm9yIChpID0gMDsgaSA8 IGVuZ2luZS0+d2hpdGVsaXN0LmNvdW50OyBpKyspIHsKPiArCQlpZiAoYVtpXSA9PSBiW2ldICYm Cj4gKwkJICAgICF3cml0ZW9ubHlfcmVnKGVuZ2luZS0+aTkxNSwgZW5naW5lLT53aGl0ZWxpc3Qu bGlzdFtpXS5yZWcpKSB7Cj4gKwkJCXByX2VycigiWyVkXSBXaGl0ZWxpc3QgcmVnaXN0ZXIgMHgl NHg6JTA4eCB3YXMgdW53cml0YWJsZVxuIiwKPiArCQkJICAgICAgIGksIGk5MTVfbW1pb19yZWdf b2Zmc2V0KGVuZ2luZS0+d2hpdGVsaXN0Lmxpc3RbaV0ucmVnKSwgYVtpXSk7Cj4gKwkJCWVyciA9 IC1FSU5WQUw7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAo Qi0+b2JqKTsKPiArZXJyX2E6Cj4gKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKEEtPm9iaik7 Cj4gKwlyZXR1cm4gZXJyOwo+ICt9CgplcSBhbmQgbmVxIGNvdWxkIGFsc28gYmUgY2hlYXBseSBj b25zb2xpZGF0ZWQgaW50byBvbmUgdGFraW5nIHRhYmxlIGFuZCAKZXJyb3IgbWVzc2FnZS4KCj4g Kwo+ICtzdGF0aWMgaW50IGxpdmVfaXNvbGF0ZWRfd2hpdGVsaXN0KHZvaWQgKmFyZykKPiArewo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7Cj4gKwlzdHJ1Y3Qgewo+ICsJ CXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gKwkJc3RydWN0IGk5MTVfdm1hICpzY3Jh dGNoWzJdOwo+ICsJfSBjbGllbnRbMl0gPSB7fTsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZTsKPiArCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICsJaW50IGksIGVyciA9IDA7 Cj4gKwo+ICsJLyoKPiArCSAqIENoZWNrIHRoYXQgYSB3cml0ZSBpbnRvIGEgd2hpdGVsaXN0IHJl Z2lzdGVyIHdvcmtzLCBidXQKPiArCSAqIGludmlzaWJsZSB0byBhIHNlY29uZCBjb250ZXh0Lgo+ ICsJICovCj4gKwo+ICsJaWYgKCFpbnRlbF9lbmdpbmVzX2hhc19jb250ZXh0X2lzb2xhdGlvbihp OTE1KSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlpZiAoIWk5MTUtPmtlcm5lbF9jb250ZXh0LT5w cGd0dCkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShj bGllbnQpOyBpKyspIHsKPiArCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqYzsKPiArCj4gKwkJ YyA9IGtlcm5lbF9jb250ZXh0KGk5MTUpOwo+ICsJCWlmIChJU19FUlIoYykpIHsKPiArCQkJZXJy ID0gUFRSX0VSUihjKTsKPiArCQkJZ290byBlcnI7Cj4gKwkJfQo+ICsKPiArCQljbGllbnRbaV0u c2NyYXRjaFswXSA9IGNyZWF0ZV9zY3JhdGNoKCZjLT5wcGd0dC0+dm0sIDEwMjQpOwo+ICsJCWlm IChJU19FUlIoY2xpZW50W2ldLnNjcmF0Y2hbMF0pKSB7Cj4gKwkJCWVyciA9IFBUUl9FUlIoY2xp ZW50W2ldLnNjcmF0Y2hbMF0pOwo+ICsJCQlrZXJuZWxfY29udGV4dF9jbG9zZShjKTsKPiArCQkJ Z290byBlcnI7Cj4gKwkJfQo+ICsKPiArCQljbGllbnRbaV0uc2NyYXRjaFsxXSA9IGNyZWF0ZV9z Y3JhdGNoKCZjLT5wcGd0dC0+dm0sIDEwMjQpOwo+ICsJCWlmIChJU19FUlIoY2xpZW50W2ldLnNj cmF0Y2hbMV0pKSB7Cj4gKwkJCWVyciA9IFBUUl9FUlIoY2xpZW50W2ldLnNjcmF0Y2hbMV0pOwo+ ICsJCQlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmY2xpZW50W2ldLnNjcmF0Y2hbMF0sIDAp Owo+ICsJCQlrZXJuZWxfY29udGV4dF9jbG9zZShjKTsKPiArCQkJZ290byBlcnI7Cj4gKwkJfQo+ ICsKPiArCQljbGllbnRbaV0uY3R4ID0gYzsKPiArCX0KPiArCj4gKwlmb3JfZWFjaF9lbmdpbmUo ZW5naW5lLCBpOTE1LCBpZCkgewo+ICsJCWlmICghZW5naW5lLT53aGl0ZWxpc3QuY291bnQpCj4g KwkJCWNvbnRpbnVlOwo+ICsKPiArCQkvKiBSZWFkIGRlZmF1bHQgdmFsdWVzICovCj4gKwkJZXJy ID0gcmVhZF93aGl0ZWxpc3RlZF9yZWdpc3RlcnMoY2xpZW50WzBdLmN0eCwgZW5naW5lLAo+ICsJ CQkJCQkgY2xpZW50WzBdLnNjcmF0Y2hbMF0pOwo+ICsJCWlmIChlcnIpCj4gKwkJCWdvdG8gZXJy Owo+ICsKPiArCQkvKiBUcnkgdG8gb3ZlcndyaXRlIHJlZ2lzdGVycyAoc2hvdWxkIG9ubHkgYWZm ZWN0IGN0eDApICovCj4gKwkJZXJyID0gc2NydWJfd2hpdGVsaXN0ZWRfcmVnaXN0ZXJzKGNsaWVu dFswXS5jdHgsIGVuZ2luZSk7Cj4gKwkJaWYgKGVycikKPiArCQkJZ290byBlcnI7Cj4gKwo+ICsJ CS8qIFJlYWQgdmFsdWVzIGZyb20gY3R4MSwgd2UgZXhwZWN0IHRoZXNlIHRvIGJlIGRlZmF1bHRz ICovCj4gKwkJZXJyID0gcmVhZF93aGl0ZWxpc3RlZF9yZWdpc3RlcnMoY2xpZW50WzFdLmN0eCwg ZW5naW5lLAo+ICsJCQkJCQkgY2xpZW50WzFdLnNjcmF0Y2hbMF0pOwo+ICsJCWlmIChlcnIpCj4g KwkJCWdvdG8gZXJyOwo+ICsKPiArCQkvKiBWZXJpZnkgdGhhdCBib3RoIHJlYWRzIHJldHVybiB0 aGUgc2FtZSBkZWZhdWx0IHZhbHVlcyAqLwo+ICsJCWVyciA9IGVxX3doaXRlbGlzdGVkX3JlZ2lz dGVycyhjbGllbnRbMF0uc2NyYXRjaFswXSwKPiArCQkJCQkgICAgICAgY2xpZW50WzFdLnNjcmF0 Y2hbMF0sCj4gKwkJCQkJICAgICAgIGVuZ2luZSk7Cj4gKwkJaWYgKGVycikKPiArCQkJZ290byBl cnI7Cj4gKwo+ICsJCS8qIFJlYWQgYmFjayB0aGUgdXBkYXRlZCB2YWx1ZXMgaW4gY3R4MCAqLwo+ ICsJCWVyciA9IHJlYWRfd2hpdGVsaXN0ZWRfcmVnaXN0ZXJzKGNsaWVudFswXS5jdHgsIGVuZ2lu ZSwKPiArCQkJCQkJIGNsaWVudFswXS5zY3JhdGNoWzFdKTsKPiArCQlpZiAoZXJyKQo+ICsJCQln b3RvIGVycjsKPiArCj4gKwkJLyogVXNlciBzaG91bGQgYmUgZ3JhbnRlZCBwcml2aWxlZ2UgdG8g b3ZlcndoaXRlIHJlZ3MgKi8KPiArCQllcnIgPSBuZXFfd2hpdGVsaXN0ZWRfcmVnaXN0ZXJzKGNs aWVudFswXS5zY3JhdGNoWzBdLAo+ICsJCQkJCQljbGllbnRbMF0uc2NyYXRjaFsxXSwKPiArCQkJ CQkJZW5naW5lKTsKPiArCQlpZiAoZXJyKQo+ICsJCQlnb3RvIGVycjsKPiArCX0KPiArCj4gK2Vy cjoKPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNsaWVudCk7IGkrKykgewo+ICsJCWlm ICghY2xpZW50W2ldLmN0eCkKPiArCQkJYnJlYWs7Cj4gKwo+ICsJCWk5MTVfdm1hX3VucGluX2Fu ZF9yZWxlYXNlKCZjbGllbnRbaV0uc2NyYXRjaFsxXSwgMCk7Cj4gKwkJaTkxNV92bWFfdW5waW5f YW5kX3JlbGVhc2UoJmNsaWVudFtpXS5zY3JhdGNoWzBdLCAwKTsKPiArCQlrZXJuZWxfY29udGV4 dF9jbG9zZShjbGllbnRbaV0uY3R4KTsKPiArCX0KPiArCj4gKwlpZiAoaWd0X2ZsdXNoX3Rlc3Qo aTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCkpCj4gKwkJZXJyID0gLUVJTzsKPiArCj4gKwlyZXR1cm4g ZXJyOwo+ICt9Cj4gKwo+ICAgc3RhdGljIGJvb2wgdmVyaWZ5X2d0X2VuZ2luZV93YShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAkJCQlzdHJ1Y3Qgd2FfbGlzdHMgKmxpc3RzLCBj b25zdCBjaGFyICpzdHIpCj4gICB7Cj4gQEAgLTg0NCw2ICsxMTYzLDcgQEAgaW50IGludGVsX3dv cmthcm91bmRzX2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ ICAgCXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9zdWJ0ZXN0IHRlc3RzW10gPSB7Cj4gICAJCVNV QlRFU1QobGl2ZV9kaXJ0eV93aGl0ZWxpc3QpLAo+ICAgCQlTVUJURVNUKGxpdmVfcmVzZXRfd2hp dGVsaXN0KSwKPiArCQlTVUJURVNUKGxpdmVfaXNvbGF0ZWRfd2hpdGVsaXN0KSwKPiAgIAkJU1VC VEVTVChsaXZlX2dwdV9yZXNldF9ndF9lbmdpbmVfd29ya2Fyb3VuZHMpLAo+ICAgCQlTVUJURVNU KGxpdmVfZW5naW5lX3Jlc2V0X2d0X2VuZ2luZV93b3JrYXJvdW5kcyksCj4gICAJfTsKPiAKClJl Z2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4