From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v8 6/6] drm/i915/selftests: Context SSEU reconfiguration tests Date: Thu, 24 Jan 2019 11:59:42 +0000 Message-ID: <20190124115942.2251-1-tvrtko.ursulin@linux.intel.com> References: <20190124114203.18952-7-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6B89E6F13B for ; Thu, 24 Jan 2019 11:59:41 +0000 (UTC) In-Reply-To: <20190124114203.18952-7-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 aW50bGVzcyBHRU1fQlVHX09OIGJlZm9yZSBwb2ludGVyIGRlcmVmZXJlbmNlLgoKU2lnbmVkLW9m Zi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KUmV2aWV3ZWQt Ynk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPiAjIHY2ClJldmlld2Vk LWJ5OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+ICMg djYKLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgICAgfCAg MzEgKy0KIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyB8IDQ2 OCArKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgNDg5IGluc2VydGlvbnMoKyks IDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwpp bmRleCA5MmViYmNkZTNkZWQuLjUwOGUxMzFlNDQzNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYwpAQCAtMTA0OSwyMyArMTA0OSwxOSBAQCBnZW44X21vZGlmeV9ycGNz X2dwdShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiB9CiAKIHN0YXRpYyBpbnQKLWk5MTVfZ2Vt X2NvbnRleHRfcmVjb25maWd1cmVfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAot CQkJCSAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAotCQkJCSAgc3RydWN0IGludGVs X3NzZXUgc3NldSkKK19faTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3VyZV9zc2V1KHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCQkJICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKKwkJCQkgICAgc3RydWN0IGludGVsX3NzZXUgc3NldSkKIHsKIAlzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2UgPSB0b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKTsKLQlpbnQgcmV0Owor CWludCByZXQgPSAwOwogCiAJR0VNX0JVR19PTihJTlRFTF9HRU4oY3R4LT5pOTE1KSA8IDgpOwog CUdFTV9CVUdfT04oZW5naW5lLT5pZCAhPSBSQ1MpOwogCi0JcmV0ID0gbXV0ZXhfbG9ja19pbnRl cnJ1cHRpYmxlKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCWlmIChyZXQpCi0JCXJl dHVybiByZXQ7Ci0KIAkvKiBOb3RoaW5nIHRvIGRvIGlmIHVubW9kaWZpZWQuICovCiAJaWYgKCFt ZW1jbXAoJmNlLT5zc2V1LCAmc3NldSwgc2l6ZW9mKHNzZXUpKSkKLQkJZ290byBvdXQ7CisJCXJl dHVybiAwOwogCiAJLyoKIAkgKiBJZiBjb250ZXh0IGlzIG5vdCBpZGxlIHdlIGhhdmUgdG8gc3Vi bWl0IGFuIG9yZGVyZWQgcmVxdWVzdCB0byBtb2RpZnkKQEAgLTEwNzgsNyArMTA3NCwyMiBAQCBp OTE1X2dlbV9jb250ZXh0X3JlY29uZmlndXJlX3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eCwKIAlpZiAoIXJldCkKIAkJY2UtPnNzZXUgPSBzc2V1OwogCi1vdXQ6CisJcmV0dXJuIHJl dDsKK30KKworc3RhdGljIGludAoraTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3VyZV9zc2V1KHN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCQkJICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCisJCQkJICBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQoreworCWludCByZXQ7CisK KwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IF9faTkxNV9nZW1fY29u dGV4dF9yZWNvbmZpZ3VyZV9zc2V1KGN0eCwgZW5naW5lLCBzc2V1KTsKKwogCW11dGV4X3VubG9j aygmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAogCXJldHVybiByZXQ7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwppbmRleCBl MmMxZjBiYzJhYmUuLjIxMjZjNGZjYzU0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCkBAIC0yNCwxMCArMjQsMTMgQEAKIAogI2lu Y2x1ZGUgPGxpbnV4L3ByaW1lX251bWJlcnMuaD4KIAorI2luY2x1ZGUgIi4uL2k5MTVfcmVzZXQu aCIKICNpbmNsdWRlICIuLi9pOTE1X3NlbGZ0ZXN0LmgiCiAjaW5jbHVkZSAiaTkxNV9yYW5kb20u aCIKICNpbmNsdWRlICJpZ3RfZmx1c2hfdGVzdC5oIgogI2luY2x1ZGUgImlndF9saXZlX3Rlc3Qu aCIKKyNpbmNsdWRlICJpZ3RfcmVzZXQuaCIKKyNpbmNsdWRlICJpZ3Rfc3Bpbm5lci5oIgogCiAj aW5jbHVkZSAibW9ja19kcm0uaCIKICNpbmNsdWRlICJtb2NrX2dlbV9kZXZpY2UuaCIKQEAgLTU3 Niw2ICs1NzksNDcwIEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9leGVjKHZvaWQgKmFyZykKIAlyZXR1 cm4gZXJyOwogfQogCitzdGF0aWMgc3RydWN0IGk5MTVfdm1hICpycGNzX3F1ZXJ5X2JhdGNoKHN0 cnVjdCBpOTE1X3ZtYSAqdm1hKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7 CisJdTMyICpjbWQ7CisJaW50IGVycjsKKworCWlmIChJTlRFTF9HRU4odm1hLT52bS0+aTkxNSkg PCA4KQorCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKworCW9iaiA9IGk5MTVfZ2VtX29iamVj dF9jcmVhdGVfaW50ZXJuYWwodm1hLT52bS0+aTkxNSwgUEFHRV9TSVpFKTsKKwlpZiAoSVNfRVJS KG9iaikpCisJCXJldHVybiBFUlJfQ0FTVChvYmopOworCisJY21kID0gaTkxNV9nZW1fb2JqZWN0 X3Bpbl9tYXAob2JqLCBJOTE1X01BUF9XQik7CisJaWYgKElTX0VSUihjbWQpKSB7CisJCWVyciA9 IFBUUl9FUlIoY21kKTsKKwkJZ290byBlcnI7CisJfQorCisJKmNtZCsrID0gTUlfU1RPUkVfUkVH SVNURVJfTUVNX0dFTjg7CisJKmNtZCsrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9SX1BX Ul9DTEtfU1RBVEUpOworCSpjbWQrKyA9IGxvd2VyXzMyX2JpdHModm1hLT5ub2RlLnN0YXJ0KTsK KwkqY21kKysgPSB1cHBlcl8zMl9iaXRzKHZtYS0+bm9kZS5zdGFydCk7CisJKmNtZCA9IE1JX0JB VENIX0JVRkZFUl9FTkQ7CisKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKG9iaik7CisKKwll cnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7CisJaWYg KGVycikKKwkJZ290byBlcnI7CisKKwl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosIHZtYS0+ dm0sIE5VTEwpOworCWlmIChJU19FUlIodm1hKSkgeworCQllcnIgPSBQVFJfRVJSKHZtYSk7CisJ CWdvdG8gZXJyOworCX0KKworCWVyciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsIFBJTl9VU0VS KTsKKwlpZiAoZXJyKQorCQlnb3RvIGVycjsKKworCXJldHVybiB2bWE7CisKK2VycjoKKwlpOTE1 X2dlbV9vYmplY3RfcHV0KG9iaik7CisJcmV0dXJuIEVSUl9QVFIoZXJyKTsKK30KKworc3RhdGlj IGludAorZW1pdF9ycGNzX3F1ZXJ5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJ CXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwKKwkJc3RydWN0IGk5MTVfcmVxdWVzdCAqKnJxX291dCkKK3sKKwlzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycTsKKwlzdHJ1Y3QgaTkxNV92bWEgKmJhdGNoOworCXN0cnVjdCBpOTE1X3Zt YSAqdm1hOworCWludCBlcnI7CisKKwlHRU1fQlVHX09OKCFpbnRlbF9lbmdpbmVfY2FuX3N0b3Jl X2R3b3JkKGVuZ2luZSkpOworCisJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCAmY3R4LT5w cGd0dC0+dm0sIE5VTEwpOworCWlmIChJU19FUlIodm1hKSkKKwkJcmV0dXJuIFBUUl9FUlIodm1h KTsKKworCWVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIGZhbHNl KTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJZXJyID0gaTkxNV92bWFfcGluKHZtYSwg MCwgMCwgUElOX1VTRVIpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwliYXRjaCA9IHJw Y3NfcXVlcnlfYmF0Y2godm1hKTsKKwlpZiAoSVNfRVJSKGJhdGNoKSkgeworCQllcnIgPSBQVFJf RVJSKGJhdGNoKTsKKwkJZ290byBlcnJfdm1hOworCX0KKworCXJxID0gaTkxNV9yZXF1ZXN0X2Fs bG9jKGVuZ2luZSwgY3R4KTsKKwlpZiAoSVNfRVJSKHJxKSkgeworCQllcnIgPSBQVFJfRVJSKHJx KTsKKwkJZ290byBlcnJfYmF0Y2g7CisJfQorCisJZXJyID0gZW5naW5lLT5lbWl0X2JiX3N0YXJ0 KHJxLCBiYXRjaC0+bm9kZS5zdGFydCwgYmF0Y2gtPm5vZGUuc2l6ZSwgMCk7CisJaWYgKGVycikK KwkJZ290byBlcnJfcmVxdWVzdDsKKworCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKGJh dGNoLCBycSwgMCk7CisJaWYgKGVycikKKwkJZ290byBza2lwX3JlcXVlc3Q7CisKKwllcnIgPSBp OTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZSh2bWEsIHJxLCBFWEVDX09CSkVDVF9XUklURSk7CisJaWYg KGVycikKKwkJZ290byBza2lwX3JlcXVlc3Q7CisKKwlpOTE1X2dlbV9vYmplY3Rfc2V0X2FjdGl2 ZV9yZWZlcmVuY2UoYmF0Y2gtPm9iaik7CisJaTkxNV92bWFfdW5waW4oYmF0Y2gpOworCWk5MTVf dm1hX2Nsb3NlKGJhdGNoKTsKKworCWk5MTVfdm1hX3VucGluKHZtYSk7CisKKwkqcnFfb3V0ID0g aTkxNV9yZXF1ZXN0X2dldChycSk7CisKKwlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKKworCXJldHVy biAwOworCitza2lwX3JlcXVlc3Q6CisJaTkxNV9yZXF1ZXN0X3NraXAocnEsIGVycik7CitlcnJf cmVxdWVzdDoKKwlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKK2Vycl9iYXRjaDoKKwlpOTE1X3ZtYV91 bnBpbihiYXRjaCk7CitlcnJfdm1hOgorCWk5MTVfdm1hX3VucGluKHZtYSk7CisKKwlyZXR1cm4g ZXJyOworfQorCisjZGVmaW5lIFRFU1RfSURMRQlCSVQoMCkKKyNkZWZpbmUgVEVTVF9CVVNZCUJJ VCgxKQorI2RlZmluZSBURVNUX1JFU0VUCUJJVCgyKQorCitzdGF0aWMgaW50CitfX3NzZXVfcHJl cGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkgICAgICAgY29uc3QgY2hhciAq bmFtZSwKKwkgICAgICAgdW5zaWduZWQgaW50IGZsYWdzLAorCSAgICAgICBzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4LAorCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs CisJICAgICAgIHN0cnVjdCBpZ3Rfc3Bpbm5lciAqKnNwaW5fb3V0KQoreworCWludCByZXQgPSAw OworCisJaWYgKGZsYWdzICYgKFRFU1RfQlVTWSB8IFRFU1RfUkVTRVQpKSB7CisJCXN0cnVjdCBp Z3Rfc3Bpbm5lciAqc3BpbjsKKwkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CisKKwkJc3BpbiA9 IGt6YWxsb2Moc2l6ZW9mKCpzcGluKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghc3BpbikgeworCQkJ cmV0ID0gLUVOT01FTTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJcmV0ID0gaWd0X3NwaW5uZXJf aW5pdChzcGluLCBpOTE1KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisKKwkJcnEgPSBp Z3Rfc3Bpbm5lcl9jcmVhdGVfcmVxdWVzdChzcGluLCBjdHgsIGVuZ2luZSwgTUlfTk9PUCk7CisJ CWlmIChJU19FUlIocnEpKSB7CisJCQlyZXQgPSBQVFJfRVJSKHJxKTsKKwkJCWlndF9zcGlubmVy X2Zpbmkoc3Bpbik7CisJCQlrZnJlZShzcGluKTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJaTkx NV9yZXF1ZXN0X2FkZChycSk7CisKKwkJaWYgKCFpZ3Rfd2FpdF9mb3Jfc3Bpbm5lcihzcGluLCBy cSkpIHsKKwkJCXByX2VycigiJXM6IFNwaW5uZXIgZmFpbGVkIHRvIHN0YXJ0IVxuIiwgbmFtZSk7 CisJCQlpZ3Rfc3Bpbm5lcl9lbmQoc3Bpbik7CisJCQlpZ3Rfc3Bpbm5lcl9maW5pKHNwaW4pOwor CQkJa2ZyZWUoc3Bpbik7CisJCQlyZXQgPSAtRVRJTUVET1VUOworCQkJZ290byBvdXQ7CisJCX0K KworCQkqc3Bpbl9vdXQgPSBzcGluOworCX0KKworb3V0OgorCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyBpbnQKK19fcmVhZF9zbGljZV9jb3VudChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKKwkJICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJICAgc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLAorCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAorCQkgICBzdHJ1Y3QgaWd0X3NwaW5uZXIgKnNwaW4sCisJCSAgIHUzMiAqcnBjcykKK3sKKwlz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSA9IE5VTEw7CisJdTMyIHNfbWFzaywgc19zaGlmdDsKKwl1 bnNpZ25lZCBpbnQgY250OworCXUzMiAqYnVmLCB2YWw7CisJbG9uZyByZXQ7CisKKwlyZXQgPSBl bWl0X3JwY3NfcXVlcnkob2JqLCBjdHgsIGVuZ2luZSwgJnJxKTsKKwlpZiAocmV0KQorCQlyZXR1 cm4gcmV0OworCisJaWYgKHNwaW4pCisJCWlndF9zcGlubmVyX2VuZChzcGluKTsKKworCXJldCA9 IGk5MTVfcmVxdWVzdF93YWl0KHJxLCBJOTE1X1dBSVRfTE9DS0VELCBNQVhfU0NIRURVTEVfVElN RU9VVCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlpOTE1X3JlcXVlc3RfcHV0 KHJxKTsKKworCWJ1ZiA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKG9iaiwgSTkxNV9NQVBfV0Ip OworCWlmIChJU19FUlIoYnVmKSkgeworCQlyZXQgPSBQVFJfRVJSKGJ1Zik7CisJCXJldHVybiBy ZXQ7CisJfQorCisJaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMSkgeworCQlzX21hc2sgPSBHRU4x MV9SUENTX1NfQ05UX01BU0s7CisJCXNfc2hpZnQgPSBHRU4xMV9SUENTX1NfQ05UX1NISUZUOwor CX0gZWxzZSB7CisJCXNfbWFzayA9IEdFTjhfUlBDU19TX0NOVF9NQVNLOworCQlzX3NoaWZ0ID0g R0VOOF9SUENTX1NfQ05UX1NISUZUOworCX0KKworCXZhbCA9ICpidWY7CisJY250ID0gKHZhbCAm IHNfbWFzaykgPj4gc19zaGlmdDsKKwkqcnBjcyA9IHZhbDsKKworCWk5MTVfZ2VtX29iamVjdF91 bnBpbl9tYXAob2JqKTsKKworCXJldHVybiBjbnQ7Cit9CisKK3N0YXRpYyBpbnQKK19fY2hlY2tf cnBjcyhjb25zdCBjaGFyICpuYW1lLCB1MzIgcnBjcywgaW50IHNsaWNlcywgdW5zaWduZWQgaW50 IGV4cGVjdGVkLAorCSAgICAgY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpzdWZmaXgp Cit7CisJaWYgKHNsaWNlcyA9PSBleHBlY3RlZCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoc2xpY2Vz IDwgMCkgeworCQlwcl9lcnIoIiVzOiAlcyByZWFkIHNsaWNlIGNvdW50IGZhaWxlZCB3aXRoICVk JXNcbiIsCisJCSAgICAgICBuYW1lLCBwcmVmaXgsIHNsaWNlcywgc3VmZml4KTsKKwkJcmV0dXJu IHNsaWNlczsKKwl9CisKKwlwcl9lcnIoIiVzOiAlcyBzbGljZSBjb3VudCAlZCBpcyBub3QgJXUl c1xuIiwKKwkgICAgICAgbmFtZSwgcHJlZml4LCBzbGljZXMsIGV4cGVjdGVkLCBzdWZmaXgpOwor CisJcHJfaW5mbygiUlBDUz0weCV4OyAldSVzeCV1JXNcbiIsCisJCXJwY3MsIHNsaWNlcywKKwkJ KHJwY3MgJiBHRU44X1JQQ1NfU19DTlRfRU5BQkxFKSA/ICIqIiA6ICIiLAorCQkocnBjcyAmIEdF TjhfUlBDU19TU19DTlRfTUFTSykgPj4gR0VOOF9SUENTX1NTX0NOVF9TSElGVCwKKwkJKHJwY3Mg JiBHRU44X1JQQ1NfU1NfQ05UX0VOQUJMRSkgPyAiKiIgOiAiIik7CisKKwlyZXR1cm4gLUVJTlZB TDsKK30KKworc3RhdGljIGludAorX19zc2V1X2ZpbmlzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKKwkgICAgICBjb25zdCBjaGFyICpuYW1lLAorCSAgICAgIHVuc2lnbmVkIGludCBm bGFncywKKwkgICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCSAgICAgIHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICprY3R4LAorCSAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwKKwkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCSAgICAg IHVuc2lnbmVkIGludCBleHBlY3RlZCwKKwkgICAgICBzdHJ1Y3QgaWd0X3NwaW5uZXIgKnNwaW4p Cit7CisJdW5zaWduZWQgaW50IHNsaWNlcyA9CisJCWh3ZWlnaHQzMihpbnRlbF9kZXZpY2VfZGVm YXVsdF9zc2V1KGk5MTUpLnNsaWNlX21hc2spOworCXUzMiBycGNzID0gMDsKKwlpbnQgcmV0ID0g MDsKKworCWlmIChmbGFncyAmIFRFU1RfUkVTRVQpIHsKKwkJcmV0ID0gaTkxNV9yZXNldF9lbmdp bmUoZW5naW5lLCAic3NldSIpOworCQlpZiAocmV0KQorCQkJZ290byBvdXQ7CisJfQorCisJcmV0 ID0gX19yZWFkX3NsaWNlX2NvdW50KGk5MTUsIGN0eCwgZW5naW5lLCBvYmosCisJCQkJIGZsYWdz ICYgVEVTVF9SRVNFVCA/IE5VTEwgOiBzcGluLCAmcnBjcyk7CisJcmV0ID0gX19jaGVja19ycGNz KG5hbWUsIHJwY3MsIHJldCwgZXhwZWN0ZWQsICJDb250ZXh0IiwgIiEiKTsKKwlpZiAocmV0KQor CQlnb3RvIG91dDsKKworCXJldCA9IF9fcmVhZF9zbGljZV9jb3VudChpOTE1LCBrY3R4LCBlbmdp bmUsIG9iaiwgTlVMTCwgJnJwY3MpOworCXJldCA9IF9fY2hlY2tfcnBjcyhuYW1lLCBycGNzLCBy ZXQsIHNsaWNlcywgIktlcm5lbCBjb250ZXh0IiwgIiEiKTsKKworb3V0OgorCWlmIChzcGluKQor CQlpZ3Rfc3Bpbm5lcl9lbmQoc3Bpbik7CisKKwlpZiAoKGZsYWdzICYgVEVTVF9JRExFKSAmJiBy ZXQgPT0gMCkgeworCQlyZXQgPSBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGk5MTUsCisJCQkJCSAg ICAgSTkxNV9XQUlUX0xPQ0tFRCwKKwkJCQkJICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7CisJ CWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCisJCXJldCA9IF9fcmVhZF9zbGljZV9jb3VudChp OTE1LCBjdHgsIGVuZ2luZSwgb2JqLCBOVUxMLCAmcnBjcyk7CisJCXJldCA9IF9fY2hlY2tfcnBj cyhuYW1lLCBycGNzLCByZXQsIGV4cGVjdGVkLAorCQkJCSAgICJDb250ZXh0IiwgIiBhZnRlciBp ZGxlISIpOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK19fc3NldV90ZXN0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCSAgICBjb25zdCBjaGFyICpuYW1lLAor CSAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsCisJICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsCisJICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkgICAgc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkgICAgc3RydWN0IGludGVsX3NzZXUgc3NldSkKK3sK KwlzdHJ1Y3QgaWd0X3NwaW5uZXIgKnNwaW4gPSBOVUxMOworCXN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICprY3R4OworCWludCByZXQ7CisKKwlrY3R4ID0ga2VybmVsX2NvbnRleHQoaTkxNSk7CisJ aWYgKElTX0VSUihrY3R4KSkKKwkJcmV0dXJuIFBUUl9FUlIoa2N0eCk7CisKKwlyZXQgPSBfX3Nz ZXVfcHJlcGFyZShpOTE1LCBuYW1lLCBmbGFncywgY3R4LCBlbmdpbmUsICZzcGluKTsKKwlpZiAo cmV0KQorCQlnb3RvIG91dDsKKworCXJldCA9IF9faTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3Vy ZV9zc2V1KGN0eCwgZW5naW5lLCBzc2V1KTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKworCXJl dCA9IF9fc3NldV9maW5pc2goaTkxNSwgbmFtZSwgZmxhZ3MsIGN0eCwga2N0eCwgZW5naW5lLCBv YmosCisJCQkgICAgaHdlaWdodDMyKHNzZXUuc2xpY2VfbWFzayksIHNwaW4pOworCitvdXQ6CisJ aWYgKHNwaW4pIHsKKwkJaWd0X3NwaW5uZXJfZW5kKHNwaW4pOworCQlpZ3Rfc3Bpbm5lcl9maW5p KHNwaW4pOworCQlrZnJlZShzcGluKTsKKwl9CisKKwlrZXJuZWxfY29udGV4dF9jbG9zZShrY3R4 KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK19faWd0X2N0eF9zc2V1KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCSAgICAgICBjb25zdCBjaGFyICpuYW1lLAorCSAg ICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisJc3RydWN0IGludGVsX3NzZXUgZGVmYXVsdF9z c2V1ID0gaW50ZWxfZGV2aWNlX2RlZmF1bHRfc3NldShpOTE1KTsKKwlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUgPSBpOTE1LT5lbmdpbmVbUkNTXTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqOworCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CisJc3RydWN0IGlu dGVsX3NzZXUgcGdfc3NldTsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKwlzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGU7CisJaW50IHJldDsKKworCWlmIChJTlRFTF9HRU4oaTkxNSkgPCA5KQorCQly ZXR1cm4gMDsKKworCWlmICghUlVOVElNRV9JTkZPKGk5MTUpLT5zc2V1Lmhhc19zbGljZV9wZykK KwkJcmV0dXJuIDA7CisKKwlpZiAoaHdlaWdodDMyKGRlZmF1bHRfc3NldS5zbGljZV9tYXNrKSA8 IDIpCisJCXJldHVybiAwOworCisJLyoKKwkgKiBHZW4xMSBWTUUgZnJpZW5kbHkgcG93ZXItZ2F0 ZWQgY29uZmlndXJhdGlvbiB3aXRoIGhhbGYgZW5hYmxlZAorCSAqIHN1Yi1zbGljZXMuCisJICov CisJcGdfc3NldSA9IGRlZmF1bHRfc3NldTsKKwlwZ19zc2V1LnNsaWNlX21hc2sgPSAxOworCXBn X3NzZXUuc3Vic2xpY2VfbWFzayA9CisJCX4ofjAgPDwgKGh3ZWlnaHQzMihkZWZhdWx0X3NzZXUu c3Vic2xpY2VfbWFzaykgLyAyKSk7CisKKwlwcl9pbmZvKCJTU0VVIHN1YnRlc3QgJyVzJywgZmxh Z3M9JXgsIGRlZl9zbGljZXM9JXUsIHBnX3NsaWNlcz0ldVxuIiwKKwkJbmFtZSwgZmxhZ3MsIGh3 ZWlnaHQzMihkZWZhdWx0X3NzZXUuc2xpY2VfbWFzayksCisJCWh3ZWlnaHQzMihwZ19zc2V1LnNs aWNlX21hc2spKTsKKworCWZpbGUgPSBtb2NrX2ZpbGUoaTkxNSk7CisJaWYgKElTX0VSUihmaWxl KSkKKwkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7CisKKwlpZiAoZmxhZ3MgJiBURVNUX1JFU0VUKQor CQlpZ3RfZ2xvYmFsX3Jlc2V0X2xvY2soaTkxNSk7CisKKwltdXRleF9sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKKworCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZp bGUtPmRyaXZlcl9wcml2KTsKKwlpZiAoSVNfRVJSKGN0eCkpIHsKKwkJcmV0ID0gUFRSX0VSUihj dHgpOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCisJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2Ny ZWF0ZV9pbnRlcm5hbChpOTE1LCBQQUdFX1NJWkUpOworCWlmIChJU19FUlIob2JqKSkgeworCQly ZXQgPSBQVFJfRVJSKG9iaik7CisJCWdvdG8gb3V0X3VubG9jazsKKwl9CisKKwl3YWtlcmVmID0g aW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CisKKwkvKiBGaXJzdCBzZXQgdGhlIGRlZmF1bHQg bWFzay4gKi8KKwlyZXQgPSBfX3NzZXVfdGVzdChpOTE1LCBuYW1lLCBmbGFncywgY3R4LCBlbmdp bmUsIG9iaiwgZGVmYXVsdF9zc2V1KTsKKwlpZiAocmV0KQorCQlnb3RvIG91dF9mYWlsOworCisJ LyogVGhlbiBzZXQgYSBwb3dlci1nYXRlZCBjb25maWd1cmF0aW9uLiAqLworCXJldCA9IF9fc3Nl dV90ZXN0KGk5MTUsIG5hbWUsIGZsYWdzLCBjdHgsIGVuZ2luZSwgb2JqLCBwZ19zc2V1KTsKKwlp ZiAocmV0KQorCQlnb3RvIG91dF9mYWlsOworCisJLyogQmFjayB0byBkZWZhdWx0cy4gKi8KKwly ZXQgPSBfX3NzZXVfdGVzdChpOTE1LCBuYW1lLCBmbGFncywgY3R4LCBlbmdpbmUsIG9iaiwgZGVm YXVsdF9zc2V1KTsKKwlpZiAocmV0KQorCQlnb3RvIG91dF9mYWlsOworCisJLyogT25lIGxhc3Qg cG93ZXItZ2F0ZWQgY29uZmlndXJhdGlvbiBmb3IgdGhlIHJvYWQuICovCisJcmV0ID0gX19zc2V1 X3Rlc3QoaTkxNSwgbmFtZSwgZmxhZ3MsIGN0eCwgZW5naW5lLCBvYmosIHBnX3NzZXUpOworCWlm IChyZXQpCisJCWdvdG8gb3V0X2ZhaWw7CisKK291dF9mYWlsOgorCWlmIChpZ3RfZmx1c2hfdGVz dChpOTE1LCBJOTE1X1dBSVRfTE9DS0VEKSkKKwkJcmV0ID0gLUVJTzsKKworCWk5MTVfZ2VtX29i amVjdF9wdXQob2JqKTsKKworCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwor CitvdXRfdW5sb2NrOgorCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisK KwlpZiAoZmxhZ3MgJiBURVNUX1JFU0VUKQorCQlpZ3RfZ2xvYmFsX3Jlc2V0X3VubG9jayhpOTE1 KTsKKworCW1vY2tfZmlsZV9mcmVlKGk5MTUsIGZpbGUpOworCisJaWYgKHJldCkKKwkJcHJfZXJy KCIlczogRmFpbGVkIHdpdGggJWQhXG4iLCBuYW1lLCByZXQpOworCisJcmV0dXJuIHJldDsKK30K Kworc3RhdGljIGludCBpZ3RfY3R4X3NzZXUodm9pZCAqYXJnKQoreworCXN0cnVjdCB7CisJCWNv bnN0IGNoYXIgKm5hbWU7CisJCXVuc2lnbmVkIGludCBmbGFnczsKKwl9ICpwaGFzZSwgcGhhc2Vz W10gPSB7CisJCXsgLm5hbWUgPSAiYmFzaWMiLCAuZmxhZ3MgPSAwIH0sCisJCXsgLm5hbWUgPSAi aWRsZSIsIC5mbGFncyA9IFRFU1RfSURMRSB9LAorCQl7IC5uYW1lID0gImJ1c3kiLCAuZmxhZ3Mg PSBURVNUX0JVU1kgfSwKKwkJeyAubmFtZSA9ICJidXN5LXJlc2V0IiwgLmZsYWdzID0gVEVTVF9C VVNZIHwgVEVTVF9SRVNFVCB9LAorCQl7IC5uYW1lID0gImJ1c3ktaWRsZSIsIC5mbGFncyA9IFRF U1RfQlVTWSB8IFRFU1RfSURMRSB9LAorCQl7IC5uYW1lID0gInJlc2V0LWlkbGUiLCAuZmxhZ3Mg PSBURVNUX1JFU0VUIHwgVEVTVF9JRExFIH0sCisJfTsKKwl1bnNpZ25lZCBpbnQgaTsKKwlpbnQg cmV0ID0gMDsKKworCWZvciAoaSA9IDAsIHBoYXNlID0gcGhhc2VzOyByZXQgPT0gMCAmJiBpIDwg QVJSQVlfU0laRShwaGFzZXMpOworCSAgICAgaSsrLCBwaGFzZSsrKQorCQlyZXQgPSBfX2lndF9j dHhfc3NldShhcmcsIHBoYXNlLT5uYW1lLCBwaGFzZS0+ZmxhZ3MpOworCisJcmV0dXJuIHJldDsK K30KKwogc3RhdGljIGludCBpZ3RfY3R4X3JlYWRvbmx5KHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKQEAgLTExNjIsNiArMTYyOSw3IEBAIGludCBp OTE1X2dlbV9jb250ZXh0X2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIAkJU1VCVEVTVChsaXZlX25vcF9zd2l0Y2gpLAogCQlTVUJURVNUKGlndF9jdHhf ZXhlYyksCiAJCVNVQlRFU1QoaWd0X2N0eF9yZWFkb25seSksCisJCVNVQlRFU1QoaWd0X2N0eF9z c2V1KSwKIAkJU1VCVEVTVChpZ3Rfdm1faXNvbGF0aW9uKSwKIAl9OwogCi0tIAoyLjE5LjEKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=