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: Mon, 31 Dec 2018 16:06:36 +0000 Message-ID: <20181231160636.13880-8-tvrtko.ursulin@linux.intel.com> References: <20181231160636.13880-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id CCBF36E71F for ; Mon, 31 Dec 2018 16:06:54 +0000 (UTC) In-Reply-To: <20181231160636.13880-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 bG9ncy4KICogUmVtb3ZlIHVubmVjZXNzYXJ5IGZ1bmN0aW9uIGV4cG9ydC4KClNpZ25lZC1vZmYt Ynk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICAgICAgIHwgIDMxICstCiAuLi4vZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgfCA0ODYgKysrKysrKysrKysr KysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDUwNyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggYzgzZGQxMzU3 OGUxLi5kMTI2YWEyNjEzOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMKQEAgLTEwNDMsMjMgKzEwNDMsMTkgQEAgZ2VuOF9tb2RpZnlfcnBjc19ncHUoc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlLAogfQogCiBzdGF0aWMgaW50Ci1pOTE1X2dlbV9jb250ZXh0X3JlY29u ZmlndXJlX3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKLQkJCQkgIHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKLQkJCQkgIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCitf X2k5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4LAorCQkJCSAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJICAg IHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCiB7CiAJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0g dG9faW50ZWxfY29udGV4dChjdHgsIGVuZ2luZSk7Ci0JaW50IHJldDsKKwlpbnQgcmV0ID0gMDsK IAogCUdFTV9CVUdfT04oSU5URUxfR0VOKGN0eC0+aTkxNSkgPCA4KTsKIAlHRU1fQlVHX09OKGVu Z2luZS0+aWQgIT0gUkNTKTsKIAotCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY3R4 LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCiAJ LyogTm90aGluZyB0byBkbyBpZiB1bm1vZGlmaWVkLiAqLwogCWlmICghbWVtY21wKCZjZS0+c3Nl dSwgJnNzZXUsIHNpemVvZihzc2V1KSkpCi0JCWdvdG8gb3V0OworCQlyZXR1cm4gMDsKIAogCS8q CiAJICogSWYgY29udGV4dCBpcyBub3QgaWRsZSB3ZSBoYXZlIHRvIHN1Ym1pdCBhbiBvcmRlcmVk IHJlcXVlc3QgdG8gbW9kaWZ5CkBAIC0xMDcyLDcgKzEwNjgsMjIgQEAgaTkxNV9nZW1fY29udGV4 dF9yZWNvbmZpZ3VyZV9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJaWYgKCFy ZXQpCiAJCWNlLT5zc2V1ID0gc3NldTsKIAotb3V0OgorCXJldHVybiByZXQ7Cit9CisKK3N0YXRp YyBpbnQKK2k5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4LAorCQkJCSAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJ CSAgc3RydWN0IGludGVsX3NzZXUgc3NldSkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gbXV0ZXhf bG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWlmIChy ZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBfX2k5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1 cmVfc3NldShjdHgsIGVuZ2luZSwgc3NldSk7CisKIAltdXRleF91bmxvY2soJmN0eC0+aTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7CiAKIAlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggN2Q4MjA0M2FmZjEwLi4z YWE2N2I0YjNiNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p OTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfZ2VtX2NvbnRleHQuYwpAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgIi4uL2k5MTVfc2Vs ZnRlc3QuaCIKICNpbmNsdWRlICJpOTE1X3JhbmRvbS5oIgogI2luY2x1ZGUgImlndF9mbHVzaF90 ZXN0LmgiCisjaW5jbHVkZSAiaWd0X3Jlc2V0LmgiCisjaW5jbHVkZSAiaWd0X3NwaW5uZXIuaCIK IAogI2luY2x1ZGUgIm1vY2tfZHJtLmgiCiAjaW5jbHVkZSAibW9ja19nZW1fZGV2aWNlLmgiCkBA IC02NTAsNiArNjUyLDQ4OSBAQCBzdGF0aWMgaW50IGlndF9jdHhfZXhlYyh2b2lkICphcmcpCiAJ cmV0dXJuIGVycjsKIH0KIAorc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqcnBjc19xdWVyeV9iYXRj aChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqOworCXUzMiAqY21kOworCWludCBlcnI7CisKKwlpZiAoSU5URUxfR0VOKHZtYS0+dm0tPmk5 MTUpIDwgOCkKKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisKKwlvYmogPSBpOTE1X2dlbV9v YmplY3RfY3JlYXRlX2ludGVybmFsKHZtYS0+dm0tPmk5MTUsIFBBR0VfU0laRSk7CisJaWYgKElT X0VSUihvYmopKQorCQlyZXR1cm4gRVJSX0NBU1Qob2JqKTsKKworCWNtZCA9IGk5MTVfZ2VtX29i amVjdF9waW5fbWFwKG9iaiwgSTkxNV9NQVBfV0IpOworCWlmIChJU19FUlIoY21kKSkgeworCQll cnIgPSBQVFJfRVJSKGNtZCk7CisJCWdvdG8gZXJyOworCX0KKworCSpjbWQrKyA9IE1JX1NUT1JF X1JFR0lTVEVSX01FTV9HRU44OworCSpjbWQrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjhf Ul9QV1JfQ0xLX1NUQVRFKTsKKwkqY21kKysgPSBsb3dlcl8zMl9iaXRzKHZtYS0+bm9kZS5zdGFy dCk7CisJKmNtZCsrID0gdXBwZXJfMzJfYml0cyh2bWEtPm5vZGUuc3RhcnQpOworCSpjbWQgPSBN SV9CQVRDSF9CVUZGRVJfRU5EOworCisJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmopOwor CisJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOwor CWlmIChlcnIpCisJCWdvdG8gZXJyOworCisJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCB2 bWEtPnZtLCBOVUxMKTsKKwlpZiAoSVNfRVJSKHZtYSkpIHsKKwkJZXJyID0gUFRSX0VSUih2bWEp OworCQlnb3RvIGVycjsKKwl9CisKKwllcnIgPSBpOTE1X3ZtYV9waW4odm1hLCAwLCAwLCBQSU5f VVNFUik7CisJaWYgKGVycikKKwkJZ290byBlcnI7CisKKwlyZXR1cm4gdm1hOworCitlcnI6CisJ aTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOworCXJldHVybiBFUlJfUFRSKGVycik7Cit9CisKK3N0 YXRpYyBpbnQKK2VtaXRfcnBjc19xdWVyeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAorCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsCisJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKipycV9vdXQpCit7CisJc3RydWN0 IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CisJc3Ry dWN0IGk5MTVfdm1hICpiYXRjaDsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwlpbnQgZXJyOwor CisJR0VNX0JVR19PTighY3R4LT5wcGd0dCk7CisJR0VNX0JVR19PTighaW50ZWxfZW5naW5lX2Nh bl9zdG9yZV9kd29yZChlbmdpbmUpKTsKKworCXZtID0gJmN0eC0+cHBndHQtPnZtOworCisJdm1h ID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCB2bSwgTlVMTCk7CisJaWYgKElTX0VSUih2bWEpKQor CQlyZXR1cm4gUFRSX0VSUih2bWEpOworCisJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19n dHRfZG9tYWluKG9iaiwgZmFsc2UpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwllcnIg PSBpOTE1X3ZtYV9waW4odm1hLCAwLCAwLCBQSU5fSElHSCB8IFBJTl9VU0VSKTsKKwlpZiAoZXJy KQorCQlyZXR1cm4gZXJyOworCisJYmF0Y2ggPSBycGNzX3F1ZXJ5X2JhdGNoKHZtYSk7CisJaWYg KElTX0VSUihiYXRjaCkpIHsKKwkJZXJyID0gUFRSX0VSUihiYXRjaCk7CisJCWdvdG8gZXJyX3Zt YTsKKwl9CisKKwlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCk7CisJaWYgKElT X0VSUihycSkpIHsKKwkJZXJyID0gUFRSX0VSUihycSk7CisJCWdvdG8gZXJyX2JhdGNoOworCX0K KworCWVyciA9IGVuZ2luZS0+ZW1pdF9iYl9zdGFydChycSwgYmF0Y2gtPm5vZGUuc3RhcnQsIGJh dGNoLT5ub2RlLnNpemUsIDApOworCWlmIChlcnIpCisJCWdvdG8gZXJyX3JlcXVlc3Q7CisKKwll cnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShiYXRjaCwgcnEsIDApOworCWlmIChlcnIpCisJ CWdvdG8gc2tpcF9yZXF1ZXN0OworCisJZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUodm1h LCBycSwgRVhFQ19PQkpFQ1RfV1JJVEUpOworCWlmIChlcnIpCisJCWdvdG8gc2tpcF9yZXF1ZXN0 OworCisJaTkxNV9nZW1fb2JqZWN0X3NldF9hY3RpdmVfcmVmZXJlbmNlKGJhdGNoLT5vYmopOwor CWk5MTVfdm1hX3VucGluKGJhdGNoKTsKKwlpOTE1X3ZtYV9jbG9zZShiYXRjaCk7CisKKwlpOTE1 X3ZtYV91bnBpbih2bWEpOworCisJKnJxX291dCA9IGk5MTVfcmVxdWVzdF9nZXQocnEpOworCisJ aTkxNV9yZXF1ZXN0X2FkZChycSk7CisKKwlyZXR1cm4gMDsKKworc2tpcF9yZXF1ZXN0OgorCWk5 MTVfcmVxdWVzdF9za2lwKHJxLCBlcnIpOworZXJyX3JlcXVlc3Q6CisJaTkxNV9yZXF1ZXN0X2Fk ZChycSk7CitlcnJfYmF0Y2g6CisJaTkxNV92bWFfdW5waW4oYmF0Y2gpOworZXJyX3ZtYToKKwlp OTE1X3ZtYV91bnBpbih2bWEpOworCisJcmV0dXJuIGVycjsKK30KKworI2RlZmluZSBURVNUX0lE TEUJKDEgPDwgMCkKKyNkZWZpbmUgVEVTVF9CVVNZCSgxIDw8IDEpCisjZGVmaW5lIFRFU1RfUkVT RVQJKDEgPDwgMikKKworaW50CitfX2k5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkJCSAgICBzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsCisJCQkJICAgIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpOworCitzdGF0aWMg aW50CitfX3NzZXVfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkgICAg ICAgY29uc3QgY2hhciAqbmFtZSwKKwkgICAgICAgdW5zaWduZWQgaW50IGZsYWdzLAorCSAgICAg ICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCisJICAgICAgIHN0cnVjdCBpZ3Rfc3Bpbm5lciAqKnNwaW5fb3V0KQor eworCWludCByZXQgPSAwOworCisJaWYgKGZsYWdzICYgKFRFU1RfQlVTWSB8IFRFU1RfUkVTRVQp KSB7CisJCXN0cnVjdCBpZ3Rfc3Bpbm5lciAqc3BpbjsKKwkJc3RydWN0IGk5MTVfcmVxdWVzdCAq cnE7CisKKwkJc3BpbiA9IGt6YWxsb2Moc2l6ZW9mKCpzcGluKSwgR0ZQX0tFUk5FTCk7CisJCWlm ICghc3BpbikgeworCQkJcmV0ID0gLUVOT01FTTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJcmV0 ID0gaWd0X3NwaW5uZXJfaW5pdChzcGluLCBpOTE1KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiBy ZXQ7CisKKwkJcnEgPSBpZ3Rfc3Bpbm5lcl9jcmVhdGVfcmVxdWVzdChzcGluLCBjdHgsIGVuZ2lu ZSwgTUlfTk9PUCk7CisJCWlmIChJU19FUlIocnEpKSB7CisJCQlyZXQgPSBQVFJfRVJSKHJxKTsK KwkJCWlndF9zcGlubmVyX2Zpbmkoc3Bpbik7CisJCQlrZnJlZShzcGluKTsKKwkJCWdvdG8gb3V0 OworCQl9CisKKwkJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisKKwkJaWYgKCFpZ3Rfd2FpdF9mb3Jf c3Bpbm5lcihzcGluLCBycSkpIHsKKwkJCXByX2VycigiJXM6IFNwaW5uZXIgZmFpbGVkIHRvIHN0 YXJ0IVxuIiwgbmFtZSk7CisJCQlpZ3Rfc3Bpbm5lcl9lbmQoc3Bpbik7CisJCQlpZ3Rfc3Bpbm5l cl9maW5pKHNwaW4pOworCQkJa2ZyZWUoc3Bpbik7CisJCQlyZXQgPSAtRVRJTUVET1VUOworCQkJ Z290byBvdXQ7CisJCX0KKworCQkqc3Bpbl9vdXQgPSBzcGluOworCX0KKworb3V0OgorCXJldHVy biByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK19fcmVhZF9zbGljZV9jb3VudChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKKwkJICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJ ICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkgICBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAorCQkgICBzdHJ1Y3QgaWd0X3NwaW5uZXIgKnNwaW4sCisJCSAgIHUz MiAqcnBjcykKK3sKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSA9IE5VTEw7CisJdTMyIHNfbWFz aywgc19zaGlmdDsKKwl1bnNpZ25lZCBpbnQgY250OworCXUzMiAqYnVmLCB2YWw7CisJbG9uZyBy ZXQ7CisKKwlyZXQgPSBlbWl0X3JwY3NfcXVlcnkob2JqLCBjdHgsIGVuZ2luZSwgJnJxKTsKKwlp ZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJaWYgKHNwaW4pCisJCWlndF9zcGlubmVyX2VuZChz cGluKTsKKworCXJldCA9IGk5MTVfcmVxdWVzdF93YWl0KHJxLCBJOTE1X1dBSVRfTE9DS0VELCBN QVhfU0NIRURVTEVfVElNRU9VVCk7CisJaWYgKHJldCA8PSAwKQorCQlyZXR1cm4gcmV0IDwgMCA/ IHJldCA6IC1FVElNRTsKKworCWk5MTVfcmVxdWVzdF9wdXQocnEpOworCisJYnVmID0gaTkxNV9n ZW1fb2JqZWN0X3Bpbl9tYXAob2JqLCBJOTE1X01BUF9XQik7CisJaWYgKElTX0VSUihidWYpKSB7 CisJCXJldCA9IFBUUl9FUlIoYnVmKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlpZiAoSU5URUxf R0VOKGk5MTUpID49IDExKSB7CisJCXNfbWFzayA9IEdFTjExX1JQQ1NfU19DTlRfTUFTSzsKKwkJ c19zaGlmdCA9IEdFTjExX1JQQ1NfU19DTlRfU0hJRlQ7CisJfSBlbHNlIHsKKwkJc19tYXNrID0g R0VOOF9SUENTX1NfQ05UX01BU0s7CisJCXNfc2hpZnQgPSBHRU44X1JQQ1NfU19DTlRfU0hJRlQ7 CisJfQorCisJdmFsID0gKmJ1ZjsKKwljbnQgPSAodmFsICYgc19tYXNrKSA+PiBzX3NoaWZ0Owor CSpycGNzID0gdmFsOworCisJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmopOworCisJcmV0 dXJuIGNudDsKK30KKworc3RhdGljIHZvaWQgX19lcnJfcnBjcyh1MzIgcnBjcywgdW5zaWduZWQg aW50IHNsaWNlcykKK3sKKwlwcl9pbmZvKCJSUENTPTB4JXg7ICV1JXN4JXUlc1xuIiwKKwkJcnBj cywgc2xpY2VzLAorCQkocnBjcyAmIEdFTjhfUlBDU19TX0NOVF9FTkFCTEUpID8gIioiIDogIiIs CisJCShycGNzICYgR0VOOF9SUENTX1NTX0NOVF9NQVNLKSA+PiBHRU44X1JQQ1NfU1NfQ05UX1NI SUZULAorCQkocnBjcyAmIEdFTjhfUlBDU19TU19DTlRfRU5BQkxFKSA/ICIqIiA6ICIiKTsKK30K Kworc3RhdGljIGludAorX19zc2V1X2ZpbmlzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKKwkgICAgICBjb25zdCBjaGFyICpuYW1lLAorCSAgICAgIHVuc2lnbmVkIGludCBmbGFncywK KwkgICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCSAgICAgIHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICprY3R4LAorCSAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKKwkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCSAgICAgIHVuc2ln bmVkIGludCBleHBlY3RlZCwKKwkgICAgICBzdHJ1Y3QgaWd0X3NwaW5uZXIgKnNwaW4pCit7CisJ dW5zaWduZWQgaW50IHNsaWNlcyA9CisJCWh3ZWlnaHQzMihpbnRlbF9kZXZpY2VfZGVmYXVsdF9z c2V1KGk5MTUpLnNsaWNlX21hc2spOworCXUzMiBycGNzID0gMDsKKwlpbnQgcmV0ID0gMDsKKwor CWlmIChmbGFncyAmIFRFU1RfUkVTRVQpIHsKKwkJcmV0ID0gaTkxNV9yZXNldF9lbmdpbmUoZW5n aW5lLCAic3NldSIpOworCQlpZiAocmV0KQorCQkJZ290byBvdXQ7CisJfQorCisJcmV0ID0gX19y ZWFkX3NsaWNlX2NvdW50KGk5MTUsIGN0eCwgZW5naW5lLCBvYmosCisJCQkJIGZsYWdzICYgVEVT VF9SRVNFVCA/IE5VTEwgOiBzcGluLCAmcnBjcyk7CisJaWYgKHJldCA8IDApIHsKKwkJZ290byBv dXQ7CisJfSBlbHNlIGlmIChyZXQgIT0gZXhwZWN0ZWQpIHsKKwkJcHJfZXJyKCIlczogQ29udGV4 dCBzbGljZSBjb3VudCAlZCBpcyBub3QgJXUhXG4iLAorCQkgICAgICAgbmFtZSwgcmV0LCBleHBl Y3RlZCk7CisJCV9fZXJyX3JwY3MocnBjcywgcmV0KTsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290 byBvdXQ7CisJfSBlbHNlIHsKKwkJcmV0ID0gMDsKKwl9CisKKwlyZXQgPSBfX3JlYWRfc2xpY2Vf Y291bnQoaTkxNSwga2N0eCwgZW5naW5lLCBvYmosIE5VTEwsICZycGNzKTsKKwlpZiAocmV0IDwg MCkgeworCQlnb3RvIG91dDsKKwl9IGVsc2UgaWYgKHJldCAhPSBzbGljZXMpIHsKKwkJcHJfZXJy KCIlczogS2VybmVsIGNvbnRleHQgc2xpY2UgY291bnQgJWQgaXMgbm90ICV1IVxuIiwKKwkJICAg ICAgIG5hbWUsIHJldCwgc2xpY2VzKTsKKwkJX19lcnJfcnBjcyhycGNzLCByZXQpOworCQlyZXQg PSAtRUlOVkFMOworCQlnb3RvIG91dDsKKwl9IGVsc2UgeworCQlyZXQgPSAwOworCX0KKworb3V0 OgorCWlmIChzcGluKQorCQlpZ3Rfc3Bpbm5lcl9lbmQoc3Bpbik7CisKKwlpZiAoZmxhZ3MgJiBU RVNUX0lETEUpIHsKKwkJcmV0ID0gaTkxNV9nZW1fd2FpdF9mb3JfaWRsZShpOTE1LAorCQkJCQkg ICAgIEk5MTVfV0FJVF9MT0NLRUQsCisJCQkJCSAgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwor CQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKworCQlyZXQgPSBfX3JlYWRfc2xpY2VfY291bnQo aTkxNSwgY3R4LCBlbmdpbmUsIG9iaiwgTlVMTCwgJnJwY3MpOworCQlpZiAocmV0IDwgMCkgewor CQkJcmV0dXJuIHJldDsKKwkJfSBlbHNlIGlmIChyZXQgIT0gZXhwZWN0ZWQpIHsKKwkJCXByX2Vy cigiJXM6IENvbnRleHQgc2xpY2UgY291bnQgJWQgaXMgbm90ICV1IGFmdGVyIGlkbGUhXG4iLAor CQkJICAgICAgIG5hbWUsIHJldCwgZXhwZWN0ZWQpOworCQkJX19lcnJfcnBjcyhycGNzLCByZXQp OworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0gZWxzZSB7CisJCQlyZXQgPSAwOworCQl9CisJfQor CisJcmV0dXJuIHJldDsKKworfQorCitzdGF0aWMgaW50CitfX3NzZXVfdGVzdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkgICAgY29uc3QgY2hhciAqbmFtZSwKKwkgICAgdW5zaWdu ZWQgaW50IGZsYWdzLAorCSAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCSAgICBz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCisJICAgIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCit7CisJc3RydWN0IGln dF9zcGlubmVyICpzcGluID0gTlVMTDsKKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqa2N0eDsK KwlpbnQgcmV0OworCisJa2N0eCA9IGtlcm5lbF9jb250ZXh0KGk5MTUpOworCWlmIChJU19FUlIo a2N0eCkpCisJCXJldHVybiBQVFJfRVJSKGtjdHgpOworCisJcmV0ID0gX19zc2V1X3ByZXBhcmUo aTkxNSwgbmFtZSwgZmxhZ3MsIGN0eCwgZW5naW5lLCAmc3Bpbik7CisJaWYgKHJldCkKKwkJZ290 byBvdXQ7CisKKwlyZXQgPSBfX2k5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShjdHgs IGVuZ2luZSwgc3NldSk7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwlyZXQgPSBfX3NzZXVf ZmluaXNoKGk5MTUsIG5hbWUsIGZsYWdzLCBjdHgsIGtjdHgsIGVuZ2luZSwgb2JqLAorCQkJICAg IGh3ZWlnaHQzMihzc2V1LnNsaWNlX21hc2spLCBzcGluKTsKKworb3V0OgorCWlmIChzcGluKSB7 CisJCWlndF9zcGlubmVyX2VuZChzcGluKTsKKwkJaWd0X3NwaW5uZXJfZmluaShzcGluKTsKKwkJ a2ZyZWUoc3Bpbik7CisJfQorCisJa2VybmVsX2NvbnRleHRfY2xvc2Uoa2N0eCk7CisKKwlyZXR1 cm4gcmV0OworfQorCitzdGF0aWMgaW50CitfX2lndF9jdHhfc3NldShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwKKwkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkgICAgICAgdW5zaWdu ZWQgaW50IGZsYWdzKQoreworCXN0cnVjdCBpbnRlbF9zc2V1IGRlZmF1bHRfc3NldSA9IGludGVs X2RldmljZV9kZWZhdWx0X3NzZXUoaTkxNSk7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lID0gaTkxNS0+ZW5naW5lW1JDU107CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i ajsKKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OworCXN0cnVjdCBpbnRlbF9zc2V1IHBn X3NzZXU7CisJc3RydWN0IGRybV9maWxlICpmaWxlOworCWludCByZXQ7CisKKwlpZiAoSU5URUxf R0VOKGk5MTUpIDwgOSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoIUlOVEVMX0lORk8oaTkxNSktPnNz ZXUuaGFzX3NsaWNlX3BnKQorCQlyZXR1cm4gMDsKKworCWlmIChod2VpZ2h0MzIoZGVmYXVsdF9z c2V1LnNsaWNlX21hc2spIDwgMikKKwkJcmV0dXJuIDA7CisKKwkvKgorCSAqIEdlbjExIFZNRSBm cmllbmRseSBwb3dlci1nYXRlZCBjb25maWd1cmF0aW9uIHdpdGggaGFsZiBlbmFibGVkCisJICog c3ViLXNsaWNlcy4KKwkgKi8KKwlwZ19zc2V1ID0gZGVmYXVsdF9zc2V1OworCXBnX3NzZXUuc2xp Y2VfbWFzayA9IDE7CisJcGdfc3NldS5zdWJzbGljZV9tYXNrID0KKwkJfih+MCA8PCAoaHdlaWdo dDMyKGRlZmF1bHRfc3NldS5zdWJzbGljZV9tYXNrKSAvIDIpKTsKKworCXByX2luZm8oIlNTRVUg c3VidGVzdCAnJXMnLCBmbGFncz0leCwgZGVmX3NsaWNlcz0ldSwgcGdfc2xpY2VzPSV1XG4iLAor CQluYW1lLCBmbGFncywgaHdlaWdodDMyKGRlZmF1bHRfc3NldS5zbGljZV9tYXNrKSwKKwkJaHdl aWdodDMyKHBnX3NzZXUuc2xpY2VfbWFzaykpOworCisJZmlsZSA9IG1vY2tfZmlsZShpOTE1KTsK KwlpZiAoSVNfRVJSKGZpbGUpKQorCQlyZXR1cm4gUFRSX0VSUihmaWxlKTsKKworCWlmIChmbGFn cyAmIFRFU1RfUkVTRVQpCisJCWlndF9nbG9iYWxfcmVzZXRfbG9jayhpOTE1KTsKKworCW11dGV4 X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJY3R4ID0gaTkxNV9nZW1fY3JlYXRl X2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOworCWlmIChJU19FUlIoY3R4KSkgewor CQlyZXQgPSBQVFJfRVJSKGN0eCk7CisJCWdvdG8gb3V0X3VubG9jazsKKwl9CisKKwlvYmogPSBp OTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKGk5MTUsIFBBR0VfU0laRSk7CisJaWYgKElT X0VSUihvYmopKSB7CisJCXJldCA9IFBUUl9FUlIob2JqKTsKKwkJZ290byBvdXRfdW5sb2NrOwor CX0KKworCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOworCisJLyogRmlyc3Qgc2V0IHRoZSBk ZWZhdWx0IG1hc2suICovCisJcmV0ID0gX19zc2V1X3Rlc3QoaTkxNSwgbmFtZSwgZmxhZ3MsIGN0 eCwgZW5naW5lLCBvYmosIGRlZmF1bHRfc3NldSk7CisJaWYgKHJldCkKKwkJZ290byBvdXRfZmFp bDsKKworCS8qIFRoZW4gc2V0IGEgcG93ZXItZ2F0ZWQgY29uZmlndXJhdGlvbi4gKi8KKwlyZXQg PSBfX3NzZXVfdGVzdChpOTE1LCBuYW1lLCBmbGFncywgY3R4LCBlbmdpbmUsIG9iaiwgcGdfc3Nl dSk7CisJaWYgKHJldCkKKwkJZ290byBvdXRfZmFpbDsKKworCS8qIEJhY2sgdG8gZGVmYXVsdHMu ICovCisJcmV0ID0gX19zc2V1X3Rlc3QoaTkxNSwgbmFtZSwgZmxhZ3MsIGN0eCwgZW5naW5lLCBv YmosIGRlZmF1bHRfc3NldSk7CisJaWYgKHJldCkKKwkJZ290byBvdXRfZmFpbDsKKworCS8qIE9u ZSBsYXN0IHBvd2VyLWdhdGVkIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSByb2FkLiAqLworCXJldCA9 IF9fc3NldV90ZXN0KGk5MTUsIG5hbWUsIGZsYWdzLCBjdHgsIGVuZ2luZSwgb2JqLCBwZ19zc2V1 KTsKKwlpZiAocmV0KQorCQlnb3RvIG91dF9mYWlsOworCitvdXRfZmFpbDoKKwlpZiAoaWd0X2Zs dXNoX3Rlc3QoaTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCkpCisJCXJldCA9IC1FSU87CisKKwlpOTE1 X2dlbV9vYmplY3RfcHV0KG9iaik7CisKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKKwor b3V0X3VubG9jazoKKwltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJ aWYgKGZsYWdzICYgVEVTVF9SRVNFVCkKKwkJaWd0X2dsb2JhbF9yZXNldF91bmxvY2soaTkxNSk7 CisKKwltb2NrX2ZpbGVfZnJlZShpOTE1LCBmaWxlKTsKKworCWlmIChyZXQpCisJCXByX2Vycigi JXM6IEZhaWxlZCB3aXRoICVkIVxuIiwgbmFtZSwgcmV0KTsKKworCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYyBpbnQgaWd0X2N0eF9zc2V1KHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3QgeworCQljb25z dCBjaGFyICpuYW1lOworCQl1bnNpZ25lZCBpbnQgZmxhZ3M7CisJfSAqcGhhc2UsIHBoYXNlc1td ID0geworCQl7IC5uYW1lID0gImJhc2ljIiwgLmZsYWdzID0gMCB9LAorCQl7IC5uYW1lID0gImlk bGUiLCAuZmxhZ3MgPSBURVNUX0lETEUgfSwKKwkJeyAubmFtZSA9ICJidXN5IiwgLmZsYWdzID0g VEVTVF9CVVNZIH0sCisJCXsgLm5hbWUgPSAiYnVzeS1yZXNldCIsIC5mbGFncyA9IFRFU1RfQlVT WSB8IFRFU1RfUkVTRVQgfSwKKwkJeyAubmFtZSA9ICJidXN5LWlkbGUiLCAuZmxhZ3MgPSBURVNU X0JVU1kgfCBURVNUX0lETEUgfSwKKwkJeyAubmFtZSA9ICJyZXNldC1pZGxlIiwgLmZsYWdzID0g VEVTVF9SRVNFVCB8IFRFU1RfSURMRSB9LAorCX07CisJdW5zaWduZWQgaW50IGk7CisJaW50IHJl dCA9IDA7CisKKwlmb3IgKGkgPSAwLCBwaGFzZSA9IHBoYXNlczsgcmV0ID09IDAgJiYgaSA8IEFS UkFZX1NJWkUocGhhc2VzKTsKKwkgICAgIGkrKywgcGhhc2UrKykKKwkJcmV0ID0gX19pZ3RfY3R4 X3NzZXUoYXJnLCBwaGFzZS0+bmFtZSwgcGhhc2UtPmZsYWdzKTsKKworCXJldHVybiByZXQ7Cit9 CisKIHN0YXRpYyBpbnQgaWd0X2N0eF9yZWFkb25seSh2b2lkICphcmcpCiB7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7CkBAIC0xMjMyLDYgKzE3MTcsNyBAQCBpbnQgaTkx NV9nZW1fY29udGV4dF9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAJCVNVQlRFU1QobGl2ZV9ub3Bfc3dpdGNoKSwKIAkJU1VCVEVTVChpZ3RfY3R4X2V4 ZWMpLAogCQlTVUJURVNUKGlndF9jdHhfcmVhZG9ubHkpLAorCQlTVUJURVNUKGlndF9jdHhfc3Nl dSksCiAJCVNVQlRFU1QoaWd0X3ZtX2lzb2xhdGlvbiksCiAJfTsKIAotLSAKMi4xOS4xCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK