From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v3] drm/i915/selftests: Verify whitelist of context registers Date: Wed, 24 Apr 2019 12:09:41 +0100 Message-ID: <20190424110941.9869-1-chris@chris-wilson.co.uk> References: <20190424102822.20515-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id BFB9089117 for ; Wed, 24 Apr 2019 11:09:53 +0000 (UTC) In-Reply-To: <20190424102822.20515-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhlIFJJTkdfTk9OUFJJViBhbGxvd3MgdXMgdG8gYWRkIHJlZ2lzdGVycyB0byBhIHdoaXRlbGlz dCB0aGF0IGFsbG93cwp1c2Vyc3BhY2UgdG8gbW9kaWZ5IHRoZW0uIElkZWFsbHkgc3VjaCByZWdp c3RlcnMgc2hvdWxkIGJlIHNhZmUgYW5kCnNhdmVkIHdpdGhpbiB0aGUgY29udGV4dCBzdWNoIHRo YXQgdGhleSBkbyBub3QgaW1wYWN0IHN5c3RlbSBiZWhhdmlvdXIKZm9yIG90aGVyIHVzZXJzLiBU aGlzIHNlbGZ0ZXN0IHZlcmlmaWVzIHRoYXQgdGhvc2UgcmVnaXN0ZXJzIHdlIGRvIGFkZAphcmUg KGEpIHRoZW4gd3JpdGFibGUgYnkgdXNlcnNwYWNlIGFuZCAoYikgb25seSBhZmZlY3QgYSBzaW5n bGUgY2xpZW50LgoKT3BlbnM6Ci0gSXMgR0VOOV9TTElDRV9DT01NT05fRUNPX0NISUNLRU4xIHJl YWxseSB3cml0ZS1vbmx5PwoKdjI6IFJlbW92ZSB0aGUgYmxhdGFudCBjb3B5LXBhc3RlLgp2Mzog RW11bGF0ZSB1c2Vyc3BhY2UgcmVnaXN0ZXIgd3JpdGVzIHZpYSB0aGUgYmF0Y2ggYWdhaW4uCgpT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6 IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBU dnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0KQXNzdW1pbmcgdGhl IHItYiBob2xkcyBmb3IgdGhlIGJhdGNoIGZpeHVwLiBOb3cgY29tbWVudGVkIHdoeS4KLS0tCiAu Li4vZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMgICAgfCAzMTEgKysrKysr KysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMzExIGluc2VydGlvbnMoKykKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fyb3VuZHMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF93b3JrYXJvdW5kcy5jCmluZGV4 IGEzNjM3NDhhN2E0Zi4uNDAwN2FlNzkyNjRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fyb3VuZHMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fyb3VuZHMuYwpAQCAtNzAwLDYgKzcwMCwzMTYgQEAg c3RhdGljIGludCBsaXZlX3Jlc2V0X3doaXRlbGlzdCh2b2lkICphcmcpCiAJcmV0dXJuIGVycjsK IH0KIAorc3RhdGljIGludCByZWFkX3doaXRlbGlzdGVkX3JlZ2lzdGVycyhzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4LAorCQkJCSAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKKwkJCQkgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnJlc3VsdHMpCit7CisJaW50ZWxfd2FrZXJl Zl90IHdha2VyZWY7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CisJaW50IGksIGVyciA9IDA7 CisJdTMyIHNybSwgKmNzOworCisJcnEgPSBFUlJfUFRSKC1FTk9ERVYpOworCXdpdGhfaW50ZWxf cnVudGltZV9wbShlbmdpbmUtPmk5MTUsIHdha2VyZWYpCisJCXJxID0gaTkxNV9yZXF1ZXN0X2Fs bG9jKGVuZ2luZSwgY3R4KTsKKwlpZiAoSVNfRVJSKHJxKSkKKwkJcmV0dXJuIFBUUl9FUlIocnEp OworCisJc3JtID0gTUlfU1RPUkVfUkVHSVNURVJfTUVNOworCWlmIChJTlRFTF9HRU4oY3R4LT5p OTE1KSA+PSA4KQorCQlzcm0rKzsKKworCWNzID0gaW50ZWxfcmluZ19iZWdpbihycSwgNCAqIGVu Z2luZS0+d2hpdGVsaXN0LmNvdW50KTsKKwlpZiAoSVNfRVJSKGNzKSkgeworCQllcnIgPSBQVFJf RVJSKGNzKTsKKwkJZ290byBlcnJfcmVxOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBlbmdpbmUt PndoaXRlbGlzdC5jb3VudDsgaSsrKSB7CisJCXU2NCBvZmZzZXQgPSByZXN1bHRzLT5ub2RlLnN0 YXJ0ICsgc2l6ZW9mKHUzMikgKiBpOworCisJCSpjcysrID0gc3JtOworCQkqY3MrKyA9IGk5MTVf bW1pb19yZWdfb2Zmc2V0KGVuZ2luZS0+d2hpdGVsaXN0Lmxpc3RbaV0ucmVnKTsKKwkJKmNzKysg PSBsb3dlcl8zMl9iaXRzKG9mZnNldCk7CisJCSpjcysrID0gdXBwZXJfMzJfYml0cyhvZmZzZXQp OworCX0KKwlpbnRlbF9yaW5nX2FkdmFuY2UocnEsIGNzKTsKKworZXJyX3JlcToKKwlpOTE1X3Jl cXVlc3RfYWRkKHJxKTsKKworCWlmIChpOTE1X3JlcXVlc3Rfd2FpdChycSwgSTkxNV9XQUlUX0xP Q0tFRCwgSFogLyA1KSA8IDApCisJCWVyciA9IC1FSU87CisKKwlyZXR1cm4gZXJyOworfQorCitz dGF0aWMgaW50IHNjcnViX3doaXRlbGlzdGVkX3JlZ2lzdGVycyhzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4LAorCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7 CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CisJ c3RydWN0IGk5MTVfdm1hICpiYXRjaDsKKwlpbnQgaSwgZXJyID0gMDsKKwl1MzIgKmNzOworCisJ YmF0Y2ggPSBjcmVhdGVfYmF0Y2goY3R4KTsKKwlpZiAoSVNfRVJSKGJhdGNoKSkKKwkJcmV0dXJu IFBUUl9FUlIoYmF0Y2gpOworCisJY3MgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChiYXRjaC0+ b2JqLCBJOTE1X01BUF9XQyk7CisJaWYgKElTX0VSUihjcykpIHsKKwkJZXJyID0gUFRSX0VSUihj cyk7CisJCWdvdG8gZXJyX2JhdGNoOworCX0KKworCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9J TU0oZW5naW5lLT53aGl0ZWxpc3QuY291bnQpOworCWZvciAoaSA9IDA7IGkgPCBlbmdpbmUtPndo aXRlbGlzdC5jb3VudDsgaSsrKSB7CisJCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoZW5n aW5lLT53aGl0ZWxpc3QubGlzdFtpXS5yZWcpOworCQkqY3MrKyA9IDB4ZmZmZmZmZmY7CisJfQor CSpjcysrID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKKworCWk5MTVfZ2VtX29iamVjdF9mbHVzaF9t YXAoYmF0Y2gtPm9iaik7CisJaTkxNV9nZW1fY2hpcHNldF9mbHVzaChjdHgtPmk5MTUpOworCisJ cnEgPSBFUlJfUFRSKC1FTk9ERVYpOworCXdpdGhfaW50ZWxfcnVudGltZV9wbShlbmdpbmUtPmk5 MTUsIHdha2VyZWYpCisJCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4KTsKKwlp ZiAoSVNfRVJSKHJxKSkgeworCQllcnIgPSBQVFJfRVJSKHJxKTsKKwkJZ290byBlcnJfdW5waW47 CisJfQorCisJaWYgKGVuZ2luZS0+ZW1pdF9pbml0X2JyZWFkY3J1bWIpIHsgLyogQmUgbmljZSBp ZiB3ZSBoYW5nICovCisJCWVyciA9IGVuZ2luZS0+ZW1pdF9pbml0X2JyZWFkY3J1bWIocnEpOwor CQlpZiAoZXJyKQorCQkJZ290byBlcnJfcmVxdWVzdDsKKwl9CisKKwkvKiBQZXJmb3JtIHRoZSB3 cml0ZXMgZnJvbSBhbiB1bnByaXZpbGVnZWQgInVzZXIiIGJhdGNoICovCisJZXJyID0gZW5naW5l LT5lbWl0X2JiX3N0YXJ0KHJxLCBiYXRjaC0+bm9kZS5zdGFydCwgMCwgMCk7CisKK2Vycl9yZXF1 ZXN0OgorCWk5MTVfcmVxdWVzdF9hZGQocnEpOworCWlmIChpOTE1X3JlcXVlc3Rfd2FpdChycSwg STkxNV9XQUlUX0xPQ0tFRCwgSFogLyA1KSA8IDApCisJCWVyciA9IC1FSU87CisKK2Vycl91bnBp bjoKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGJhdGNoLT5vYmopOworZXJyX2JhdGNoOgor CWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZiYXRjaCwgMCk7CisJcmV0dXJuIGVycjsKK30K Kworc3RydWN0IHJlZ21hc2sgeworCWk5MTVfcmVnX3QgcmVnOworCXVuc2lnbmVkIGxvbmcgZ2Vu X21hc2s7Cit9OworCitzdGF0aWMgYm9vbCBmaW5kX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKKwkJICAgICBpOTE1X3JlZ190IHJlZywKKwkJICAgICBjb25zdCBzdHJ1Y3QgcmVn bWFzayAqdGJsLAorCQkgICAgIHVuc2lnbmVkIGxvbmcgY291bnQpCit7CisJdTMyIG9mZnNldCA9 IGk5MTVfbW1pb19yZWdfb2Zmc2V0KHJlZyk7CisKKwl3aGlsZSAoY291bnQtLSkgeworCQlpZiAo SU5URUxfSU5GTyhpOTE1KS0+Z2VuX21hc2sgJiB0YmwtPmdlbl9tYXNrICYmCisJCSAgICBpOTE1 X21taW9fcmVnX29mZnNldCh0YmwtPnJlZykgPT0gb2Zmc2V0KQorCQkJcmV0dXJuIHRydWU7CisJ CXRibCsrOworCX0KKworCXJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgcGFyZG9uX3Jl ZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgaTkxNV9yZWdfdCByZWcpCit7CisJLyog QWxhcywgd2UgbXVzdCBwYXJkb24gc29tZSB3aGl0ZWxpc3RzLiBNaXN0YWtlcyBhbHJlZGR5IG1h ZGUgKi8KKwlzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hc2sgcGFyZG9uW10gPSB7CisJCXsgR0VO OV9DVFhfUFJFRU1QVF9SRUcsIElOVEVMX0dFTl9NQVNLKDksIDkpIH0sCisJCXsgR0VOOF9MM1NR Q1JFRzQsIElOVEVMX0dFTl9NQVNLKDksIDkpIH0sCisJfTsKKworCXJldHVybiBmaW5kX3JlZyhp OTE1LCByZWcsIHBhcmRvbiwgQVJSQVlfU0laRShwYXJkb24pKTsKK30KKworc3RhdGljIGJvb2wg cmVzdWx0X2VxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJICAgICAgdTMyIGEs IHUzMiBiLCBpOTE1X3JlZ190IHJlZykKK3sKKwlpZiAoYSAhPSBiICYmICFwYXJkb25fcmVnKGVu Z2luZS0+aTkxNSwgcmVnKSkgeworCQlwcl9lcnIoIldoaXRlbGlzdGVkIHJlZ2lzdGVyIDB4JTR4 IG5vdCBjb250ZXh0IHNhdmVkOiBBPSUwOHgsIEI9JTA4eFxuIiwKKwkJICAgICAgIGk5MTVfbW1p b19yZWdfb2Zmc2V0KHJlZyksIGEsIGIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJu IHRydWU7Cit9CisKK3N0YXRpYyBib29sIHdyaXRlb25seV9yZWcoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsIGk5MTVfcmVnX3QgcmVnKQoreworCS8qIFNvbWUgcmVnaXN0ZXJzIGRvIG5v dCBzZWVtIHRvIGJlaGF2ZSBhbmQgb3VyIHdyaXRlcyB1bnJlYWRhYmxlICovCisJc3RhdGljIGNv bnN0IHN0cnVjdCByZWdtYXNrIHdvW10gPSB7CisJCXsgR0VOOV9TTElDRV9DT01NT05fRUNPX0NI SUNLRU4xLCBJTlRFTF9HRU5fTUFTSyg5LCA5KSB9LAorCX07CisKKwlyZXR1cm4gZmluZF9yZWco aTkxNSwgcmVnLCB3bywgQVJSQVlfU0laRSh3bykpOworfQorCitzdGF0aWMgYm9vbCByZXN1bHRf bmVxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJICAgICAgIHUzMiBhLCB1MzIg YiwgaTkxNV9yZWdfdCByZWcpCit7CisJaWYgKGEgPT0gYiAmJiAhd3JpdGVvbmx5X3JlZyhlbmdp bmUtPmk5MTUsIHJlZykpIHsKKwkJcHJfZXJyKCJXaGl0ZWxpc3QgcmVnaXN0ZXIgMHglNHg6JTA4 eCB3YXMgdW53cml0YWJsZVxuIiwKKwkJICAgICAgIGk5MTVfbW1pb19yZWdfb2Zmc2V0KHJlZyks IGEpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBp bnQgY2hlY2tfd2hpdGVsaXN0ZWRfcmVnaXN0ZXJzKHN0cnVjdCBpOTE1X3ZtYSAqQSwKKwkJCQkg ICAgICAgc3RydWN0IGk5MTVfdm1hICpCLAorCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsCisJCQkJICAgICAgIGJvb2wgKCpmbikoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLAorCQkJCQkJICB1MzIgYSwgdTMyIGIsCisJCQkJCQkgIGk5MTVfcmVnX3QgcmVn KSkKK3sKKwl1MzIgKmEsICpiOworCWludCBpLCBlcnI7CisKKwlhID0gaTkxNV9nZW1fb2JqZWN0 X3Bpbl9tYXAoQS0+b2JqLCBJOTE1X01BUF9XQik7CisJaWYgKElTX0VSUihhKSkKKwkJcmV0dXJu IFBUUl9FUlIoYSk7CisKKwliID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoQi0+b2JqLCBJOTE1 X01BUF9XQik7CisJaWYgKElTX0VSUihiKSkgeworCQllcnIgPSBQVFJfRVJSKGIpOworCQlnb3Rv IGVycl9hOworCX0KKworCWVyciA9IDA7CisJZm9yIChpID0gMDsgaSA8IGVuZ2luZS0+d2hpdGVs aXN0LmNvdW50OyBpKyspIHsKKwkJaWYgKCFmbihlbmdpbmUsIGFbaV0sIGJbaV0sIGVuZ2luZS0+ d2hpdGVsaXN0Lmxpc3RbaV0ucmVnKSkKKwkJCWVyciA9IC1FSU5WQUw7CisJfQorCisJaTkxNV9n ZW1fb2JqZWN0X3VucGluX21hcChCLT5vYmopOworZXJyX2E6CisJaTkxNV9nZW1fb2JqZWN0X3Vu cGluX21hcChBLT5vYmopOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgbGl2ZV9pc29s YXRlZF93aGl0ZWxpc3Qodm9pZCAqYXJnKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gYXJnOworCXN0cnVjdCB7CisJCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CisJ CXN0cnVjdCBpOTE1X3ZtYSAqc2NyYXRjaFsyXTsKKwl9IGNsaWVudFsyXSA9IHt9OworCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwlp bnQgaSwgZXJyID0gMDsKKworCS8qCisJICogQ2hlY2sgdGhhdCBhIHdyaXRlIGludG8gYSB3aGl0 ZWxpc3QgcmVnaXN0ZXIgd29ya3MsIGJ1dAorCSAqIGludmlzaWJsZSB0byBhIHNlY29uZCBjb250 ZXh0LgorCSAqLworCisJaWYgKCFpbnRlbF9lbmdpbmVzX2hhc19jb250ZXh0X2lzb2xhdGlvbihp OTE1KSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoIWk5MTUtPmtlcm5lbF9jb250ZXh0LT5wcGd0dCkK KwkJcmV0dXJuIDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjbGllbnQpOyBpKysp IHsKKwkJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmM7CisKKwkJYyA9IGtlcm5lbF9jb250ZXh0 KGk5MTUpOworCQlpZiAoSVNfRVJSKGMpKSB7CisJCQllcnIgPSBQVFJfRVJSKGMpOworCQkJZ290 byBlcnI7CisJCX0KKworCQljbGllbnRbaV0uc2NyYXRjaFswXSA9IGNyZWF0ZV9zY3JhdGNoKCZj LT5wcGd0dC0+dm0sIDEwMjQpOworCQlpZiAoSVNfRVJSKGNsaWVudFtpXS5zY3JhdGNoWzBdKSkg eworCQkJZXJyID0gUFRSX0VSUihjbGllbnRbaV0uc2NyYXRjaFswXSk7CisJCQlrZXJuZWxfY29u dGV4dF9jbG9zZShjKTsKKwkJCWdvdG8gZXJyOworCQl9CisKKwkJY2xpZW50W2ldLnNjcmF0Y2hb MV0gPSBjcmVhdGVfc2NyYXRjaCgmYy0+cHBndHQtPnZtLCAxMDI0KTsKKwkJaWYgKElTX0VSUihj bGllbnRbaV0uc2NyYXRjaFsxXSkpIHsKKwkJCWVyciA9IFBUUl9FUlIoY2xpZW50W2ldLnNjcmF0 Y2hbMV0pOworCQkJaTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmNsaWVudFtpXS5zY3JhdGNo WzBdLCAwKTsKKwkJCWtlcm5lbF9jb250ZXh0X2Nsb3NlKGMpOworCQkJZ290byBlcnI7CisJCX0K KworCQljbGllbnRbaV0uY3R4ID0gYzsKKwl9CisKKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBp OTE1LCBpZCkgeworCQlpZiAoIWVuZ2luZS0+d2hpdGVsaXN0LmNvdW50KQorCQkJY29udGludWU7 CisKKwkJLyogUmVhZCBkZWZhdWx0IHZhbHVlcyAqLworCQllcnIgPSByZWFkX3doaXRlbGlzdGVk X3JlZ2lzdGVycyhjbGllbnRbMF0uY3R4LCBlbmdpbmUsCisJCQkJCQkgY2xpZW50WzBdLnNjcmF0 Y2hbMF0pOworCQlpZiAoZXJyKQorCQkJZ290byBlcnI7CisKKwkJLyogVHJ5IHRvIG92ZXJ3cml0 ZSByZWdpc3RlcnMgKHNob3VsZCBvbmx5IGFmZmVjdCBjdHgwKSAqLworCQllcnIgPSBzY3J1Yl93 aGl0ZWxpc3RlZF9yZWdpc3RlcnMoY2xpZW50WzBdLmN0eCwgZW5naW5lKTsKKwkJaWYgKGVycikK KwkJCWdvdG8gZXJyOworCisJCS8qIFJlYWQgdmFsdWVzIGZyb20gY3R4MSwgd2UgZXhwZWN0IHRo ZXNlIHRvIGJlIGRlZmF1bHRzICovCisJCWVyciA9IHJlYWRfd2hpdGVsaXN0ZWRfcmVnaXN0ZXJz KGNsaWVudFsxXS5jdHgsIGVuZ2luZSwKKwkJCQkJCSBjbGllbnRbMV0uc2NyYXRjaFswXSk7CisJ CWlmIChlcnIpCisJCQlnb3RvIGVycjsKKworCQkvKiBWZXJpZnkgdGhhdCBib3RoIHJlYWRzIHJl dHVybiB0aGUgc2FtZSBkZWZhdWx0IHZhbHVlcyAqLworCQllcnIgPSBjaGVja193aGl0ZWxpc3Rl ZF9yZWdpc3RlcnMoY2xpZW50WzBdLnNjcmF0Y2hbMF0sCisJCQkJCQkgIGNsaWVudFsxXS5zY3Jh dGNoWzBdLAorCQkJCQkJICBlbmdpbmUsCisJCQkJCQkgIHJlc3VsdF9lcSk7CisJCWlmIChlcnIp CisJCQlnb3RvIGVycjsKKworCQkvKiBSZWFkIGJhY2sgdGhlIHVwZGF0ZWQgdmFsdWVzIGluIGN0 eDAgKi8KKwkJZXJyID0gcmVhZF93aGl0ZWxpc3RlZF9yZWdpc3RlcnMoY2xpZW50WzBdLmN0eCwg ZW5naW5lLAorCQkJCQkJIGNsaWVudFswXS5zY3JhdGNoWzFdKTsKKwkJaWYgKGVycikKKwkJCWdv dG8gZXJyOworCisJCS8qIFVzZXIgc2hvdWxkIGJlIGdyYW50ZWQgcHJpdmlsZWdlIHRvIG92ZXJ3 aGl0ZSByZWdzICovCisJCWVyciA9IGNoZWNrX3doaXRlbGlzdGVkX3JlZ2lzdGVycyhjbGllbnRb MF0uc2NyYXRjaFswXSwKKwkJCQkJCSAgY2xpZW50WzBdLnNjcmF0Y2hbMV0sCisJCQkJCQkgIGVu Z2luZSwKKwkJCQkJCSAgcmVzdWx0X25lcSk7CisJCWlmIChlcnIpCisJCQlnb3RvIGVycjsKKwl9 CisKK2VycjoKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjbGllbnQpOyBpKyspIHsKKwkJ aWYgKCFjbGllbnRbaV0uY3R4KQorCQkJYnJlYWs7CisKKwkJaTkxNV92bWFfdW5waW5fYW5kX3Jl bGVhc2UoJmNsaWVudFtpXS5zY3JhdGNoWzFdLCAwKTsKKwkJaTkxNV92bWFfdW5waW5fYW5kX3Jl bGVhc2UoJmNsaWVudFtpXS5zY3JhdGNoWzBdLCAwKTsKKwkJa2VybmVsX2NvbnRleHRfY2xvc2Uo Y2xpZW50W2ldLmN0eCk7CisJfQorCisJaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJ VF9MT0NLRUQpKQorCQllcnIgPSAtRUlPOworCisJcmV0dXJuIGVycjsKK30KKwogc3RhdGljIGJv b2wgdmVyaWZ5X2d0X2VuZ2luZV93YShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJ CQlzdHJ1Y3Qgd2FfbGlzdHMgKmxpc3RzLCBjb25zdCBjaGFyICpzdHIpCiB7CkBAIC04NDQsNiAr MTE1NCw3IEBAIGludCBpbnRlbF93b3JrYXJvdW5kc19saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAlzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0 ZXN0c1tdID0gewogCQlTVUJURVNUKGxpdmVfZGlydHlfd2hpdGVsaXN0KSwKIAkJU1VCVEVTVChs aXZlX3Jlc2V0X3doaXRlbGlzdCksCisJCVNVQlRFU1QobGl2ZV9pc29sYXRlZF93aGl0ZWxpc3Qp LAogCQlTVUJURVNUKGxpdmVfZ3B1X3Jlc2V0X2d0X2VuZ2luZV93b3JrYXJvdW5kcyksCiAJCVNV QlRFU1QobGl2ZV9lbmdpbmVfcmVzZXRfZ3RfZW5naW5lX3dvcmthcm91bmRzKSwKIAl9OwotLSAK Mi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=