From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 5/5] drm/i915/selftests: Context SSEU reconfiguration tests Date: Fri, 25 Jan 2019 15:24:41 +0000 Message-ID: <20190125152441.5080-6-tvrtko.ursulin@linux.intel.com> References: <20190125152441.5080-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 mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 32A7D6F0F4 for ; Fri, 25 Jan 2019 15:24:47 +0000 (UTC) In-Reply-To: <20190125152441.5080-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 IHYyLiAoQ2hyaXMgV2lsc29uKQoKdjU6CiAqIFJlYmFzZWQgZm9yIHJ1bnRpbWUgcG0gYXBpIGNo YW5nZXMuCgp2NjoKICogUmViYXNlZCBmb3IgaTkxNV9yZXNldC5jLgoKdjc6CiAqIFRpZHkgY2hl Y2twYXRjaCB3YXJuaW5ncy4KICogQ29uc29saWRhdGUgZXJyb3IgY2hlY2tpbmcgYW5kIGxvZ2dp bmcgYSBiaXQuCiAqIFNraXAgaWRsZSB0ZXN0IHBoYXNlIGlmIHNvbWV0aGluZyBmYWlsZWQgYmVm b3JlIGl0LgoKdjg6CiAoQ2hyaXMgV2lsc29uKQogKiBGaXggaTkxNV9yZXF1ZXN0X3dhaXQgZXJy b3IgaGFuZGxpbmcuCiAqIE5vIG5lZWQgdG8gUElOX0hJR0ggdGhlIFZNQS4KICogUmVtb3ZlIHBv aW50bGVzcyBHRU1fQlVHX09OIGJlZm9yZSBwb2ludGVyIGRlcmVmZXJlbmNlLgoKdjk6CiAqIEF2 b2lkIHJxIGxlYWsgaWYgcnBjcyBxdWVyeSBmYWlscy4gKENocmlzKQoKU2lnbmVkLW9mZi1ieTog VHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpSZXZpZXdlZC1ieTogSm9vbmFz IExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPiAjIHY2Ci0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICAgICAgIHwgIDMxICstCiAuLi4v Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgfCA0NjcgKysrKysrKysr KysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDQ4OCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggNjE5MWNi NWJmYzhkLi45YTYzOWQwOWMwZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0LmMKQEAgLTEwNDcsMjMgKzEwNDcsMTkgQEAgZ2VuOF9tb2RpZnlfcnBjc19ncHUoc3RydWN0 IGludGVsX2NvbnRleHQgKmNlLAogfQogCiBzdGF0aWMgaW50Ci1pOTE1X2dlbV9jb250ZXh0X3Jl Y29uZmlndXJlX3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKLQkJCQkgIHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKLQkJCQkgIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUp CitfX2k5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4LAorCQkJCSAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJ ICAgIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCiB7CiAJc3RydWN0IGludGVsX2NvbnRleHQgKmNl ID0gdG9faW50ZWxfY29udGV4dChjdHgsIGVuZ2luZSk7Ci0JaW50IHJldDsKKwlpbnQgcmV0ID0g MDsKIAogCUdFTV9CVUdfT04oSU5URUxfR0VOKGN0eC0+aTkxNSkgPCA4KTsKIAlHRU1fQlVHX09O KGVuZ2luZS0+aWQgIT0gUkNTKTsKIAotCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgm Y3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0Owot CiAJLyogTm90aGluZyB0byBkbyBpZiB1bm1vZGlmaWVkLiAqLwogCWlmICghbWVtY21wKCZjZS0+ c3NldSwgJnNzZXUsIHNpemVvZihzc2V1KSkpCi0JCWdvdG8gb3V0OworCQlyZXR1cm4gMDsKIAog CS8qCiAJICogSWYgY29udGV4dCBpcyBub3QgaWRsZSB3ZSBoYXZlIHRvIHN1Ym1pdCBhbiBvcmRl cmVkIHJlcXVlc3QgdG8gbW9kaWZ5CkBAIC0xMDc2LDcgKzEwNzIsMjIgQEAgaTkxNV9nZW1fY29u dGV4dF9yZWNvbmZpZ3VyZV9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJaWYg KCFyZXQpCiAJCWNlLT5zc2V1ID0gc3NldTsKIAotb3V0OgorCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyBpbnQKK2k5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4LAorCQkJCSAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAor CQkJCSAgc3RydWN0IGludGVsX3NzZXUgc3NldSkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gbXV0 ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWlm IChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBfX2k5MTVfZ2VtX2NvbnRleHRfcmVjb25m aWd1cmVfc3NldShjdHgsIGVuZ2luZSwgc3NldSk7CisKIAltdXRleF91bmxvY2soJmN0eC0+aTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKIAlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggZTJjMWYwYmMyYWJl Li5kMDBkMGJiMDc3ODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtMjQsMTAgKzI0LDEzIEBACiAKICNpbmNsdWRlIDxsaW51 eC9wcmltZV9udW1iZXJzLmg+CiAKKyNpbmNsdWRlICIuLi9pOTE1X3Jlc2V0LmgiCiAjaW5jbHVk ZSAiLi4vaTkxNV9zZWxmdGVzdC5oIgogI2luY2x1ZGUgImk5MTVfcmFuZG9tLmgiCiAjaW5jbHVk ZSAiaWd0X2ZsdXNoX3Rlc3QuaCIKICNpbmNsdWRlICJpZ3RfbGl2ZV90ZXN0LmgiCisjaW5jbHVk ZSAiaWd0X3Jlc2V0LmgiCisjaW5jbHVkZSAiaWd0X3NwaW5uZXIuaCIKIAogI2luY2x1ZGUgIm1v Y2tfZHJtLmgiCiAjaW5jbHVkZSAibW9ja19nZW1fZGV2aWNlLmgiCkBAIC01NzYsNiArNTc5LDQ2 OSBAQCBzdGF0aWMgaW50IGlndF9jdHhfZXhlYyh2b2lkICphcmcpCiAJcmV0dXJuIGVycjsKIH0K IAorc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqcnBjc19xdWVyeV9iYXRjaChzdHJ1Y3QgaTkxNV92 bWEgKnZtYSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCXUzMiAqY21k OworCWludCBlcnI7CisKKwlpZiAoSU5URUxfR0VOKHZtYS0+dm0tPmk5MTUpIDwgOCkKKwkJcmV0 dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisKKwlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2lu dGVybmFsKHZtYS0+dm0tPmk5MTUsIFBBR0VfU0laRSk7CisJaWYgKElTX0VSUihvYmopKQorCQly ZXR1cm4gRVJSX0NBU1Qob2JqKTsKKworCWNtZCA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKG9i aiwgSTkxNV9NQVBfV0IpOworCWlmIChJU19FUlIoY21kKSkgeworCQllcnIgPSBQVFJfRVJSKGNt ZCk7CisJCWdvdG8gZXJyOworCX0KKworCSpjbWQrKyA9IE1JX1NUT1JFX1JFR0lTVEVSX01FTV9H RU44OworCSpjbWQrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjhfUl9QV1JfQ0xLX1NUQVRF KTsKKwkqY21kKysgPSBsb3dlcl8zMl9iaXRzKHZtYS0+bm9kZS5zdGFydCk7CisJKmNtZCsrID0g dXBwZXJfMzJfYml0cyh2bWEtPm5vZGUuc3RhcnQpOworCSpjbWQgPSBNSV9CQVRDSF9CVUZGRVJf RU5EOworCisJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmopOworCisJZXJyID0gaTkxNV9n ZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOworCWlmIChlcnIpCisJCWdv dG8gZXJyOworCisJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCB2bWEtPnZtLCBOVUxMKTsK KwlpZiAoSVNfRVJSKHZtYSkpIHsKKwkJZXJyID0gUFRSX0VSUih2bWEpOworCQlnb3RvIGVycjsK Kwl9CisKKwllcnIgPSBpOTE1X3ZtYV9waW4odm1hLCAwLCAwLCBQSU5fVVNFUik7CisJaWYgKGVy cikKKwkJZ290byBlcnI7CisKKwlyZXR1cm4gdm1hOworCitlcnI6CisJaTkxNV9nZW1fb2JqZWN0 X3B1dChvYmopOworCXJldHVybiBFUlJfUFRSKGVycik7Cit9CisKK3N0YXRpYyBpbnQKK2VtaXRf cnBjc19xdWVyeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQlzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LAorCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJ CXN0cnVjdCBpOTE1X3JlcXVlc3QgKipycV9vdXQpCit7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAq cnE7CisJc3RydWN0IGk5MTVfdm1hICpiYXRjaDsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwlp bnQgZXJyOworCisJR0VNX0JVR19PTighaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChlbmdp bmUpKTsKKworCXZtYSA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgJmN0eC0+cHBndHQtPnZtLCBO VUxMKTsKKwlpZiAoSVNfRVJSKHZtYSkpCisJCXJldHVybiBQVFJfRVJSKHZtYSk7CisKKwllcnIg PSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7CisJaWYgKGVy cikKKwkJcmV0dXJuIGVycjsKKworCWVyciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsIFBJTl9V U0VSKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJYmF0Y2ggPSBycGNzX3F1ZXJ5X2Jh dGNoKHZtYSk7CisJaWYgKElTX0VSUihiYXRjaCkpIHsKKwkJZXJyID0gUFRSX0VSUihiYXRjaCk7 CisJCWdvdG8gZXJyX3ZtYTsKKwl9CisKKwlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUs IGN0eCk7CisJaWYgKElTX0VSUihycSkpIHsKKwkJZXJyID0gUFRSX0VSUihycSk7CisJCWdvdG8g ZXJyX2JhdGNoOworCX0KKworCWVyciA9IGVuZ2luZS0+ZW1pdF9iYl9zdGFydChycSwgYmF0Y2gt Pm5vZGUuc3RhcnQsIGJhdGNoLT5ub2RlLnNpemUsIDApOworCWlmIChlcnIpCisJCWdvdG8gZXJy X3JlcXVlc3Q7CisKKwllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShiYXRjaCwgcnEsIDAp OworCWlmIChlcnIpCisJCWdvdG8gc2tpcF9yZXF1ZXN0OworCisJZXJyID0gaTkxNV92bWFfbW92 ZV90b19hY3RpdmUodm1hLCBycSwgRVhFQ19PQkpFQ1RfV1JJVEUpOworCWlmIChlcnIpCisJCWdv dG8gc2tpcF9yZXF1ZXN0OworCisJaTkxNV9nZW1fb2JqZWN0X3NldF9hY3RpdmVfcmVmZXJlbmNl KGJhdGNoLT5vYmopOworCWk5MTVfdm1hX3VucGluKGJhdGNoKTsKKwlpOTE1X3ZtYV9jbG9zZShi YXRjaCk7CisKKwlpOTE1X3ZtYV91bnBpbih2bWEpOworCisJKnJxX291dCA9IGk5MTVfcmVxdWVz dF9nZXQocnEpOworCisJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisKKwlyZXR1cm4gMDsKKworc2tp cF9yZXF1ZXN0OgorCWk5MTVfcmVxdWVzdF9za2lwKHJxLCBlcnIpOworZXJyX3JlcXVlc3Q6CisJ aTkxNV9yZXF1ZXN0X2FkZChycSk7CitlcnJfYmF0Y2g6CisJaTkxNV92bWFfdW5waW4oYmF0Y2gp OworZXJyX3ZtYToKKwlpOTE1X3ZtYV91bnBpbih2bWEpOworCisJcmV0dXJuIGVycjsKK30KKwor I2RlZmluZSBURVNUX0lETEUJQklUKDApCisjZGVmaW5lIFRFU1RfQlVTWQlCSVQoMSkKKyNkZWZp bmUgVEVTVF9SRVNFVAlCSVQoMikKKworc3RhdGljIGludAorX19zc2V1X3ByZXBhcmUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJICAg ICAgIHVuc2lnbmVkIGludCBmbGFncywKKwkgICAgICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eCwKKwkgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCSAgICAgICBz dHJ1Y3QgaWd0X3NwaW5uZXIgKipzcGluX291dCkKK3sKKwlpbnQgcmV0ID0gMDsKKworCWlmIChm bGFncyAmIChURVNUX0JVU1kgfCBURVNUX1JFU0VUKSkgeworCQlzdHJ1Y3QgaWd0X3NwaW5uZXIg KnNwaW47CisJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCisJCXNwaW4gPSBremFsbG9jKHNp emVvZigqc3BpbiksIEdGUF9LRVJORUwpOworCQlpZiAoIXNwaW4pIHsKKwkJCXJldCA9IC1FTk9N RU07CisJCQlnb3RvIG91dDsKKwkJfQorCisJCXJldCA9IGlndF9zcGlubmVyX2luaXQoc3Bpbiwg aTkxNSk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCisJCXJxID0gaWd0X3NwaW5uZXJf Y3JlYXRlX3JlcXVlc3Qoc3BpbiwgY3R4LCBlbmdpbmUsIE1JX05PT1ApOworCQlpZiAoSVNfRVJS KHJxKSkgeworCQkJcmV0ID0gUFRSX0VSUihycSk7CisJCQlpZ3Rfc3Bpbm5lcl9maW5pKHNwaW4p OworCQkJa2ZyZWUoc3Bpbik7CisJCQlnb3RvIG91dDsKKwkJfQorCisJCWk5MTVfcmVxdWVzdF9h ZGQocnEpOworCisJCWlmICghaWd0X3dhaXRfZm9yX3NwaW5uZXIoc3BpbiwgcnEpKSB7CisJCQlw cl9lcnIoIiVzOiBTcGlubmVyIGZhaWxlZCB0byBzdGFydCFcbiIsIG5hbWUpOworCQkJaWd0X3Nw aW5uZXJfZW5kKHNwaW4pOworCQkJaWd0X3NwaW5uZXJfZmluaShzcGluKTsKKwkJCWtmcmVlKHNw aW4pOworCQkJcmV0ID0gLUVUSU1FRE9VVDsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJKnNwaW5f b3V0ID0gc3BpbjsKKwl9CisKK291dDoKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50Citf X3JlYWRfc2xpY2VfY291bnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCSAgIHN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCSAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwKKwkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJICAgc3Ry dWN0IGlndF9zcGlubmVyICpzcGluLAorCQkgICB1MzIgKnJwY3MpCit7CisJc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEgPSBOVUxMOworCXUzMiBzX21hc2ssIHNfc2hpZnQ7CisJdW5zaWduZWQgaW50 IGNudDsKKwl1MzIgKmJ1ZiwgdmFsOworCWxvbmcgcmV0OworCisJcmV0ID0gZW1pdF9ycGNzX3F1 ZXJ5KG9iaiwgY3R4LCBlbmdpbmUsICZycSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwor CWlmIChzcGluKQorCQlpZ3Rfc3Bpbm5lcl9lbmQoc3Bpbik7CisKKwlyZXQgPSBpOTE1X3JlcXVl c3Rfd2FpdChycSwgSTkxNV9XQUlUX0xPQ0tFRCwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOworCWk5 MTVfcmVxdWVzdF9wdXQocnEpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJYnVm ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAob2JqLCBJOTE1X01BUF9XQik7CisJaWYgKElTX0VS UihidWYpKSB7CisJCXJldCA9IFBUUl9FUlIoYnVmKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlp ZiAoSU5URUxfR0VOKGk5MTUpID49IDExKSB7CisJCXNfbWFzayA9IEdFTjExX1JQQ1NfU19DTlRf TUFTSzsKKwkJc19zaGlmdCA9IEdFTjExX1JQQ1NfU19DTlRfU0hJRlQ7CisJfSBlbHNlIHsKKwkJ c19tYXNrID0gR0VOOF9SUENTX1NfQ05UX01BU0s7CisJCXNfc2hpZnQgPSBHRU44X1JQQ1NfU19D TlRfU0hJRlQ7CisJfQorCisJdmFsID0gKmJ1ZjsKKwljbnQgPSAodmFsICYgc19tYXNrKSA+PiBz X3NoaWZ0OworCSpycGNzID0gdmFsOworCisJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmop OworCisJcmV0dXJuIGNudDsKK30KKworc3RhdGljIGludAorX19jaGVja19ycGNzKGNvbnN0IGNo YXIgKm5hbWUsIHUzMiBycGNzLCBpbnQgc2xpY2VzLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWQsCisJ ICAgICBjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKnN1ZmZpeCkKK3sKKwlpZiAoc2xp Y2VzID09IGV4cGVjdGVkKQorCQlyZXR1cm4gMDsKKworCWlmIChzbGljZXMgPCAwKSB7CisJCXBy X2VycigiJXM6ICVzIHJlYWQgc2xpY2UgY291bnQgZmFpbGVkIHdpdGggJWQlc1xuIiwKKwkJICAg ICAgIG5hbWUsIHByZWZpeCwgc2xpY2VzLCBzdWZmaXgpOworCQlyZXR1cm4gc2xpY2VzOworCX0K KworCXByX2VycigiJXM6ICVzIHNsaWNlIGNvdW50ICVkIGlzIG5vdCAldSVzXG4iLAorCSAgICAg ICBuYW1lLCBwcmVmaXgsIHNsaWNlcywgZXhwZWN0ZWQsIHN1ZmZpeCk7CisKKwlwcl9pbmZvKCJS UENTPTB4JXg7ICV1JXN4JXUlc1xuIiwKKwkJcnBjcywgc2xpY2VzLAorCQkocnBjcyAmIEdFTjhf UlBDU19TX0NOVF9FTkFCTEUpID8gIioiIDogIiIsCisJCShycGNzICYgR0VOOF9SUENTX1NTX0NO VF9NQVNLKSA+PiBHRU44X1JQQ1NfU1NfQ05UX1NISUZULAorCQkocnBjcyAmIEdFTjhfUlBDU19T U19DTlRfRU5BQkxFKSA/ICIqIiA6ICIiKTsKKworCXJldHVybiAtRUlOVkFMOworfQorCitzdGF0 aWMgaW50CitfX3NzZXVfZmluaXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCSAg ICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJICAgICAgdW5zaWduZWQgaW50IGZsYWdzLAorCSAgICAg IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJICAgICAgc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmtjdHgsCisJICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCSAg ICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJICAgICAgdW5zaWduZWQgaW50 IGV4cGVjdGVkLAorCSAgICAgIHN0cnVjdCBpZ3Rfc3Bpbm5lciAqc3BpbikKK3sKKwl1bnNpZ25l ZCBpbnQgc2xpY2VzID0KKwkJaHdlaWdodDMyKGludGVsX2RldmljZV9kZWZhdWx0X3NzZXUoaTkx NSkuc2xpY2VfbWFzayk7CisJdTMyIHJwY3MgPSAwOworCWludCByZXQgPSAwOworCisJaWYgKGZs YWdzICYgVEVTVF9SRVNFVCkgeworCQlyZXQgPSBpOTE1X3Jlc2V0X2VuZ2luZShlbmdpbmUsICJz c2V1Iik7CisJCWlmIChyZXQpCisJCQlnb3RvIG91dDsKKwl9CisKKwlyZXQgPSBfX3JlYWRfc2xp Y2VfY291bnQoaTkxNSwgY3R4LCBlbmdpbmUsIG9iaiwKKwkJCQkgZmxhZ3MgJiBURVNUX1JFU0VU ID8gTlVMTCA6IHNwaW4sICZycGNzKTsKKwlyZXQgPSBfX2NoZWNrX3JwY3MobmFtZSwgcnBjcywg cmV0LCBleHBlY3RlZCwgIkNvbnRleHQiLCAiISIpOworCWlmIChyZXQpCisJCWdvdG8gb3V0Owor CisJcmV0ID0gX19yZWFkX3NsaWNlX2NvdW50KGk5MTUsIGtjdHgsIGVuZ2luZSwgb2JqLCBOVUxM LCAmcnBjcyk7CisJcmV0ID0gX19jaGVja19ycGNzKG5hbWUsIHJwY3MsIHJldCwgc2xpY2VzLCAi S2VybmVsIGNvbnRleHQiLCAiISIpOworCitvdXQ6CisJaWYgKHNwaW4pCisJCWlndF9zcGlubmVy X2VuZChzcGluKTsKKworCWlmICgoZmxhZ3MgJiBURVNUX0lETEUpICYmIHJldCA9PSAwKSB7CisJ CXJldCA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoaTkxNSwKKwkJCQkJICAgICBJOTE1X1dBSVRf TE9DS0VELAorCQkJCQkgICAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKKwkJaWYgKHJldCkKKwkJ CXJldHVybiByZXQ7CisKKwkJcmV0ID0gX19yZWFkX3NsaWNlX2NvdW50KGk5MTUsIGN0eCwgZW5n aW5lLCBvYmosIE5VTEwsICZycGNzKTsKKwkJcmV0ID0gX19jaGVja19ycGNzKG5hbWUsIHJwY3Ms IHJldCwgZXhwZWN0ZWQsCisJCQkJICAgIkNvbnRleHQiLCAiIGFmdGVyIGlkbGUhIik7CisJfQor CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAorX19zc2V1X3Rlc3Qoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCisJICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJICAgIHVuc2lnbmVk IGludCBmbGFncywKKwkgICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkgICAgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAorCSAgICBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQoreworCXN0cnVjdCBpZ3Rf c3Bpbm5lciAqc3BpbiA9IE5VTEw7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmtjdHg7CisJ aW50IHJldDsKKworCWtjdHggPSBrZXJuZWxfY29udGV4dChpOTE1KTsKKwlpZiAoSVNfRVJSKGtj dHgpKQorCQlyZXR1cm4gUFRSX0VSUihrY3R4KTsKKworCXJldCA9IF9fc3NldV9wcmVwYXJlKGk5 MTUsIG5hbWUsIGZsYWdzLCBjdHgsIGVuZ2luZSwgJnNwaW4pOworCWlmIChyZXQpCisJCWdvdG8g b3V0OworCisJcmV0ID0gX19pOTE1X2dlbV9jb250ZXh0X3JlY29uZmlndXJlX3NzZXUoY3R4LCBl bmdpbmUsIHNzZXUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJcmV0ID0gX19zc2V1X2Zp bmlzaChpOTE1LCBuYW1lLCBmbGFncywgY3R4LCBrY3R4LCBlbmdpbmUsIG9iaiwKKwkJCSAgICBo d2VpZ2h0MzIoc3NldS5zbGljZV9tYXNrKSwgc3Bpbik7CisKK291dDoKKwlpZiAoc3Bpbikgewor CQlpZ3Rfc3Bpbm5lcl9lbmQoc3Bpbik7CisJCWlndF9zcGlubmVyX2Zpbmkoc3Bpbik7CisJCWtm cmVlKHNwaW4pOworCX0KKworCWtlcm5lbF9jb250ZXh0X2Nsb3NlKGtjdHgpOworCisJcmV0dXJu IHJldDsKK30KKworc3RhdGljIGludAorX19pZ3RfY3R4X3NzZXUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCisJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJICAgICAgIHVuc2lnbmVk IGludCBmbGFncykKK3sKKwlzdHJ1Y3QgaW50ZWxfc3NldSBkZWZhdWx0X3NzZXUgPSBpbnRlbF9k ZXZpY2VfZGVmYXVsdF9zc2V1KGk5MTUpOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSA9IGk5MTUtPmVuZ2luZVtSQ1NdOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7 CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKKwlzdHJ1Y3QgaW50ZWxfc3NldSBwZ19z c2V1OworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOworCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsK KwlpbnQgcmV0OworCisJaWYgKElOVEVMX0dFTihpOTE1KSA8IDkpCisJCXJldHVybiAwOworCisJ aWYgKCFSVU5USU1FX0lORk8oaTkxNSktPnNzZXUuaGFzX3NsaWNlX3BnKQorCQlyZXR1cm4gMDsK KworCWlmIChod2VpZ2h0MzIoZGVmYXVsdF9zc2V1LnNsaWNlX21hc2spIDwgMikKKwkJcmV0dXJu IDA7CisKKwkvKgorCSAqIEdlbjExIFZNRSBmcmllbmRseSBwb3dlci1nYXRlZCBjb25maWd1cmF0 aW9uIHdpdGggaGFsZiBlbmFibGVkCisJICogc3ViLXNsaWNlcy4KKwkgKi8KKwlwZ19zc2V1ID0g ZGVmYXVsdF9zc2V1OworCXBnX3NzZXUuc2xpY2VfbWFzayA9IDE7CisJcGdfc3NldS5zdWJzbGlj ZV9tYXNrID0KKwkJfih+MCA8PCAoaHdlaWdodDMyKGRlZmF1bHRfc3NldS5zdWJzbGljZV9tYXNr KSAvIDIpKTsKKworCXByX2luZm8oIlNTRVUgc3VidGVzdCAnJXMnLCBmbGFncz0leCwgZGVmX3Ns aWNlcz0ldSwgcGdfc2xpY2VzPSV1XG4iLAorCQluYW1lLCBmbGFncywgaHdlaWdodDMyKGRlZmF1 bHRfc3NldS5zbGljZV9tYXNrKSwKKwkJaHdlaWdodDMyKHBnX3NzZXUuc2xpY2VfbWFzaykpOwor CisJZmlsZSA9IG1vY2tfZmlsZShpOTE1KTsKKwlpZiAoSVNfRVJSKGZpbGUpKQorCQlyZXR1cm4g UFRSX0VSUihmaWxlKTsKKworCWlmIChmbGFncyAmIFRFU1RfUkVTRVQpCisJCWlndF9nbG9iYWxf cmVzZXRfbG9jayhpOTE1KTsKKworCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp OworCisJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3By aXYpOworCWlmIChJU19FUlIoY3R4KSkgeworCQlyZXQgPSBQVFJfRVJSKGN0eCk7CisJCWdvdG8g b3V0X3VubG9jazsKKwl9CisKKwlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFs KGk5MTUsIFBBR0VfU0laRSk7CisJaWYgKElTX0VSUihvYmopKSB7CisJCXJldCA9IFBUUl9FUlIo b2JqKTsKKwkJZ290byBvdXRfdW5sb2NrOworCX0KKworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1l X3BtX2dldChpOTE1KTsKKworCS8qIEZpcnN0IHNldCB0aGUgZGVmYXVsdCBtYXNrLiAqLworCXJl dCA9IF9fc3NldV90ZXN0KGk5MTUsIG5hbWUsIGZsYWdzLCBjdHgsIGVuZ2luZSwgb2JqLCBkZWZh dWx0X3NzZXUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2ZhaWw7CisKKwkvKiBUaGVuIHNldCBh IHBvd2VyLWdhdGVkIGNvbmZpZ3VyYXRpb24uICovCisJcmV0ID0gX19zc2V1X3Rlc3QoaTkxNSwg bmFtZSwgZmxhZ3MsIGN0eCwgZW5naW5lLCBvYmosIHBnX3NzZXUpOworCWlmIChyZXQpCisJCWdv dG8gb3V0X2ZhaWw7CisKKwkvKiBCYWNrIHRvIGRlZmF1bHRzLiAqLworCXJldCA9IF9fc3NldV90 ZXN0KGk5MTUsIG5hbWUsIGZsYWdzLCBjdHgsIGVuZ2luZSwgb2JqLCBkZWZhdWx0X3NzZXUpOwor CWlmIChyZXQpCisJCWdvdG8gb3V0X2ZhaWw7CisKKwkvKiBPbmUgbGFzdCBwb3dlci1nYXRlZCBj b25maWd1cmF0aW9uIGZvciB0aGUgcm9hZC4gKi8KKwlyZXQgPSBfX3NzZXVfdGVzdChpOTE1LCBu YW1lLCBmbGFncywgY3R4LCBlbmdpbmUsIG9iaiwgcGdfc3NldSk7CisJaWYgKHJldCkKKwkJZ290 byBvdXRfZmFpbDsKKworb3V0X2ZhaWw6CisJaWYgKGlndF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVf V0FJVF9MT0NLRUQpKQorCQlyZXQgPSAtRUlPOworCisJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmop OworCisJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7CisKK291dF91bmxvY2s6 CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCWlmIChmbGFncyAm IFRFU1RfUkVTRVQpCisJCWlndF9nbG9iYWxfcmVzZXRfdW5sb2NrKGk5MTUpOworCisJbW9ja19m aWxlX2ZyZWUoaTkxNSwgZmlsZSk7CisKKwlpZiAocmV0KQorCQlwcl9lcnIoIiVzOiBGYWlsZWQg d2l0aCAlZCFcbiIsIG5hbWUsIHJldCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50 IGlndF9jdHhfc3NldSh2b2lkICphcmcpCit7CisJc3RydWN0IHsKKwkJY29uc3QgY2hhciAqbmFt ZTsKKwkJdW5zaWduZWQgaW50IGZsYWdzOworCX0gKnBoYXNlLCBwaGFzZXNbXSA9IHsKKwkJeyAu bmFtZSA9ICJiYXNpYyIsIC5mbGFncyA9IDAgfSwKKwkJeyAubmFtZSA9ICJpZGxlIiwgLmZsYWdz ID0gVEVTVF9JRExFIH0sCisJCXsgLm5hbWUgPSAiYnVzeSIsIC5mbGFncyA9IFRFU1RfQlVTWSB9 LAorCQl7IC5uYW1lID0gImJ1c3ktcmVzZXQiLCAuZmxhZ3MgPSBURVNUX0JVU1kgfCBURVNUX1JF U0VUIH0sCisJCXsgLm5hbWUgPSAiYnVzeS1pZGxlIiwgLmZsYWdzID0gVEVTVF9CVVNZIHwgVEVT VF9JRExFIH0sCisJCXsgLm5hbWUgPSAicmVzZXQtaWRsZSIsIC5mbGFncyA9IFRFU1RfUkVTRVQg fCBURVNUX0lETEUgfSwKKwl9OworCXVuc2lnbmVkIGludCBpOworCWludCByZXQgPSAwOworCisJ Zm9yIChpID0gMCwgcGhhc2UgPSBwaGFzZXM7IHJldCA9PSAwICYmIGkgPCBBUlJBWV9TSVpFKHBo YXNlcyk7CisJICAgICBpKyssIHBoYXNlKyspCisJCXJldCA9IF9faWd0X2N0eF9zc2V1KGFyZywg cGhhc2UtPm5hbWUsIHBoYXNlLT5mbGFncyk7CisKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMg aW50IGlndF9jdHhfcmVhZG9ubHkodm9pZCAqYXJnKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1ID0gYXJnOwpAQCAtMTE2Miw2ICsxNjI4LDcgQEAgaW50IGk5MTVfZ2VtX2NvbnRl eHRfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlT VUJURVNUKGxpdmVfbm9wX3N3aXRjaCksCiAJCVNVQlRFU1QoaWd0X2N0eF9leGVjKSwKIAkJU1VC VEVTVChpZ3RfY3R4X3JlYWRvbmx5KSwKKwkJU1VCVEVTVChpZ3RfY3R4X3NzZXUpLAogCQlTVUJU RVNUKGlndF92bV9pc29sYXRpb24pLAogCX07CiAKLS0gCjIuMTkuMQoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==