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: Fri, 14 Dec 2018 12:34:49 +0000 Message-ID: <20181214123449.23847-8-tvrtko.ursulin@linux.intel.com> References: <20181214123449.23847-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id C4F836F48C for ; Fri, 14 Dec 2018 12:35:02 +0000 (UTC) In-Reply-To: <20181214123449.23847-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 bjkrIHBsYXRmb3Jtcwp3aXRoIHNsaWNlIHBvd2VyIGdhdGluZy4KClNpZ25lZC1vZmYtYnk6IFR2 cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICAgICAgIHwgIDM2ICstCiAuLi4vZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgfCA0ODkgKysrKysrKysrKysrKysrKysr CiAyIGZpbGVzIGNoYW5nZWQsIDUxNCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggNzhkNDQ5YjYyNDVlLi5m Y2IxOWI2ZjYzNWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKQEAg LTEwNDIsMjQgKzEwNDIsMjMgQEAgZ2VuOF9tb2RpZnlfcnBjc19ncHUoc3RydWN0IGludGVsX2Nv bnRleHQgKmNlLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQKLWk5MTVfZ2VtX2NvbnRl eHRfcmVjb25maWd1cmVfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAotCQkJCSAg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAotCQkJCSAgc3RydWN0IGludGVsX3NzZXUg c3NldSkKKyNpZiAhSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpCitzdGF0aWMK KyNlbmRpZgoraW50CitfX2k5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkJCSAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCisJCQkJICAgIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCiB7CiAJc3RydWN0IGludGVs X2NvbnRleHQgKmNlID0gdG9faW50ZWxfY29udGV4dChjdHgsIGVuZ2luZSk7Ci0JaW50IHJldDsK KwlpbnQgcmV0ID0gMDsKIAogCUdFTV9CVUdfT04oSU5URUxfR0VOKGN0eC0+aTkxNSkgPCA4KTsK IAlHRU1fQlVHX09OKGVuZ2luZS0+aWQgIT0gUkNTKTsKIAotCXJldCA9IG11dGV4X2xvY2tfaW50 ZXJydXB0aWJsZSgmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKLQlpZiAocmV0KQotCQly ZXR1cm4gcmV0OwotCiAJLyogTm90aGluZyB0byBkbyBpZiB1bm1vZGlmaWVkLiAqLwogCWlmICgh bWVtY21wKCZjZS0+c3NldSwgJnNzZXUsIHNpemVvZihzc2V1KSkpCi0JCWdvdG8gb3V0OworCQly ZXR1cm4gMDsKIAogCS8qCiAJICogSWYgY29udGV4dCBpcyBub3QgaWRsZSB3ZSBoYXZlIHRvIHN1 Ym1pdCBhbiBvcmRlcmVkIHJlcXVlc3QgdG8gbW9kaWZ5CkBAIC0xMDcyLDcgKzEwNzEsMjIgQEAg aTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3VyZV9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHgsCiAJaWYgKCFyZXQpCiAJCWNlLT5zc2V1ID0gc3NldTsKIAotb3V0OgorCXJldHVybiBy ZXQ7Cit9CisKK3N0YXRpYyBpbnQKK2k5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkJCSAgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLAorCQkJCSAgc3RydWN0IGludGVsX3NzZXUgc3NldSkKK3sKKwlpbnQgcmV0Owor CisJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBfX2k5MTVfZ2VtX2Nv bnRleHRfcmVjb25maWd1cmVfc3NldShjdHgsIGVuZ2luZSwgc3NldSk7CisKIAltdXRleF91bmxv Y2soJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKIAlyZXR1cm4gcmV0OwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXgg N2Q4MjA0M2FmZjEwLi4yYjRlYjVkMDU5MTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1 ZGUgIi4uL2k5MTVfc2VsZnRlc3QuaCIKICNpbmNsdWRlICJpOTE1X3JhbmRvbS5oIgogI2luY2x1 ZGUgImlndF9mbHVzaF90ZXN0LmgiCisjaW5jbHVkZSAiaWd0X3Jlc2V0LmgiCisjaW5jbHVkZSAi aWd0X3NwaW5uZXIuaCIKIAogI2luY2x1ZGUgIm1vY2tfZHJtLmgiCiAjaW5jbHVkZSAibW9ja19n ZW1fZGV2aWNlLmgiCkBAIC02NTAsNiArNjUyLDQ4NyBAQCBzdGF0aWMgaW50IGlndF9jdHhfZXhl Yyh2b2lkICphcmcpCiAJcmV0dXJuIGVycjsKIH0KIAorc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAq cnBjc19xdWVyeV9iYXRjaChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqOworCXUzMiAqY21kOworCWludCBlcnI7CisKKwlpZiAoSU5URUxf R0VOKHZtYS0+dm0tPmk5MTUpIDwgOCkKKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisKKwlv YmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKHZtYS0+dm0tPmk5MTUsIFBBR0Vf U0laRSk7CisJaWYgKElTX0VSUihvYmopKQorCQlyZXR1cm4gRVJSX0NBU1Qob2JqKTsKKworCWNt ZCA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKG9iaiwgSTkxNV9NQVBfV0IpOworCWlmIChJU19F UlIoY21kKSkgeworCQllcnIgPSBQVFJfRVJSKGNtZCk7CisJCWdvdG8gZXJyOworCX0KKworCSpj bWQrKyA9IE1JX1NUT1JFX1JFR0lTVEVSX01FTV9HRU44OworCSpjbWQrKyA9IGk5MTVfbW1pb19y ZWdfb2Zmc2V0KEdFTjhfUl9QV1JfQ0xLX1NUQVRFKTsKKwkqY21kKysgPSBsb3dlcl8zMl9iaXRz KHZtYS0+bm9kZS5zdGFydCk7CisJKmNtZCsrID0gdXBwZXJfMzJfYml0cyh2bWEtPm5vZGUuc3Rh cnQpOworCSpjbWQgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOworCisJaTkxNV9nZW1fb2JqZWN0X3Vu cGluX21hcChvYmopOworCisJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWlu KG9iaiwgZmFsc2UpOworCWlmIChlcnIpCisJCWdvdG8gZXJyOworCisJdm1hID0gaTkxNV92bWFf aW5zdGFuY2Uob2JqLCB2bWEtPnZtLCBOVUxMKTsKKwlpZiAoSVNfRVJSKHZtYSkpIHsKKwkJZXJy ID0gUFRSX0VSUih2bWEpOworCQlnb3RvIGVycjsKKwl9CisKKwllcnIgPSBpOTE1X3ZtYV9waW4o dm1hLCAwLCAwLCBQSU5fVVNFUik7CisJaWYgKGVycikKKwkJZ290byBlcnI7CisKKwlyZXR1cm4g dm1hOworCitlcnI6CisJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOworCXJldHVybiBFUlJfUFRS KGVycik7Cit9CisKK3N0YXRpYyBpbnQKK2VtaXRfcnBjc19xdWVyeShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAorCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKipycV9v dXQpCit7CisJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07CisJc3RydWN0IGk5MTVfcmVx dWVzdCAqcnE7CisJc3RydWN0IGk5MTVfdm1hICpiYXRjaDsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZt YTsKKwlpbnQgZXJyOworCisJR0VNX0JVR19PTighY3R4LT5wcGd0dCk7CisJR0VNX0JVR19PTigh aW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChlbmdpbmUpKTsKKworCXZtID0gJmN0eC0+cHBn dHQtPnZtOworCisJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCB2bSwgTlVMTCk7CisJaWYg KElTX0VSUih2bWEpKQorCQlyZXR1cm4gUFRSX0VSUih2bWEpOworCisJZXJyID0gaTkxNV9nZW1f b2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOworCWlmIChlcnIpCisJCXJldHVy biBlcnI7CisKKwllcnIgPSBpOTE1X3ZtYV9waW4odm1hLCAwLCAwLCBQSU5fSElHSCB8IFBJTl9V U0VSKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJYmF0Y2ggPSBycGNzX3F1ZXJ5X2Jh dGNoKHZtYSk7CisJaWYgKElTX0VSUihiYXRjaCkpIHsKKwkJZXJyID0gUFRSX0VSUihiYXRjaCk7 CisJCWdvdG8gZXJyX3ZtYTsKKwl9CisKKwlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUs IGN0eCk7CisJaWYgKElTX0VSUihycSkpIHsKKwkJZXJyID0gUFRSX0VSUihycSk7CisJCWdvdG8g ZXJyX2JhdGNoOworCX0KKworCWVyciA9IGVuZ2luZS0+ZW1pdF9iYl9zdGFydChycSwgYmF0Y2gt Pm5vZGUuc3RhcnQsIGJhdGNoLT5ub2RlLnNpemUsIDApOworCWlmIChlcnIpCisJCWdvdG8gZXJy X3JlcXVlc3Q7CisKKwllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShiYXRjaCwgcnEsIDAp OworCWlmIChlcnIpCisJCWdvdG8gc2tpcF9yZXF1ZXN0OworCisJZXJyID0gaTkxNV92bWFfbW92 ZV90b19hY3RpdmUodm1hLCBycSwgRVhFQ19PQkpFQ1RfV1JJVEUpOworCWlmIChlcnIpCisJCWdv dG8gc2tpcF9yZXF1ZXN0OworCisJaTkxNV9nZW1fb2JqZWN0X3NldF9hY3RpdmVfcmVmZXJlbmNl KGJhdGNoLT5vYmopOworCWk5MTVfdm1hX3VucGluKGJhdGNoKTsKKwlpOTE1X3ZtYV9jbG9zZShi YXRjaCk7CisKKwlpOTE1X3ZtYV91bnBpbih2bWEpOworCisJKnJxX291dCA9IGk5MTVfcmVxdWVz dF9nZXQocnEpOworCisJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisKKwlyZXR1cm4gMDsKKworc2tp cF9yZXF1ZXN0OgorCWk5MTVfcmVxdWVzdF9za2lwKHJxLCBlcnIpOworZXJyX3JlcXVlc3Q6CisJ aTkxNV9yZXF1ZXN0X2FkZChycSk7CitlcnJfYmF0Y2g6CisJaTkxNV92bWFfdW5waW4oYmF0Y2gp OworZXJyX3ZtYToKKwlpOTE1X3ZtYV91bnBpbih2bWEpOworCisJcmV0dXJuIGVycjsKK30KKwor I2RlZmluZSBURVNUX0lETEUJKDEgPDwgMCkKKyNkZWZpbmUgVEVTVF9CVVNZCSgxIDw8IDEpCisj ZGVmaW5lIFRFU1RfUkVTRVQJKDEgPDwgMikKKworaW50CitfX2k5MTVfZ2VtX2NvbnRleHRfcmVj b25maWd1cmVfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkJCSAgICBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJICAgIHN0cnVjdCBpbnRlbF9zc2V1IHNz ZXUpOworCitzdGF0aWMgaW50CitfX3ByZV9zZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCisJICB1bnNpZ25lZCBpbnQgZmxhZ3MsCisJICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4LAorCSAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCSAgc3RydWN0IGlndF9z cGlubmVyICoqc3Bpbl9vdXQpCit7CisJaW50IHJldCA9IDA7CisKKwlpZiAoZmxhZ3MgJiAoVEVT VF9CVVNZIHwgVEVTVF9SRVNFVCkpIHsKKwkJc3RydWN0IGlndF9zcGlubmVyICpzcGluOworCQlz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKworCQlzcGluID0ga3phbGxvYyhzaXplb2YoKnNwaW4p LCBHRlBfS0VSTkVMKTsKKwkJaWYgKCFzcGluKSB7CisJCQlyZXQgPSAtRU5PTUVNOworCQkJZ290 byBvdXQ7CisJCX0KKworCQlyZXQgPSBpZ3Rfc3Bpbm5lcl9pbml0KHNwaW4sIGk5MTUpOworCQlp ZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKworCQlycSA9IGlndF9zcGlubmVyX2NyZWF0ZV9yZXF1 ZXN0KHNwaW4sIGN0eCwgZW5naW5lLCBNSV9OT09QKTsKKwkJaWYgKElTX0VSUihycSkpIHsKKwkJ CXJldCA9IFBUUl9FUlIocnEpOworCQkJaWd0X3NwaW5uZXJfZmluaShzcGluKTsKKwkJCWtmcmVl KHNwaW4pOworCQkJZ290byBvdXQ7CisJCX0KKworCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKKwor CQlpZiAoIWlndF93YWl0X2Zvcl9zcGlubmVyKHNwaW4sIHJxKSkgeworCQkJcHJfZXJyKCJTcGlu bmVyIGZhaWxlZCB0byBzdGFydCFcbiIpOworCQkJaWd0X3NwaW5uZXJfZW5kKHNwaW4pOworCQkJ aWd0X3NwaW5uZXJfZmluaShzcGluKTsKKwkJCWtmcmVlKHNwaW4pOworCQkJcmV0ID0gLUVUSU1F RE9VVDsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJKnNwaW5fb3V0ID0gc3BpbjsKKwl9CisKK291 dDoKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50CitfX3JlYWRfc2xpY2VfY291bnQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCSAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHgsCisJCSAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJICAgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJICAgc3RydWN0IGlndF9zcGlubmVyICpzcGlu LAorCQkgICB1MzIgKnJwY3MpCit7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEgPSBOVUxMOwor CXUzMiBzX21hc2ssIHNfc2hpZnQ7CisJdW5zaWduZWQgaW50IGNudDsKKwl1MzIgKmJ1ZiwgdmFs OworCWxvbmcgcmV0OworCisJcmV0ID0gZW1pdF9ycGNzX3F1ZXJ5KG9iaiwgY3R4LCBlbmdpbmUs ICZycSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWlmIChzcGluKQorCQlpZ3Rfc3Bp bm5lcl9lbmQoc3Bpbik7CisKKwlyZXQgPSBpOTE1X3JlcXVlc3Rfd2FpdChycSwgSTkxNV9XQUlU X0xPQ0tFRCwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOworCWlmIChyZXQgPD0gMCkKKwkJcmV0dXJu IHJldCA8IDAgPyByZXQgOiAtRVRJTUU7CisKKwlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKKworCWJ1 ZiA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKG9iaiwgSTkxNV9NQVBfV0IpOworCWlmIChJU19F UlIoYnVmKSkgeworCQlyZXQgPSBQVFJfRVJSKGJ1Zik7CisJCXJldHVybiByZXQ7CisJfQorCisJ aWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMSkgeworCQlzX21hc2sgPSBHRU4xMV9SUENTX1NfQ05U X01BU0s7CisJCXNfc2hpZnQgPSBHRU4xMV9SUENTX1NfQ05UX1NISUZUOworCX0gZWxzZSB7CisJ CXNfbWFzayA9IEdFTjhfUlBDU19TX0NOVF9NQVNLOworCQlzX3NoaWZ0ID0gR0VOOF9SUENTX1Nf Q05UX1NISUZUOworCX0KKworCXZhbCA9ICpidWY7CisJY250ID0gKHZhbCAmIHNfbWFzaykgPj4g c19zaGlmdDsKKwkqcnBjcyA9IHZhbDsKKworCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAob2Jq KTsKKworCXJldHVybiBjbnQ7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXJyX3JwY3ModTMyIHJwY3Ms IHVuc2lnbmVkIGludCBzbGljZXMpCit7CisJcHJfaW5mbygiUlBDUz0weCV4OyAldSVzeCV1JXNc biIsCisJCXJwY3MsIHNsaWNlcywKKwkJKHJwY3MgJiBHRU44X1JQQ1NfU19DTlRfRU5BQkxFKSA/ ICIqIiA6ICIiLAorCQkocnBjcyAmIEdFTjhfUlBDU19TU19DTlRfTUFTSykgPj4gR0VOOF9SUENT X1NTX0NOVF9TSElGVCwKKwkJKHJwY3MgJiBHRU44X1JQQ1NfU1NfQ05UX0VOQUJMRSkgPyAiKiIg OiAiIik7Cit9CisKK3N0YXRpYyBpbnQKK19fcG9zdF9zZXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsCisJICAgdW5zaWduZWQgaW50IGZsYWdzLAorCSAgIHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHgsCisJICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmtjdHgsCisJICAgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCSAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCisJICAgdW5zaWduZWQgaW50IGV4cGVjdGVkLAorCSAgIHN0cnVjdCBpZ3Rfc3Bp bm5lciAqc3BpbikKK3sKKwl1bnNpZ25lZCBpbnQgc2xpY2VzID0KKwkJaHdlaWdodDMyKGludGVs X2RldmljZV9kZWZhdWx0X3NzZXUoaTkxNSkuc2xpY2VfbWFzayk7CisJdTMyIHJwY3MgPSAwOwor CWludCByZXQgPSAwOworCisJaWYgKGZsYWdzICYgVEVTVF9SRVNFVCkgeworCQlyZXQgPSBpOTE1 X3Jlc2V0X2VuZ2luZShlbmdpbmUsICJzc2V1Iik7CisJCWlmIChyZXQpCisJCQlnb3RvIG91dDsK Kwl9CisKKwlyZXQgPSBfX3JlYWRfc2xpY2VfY291bnQoaTkxNSwgY3R4LCBlbmdpbmUsIG9iaiwK KwkJCQkgZmxhZ3MgJiBURVNUX1JFU0VUID8gTlVMTCA6IHNwaW4sICZycGNzKTsKKwlpZiAocmV0 IDwgMCkgeworCQlnb3RvIG91dDsKKwl9IGVsc2UgaWYgKHJldCAhPSBleHBlY3RlZCkgeworCQlw cl9lcnIoIkNvbnRleHQgc2xpY2UgY291bnQgJWQgaXMgbm90ICV1IVxuIiwKKwkJICAgICAgIHJl dCwgZXhwZWN0ZWQpOworCQlfX2Vycl9ycGNzKHJwY3MsIHJldCk7CisJCXJldCA9IC1FSU5WQUw7 CisJCWdvdG8gb3V0OworCX0gZWxzZSB7CisJCXJldCA9IDA7CisJfQorCisJcmV0ID0gX19yZWFk X3NsaWNlX2NvdW50KGk5MTUsIGtjdHgsIGVuZ2luZSwgb2JqLCBOVUxMLCAmcnBjcyk7CisJaWYg KHJldCA8IDApIHsKKwkJZ290byBvdXQ7CisJfSBlbHNlIGlmIChyZXQgIT0gc2xpY2VzKSB7CisJ CXByX2VycigiS2VybmVsIGNvbnRleHQgc2xpY2UgY291bnQgJWQgaXMgbm90ICV1IVxuIiwKKwkJ ICAgICAgIHJldCwgc2xpY2VzKTsKKwkJX19lcnJfcnBjcyhycGNzLCByZXQpOworCQlyZXQgPSAt RUlOVkFMOworCQlnb3RvIG91dDsKKwl9IGVsc2UgeworCQlyZXQgPSAwOworCX0KKworb3V0Ogor CWlmIChzcGluKQorCQlpZ3Rfc3Bpbm5lcl9lbmQoc3Bpbik7CisKKwlpZiAoZmxhZ3MgJiBURVNU X0lETEUpIHsKKwkJcmV0ID0gaTkxNV9nZW1fd2FpdF9mb3JfaWRsZShpOTE1LAorCQkJCQkgICAg IEk5MTVfV0FJVF9MT0NLRUQsCisJCQkJCSAgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOworCQlp ZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKworCQlyZXQgPSBfX3JlYWRfc2xpY2VfY291bnQoaTkx NSwgY3R4LCBlbmdpbmUsIG9iaiwgTlVMTCwgJnJwY3MpOworCQlpZiAocmV0IDwgMCkgeworCQkJ cmV0dXJuIHJldDsKKwkJfSBlbHNlIGlmIChyZXQgIT0gZXhwZWN0ZWQpIHsKKwkJCXByX2Vycigi Q29udGV4dCBzbGljZSBjb3VudCAlZCBpcyBub3QgJXUgYWZ0ZXIgaWRsZSFcbiIsCisJCQkgICAg ICAgcmV0LCBleHBlY3RlZCk7CisJCQlfX2Vycl9ycGNzKHJwY3MsIHJldCk7CisJCQlyZXR1cm4g LUVJTlZBTDsKKwkJfSBlbHNlIHsKKwkJCXJldCA9IDA7CisJCX0KKwl9CisKKwlyZXR1cm4gcmV0 OworCit9CisKK3N0YXRpYyBpbnQKK19fc3NldV90ZXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LAorCSAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsCisJICAgIHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHgsCisJICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkgICAg c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkgICAgc3RydWN0IGludGVsX3NzZXUg c3NldSkKK3sKKwlzdHJ1Y3QgaWd0X3NwaW5uZXIgKnNwaW4gPSBOVUxMOworCXN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICprY3R4OworCWludCByZXQ7CisKKwlrY3R4ID0ga2VybmVsX2NvbnRleHQo aTkxNSk7CisJaWYgKElTX0VSUihrY3R4KSkKKwkJcmV0dXJuIFBUUl9FUlIoa2N0eCk7CisKKwly ZXQgPSBfX3ByZV9zZXQoaTkxNSwgZmxhZ3MsIGN0eCwgZW5naW5lLCAmc3Bpbik7CisJaWYgKHJl dCkKKwkJZ290byBvdXQ7CisKKwlyZXQgPSBfX2k5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVf c3NldShjdHgsIGVuZ2luZSwgc3NldSk7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwlyZXQg PSBfX3Bvc3Rfc2V0KGk5MTUsIGZsYWdzLCBjdHgsIGtjdHgsIGVuZ2luZSwgb2JqLAorCQkJIGh3 ZWlnaHQzMihzc2V1LnNsaWNlX21hc2spLCBzcGluKTsKKworb3V0OgorCWlmIChzcGluKSB7CisJ CWlndF9zcGlubmVyX2VuZChzcGluKTsKKwkJaWd0X3NwaW5uZXJfZmluaShzcGluKTsKKwkJa2Zy ZWUoc3Bpbik7CisJfQorCisJa2VybmVsX2NvbnRleHRfY2xvc2Uoa2N0eCk7CisKKwlyZXR1cm4g cmV0OworfQorCitzdGF0aWMgaW50IF9faWd0X2N0eF9zc2V1KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisJc3RydWN0IGludGVsX3NzZXUgZGVm YXVsdF9zc2V1ID0gaW50ZWxfZGV2aWNlX2RlZmF1bHRfc3NldShpOTE1KTsKKwlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUgPSBpOTE1LT5lbmdpbmVbUkNTXTsKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CisJc3Ry dWN0IGludGVsX3NzZXUgcGdfc3NldTsKKwlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7CisJaW50IHJl dDsKKworCWlmIChJTlRFTF9HRU4oaTkxNSkgPCA5KQorCQlyZXR1cm4gMDsKKworCWlmICghSU5U RUxfSU5GTyhpOTE1KS0+c3NldS5oYXNfc2xpY2VfcGcpCisJCXJldHVybiAwOworCisJaWYgKGh3 ZWlnaHQzMihkZWZhdWx0X3NzZXUuc2xpY2VfbWFzaykgPCAyKQorCQlyZXR1cm4gMDsKKworCS8q CisJICogR2VuMTEgVk1FIGZyaWVuZGx5IHBvd2VyLWdhdGVkIGNvbmZpZ3VyYXRpb24gd2l0aCBo YWxmIGVuYWJsZWQKKwkgKiBzdWItc2xpY2VzLgorCSAqLworCXBnX3NzZXUgPSBkZWZhdWx0X3Nz ZXU7CisJcGdfc3NldS5zbGljZV9tYXNrID0gMTsKKwlwZ19zc2V1LnN1YnNsaWNlX21hc2sgPQor CQl+KH4wIDw8IChod2VpZ2h0MzIoZGVmYXVsdF9zc2V1LnN1YnNsaWNlX21hc2spIC8gMikpOwor CisJcHJfaW5mbygiU1NFIHN1YnRlc3QgZmxhZ3M9JXgsIGRlZl9zbGljZXM9JXUsIHBnX3NsaWNl cz0ldVxuIiwKKwkJZmxhZ3MsIGh3ZWlnaHQzMihkZWZhdWx0X3NzZXUuc2xpY2VfbWFzayksCisJ CWh3ZWlnaHQzMihwZ19zc2V1LnNsaWNlX21hc2spKTsKKworCWZpbGUgPSBtb2NrX2ZpbGUoaTkx NSk7CisJaWYgKElTX0VSUihmaWxlKSkKKwkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7CisKKwlpZiAo ZmxhZ3MgJiBURVNUX1JFU0VUKQorCQlpZ3RfZ2xvYmFsX3Jlc2V0X2xvY2soaTkxNSk7CisKKwlt dXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCWN0eCA9IGk5MTVfZ2VtX2Ny ZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRyaXZlcl9wcml2KTsKKwlpZiAoSVNfRVJSKGN0eCkp IHsKKwkJcmV0ID0gUFRSX0VSUihjdHgpOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCisJb2Jq ID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChpOTE1LCBQQUdFX1NJWkUpOworCWlm IChJU19FUlIob2JqKSkgeworCQlyZXQgPSBQVFJfRVJSKG9iaik7CisJCWdvdG8gb3V0X3VubG9j azsKKwl9CisKKwlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKKworCS8qIEZpcnN0IHNldCB0 aGUgZGVmYXVsdCBtYXNrLiAqLworCXJldCA9IF9fc3NldV90ZXN0KGk5MTUsIGZsYWdzLCBjdHgs IGVuZ2luZSwgb2JqLCBkZWZhdWx0X3NzZXUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2ZhaWw7 CisKKwkvKiBUaGVuIHNldCBhIHBvd2VyLWdhdGVkIGNvbmZpZ3VyYXRpb24uICovCisJcmV0ID0g X19zc2V1X3Rlc3QoaTkxNSwgZmxhZ3MsIGN0eCwgZW5naW5lLCBvYmosIHBnX3NzZXUpOworCWlm IChyZXQpCisJCWdvdG8gb3V0X2ZhaWw7CisKKwkvKiBCYWNrIHRvIGRlZmF1bHRzLiAqLworCXJl dCA9IF9fc3NldV90ZXN0KGk5MTUsIGZsYWdzLCBjdHgsIGVuZ2luZSwgb2JqLCBkZWZhdWx0X3Nz ZXUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2ZhaWw7CisKKwkvKiBPbmUgbGFzdCBwb3dlci1n YXRlZCBjb25maWd1cmF0aW9uIGZvciB0aGUgcm9hZC4gKi8KKwlyZXQgPSBfX3NzZXVfdGVzdChp OTE1LCBmbGFncywgY3R4LCBlbmdpbmUsIG9iaiwgcGdfc3NldSk7CisJaWYgKHJldCkKKwkJZ290 byBvdXRfZmFpbDsKKworb3V0X2ZhaWw6CisJaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVf V0FJVF9MT0NLRUQpKQorCQlyZXQgPSAtRUlPOworCisJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmop OworCisJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CisKK291dF91bmxvY2s6CisJbXV0ZXhf dW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCWlmIChmbGFncyAmIFRFU1RfUkVT RVQpCisJCWlndF9nbG9iYWxfcmVzZXRfdW5sb2NrKGk5MTUpOworCisJbW9ja19maWxlX2ZyZWUo aTkxNSwgZmlsZSk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGlndF9jdHhfc3Nl dSh2b2lkICphcmcpCit7CisJcmV0dXJuIF9faWd0X2N0eF9zc2V1KGFyZywgMCk7Cit9CisKK3N0 YXRpYyBpbnQgaWd0X2N0eF9zc2V1X2lkbGUodm9pZCAqYXJnKQoreworCXJldHVybiBfX2lndF9j dHhfc3NldShhcmcsIFRFU1RfSURMRSk7Cit9CisKK3N0YXRpYyBpbnQgaWd0X2N0eF9zc2V1X2J1 c3kodm9pZCAqYXJnKQoreworCXJldHVybiBfX2lndF9jdHhfc3NldShhcmcsIFRFU1RfQlVTWSk7 Cit9CisKK3N0YXRpYyBpbnQgaWd0X2N0eF9zc2V1X2J1c3lfcmVzZXQodm9pZCAqYXJnKQorewor CXJldHVybiBfX2lndF9jdHhfc3NldShhcmcsIFRFU1RfQlVTWSB8IFRFU1RfUkVTRVQpOworfQor CitzdGF0aWMgaW50IGlndF9jdHhfc3NldV9idXN5X2lkbGUodm9pZCAqYXJnKQoreworCXJldHVy biBfX2lndF9jdHhfc3NldShhcmcsIFRFU1RfQlVTWSB8IFRFU1RfSURMRSk7Cit9CisKK3N0YXRp YyBpbnQgaWd0X2N0eF9zc2V1X3Jlc2V0X2lkbGUodm9pZCAqYXJnKQoreworCXJldHVybiBfX2ln dF9jdHhfc3NldShhcmcsIFRFU1RfUkVTRVQgfCBURVNUX0lETEUpOworfQorCiBzdGF0aWMgaW50 IGlndF9jdHhfcmVhZG9ubHkodm9pZCAqYXJnKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gYXJnOwpAQCAtMTIzMiw2ICsxNzE1LDEyIEBAIGludCBpOTE1X2dlbV9jb250ZXh0 X2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJU1VC VEVTVChsaXZlX25vcF9zd2l0Y2gpLAogCQlTVUJURVNUKGlndF9jdHhfZXhlYyksCiAJCVNVQlRF U1QoaWd0X2N0eF9yZWFkb25seSksCisJCVNVQlRFU1QoaWd0X2N0eF9zc2V1KSwKKwkJU1VCVEVT VChpZ3RfY3R4X3NzZXVfaWRsZSksCisJCVNVQlRFU1QoaWd0X2N0eF9zc2V1X2J1c3kpLAorCQlT VUJURVNUKGlndF9jdHhfc3NldV9idXN5X3Jlc2V0KSwKKwkJU1VCVEVTVChpZ3RfY3R4X3NzZXVf YnVzeV9pZGxlKSwKKwkJU1VCVEVTVChpZ3RfY3R4X3NzZXVfcmVzZXRfaWRsZSksCiAJCVNVQlRF U1QoaWd0X3ZtX2lzb2xhdGlvbiksCiAJfTsKIAotLSAKMi4xOS4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK