From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 6/6] drm/i915/selftests: Context SSEU reconfiguration tests Date: Mon, 14 Jan 2019 13:57:27 +0000 Message-ID: <20190114135727.14851-7-tvrtko.ursulin@linux.intel.com> References: <20190114135727.14851-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 E208F6E8E9 for ; Mon, 14 Jan 2019 13:57:40 +0000 (UTC) In-Reply-To: <20190114135727.14851-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 c2UgZm9yIFJVTlRJTUVfSU5GTy4KCnY0OgogKiBGaXggaW5jb21wbGV0ZSB1bmV4cG9ydCBmcm9t IHYyLiAoQ2hyaXMgV2lsc29uKQoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRr by51cnN1bGluQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hy aXMtd2lsc29uLmNvLnVrPgpSZXZpZXdlZC1ieTogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFo dGluZW5AbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYyAgICAgICB8ICAzMSArLQogLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkx NV9nZW1fY29udGV4dC5jIHwgNDgxICsrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2Vk LCA1MDIgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5jCmluZGV4IGY2NWQzZTkwODliNi4uMDQ0NGNmYTk2Y2Y1IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCkBAIC0xMDQyLDIzICsxMDQyLDE5 IEBAIGdlbjhfbW9kaWZ5X3JwY3NfZ3B1KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIH0KIAog c3RhdGljIGludAotaTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3VyZV9zc2V1KHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHgsCi0JCQkJICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs Ci0JCQkJICBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQorX19pOTE1X2dlbV9jb250ZXh0X3JlY29u ZmlndXJlX3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJCQkgICAgc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJCSAgICBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1 KQogewogCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBl bmdpbmUpOwotCWludCByZXQ7CisJaW50IHJldCA9IDA7CiAKIAlHRU1fQlVHX09OKElOVEVMX0dF TihjdHgtPmk5MTUpIDwgOCk7CiAJR0VNX0JVR19PTihlbmdpbmUtPmlkICE9IFJDUyk7CiAKLQly ZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQogCS8qIE5vdGhpbmcgdG8gZG8gaWYgdW5t b2RpZmllZC4gKi8KIAlpZiAoIW1lbWNtcCgmY2UtPnNzZXUsICZzc2V1LCBzaXplb2Yoc3NldSkp KQotCQlnb3RvIG91dDsKKwkJcmV0dXJuIDA7CiAKIAkvKgogCSAqIElmIGNvbnRleHQgaXMgbm90 IGlkbGUgd2UgaGF2ZSB0byBzdWJtaXQgYW4gb3JkZXJlZCByZXF1ZXN0IHRvIG1vZGlmeQpAQCAt MTA3MSw3ICsxMDY3LDIyIEBAIGk5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCWlmICghcmV0KQogCQljZS0+c3NldSA9IHNzZXU7 CiAKLW91dDoKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50CitpOTE1X2dlbV9jb250ZXh0 X3JlY29uZmlndXJlX3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJCQkgIHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCQkgIHN0cnVjdCBpbnRlbF9zc2V1IHNz ZXUpCit7CisJaW50IHJldDsKKworCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY3R4 LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJ cmV0ID0gX19pOTE1X2dlbV9jb250ZXh0X3JlY29uZmlndXJlX3NzZXUoY3R4LCBlbmdpbmUsIHNz ZXUpOworCiAJbXV0ZXhfdW5sb2NrKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCiAJ cmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p OTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9n ZW1fY29udGV4dC5jCmluZGV4IGQwMGNkZjNjMjkzOS4uYzk0MDM4MWUyYzY2IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTI3 LDYgKzI3LDggQEAKICNpbmNsdWRlICIuLi9pOTE1X3NlbGZ0ZXN0LmgiCiAjaW5jbHVkZSAiaTkx NV9yYW5kb20uaCIKICNpbmNsdWRlICJpZ3RfZmx1c2hfdGVzdC5oIgorI2luY2x1ZGUgImlndF9y ZXNldC5oIgorI2luY2x1ZGUgImlndF9zcGlubmVyLmgiCiAKICNpbmNsdWRlICJtb2NrX2RybS5o IgogI2luY2x1ZGUgIm1vY2tfZ2VtX2RldmljZS5oIgpAQCAtNjUwLDYgKzY1Miw0ODQgQEAgc3Rh dGljIGludCBpZ3RfY3R4X2V4ZWModm9pZCAqYXJnKQogCXJldHVybiBlcnI7CiB9CiAKK3N0YXRp YyBzdHJ1Y3QgaTkxNV92bWEgKnJwY3NfcXVlcnlfYmF0Y2goc3RydWN0IGk5MTVfdm1hICp2bWEp Cit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwl1MzIgKmNtZDsKKwlpbnQg ZXJyOworCisJaWYgKElOVEVMX0dFTih2bWEtPnZtLT5pOTE1KSA8IDgpCisJCXJldHVybiBFUlJf UFRSKC1FSU5WQUwpOworCisJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbCh2 bWEtPnZtLT5pOTE1LCBQQUdFX1NJWkUpOworCWlmIChJU19FUlIob2JqKSkKKwkJcmV0dXJuIEVS Ul9DQVNUKG9iaik7CisKKwljbWQgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChvYmosIEk5MTVf TUFQX1dCKTsKKwlpZiAoSVNfRVJSKGNtZCkpIHsKKwkJZXJyID0gUFRSX0VSUihjbWQpOworCQln b3RvIGVycjsKKwl9CisKKwkqY21kKysgPSBNSV9TVE9SRV9SRUdJU1RFUl9NRU1fR0VOODsKKwkq Y21kKysgPSBpOTE1X21taW9fcmVnX29mZnNldChHRU44X1JfUFdSX0NMS19TVEFURSk7CisJKmNt ZCsrID0gbG93ZXJfMzJfYml0cyh2bWEtPm5vZGUuc3RhcnQpOworCSpjbWQrKyA9IHVwcGVyXzMy X2JpdHModm1hLT5ub2RlLnN0YXJ0KTsKKwkqY21kID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKKwor CWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAob2JqKTsKKworCWVyciA9IGk5MTVfZ2VtX29iamVj dF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIGZhbHNlKTsKKwlpZiAoZXJyKQorCQlnb3RvIGVycjsK KworCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgdm1hLT52bSwgTlVMTCk7CisJaWYgKElT X0VSUih2bWEpKSB7CisJCWVyciA9IFBUUl9FUlIodm1hKTsKKwkJZ290byBlcnI7CisJfQorCisJ ZXJyID0gaTkxNV92bWFfcGluKHZtYSwgMCwgMCwgUElOX1VTRVIpOworCWlmIChlcnIpCisJCWdv dG8gZXJyOworCisJcmV0dXJuIHZtYTsKKworZXJyOgorCWk5MTVfZ2VtX29iamVjdF9wdXQob2Jq KTsKKwlyZXR1cm4gRVJSX1BUUihlcnIpOworfQorCitzdGF0aWMgaW50CitlbWl0X3JwY3NfcXVl cnkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmN0eCwKKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQlzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICoqcnFfb3V0KQoreworCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZt OworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCXN0cnVjdCBpOTE1X3ZtYSAqYmF0Y2g7CisJ c3RydWN0IGk5MTVfdm1hICp2bWE7CisJaW50IGVycjsKKworCUdFTV9CVUdfT04oIWN0eC0+cHBn dHQpOworCUdFTV9CVUdfT04oIWludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoZW5naW5lKSk7 CisKKwl2bSA9ICZjdHgtPnBwZ3R0LT52bTsKKworCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9i aiwgdm0sIE5VTEwpOworCWlmIChJU19FUlIodm1hKSkKKwkJcmV0dXJuIFBUUl9FUlIodm1hKTsK KworCWVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIGZhbHNlKTsK KwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJZXJyID0gaTkxNV92bWFfcGluKHZtYSwgMCwg MCwgUElOX0hJR0ggfCBQSU5fVVNFUik7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCWJh dGNoID0gcnBjc19xdWVyeV9iYXRjaCh2bWEpOworCWlmIChJU19FUlIoYmF0Y2gpKSB7CisJCWVy ciA9IFBUUl9FUlIoYmF0Y2gpOworCQlnb3RvIGVycl92bWE7CisJfQorCisJcnEgPSBpOTE1X3Jl cXVlc3RfYWxsb2MoZW5naW5lLCBjdHgpOworCWlmIChJU19FUlIocnEpKSB7CisJCWVyciA9IFBU Ul9FUlIocnEpOworCQlnb3RvIGVycl9iYXRjaDsKKwl9CisKKwllcnIgPSBlbmdpbmUtPmVtaXRf YmJfc3RhcnQocnEsIGJhdGNoLT5ub2RlLnN0YXJ0LCBiYXRjaC0+bm9kZS5zaXplLCAwKTsKKwlp ZiAoZXJyKQorCQlnb3RvIGVycl9yZXF1ZXN0OworCisJZXJyID0gaTkxNV92bWFfbW92ZV90b19h Y3RpdmUoYmF0Y2gsIHJxLCAwKTsKKwlpZiAoZXJyKQorCQlnb3RvIHNraXBfcmVxdWVzdDsKKwor CWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHZtYSwgcnEsIEVYRUNfT0JKRUNUX1dSSVRF KTsKKwlpZiAoZXJyKQorCQlnb3RvIHNraXBfcmVxdWVzdDsKKworCWk5MTVfZ2VtX29iamVjdF9z ZXRfYWN0aXZlX3JlZmVyZW5jZShiYXRjaC0+b2JqKTsKKwlpOTE1X3ZtYV91bnBpbihiYXRjaCk7 CisJaTkxNV92bWFfY2xvc2UoYmF0Y2gpOworCisJaTkxNV92bWFfdW5waW4odm1hKTsKKworCSpy cV9vdXQgPSBpOTE1X3JlcXVlc3RfZ2V0KHJxKTsKKworCWk5MTVfcmVxdWVzdF9hZGQocnEpOwor CisJcmV0dXJuIDA7CisKK3NraXBfcmVxdWVzdDoKKwlpOTE1X3JlcXVlc3Rfc2tpcChycSwgZXJy KTsKK2Vycl9yZXF1ZXN0OgorCWk5MTVfcmVxdWVzdF9hZGQocnEpOworZXJyX2JhdGNoOgorCWk5 MTVfdm1hX3VucGluKGJhdGNoKTsKK2Vycl92bWE6CisJaTkxNV92bWFfdW5waW4odm1hKTsKKwor CXJldHVybiBlcnI7Cit9CisKKyNkZWZpbmUgVEVTVF9JRExFCSgxIDw8IDApCisjZGVmaW5lIFRF U1RfQlVTWQkoMSA8PCAxKQorI2RlZmluZSBURVNUX1JFU0VUCSgxIDw8IDIpCisKK3N0YXRpYyBp bnQKK19fc3NldV9wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCSAgICAg ICBjb25zdCBjaGFyICpuYW1lLAorCSAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsCisJICAgICAg IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJICAgICAgIHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwKKwkgICAgICAgc3RydWN0IGlndF9zcGlubmVyICoqc3Bpbl9vdXQpCit7 CisJaW50IHJldCA9IDA7CisKKwlpZiAoZmxhZ3MgJiAoVEVTVF9CVVNZIHwgVEVTVF9SRVNFVCkp IHsKKwkJc3RydWN0IGlndF9zcGlubmVyICpzcGluOworCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cTsKKworCQlzcGluID0ga3phbGxvYyhzaXplb2YoKnNwaW4pLCBHRlBfS0VSTkVMKTsKKwkJaWYg KCFzcGluKSB7CisJCQlyZXQgPSAtRU5PTUVNOworCQkJZ290byBvdXQ7CisJCX0KKworCQlyZXQg PSBpZ3Rfc3Bpbm5lcl9pbml0KHNwaW4sIGk5MTUpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJl dDsKKworCQlycSA9IGlndF9zcGlubmVyX2NyZWF0ZV9yZXF1ZXN0KHNwaW4sIGN0eCwgZW5naW5l LCBNSV9OT09QKTsKKwkJaWYgKElTX0VSUihycSkpIHsKKwkJCXJldCA9IFBUUl9FUlIocnEpOwor CQkJaWd0X3NwaW5uZXJfZmluaShzcGluKTsKKwkJCWtmcmVlKHNwaW4pOworCQkJZ290byBvdXQ7 CisJCX0KKworCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKKworCQlpZiAoIWlndF93YWl0X2Zvcl9z cGlubmVyKHNwaW4sIHJxKSkgeworCQkJcHJfZXJyKCIlczogU3Bpbm5lciBmYWlsZWQgdG8gc3Rh cnQhXG4iLCBuYW1lKTsKKwkJCWlndF9zcGlubmVyX2VuZChzcGluKTsKKwkJCWlndF9zcGlubmVy X2Zpbmkoc3Bpbik7CisJCQlrZnJlZShzcGluKTsKKwkJCXJldCA9IC1FVElNRURPVVQ7CisJCQln b3RvIG91dDsKKwkJfQorCisJCSpzcGluX291dCA9IHNwaW47CisJfQorCitvdXQ6CisJcmV0dXJu IHJldDsKK30KKworc3RhdGljIGludAorX19yZWFkX3NsaWNlX2NvdW50KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LAorCQkgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkg ICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCSAgIHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosCisJCSAgIHN0cnVjdCBpZ3Rfc3Bpbm5lciAqc3BpbiwKKwkJICAgdTMy ICpycGNzKQoreworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxID0gTlVMTDsKKwl1MzIgc19tYXNr LCBzX3NoaWZ0OworCXVuc2lnbmVkIGludCBjbnQ7CisJdTMyICpidWYsIHZhbDsKKwlsb25nIHJl dDsKKworCXJldCA9IGVtaXRfcnBjc19xdWVyeShvYmosIGN0eCwgZW5naW5lLCAmcnEpOworCWlm IChyZXQpCisJCXJldHVybiByZXQ7CisKKwlpZiAoc3BpbikKKwkJaWd0X3NwaW5uZXJfZW5kKHNw aW4pOworCisJcmV0ID0gaTkxNV9yZXF1ZXN0X3dhaXQocnEsIEk5MTVfV0FJVF9MT0NLRUQsIE1B WF9TQ0hFRFVMRV9USU1FT1VUKTsKKwlpZiAocmV0IDw9IDApCisJCXJldHVybiByZXQgPCAwID8g cmV0IDogLUVUSU1FOworCisJaTkxNV9yZXF1ZXN0X3B1dChycSk7CisKKwlidWYgPSBpOTE1X2dl bV9vYmplY3RfcGluX21hcChvYmosIEk5MTVfTUFQX1dCKTsKKwlpZiAoSVNfRVJSKGJ1ZikpIHsK KwkJcmV0ID0gUFRSX0VSUihidWYpOworCQlyZXR1cm4gcmV0OworCX0KKworCWlmIChJTlRFTF9H RU4oaTkxNSkgPj0gMTEpIHsKKwkJc19tYXNrID0gR0VOMTFfUlBDU19TX0NOVF9NQVNLOworCQlz X3NoaWZ0ID0gR0VOMTFfUlBDU19TX0NOVF9TSElGVDsKKwl9IGVsc2UgeworCQlzX21hc2sgPSBH RU44X1JQQ1NfU19DTlRfTUFTSzsKKwkJc19zaGlmdCA9IEdFTjhfUlBDU19TX0NOVF9TSElGVDsK Kwl9CisKKwl2YWwgPSAqYnVmOworCWNudCA9ICh2YWwgJiBzX21hc2spID4+IHNfc2hpZnQ7CisJ KnJwY3MgPSB2YWw7CisKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKG9iaik7CisKKwlyZXR1 cm4gY250OworfQorCitzdGF0aWMgdm9pZCBfX2Vycl9ycGNzKHUzMiBycGNzLCB1bnNpZ25lZCBp bnQgc2xpY2VzKQoreworCXByX2luZm8oIlJQQ1M9MHgleDsgJXUlc3gldSVzXG4iLAorCQlycGNz LCBzbGljZXMsCisJCShycGNzICYgR0VOOF9SUENTX1NfQ05UX0VOQUJMRSkgPyAiKiIgOiAiIiwK KwkJKHJwY3MgJiBHRU44X1JQQ1NfU1NfQ05UX01BU0spID4+IEdFTjhfUlBDU19TU19DTlRfU0hJ RlQsCisJCShycGNzICYgR0VOOF9SUENTX1NTX0NOVF9FTkFCTEUpID8gIioiIDogIiIpOworfQor CitzdGF0aWMgaW50CitfX3NzZXVfZmluaXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LAorCSAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJICAgICAgdW5zaWduZWQgaW50IGZsYWdzLAor CSAgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJICAgICAgc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmtjdHgsCisJICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LAorCSAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJICAgICAgdW5zaWdu ZWQgaW50IGV4cGVjdGVkLAorCSAgICAgIHN0cnVjdCBpZ3Rfc3Bpbm5lciAqc3BpbikKK3sKKwl1 bnNpZ25lZCBpbnQgc2xpY2VzID0KKwkJaHdlaWdodDMyKGludGVsX2RldmljZV9kZWZhdWx0X3Nz ZXUoaTkxNSkuc2xpY2VfbWFzayk7CisJdTMyIHJwY3MgPSAwOworCWludCByZXQgPSAwOworCisJ aWYgKGZsYWdzICYgVEVTVF9SRVNFVCkgeworCQlyZXQgPSBpOTE1X3Jlc2V0X2VuZ2luZShlbmdp bmUsICJzc2V1Iik7CisJCWlmIChyZXQpCisJCQlnb3RvIG91dDsKKwl9CisKKwlyZXQgPSBfX3Jl YWRfc2xpY2VfY291bnQoaTkxNSwgY3R4LCBlbmdpbmUsIG9iaiwKKwkJCQkgZmxhZ3MgJiBURVNU X1JFU0VUID8gTlVMTCA6IHNwaW4sICZycGNzKTsKKwlpZiAocmV0IDwgMCkgeworCQlnb3RvIG91 dDsKKwl9IGVsc2UgaWYgKHJldCAhPSBleHBlY3RlZCkgeworCQlwcl9lcnIoIiVzOiBDb250ZXh0 IHNsaWNlIGNvdW50ICVkIGlzIG5vdCAldSFcbiIsCisJCSAgICAgICBuYW1lLCByZXQsIGV4cGVj dGVkKTsKKwkJX19lcnJfcnBjcyhycGNzLCByZXQpOworCQlyZXQgPSAtRUlOVkFMOworCQlnb3Rv IG91dDsKKwl9IGVsc2UgeworCQlyZXQgPSAwOworCX0KKworCXJldCA9IF9fcmVhZF9zbGljZV9j b3VudChpOTE1LCBrY3R4LCBlbmdpbmUsIG9iaiwgTlVMTCwgJnJwY3MpOworCWlmIChyZXQgPCAw KSB7CisJCWdvdG8gb3V0OworCX0gZWxzZSBpZiAocmV0ICE9IHNsaWNlcykgeworCQlwcl9lcnIo IiVzOiBLZXJuZWwgY29udGV4dCBzbGljZSBjb3VudCAlZCBpcyBub3QgJXUhXG4iLAorCQkgICAg ICAgbmFtZSwgcmV0LCBzbGljZXMpOworCQlfX2Vycl9ycGNzKHJwY3MsIHJldCk7CisJCXJldCA9 IC1FSU5WQUw7CisJCWdvdG8gb3V0OworCX0gZWxzZSB7CisJCXJldCA9IDA7CisJfQorCitvdXQ6 CisJaWYgKHNwaW4pCisJCWlndF9zcGlubmVyX2VuZChzcGluKTsKKworCWlmIChmbGFncyAmIFRF U1RfSURMRSkgeworCQlyZXQgPSBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGk5MTUsCisJCQkJCSAg ICAgSTkxNV9XQUlUX0xPQ0tFRCwKKwkJCQkJICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7CisJ CWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCisJCXJldCA9IF9fcmVhZF9zbGljZV9jb3VudChp OTE1LCBjdHgsIGVuZ2luZSwgb2JqLCBOVUxMLCAmcnBjcyk7CisJCWlmIChyZXQgPCAwKSB7CisJ CQlyZXR1cm4gcmV0OworCQl9IGVsc2UgaWYgKHJldCAhPSBleHBlY3RlZCkgeworCQkJcHJfZXJy KCIlczogQ29udGV4dCBzbGljZSBjb3VudCAlZCBpcyBub3QgJXUgYWZ0ZXIgaWRsZSFcbiIsCisJ CQkgICAgICAgbmFtZSwgcmV0LCBleHBlY3RlZCk7CisJCQlfX2Vycl9ycGNzKHJwY3MsIHJldCk7 CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfSBlbHNlIHsKKwkJCXJldCA9IDA7CisJCX0KKwl9CisK KwlyZXR1cm4gcmV0OworCit9CisKK3N0YXRpYyBpbnQKK19fc3NldV90ZXN0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAorCSAgICBjb25zdCBjaGFyICpuYW1lLAorCSAgICB1bnNpZ25l ZCBpbnQgZmxhZ3MsCisJICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJICAgIHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKKwkgICAgc3RydWN0IGludGVsX3NzZXUgc3NldSkKK3sKKwlzdHJ1Y3QgaWd0 X3NwaW5uZXIgKnNwaW4gPSBOVUxMOworCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICprY3R4Owor CWludCByZXQ7CisKKwlrY3R4ID0ga2VybmVsX2NvbnRleHQoaTkxNSk7CisJaWYgKElTX0VSUihr Y3R4KSkKKwkJcmV0dXJuIFBUUl9FUlIoa2N0eCk7CisKKwlyZXQgPSBfX3NzZXVfcHJlcGFyZShp OTE1LCBuYW1lLCBmbGFncywgY3R4LCBlbmdpbmUsICZzcGluKTsKKwlpZiAocmV0KQorCQlnb3Rv IG91dDsKKworCXJldCA9IF9faTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3VyZV9zc2V1KGN0eCwg ZW5naW5lLCBzc2V1KTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKworCXJldCA9IF9fc3NldV9m aW5pc2goaTkxNSwgbmFtZSwgZmxhZ3MsIGN0eCwga2N0eCwgZW5naW5lLCBvYmosCisJCQkgICAg aHdlaWdodDMyKHNzZXUuc2xpY2VfbWFzayksIHNwaW4pOworCitvdXQ6CisJaWYgKHNwaW4pIHsK KwkJaWd0X3NwaW5uZXJfZW5kKHNwaW4pOworCQlpZ3Rfc3Bpbm5lcl9maW5pKHNwaW4pOworCQlr ZnJlZShzcGluKTsKKwl9CisKKwlrZXJuZWxfY29udGV4dF9jbG9zZShrY3R4KTsKKworCXJldHVy biByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK19faWd0X2N0eF9zc2V1KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAorCSAgICAgICBjb25zdCBjaGFyICpuYW1lLAorCSAgICAgICB1bnNpZ25l ZCBpbnQgZmxhZ3MpCit7CisJc3RydWN0IGludGVsX3NzZXUgZGVmYXVsdF9zc2V1ID0gaW50ZWxf ZGV2aWNlX2RlZmF1bHRfc3NldShpOTE1KTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUgPSBpOTE1LT5lbmdpbmVbUkNTXTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq OworCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CisJc3RydWN0IGludGVsX3NzZXUgcGdf c3NldTsKKwlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7CisJaW50IHJldDsKKworCWlmIChJTlRFTF9H RU4oaTkxNSkgPCA5KQorCQlyZXR1cm4gMDsKKworCWlmICghUlVOVElNRV9JTkZPKGk5MTUpLT5z c2V1Lmhhc19zbGljZV9wZykKKwkJcmV0dXJuIDA7CisKKwlpZiAoaHdlaWdodDMyKGRlZmF1bHRf c3NldS5zbGljZV9tYXNrKSA8IDIpCisJCXJldHVybiAwOworCisJLyoKKwkgKiBHZW4xMSBWTUUg ZnJpZW5kbHkgcG93ZXItZ2F0ZWQgY29uZmlndXJhdGlvbiB3aXRoIGhhbGYgZW5hYmxlZAorCSAq IHN1Yi1zbGljZXMuCisJICovCisJcGdfc3NldSA9IGRlZmF1bHRfc3NldTsKKwlwZ19zc2V1LnNs aWNlX21hc2sgPSAxOworCXBnX3NzZXUuc3Vic2xpY2VfbWFzayA9CisJCX4ofjAgPDwgKGh3ZWln aHQzMihkZWZhdWx0X3NzZXUuc3Vic2xpY2VfbWFzaykgLyAyKSk7CisKKwlwcl9pbmZvKCJTU0VV IHN1YnRlc3QgJyVzJywgZmxhZ3M9JXgsIGRlZl9zbGljZXM9JXUsIHBnX3NsaWNlcz0ldVxuIiwK KwkJbmFtZSwgZmxhZ3MsIGh3ZWlnaHQzMihkZWZhdWx0X3NzZXUuc2xpY2VfbWFzayksCisJCWh3 ZWlnaHQzMihwZ19zc2V1LnNsaWNlX21hc2spKTsKKworCWZpbGUgPSBtb2NrX2ZpbGUoaTkxNSk7 CisJaWYgKElTX0VSUihmaWxlKSkKKwkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7CisKKwlpZiAoZmxh Z3MgJiBURVNUX1JFU0VUKQorCQlpZ3RfZ2xvYmFsX3Jlc2V0X2xvY2soaTkxNSk7CisKKwltdXRl eF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCWN0eCA9IGk5MTVfZ2VtX2NyZWF0 ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRyaXZlcl9wcml2KTsKKwlpZiAoSVNfRVJSKGN0eCkpIHsK KwkJcmV0ID0gUFRSX0VSUihjdHgpOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCisJb2JqID0g aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChpOTE1LCBQQUdFX1NJWkUpOworCWlmIChJ U19FUlIob2JqKSkgeworCQlyZXQgPSBQVFJfRVJSKG9iaik7CisJCWdvdG8gb3V0X3VubG9jazsK Kwl9CisKKwlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKKworCS8qIEZpcnN0IHNldCB0aGUg ZGVmYXVsdCBtYXNrLiAqLworCXJldCA9IF9fc3NldV90ZXN0KGk5MTUsIG5hbWUsIGZsYWdzLCBj dHgsIGVuZ2luZSwgb2JqLCBkZWZhdWx0X3NzZXUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2Zh aWw7CisKKwkvKiBUaGVuIHNldCBhIHBvd2VyLWdhdGVkIGNvbmZpZ3VyYXRpb24uICovCisJcmV0 ID0gX19zc2V1X3Rlc3QoaTkxNSwgbmFtZSwgZmxhZ3MsIGN0eCwgZW5naW5lLCBvYmosIHBnX3Nz ZXUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2ZhaWw7CisKKwkvKiBCYWNrIHRvIGRlZmF1bHRz LiAqLworCXJldCA9IF9fc3NldV90ZXN0KGk5MTUsIG5hbWUsIGZsYWdzLCBjdHgsIGVuZ2luZSwg b2JqLCBkZWZhdWx0X3NzZXUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2ZhaWw7CisKKwkvKiBP bmUgbGFzdCBwb3dlci1nYXRlZCBjb25maWd1cmF0aW9uIGZvciB0aGUgcm9hZC4gKi8KKwlyZXQg PSBfX3NzZXVfdGVzdChpOTE1LCBuYW1lLCBmbGFncywgY3R4LCBlbmdpbmUsIG9iaiwgcGdfc3Nl dSk7CisJaWYgKHJldCkKKwkJZ290byBvdXRfZmFpbDsKKworb3V0X2ZhaWw6CisJaWYgKGlndF9m bHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpKQorCQlyZXQgPSAtRUlPOworCisJaTkx NV9nZW1fb2JqZWN0X3B1dChvYmopOworCisJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CisK K291dF91bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwor CWlmIChmbGFncyAmIFRFU1RfUkVTRVQpCisJCWlndF9nbG9iYWxfcmVzZXRfdW5sb2NrKGk5MTUp OworCisJbW9ja19maWxlX2ZyZWUoaTkxNSwgZmlsZSk7CisKKwlpZiAocmV0KQorCQlwcl9lcnIo IiVzOiBGYWlsZWQgd2l0aCAlZCFcbiIsIG5hbWUsIHJldCk7CisKKwlyZXR1cm4gcmV0OworfQor CitzdGF0aWMgaW50IGlndF9jdHhfc3NldSh2b2lkICphcmcpCit7CisJc3RydWN0IHsKKwkJY29u c3QgY2hhciAqbmFtZTsKKwkJdW5zaWduZWQgaW50IGZsYWdzOworCX0gKnBoYXNlLCBwaGFzZXNb XSA9IHsKKwkJeyAubmFtZSA9ICJiYXNpYyIsIC5mbGFncyA9IDAgfSwKKwkJeyAubmFtZSA9ICJp ZGxlIiwgLmZsYWdzID0gVEVTVF9JRExFIH0sCisJCXsgLm5hbWUgPSAiYnVzeSIsIC5mbGFncyA9 IFRFU1RfQlVTWSB9LAorCQl7IC5uYW1lID0gImJ1c3ktcmVzZXQiLCAuZmxhZ3MgPSBURVNUX0JV U1kgfCBURVNUX1JFU0VUIH0sCisJCXsgLm5hbWUgPSAiYnVzeS1pZGxlIiwgLmZsYWdzID0gVEVT VF9CVVNZIHwgVEVTVF9JRExFIH0sCisJCXsgLm5hbWUgPSAicmVzZXQtaWRsZSIsIC5mbGFncyA9 IFRFU1RfUkVTRVQgfCBURVNUX0lETEUgfSwKKwl9OworCXVuc2lnbmVkIGludCBpOworCWludCBy ZXQgPSAwOworCisJZm9yIChpID0gMCwgcGhhc2UgPSBwaGFzZXM7IHJldCA9PSAwICYmIGkgPCBB UlJBWV9TSVpFKHBoYXNlcyk7CisJICAgICBpKyssIHBoYXNlKyspCisJCXJldCA9IF9faWd0X2N0 eF9zc2V1KGFyZywgcGhhc2UtPm5hbWUsIHBoYXNlLT5mbGFncyk7CisKKwlyZXR1cm4gcmV0Owor fQorCiBzdGF0aWMgaW50IGlndF9jdHhfcmVhZG9ubHkodm9pZCAqYXJnKQogewogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwpAQCAtMTIzMiw2ICsxNzEyLDcgQEAgaW50IGk5 MTVfZ2VtX2NvbnRleHRfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCQlTVUJURVNUKGxpdmVfbm9wX3N3aXRjaCksCiAJCVNVQlRFU1QoaWd0X2N0eF9l eGVjKSwKIAkJU1VCVEVTVChpZ3RfY3R4X3JlYWRvbmx5KSwKKwkJU1VCVEVTVChpZ3RfY3R4X3Nz ZXUpLAogCQlTVUJURVNUKGlndF92bV9pc29sYXRpb24pLAogCX07CiAKLS0gCjIuMTkuMQoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==