From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 7/7] drm/i915/selftests: Context SSEU reconfiguration tests Date: Tue, 8 Jan 2019 11:22:52 +0000 Message-ID: <20190108112252.29002-8-tvrtko.ursulin@linux.intel.com> References: <20190108112252.29002-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id E3E1E6EAAD for ; Tue, 8 Jan 2019 11:23:05 +0000 (UTC) In-Reply-To: <20190108112252.29002-1-tvrtko.ursulin@linux.intel.com> 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 RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkV4ZXJjaXNl IHRoZSBjb250ZXh0IGltYWdlIHJlY29uZmlndXJhdGlvbiBsb2dpYyBmb3IgaWRsZSBhbmQgYnVz eQpjb250ZXh0cywgd2l0aCB0aGUgcmVzZXRzIHRocm93biBpbnRvIHRoZSBtaXggYXMgd2VsbC4K CkZyZWUgZnJvbSB0aGUgdUFQSSByZXN0cmljdGlvbnMgdGhpcyB0ZXN0IHJ1bnMgb24gYWxsIEdl bjkrIHBsYXRmb3Jtcwp3aXRoIHNsaWNlIHBvd2VyIGdhdGluZy4KCnYyOgogKiBSZW5hbWUgc29t ZSBoZWxwZXJzIGZvciBjbGFyaXR5LgogKiBJbmNsdWRlIHN1YnRlc3QgbmFtZXMgaW4gZXJyb3Ig bG9ncy4KICogUmVtb3ZlIHVubmVjZXNzYXJ5IGZ1bmN0aW9uIGV4cG9ydC4KCnYzOgogKiBSZWJh c2UgZm9yIFJVTlRJTUVfSU5GTy4KClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0 a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jICAgICAgIHwgIDMxICstCiAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X2dlbV9jb250ZXh0LmMgfCA0ODYgKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQs IDUwNyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMKaW5kZXggMWFiN2Q2OTgwYzM2Li5jMzk1MTQxZTI2YjUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTEwNDMsMjMgKzEwNDMsMTkg QEAgZ2VuOF9tb2RpZnlfcnBjc19ncHUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogfQogCiBz dGF0aWMgaW50Ci1pOTE1X2dlbV9jb250ZXh0X3JlY29uZmlndXJlX3NzZXUoc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCwKLQkJCQkgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK LQkJCQkgIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCitfX2k5MTVfZ2VtX2NvbnRleHRfcmVjb25m aWd1cmVfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkJCSAgICBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJICAgIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUp CiB7CiAJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gdG9faW50ZWxfY29udGV4dChjdHgsIGVu Z2luZSk7Ci0JaW50IHJldDsKKwlpbnQgcmV0ID0gMDsKIAogCUdFTV9CVUdfT04oSU5URUxfR0VO KGN0eC0+aTkxNSkgPCA4KTsKIAlHRU1fQlVHX09OKGVuZ2luZS0+aWQgIT0gUkNTKTsKIAotCXJl dCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCiAJLyogTm90aGluZyB0byBkbyBpZiB1bm1v ZGlmaWVkLiAqLwogCWlmICghbWVtY21wKCZjZS0+c3NldSwgJnNzZXUsIHNpemVvZihzc2V1KSkp Ci0JCWdvdG8gb3V0OworCQlyZXR1cm4gMDsKIAogCS8qCiAJICogSWYgY29udGV4dCBpcyBub3Qg aWRsZSB3ZSBoYXZlIHRvIHN1Ym1pdCBhbiBvcmRlcmVkIHJlcXVlc3QgdG8gbW9kaWZ5CkBAIC0x MDcyLDcgKzEwNjgsMjIgQEAgaTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3VyZV9zc2V1KHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJaWYgKCFyZXQpCiAJCWNlLT5zc2V1ID0gc3NldTsK IAotb3V0OgorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK2k5MTVfZ2VtX2NvbnRleHRf cmVjb25maWd1cmVfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkJCSAgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJCSAgc3RydWN0IGludGVsX3NzZXUgc3Nl dSkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgt Pmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwly ZXQgPSBfX2k5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShjdHgsIGVuZ2luZSwgc3Nl dSk7CisKIAltdXRleF91bmxvY2soJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKIAly ZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dl bV9jb250ZXh0LmMKaW5kZXggZDAwY2RmM2MyOTM5Li40MWM0NDdmNjY0ZTcgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtMjcs NiArMjcsOCBAQAogI2luY2x1ZGUgIi4uL2k5MTVfc2VsZnRlc3QuaCIKICNpbmNsdWRlICJpOTE1 X3JhbmRvbS5oIgogI2luY2x1ZGUgImlndF9mbHVzaF90ZXN0LmgiCisjaW5jbHVkZSAiaWd0X3Jl c2V0LmgiCisjaW5jbHVkZSAiaWd0X3NwaW5uZXIuaCIKIAogI2luY2x1ZGUgIm1vY2tfZHJtLmgi CiAjaW5jbHVkZSAibW9ja19nZW1fZGV2aWNlLmgiCkBAIC02NTAsNiArNjUyLDQ4OSBAQCBzdGF0 aWMgaW50IGlndF9jdHhfZXhlYyh2b2lkICphcmcpCiAJcmV0dXJuIGVycjsKIH0KIAorc3RhdGlj IHN0cnVjdCBpOTE1X3ZtYSAqcnBjc19xdWVyeV9iYXRjaChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCXUzMiAqY21kOworCWludCBl cnI7CisKKwlpZiAoSU5URUxfR0VOKHZtYS0+dm0tPmk5MTUpIDwgOCkKKwkJcmV0dXJuIEVSUl9Q VFIoLUVJTlZBTCk7CisKKwlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKHZt YS0+dm0tPmk5MTUsIFBBR0VfU0laRSk7CisJaWYgKElTX0VSUihvYmopKQorCQlyZXR1cm4gRVJS X0NBU1Qob2JqKTsKKworCWNtZCA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKG9iaiwgSTkxNV9N QVBfV0IpOworCWlmIChJU19FUlIoY21kKSkgeworCQllcnIgPSBQVFJfRVJSKGNtZCk7CisJCWdv dG8gZXJyOworCX0KKworCSpjbWQrKyA9IE1JX1NUT1JFX1JFR0lTVEVSX01FTV9HRU44OworCSpj bWQrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjhfUl9QV1JfQ0xLX1NUQVRFKTsKKwkqY21k KysgPSBsb3dlcl8zMl9iaXRzKHZtYS0+bm9kZS5zdGFydCk7CisJKmNtZCsrID0gdXBwZXJfMzJf Yml0cyh2bWEtPm5vZGUuc3RhcnQpOworCSpjbWQgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOworCisJ aTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmopOworCisJZXJyID0gaTkxNV9nZW1fb2JqZWN0 X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOworCWlmIChlcnIpCisJCWdvdG8gZXJyOwor CisJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCB2bWEtPnZtLCBOVUxMKTsKKwlpZiAoSVNf RVJSKHZtYSkpIHsKKwkJZXJyID0gUFRSX0VSUih2bWEpOworCQlnb3RvIGVycjsKKwl9CisKKwll cnIgPSBpOTE1X3ZtYV9waW4odm1hLCAwLCAwLCBQSU5fVVNFUik7CisJaWYgKGVycikKKwkJZ290 byBlcnI7CisKKwlyZXR1cm4gdm1hOworCitlcnI6CisJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmop OworCXJldHVybiBFUlJfUFRSKGVycik7Cit9CisKK3N0YXRpYyBpbnQKK2VtaXRfcnBjc19xdWVy eShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQlzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4LAorCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCXN0cnVjdCBp OTE1X3JlcXVlc3QgKipycV9vdXQpCit7CisJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07 CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CisJc3RydWN0IGk5MTVfdm1hICpiYXRjaDsKKwlz dHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwlpbnQgZXJyOworCisJR0VNX0JVR19PTighY3R4LT5wcGd0 dCk7CisJR0VNX0JVR19PTighaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChlbmdpbmUpKTsK KworCXZtID0gJmN0eC0+cHBndHQtPnZtOworCisJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2Jq LCB2bSwgTlVMTCk7CisJaWYgKElTX0VSUih2bWEpKQorCQlyZXR1cm4gUFRSX0VSUih2bWEpOwor CisJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOwor CWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwllcnIgPSBpOTE1X3ZtYV9waW4odm1hLCAwLCAw LCBQSU5fSElHSCB8IFBJTl9VU0VSKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJYmF0 Y2ggPSBycGNzX3F1ZXJ5X2JhdGNoKHZtYSk7CisJaWYgKElTX0VSUihiYXRjaCkpIHsKKwkJZXJy ID0gUFRSX0VSUihiYXRjaCk7CisJCWdvdG8gZXJyX3ZtYTsKKwl9CisKKwlycSA9IGk5MTVfcmVx dWVzdF9hbGxvYyhlbmdpbmUsIGN0eCk7CisJaWYgKElTX0VSUihycSkpIHsKKwkJZXJyID0gUFRS X0VSUihycSk7CisJCWdvdG8gZXJyX2JhdGNoOworCX0KKworCWVyciA9IGVuZ2luZS0+ZW1pdF9i Yl9zdGFydChycSwgYmF0Y2gtPm5vZGUuc3RhcnQsIGJhdGNoLT5ub2RlLnNpemUsIDApOworCWlm IChlcnIpCisJCWdvdG8gZXJyX3JlcXVlc3Q7CisKKwllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2Fj dGl2ZShiYXRjaCwgcnEsIDApOworCWlmIChlcnIpCisJCWdvdG8gc2tpcF9yZXF1ZXN0OworCisJ ZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUodm1hLCBycSwgRVhFQ19PQkpFQ1RfV1JJVEUp OworCWlmIChlcnIpCisJCWdvdG8gc2tpcF9yZXF1ZXN0OworCisJaTkxNV9nZW1fb2JqZWN0X3Nl dF9hY3RpdmVfcmVmZXJlbmNlKGJhdGNoLT5vYmopOworCWk5MTVfdm1hX3VucGluKGJhdGNoKTsK KwlpOTE1X3ZtYV9jbG9zZShiYXRjaCk7CisKKwlpOTE1X3ZtYV91bnBpbih2bWEpOworCisJKnJx X291dCA9IGk5MTVfcmVxdWVzdF9nZXQocnEpOworCisJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisK KwlyZXR1cm4gMDsKKworc2tpcF9yZXF1ZXN0OgorCWk5MTVfcmVxdWVzdF9za2lwKHJxLCBlcnIp OworZXJyX3JlcXVlc3Q6CisJaTkxNV9yZXF1ZXN0X2FkZChycSk7CitlcnJfYmF0Y2g6CisJaTkx NV92bWFfdW5waW4oYmF0Y2gpOworZXJyX3ZtYToKKwlpOTE1X3ZtYV91bnBpbih2bWEpOworCisJ cmV0dXJuIGVycjsKK30KKworI2RlZmluZSBURVNUX0lETEUJKDEgPDwgMCkKKyNkZWZpbmUgVEVT VF9CVVNZCSgxIDw8IDEpCisjZGVmaW5lIFRFU1RfUkVTRVQJKDEgPDwgMikKKworaW50CitfX2k5 MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4LAorCQkJCSAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJICAgIHN0 cnVjdCBpbnRlbF9zc2V1IHNzZXUpOworCitzdGF0aWMgaW50CitfX3NzZXVfcHJlcGFyZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkg ICAgICAgdW5zaWduZWQgaW50IGZsYWdzLAorCSAgICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4LAorCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJICAgICAg IHN0cnVjdCBpZ3Rfc3Bpbm5lciAqKnNwaW5fb3V0KQoreworCWludCByZXQgPSAwOworCisJaWYg KGZsYWdzICYgKFRFU1RfQlVTWSB8IFRFU1RfUkVTRVQpKSB7CisJCXN0cnVjdCBpZ3Rfc3Bpbm5l ciAqc3BpbjsKKwkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CisKKwkJc3BpbiA9IGt6YWxsb2Mo c2l6ZW9mKCpzcGluKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghc3BpbikgeworCQkJcmV0ID0gLUVO T01FTTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJcmV0ID0gaWd0X3NwaW5uZXJfaW5pdChzcGlu LCBpOTE1KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisKKwkJcnEgPSBpZ3Rfc3Bpbm5l cl9jcmVhdGVfcmVxdWVzdChzcGluLCBjdHgsIGVuZ2luZSwgTUlfTk9PUCk7CisJCWlmIChJU19F UlIocnEpKSB7CisJCQlyZXQgPSBQVFJfRVJSKHJxKTsKKwkJCWlndF9zcGlubmVyX2Zpbmkoc3Bp bik7CisJCQlrZnJlZShzcGluKTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJaTkxNV9yZXF1ZXN0 X2FkZChycSk7CisKKwkJaWYgKCFpZ3Rfd2FpdF9mb3Jfc3Bpbm5lcihzcGluLCBycSkpIHsKKwkJ CXByX2VycigiJXM6IFNwaW5uZXIgZmFpbGVkIHRvIHN0YXJ0IVxuIiwgbmFtZSk7CisJCQlpZ3Rf c3Bpbm5lcl9lbmQoc3Bpbik7CisJCQlpZ3Rfc3Bpbm5lcl9maW5pKHNwaW4pOworCQkJa2ZyZWUo c3Bpbik7CisJCQlyZXQgPSAtRVRJTUVET1VUOworCQkJZ290byBvdXQ7CisJCX0KKworCQkqc3Bp bl9vdXQgPSBzcGluOworCX0KKworb3V0OgorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQK K19fcmVhZF9zbGljZV9jb3VudChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJICAg c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJICAgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLAorCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkgICBz dHJ1Y3QgaWd0X3NwaW5uZXIgKnNwaW4sCisJCSAgIHUzMiAqcnBjcykKK3sKKwlzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSA9IE5VTEw7CisJdTMyIHNfbWFzaywgc19zaGlmdDsKKwl1bnNpZ25lZCBp bnQgY250OworCXUzMiAqYnVmLCB2YWw7CisJbG9uZyByZXQ7CisKKwlyZXQgPSBlbWl0X3JwY3Nf cXVlcnkob2JqLCBjdHgsIGVuZ2luZSwgJnJxKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0Owor CisJaWYgKHNwaW4pCisJCWlndF9zcGlubmVyX2VuZChzcGluKTsKKworCXJldCA9IGk5MTVfcmVx dWVzdF93YWl0KHJxLCBJOTE1X1dBSVRfTE9DS0VELCBNQVhfU0NIRURVTEVfVElNRU9VVCk7CisJ aWYgKHJldCA8PSAwKQorCQlyZXR1cm4gcmV0IDwgMCA/IHJldCA6IC1FVElNRTsKKworCWk5MTVf cmVxdWVzdF9wdXQocnEpOworCisJYnVmID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAob2JqLCBJ OTE1X01BUF9XQik7CisJaWYgKElTX0VSUihidWYpKSB7CisJCXJldCA9IFBUUl9FUlIoYnVmKTsK KwkJcmV0dXJuIHJldDsKKwl9CisKKwlpZiAoSU5URUxfR0VOKGk5MTUpID49IDExKSB7CisJCXNf bWFzayA9IEdFTjExX1JQQ1NfU19DTlRfTUFTSzsKKwkJc19zaGlmdCA9IEdFTjExX1JQQ1NfU19D TlRfU0hJRlQ7CisJfSBlbHNlIHsKKwkJc19tYXNrID0gR0VOOF9SUENTX1NfQ05UX01BU0s7CisJ CXNfc2hpZnQgPSBHRU44X1JQQ1NfU19DTlRfU0hJRlQ7CisJfQorCisJdmFsID0gKmJ1ZjsKKwlj bnQgPSAodmFsICYgc19tYXNrKSA+PiBzX3NoaWZ0OworCSpycGNzID0gdmFsOworCisJaTkxNV9n ZW1fb2JqZWN0X3VucGluX21hcChvYmopOworCisJcmV0dXJuIGNudDsKK30KKworc3RhdGljIHZv aWQgX19lcnJfcnBjcyh1MzIgcnBjcywgdW5zaWduZWQgaW50IHNsaWNlcykKK3sKKwlwcl9pbmZv KCJSUENTPTB4JXg7ICV1JXN4JXUlc1xuIiwKKwkJcnBjcywgc2xpY2VzLAorCQkocnBjcyAmIEdF TjhfUlBDU19TX0NOVF9FTkFCTEUpID8gIioiIDogIiIsCisJCShycGNzICYgR0VOOF9SUENTX1NT X0NOVF9NQVNLKSA+PiBHRU44X1JQQ1NfU1NfQ05UX1NISUZULAorCQkocnBjcyAmIEdFTjhfUlBD U19TU19DTlRfRU5BQkxFKSA/ICIqIiA6ICIiKTsKK30KKworc3RhdGljIGludAorX19zc2V1X2Zp bmlzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkgICAgICBjb25zdCBjaGFyICpu YW1lLAorCSAgICAgIHVuc2lnbmVkIGludCBmbGFncywKKwkgICAgICBzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4LAorCSAgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICprY3R4LAorCSAg ICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkgICAgICBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAorCSAgICAgIHVuc2lnbmVkIGludCBleHBlY3RlZCwKKwkgICAg ICBzdHJ1Y3QgaWd0X3NwaW5uZXIgKnNwaW4pCit7CisJdW5zaWduZWQgaW50IHNsaWNlcyA9CisJ CWh3ZWlnaHQzMihpbnRlbF9kZXZpY2VfZGVmYXVsdF9zc2V1KGk5MTUpLnNsaWNlX21hc2spOwor CXUzMiBycGNzID0gMDsKKwlpbnQgcmV0ID0gMDsKKworCWlmIChmbGFncyAmIFRFU1RfUkVTRVQp IHsKKwkJcmV0ID0gaTkxNV9yZXNldF9lbmdpbmUoZW5naW5lLCAic3NldSIpOworCQlpZiAocmV0 KQorCQkJZ290byBvdXQ7CisJfQorCisJcmV0ID0gX19yZWFkX3NsaWNlX2NvdW50KGk5MTUsIGN0 eCwgZW5naW5lLCBvYmosCisJCQkJIGZsYWdzICYgVEVTVF9SRVNFVCA/IE5VTEwgOiBzcGluLCAm cnBjcyk7CisJaWYgKHJldCA8IDApIHsKKwkJZ290byBvdXQ7CisJfSBlbHNlIGlmIChyZXQgIT0g ZXhwZWN0ZWQpIHsKKwkJcHJfZXJyKCIlczogQ29udGV4dCBzbGljZSBjb3VudCAlZCBpcyBub3Qg JXUhXG4iLAorCQkgICAgICAgbmFtZSwgcmV0LCBleHBlY3RlZCk7CisJCV9fZXJyX3JwY3MocnBj cywgcmV0KTsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290byBvdXQ7CisJfSBlbHNlIHsKKwkJcmV0 ID0gMDsKKwl9CisKKwlyZXQgPSBfX3JlYWRfc2xpY2VfY291bnQoaTkxNSwga2N0eCwgZW5naW5l LCBvYmosIE5VTEwsICZycGNzKTsKKwlpZiAocmV0IDwgMCkgeworCQlnb3RvIG91dDsKKwl9IGVs c2UgaWYgKHJldCAhPSBzbGljZXMpIHsKKwkJcHJfZXJyKCIlczogS2VybmVsIGNvbnRleHQgc2xp Y2UgY291bnQgJWQgaXMgbm90ICV1IVxuIiwKKwkJICAgICAgIG5hbWUsIHJldCwgc2xpY2VzKTsK KwkJX19lcnJfcnBjcyhycGNzLCByZXQpOworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIG91dDsK Kwl9IGVsc2UgeworCQlyZXQgPSAwOworCX0KKworb3V0OgorCWlmIChzcGluKQorCQlpZ3Rfc3Bp bm5lcl9lbmQoc3Bpbik7CisKKwlpZiAoZmxhZ3MgJiBURVNUX0lETEUpIHsKKwkJcmV0ID0gaTkx NV9nZW1fd2FpdF9mb3JfaWRsZShpOTE1LAorCQkJCQkgICAgIEk5MTVfV0FJVF9MT0NLRUQsCisJ CQkJCSAgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJl dDsKKworCQlyZXQgPSBfX3JlYWRfc2xpY2VfY291bnQoaTkxNSwgY3R4LCBlbmdpbmUsIG9iaiwg TlVMTCwgJnJwY3MpOworCQlpZiAocmV0IDwgMCkgeworCQkJcmV0dXJuIHJldDsKKwkJfSBlbHNl IGlmIChyZXQgIT0gZXhwZWN0ZWQpIHsKKwkJCXByX2VycigiJXM6IENvbnRleHQgc2xpY2UgY291 bnQgJWQgaXMgbm90ICV1IGFmdGVyIGlkbGUhXG4iLAorCQkJICAgICAgIG5hbWUsIHJldCwgZXhw ZWN0ZWQpOworCQkJX19lcnJfcnBjcyhycGNzLCByZXQpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJ CX0gZWxzZSB7CisJCQlyZXQgPSAwOworCQl9CisJfQorCisJcmV0dXJuIHJldDsKKworfQorCitz dGF0aWMgaW50CitfX3NzZXVfdGVzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkg ICAgY29uc3QgY2hhciAqbmFtZSwKKwkgICAgdW5zaWduZWQgaW50IGZsYWdzLAorCSAgICBzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCSAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCisJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJICAgIHN0cnVj dCBpbnRlbF9zc2V1IHNzZXUpCit7CisJc3RydWN0IGlndF9zcGlubmVyICpzcGluID0gTlVMTDsK KwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqa2N0eDsKKwlpbnQgcmV0OworCisJa2N0eCA9IGtl cm5lbF9jb250ZXh0KGk5MTUpOworCWlmIChJU19FUlIoa2N0eCkpCisJCXJldHVybiBQVFJfRVJS KGtjdHgpOworCisJcmV0ID0gX19zc2V1X3ByZXBhcmUoaTkxNSwgbmFtZSwgZmxhZ3MsIGN0eCwg ZW5naW5lLCAmc3Bpbik7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwlyZXQgPSBfX2k5MTVf Z2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShjdHgsIGVuZ2luZSwgc3NldSk7CisJaWYgKHJl dCkKKwkJZ290byBvdXQ7CisKKwlyZXQgPSBfX3NzZXVfZmluaXNoKGk5MTUsIG5hbWUsIGZsYWdz LCBjdHgsIGtjdHgsIGVuZ2luZSwgb2JqLAorCQkJICAgIGh3ZWlnaHQzMihzc2V1LnNsaWNlX21h c2spLCBzcGluKTsKKworb3V0OgorCWlmIChzcGluKSB7CisJCWlndF9zcGlubmVyX2VuZChzcGlu KTsKKwkJaWd0X3NwaW5uZXJfZmluaShzcGluKTsKKwkJa2ZyZWUoc3Bpbik7CisJfQorCisJa2Vy bmVsX2NvbnRleHRfY2xvc2Uoa2N0eCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50 CitfX2lndF9jdHhfc3NldShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkgICAgICAg Y29uc3QgY2hhciAqbmFtZSwKKwkgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKQoreworCXN0cnVj dCBpbnRlbF9zc2V1IGRlZmF1bHRfc3NldSA9IGludGVsX2RldmljZV9kZWZhdWx0X3NzZXUoaTkx NSk7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gaTkxNS0+ZW5naW5lW1JDU107 CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4OworCXN0cnVjdCBpbnRlbF9zc2V1IHBnX3NzZXU7CisJc3RydWN0IGRybV9maWxl ICpmaWxlOworCWludCByZXQ7CisKKwlpZiAoSU5URUxfR0VOKGk5MTUpIDwgOSkKKwkJcmV0dXJu IDA7CisKKwlpZiAoIVJVTlRJTUVfSU5GTyhpOTE1KS0+c3NldS5oYXNfc2xpY2VfcGcpCisJCXJl dHVybiAwOworCisJaWYgKGh3ZWlnaHQzMihkZWZhdWx0X3NzZXUuc2xpY2VfbWFzaykgPCAyKQor CQlyZXR1cm4gMDsKKworCS8qCisJICogR2VuMTEgVk1FIGZyaWVuZGx5IHBvd2VyLWdhdGVkIGNv bmZpZ3VyYXRpb24gd2l0aCBoYWxmIGVuYWJsZWQKKwkgKiBzdWItc2xpY2VzLgorCSAqLworCXBn X3NzZXUgPSBkZWZhdWx0X3NzZXU7CisJcGdfc3NldS5zbGljZV9tYXNrID0gMTsKKwlwZ19zc2V1 LnN1YnNsaWNlX21hc2sgPQorCQl+KH4wIDw8IChod2VpZ2h0MzIoZGVmYXVsdF9zc2V1LnN1YnNs aWNlX21hc2spIC8gMikpOworCisJcHJfaW5mbygiU1NFVSBzdWJ0ZXN0ICclcycsIGZsYWdzPSV4 LCBkZWZfc2xpY2VzPSV1LCBwZ19zbGljZXM9JXVcbiIsCisJCW5hbWUsIGZsYWdzLCBod2VpZ2h0 MzIoZGVmYXVsdF9zc2V1LnNsaWNlX21hc2spLAorCQlod2VpZ2h0MzIocGdfc3NldS5zbGljZV9t YXNrKSk7CisKKwlmaWxlID0gbW9ja19maWxlKGk5MTUpOworCWlmIChJU19FUlIoZmlsZSkpCisJ CXJldHVybiBQVFJfRVJSKGZpbGUpOworCisJaWYgKGZsYWdzICYgVEVTVF9SRVNFVCkKKwkJaWd0 X2dsb2JhbF9yZXNldF9sb2NrKGk5MTUpOworCisJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7CisKKwljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5k cml2ZXJfcHJpdik7CisJaWYgKElTX0VSUihjdHgpKSB7CisJCXJldCA9IFBUUl9FUlIoY3R4KTsK KwkJZ290byBvdXRfdW5sb2NrOworCX0KKworCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVf aW50ZXJuYWwoaTkxNSwgUEFHRV9TSVpFKTsKKwlpZiAoSVNfRVJSKG9iaikpIHsKKwkJcmV0ID0g UFRSX0VSUihvYmopOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCisJaW50ZWxfcnVudGltZV9w bV9nZXQoaTkxNSk7CisKKwkvKiBGaXJzdCBzZXQgdGhlIGRlZmF1bHQgbWFzay4gKi8KKwlyZXQg PSBfX3NzZXVfdGVzdChpOTE1LCBuYW1lLCBmbGFncywgY3R4LCBlbmdpbmUsIG9iaiwgZGVmYXVs dF9zc2V1KTsKKwlpZiAocmV0KQorCQlnb3RvIG91dF9mYWlsOworCisJLyogVGhlbiBzZXQgYSBw b3dlci1nYXRlZCBjb25maWd1cmF0aW9uLiAqLworCXJldCA9IF9fc3NldV90ZXN0KGk5MTUsIG5h bWUsIGZsYWdzLCBjdHgsIGVuZ2luZSwgb2JqLCBwZ19zc2V1KTsKKwlpZiAocmV0KQorCQlnb3Rv IG91dF9mYWlsOworCisJLyogQmFjayB0byBkZWZhdWx0cy4gKi8KKwlyZXQgPSBfX3NzZXVfdGVz dChpOTE1LCBuYW1lLCBmbGFncywgY3R4LCBlbmdpbmUsIG9iaiwgZGVmYXVsdF9zc2V1KTsKKwlp ZiAocmV0KQorCQlnb3RvIG91dF9mYWlsOworCisJLyogT25lIGxhc3QgcG93ZXItZ2F0ZWQgY29u ZmlndXJhdGlvbiBmb3IgdGhlIHJvYWQuICovCisJcmV0ID0gX19zc2V1X3Rlc3QoaTkxNSwgbmFt ZSwgZmxhZ3MsIGN0eCwgZW5naW5lLCBvYmosIHBnX3NzZXUpOworCWlmIChyZXQpCisJCWdvdG8g b3V0X2ZhaWw7CisKK291dF9mYWlsOgorCWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1LCBJOTE1X1dB SVRfTE9DS0VEKSkKKwkJcmV0ID0gLUVJTzsKKworCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsK KworCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCitvdXRfdW5sb2NrOgorCW11dGV4X3Vu bG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwlpZiAoZmxhZ3MgJiBURVNUX1JFU0VU KQorCQlpZ3RfZ2xvYmFsX3Jlc2V0X3VubG9jayhpOTE1KTsKKworCW1vY2tfZmlsZV9mcmVlKGk5 MTUsIGZpbGUpOworCisJaWYgKHJldCkKKwkJcHJfZXJyKCIlczogRmFpbGVkIHdpdGggJWQhXG4i LCBuYW1lLCByZXQpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBpZ3RfY3R4X3Nz ZXUodm9pZCAqYXJnKQoreworCXN0cnVjdCB7CisJCWNvbnN0IGNoYXIgKm5hbWU7CisJCXVuc2ln bmVkIGludCBmbGFnczsKKwl9ICpwaGFzZSwgcGhhc2VzW10gPSB7CisJCXsgLm5hbWUgPSAiYmFz aWMiLCAuZmxhZ3MgPSAwIH0sCisJCXsgLm5hbWUgPSAiaWRsZSIsIC5mbGFncyA9IFRFU1RfSURM RSB9LAorCQl7IC5uYW1lID0gImJ1c3kiLCAuZmxhZ3MgPSBURVNUX0JVU1kgfSwKKwkJeyAubmFt ZSA9ICJidXN5LXJlc2V0IiwgLmZsYWdzID0gVEVTVF9CVVNZIHwgVEVTVF9SRVNFVCB9LAorCQl7 IC5uYW1lID0gImJ1c3ktaWRsZSIsIC5mbGFncyA9IFRFU1RfQlVTWSB8IFRFU1RfSURMRSB9LAor CQl7IC5uYW1lID0gInJlc2V0LWlkbGUiLCAuZmxhZ3MgPSBURVNUX1JFU0VUIHwgVEVTVF9JRExF IH0sCisJfTsKKwl1bnNpZ25lZCBpbnQgaTsKKwlpbnQgcmV0ID0gMDsKKworCWZvciAoaSA9IDAs IHBoYXNlID0gcGhhc2VzOyByZXQgPT0gMCAmJiBpIDwgQVJSQVlfU0laRShwaGFzZXMpOworCSAg ICAgaSsrLCBwaGFzZSsrKQorCQlyZXQgPSBfX2lndF9jdHhfc3NldShhcmcsIHBoYXNlLT5uYW1l LCBwaGFzZS0+ZmxhZ3MpOworCisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludCBpZ3RfY3R4 X3JlYWRvbmx5KHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IGFyZzsKQEAgLTEyMzIsNiArMTcxNyw3IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2xpdmVfc2Vs ZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJU1VCVEVTVChsaXZl X25vcF9zd2l0Y2gpLAogCQlTVUJURVNUKGlndF9jdHhfZXhlYyksCiAJCVNVQlRFU1QoaWd0X2N0 eF9yZWFkb25seSksCisJCVNVQlRFU1QoaWd0X2N0eF9zc2V1KSwKIAkJU1VCVEVTVChpZ3Rfdm1f aXNvbGF0aW9uKSwKIAl9OwogCi0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=