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: Thu, 24 Jan 2019 11:42:03 +0000 Message-ID: <20190124114203.18952-7-tvrtko.ursulin@linux.intel.com> References: <20190124114203.18952-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 mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 01C98899E6 for ; Thu, 24 Jan 2019 11:42:08 +0000 (UTC) In-Reply-To: <20190124114203.18952-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 b3JlIGl0LgoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGlu dGVsLmNvbT4KUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPiAjIHY2ClJldmlld2VkLWJ5OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBs aW51eC5pbnRlbC5jb20+ICMgdjYKLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMgICAgICAgfCAgMzEgKy0KIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVf Z2VtX2NvbnRleHQuYyB8IDQ3MiArKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwg NDkzIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYwppbmRleCA5MmViYmNkZTNkZWQuLjUwOGUxMzFlNDQzNCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtMTA0OSwyMyArMTA0OSwxOSBA QCBnZW44X21vZGlmeV9ycGNzX2dwdShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiB9CiAKIHN0 YXRpYyBpbnQKLWk5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4LAotCQkJCSAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAot CQkJCSAgc3RydWN0IGludGVsX3NzZXUgc3NldSkKK19faTkxNV9nZW1fY29udGV4dF9yZWNvbmZp Z3VyZV9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCQkJICAgIHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCQkgICAgc3RydWN0IGludGVsX3NzZXUgc3NldSkK IHsKIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSB0b19pbnRlbF9jb250ZXh0KGN0eCwgZW5n aW5lKTsKLQlpbnQgcmV0OworCWludCByZXQgPSAwOwogCiAJR0VNX0JVR19PTihJTlRFTF9HRU4o Y3R4LT5pOTE1KSA8IDgpOwogCUdFTV9CVUdfT04oZW5naW5lLT5pZCAhPSBSQ1MpOwogCi0JcmV0 ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp OwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KIAkvKiBOb3RoaW5nIHRvIGRvIGlmIHVubW9k aWZpZWQuICovCiAJaWYgKCFtZW1jbXAoJmNlLT5zc2V1LCAmc3NldSwgc2l6ZW9mKHNzZXUpKSkK LQkJZ290byBvdXQ7CisJCXJldHVybiAwOwogCiAJLyoKIAkgKiBJZiBjb250ZXh0IGlzIG5vdCBp ZGxlIHdlIGhhdmUgdG8gc3VibWl0IGFuIG9yZGVyZWQgcmVxdWVzdCB0byBtb2RpZnkKQEAgLTEw NzgsNyArMTA3NCwyMiBAQCBpOTE1X2dlbV9jb250ZXh0X3JlY29uZmlndXJlX3NzZXUoc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAlpZiAoIXJldCkKIAkJY2UtPnNzZXUgPSBzc2V1Owog Ci1vdXQ6CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAoraTkxNV9nZW1fY29udGV4dF9y ZWNvbmZpZ3VyZV9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCQkJICBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJICBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1 KQoreworCWludCByZXQ7CisKKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+ aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJl dCA9IF9faTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3VyZV9zc2V1KGN0eCwgZW5naW5lLCBzc2V1 KTsKKwogCW11dGV4X3VubG9jaygmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAogCXJl dHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkx NV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2Vt X2NvbnRleHQuYwppbmRleCBlMmMxZjBiYzJhYmUuLmYwMjhiZTI0OTJiOCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCkBAIC0yNCwx MCArMjQsMTMgQEAKIAogI2luY2x1ZGUgPGxpbnV4L3ByaW1lX251bWJlcnMuaD4KIAorI2luY2x1 ZGUgIi4uL2k5MTVfcmVzZXQuaCIKICNpbmNsdWRlICIuLi9pOTE1X3NlbGZ0ZXN0LmgiCiAjaW5j bHVkZSAiaTkxNV9yYW5kb20uaCIKICNpbmNsdWRlICJpZ3RfZmx1c2hfdGVzdC5oIgogI2luY2x1 ZGUgImlndF9saXZlX3Rlc3QuaCIKKyNpbmNsdWRlICJpZ3RfcmVzZXQuaCIKKyNpbmNsdWRlICJp Z3Rfc3Bpbm5lci5oIgogCiAjaW5jbHVkZSAibW9ja19kcm0uaCIKICNpbmNsdWRlICJtb2NrX2dl bV9kZXZpY2UuaCIKQEAgLTU3Niw2ICs1NzksNDc0IEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9leGVj KHZvaWQgKmFyZykKIAlyZXR1cm4gZXJyOwogfQogCitzdGF0aWMgc3RydWN0IGk5MTVfdm1hICpy cGNzX3F1ZXJ5X2JhdGNoKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQoreworCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmo7CisJdTMyICpjbWQ7CisJaW50IGVycjsKKworCWlmIChJTlRFTF9H RU4odm1hLT52bS0+aTkxNSkgPCA4KQorCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKworCW9i aiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwodm1hLT52bS0+aTkxNSwgUEFHRV9T SVpFKTsKKwlpZiAoSVNfRVJSKG9iaikpCisJCXJldHVybiBFUlJfQ0FTVChvYmopOworCisJY21k ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAob2JqLCBJOTE1X01BUF9XQik7CisJaWYgKElTX0VS UihjbWQpKSB7CisJCWVyciA9IFBUUl9FUlIoY21kKTsKKwkJZ290byBlcnI7CisJfQorCisJKmNt ZCsrID0gTUlfU1RPUkVfUkVHSVNURVJfTUVNX0dFTjg7CisJKmNtZCsrID0gaTkxNV9tbWlvX3Jl Z19vZmZzZXQoR0VOOF9SX1BXUl9DTEtfU1RBVEUpOworCSpjbWQrKyA9IGxvd2VyXzMyX2JpdHMo dm1hLT5ub2RlLnN0YXJ0KTsKKwkqY21kKysgPSB1cHBlcl8zMl9iaXRzKHZtYS0+bm9kZS5zdGFy dCk7CisJKmNtZCA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisKKwlpOTE1X2dlbV9vYmplY3RfdW5w aW5fbWFwKG9iaik7CisKKwllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4o b2JqLCBmYWxzZSk7CisJaWYgKGVycikKKwkJZ290byBlcnI7CisKKwl2bWEgPSBpOTE1X3ZtYV9p bnN0YW5jZShvYmosIHZtYS0+dm0sIE5VTEwpOworCWlmIChJU19FUlIodm1hKSkgeworCQllcnIg PSBQVFJfRVJSKHZtYSk7CisJCWdvdG8gZXJyOworCX0KKworCWVyciA9IGk5MTVfdm1hX3Bpbih2 bWEsIDAsIDAsIFBJTl9VU0VSKTsKKwlpZiAoZXJyKQorCQlnb3RvIGVycjsKKworCXJldHVybiB2 bWE7CisKK2VycjoKKwlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CisJcmV0dXJuIEVSUl9QVFIo ZXJyKTsKK30KKworc3RhdGljIGludAorZW1pdF9ycGNzX3F1ZXJ5KHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosCisJCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJc3RydWN0IGk5MTVfcmVxdWVzdCAqKnJxX291 dCkKK3sKKwlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bTsKKwlzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycTsKKwlzdHJ1Y3QgaTkxNV92bWEgKmJhdGNoOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1h OworCWludCBlcnI7CisKKwlHRU1fQlVHX09OKCFjdHgtPnBwZ3R0KTsKKwlHRU1fQlVHX09OKCFp bnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2luZSkpOworCisJdm0gPSAmY3R4LT5wcGd0 dC0+dm07CisKKwl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosIHZtLCBOVUxMKTsKKwlpZiAo SVNfRVJSKHZtYSkpCisJCXJldHVybiBQVFJfRVJSKHZtYSk7CisKKwllcnIgPSBpOTE1X2dlbV9v YmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7CisJaWYgKGVycikKKwkJcmV0dXJu IGVycjsKKworCWVyciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsIFBJTl9ISUdIIHwgUElOX1VT RVIpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwliYXRjaCA9IHJwY3NfcXVlcnlfYmF0 Y2godm1hKTsKKwlpZiAoSVNfRVJSKGJhdGNoKSkgeworCQllcnIgPSBQVFJfRVJSKGJhdGNoKTsK KwkJZ290byBlcnJfdm1hOworCX0KKworCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwg Y3R4KTsKKwlpZiAoSVNfRVJSKHJxKSkgeworCQllcnIgPSBQVFJfRVJSKHJxKTsKKwkJZ290byBl cnJfYmF0Y2g7CisJfQorCisJZXJyID0gZW5naW5lLT5lbWl0X2JiX3N0YXJ0KHJxLCBiYXRjaC0+ bm9kZS5zdGFydCwgYmF0Y2gtPm5vZGUuc2l6ZSwgMCk7CisJaWYgKGVycikKKwkJZ290byBlcnJf cmVxdWVzdDsKKworCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKGJhdGNoLCBycSwgMCk7 CisJaWYgKGVycikKKwkJZ290byBza2lwX3JlcXVlc3Q7CisKKwllcnIgPSBpOTE1X3ZtYV9tb3Zl X3RvX2FjdGl2ZSh2bWEsIHJxLCBFWEVDX09CSkVDVF9XUklURSk7CisJaWYgKGVycikKKwkJZ290 byBza2lwX3JlcXVlc3Q7CisKKwlpOTE1X2dlbV9vYmplY3Rfc2V0X2FjdGl2ZV9yZWZlcmVuY2Uo YmF0Y2gtPm9iaik7CisJaTkxNV92bWFfdW5waW4oYmF0Y2gpOworCWk5MTVfdm1hX2Nsb3NlKGJh dGNoKTsKKworCWk5MTVfdm1hX3VucGluKHZtYSk7CisKKwkqcnFfb3V0ID0gaTkxNV9yZXF1ZXN0 X2dldChycSk7CisKKwlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKKworCXJldHVybiAwOworCitza2lw X3JlcXVlc3Q6CisJaTkxNV9yZXF1ZXN0X3NraXAocnEsIGVycik7CitlcnJfcmVxdWVzdDoKKwlp OTE1X3JlcXVlc3RfYWRkKHJxKTsKK2Vycl9iYXRjaDoKKwlpOTE1X3ZtYV91bnBpbihiYXRjaCk7 CitlcnJfdm1hOgorCWk5MTVfdm1hX3VucGluKHZtYSk7CisKKwlyZXR1cm4gZXJyOworfQorCisj ZGVmaW5lIFRFU1RfSURMRQlCSVQoMCkKKyNkZWZpbmUgVEVTVF9CVVNZCUJJVCgxKQorI2RlZmlu ZSBURVNUX1JFU0VUCUJJVCgyKQorCitzdGF0aWMgaW50CitfX3NzZXVfcHJlcGFyZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkgICAg ICAgdW5zaWduZWQgaW50IGZsYWdzLAorCSAgICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4LAorCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJICAgICAgIHN0 cnVjdCBpZ3Rfc3Bpbm5lciAqKnNwaW5fb3V0KQoreworCWludCByZXQgPSAwOworCisJaWYgKGZs YWdzICYgKFRFU1RfQlVTWSB8IFRFU1RfUkVTRVQpKSB7CisJCXN0cnVjdCBpZ3Rfc3Bpbm5lciAq c3BpbjsKKwkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CisKKwkJc3BpbiA9IGt6YWxsb2Moc2l6 ZW9mKCpzcGluKSwgR0ZQX0tFUk5FTCk7CisJCWlmICghc3BpbikgeworCQkJcmV0ID0gLUVOT01F TTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJcmV0ID0gaWd0X3NwaW5uZXJfaW5pdChzcGluLCBp OTE1KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisKKwkJcnEgPSBpZ3Rfc3Bpbm5lcl9j cmVhdGVfcmVxdWVzdChzcGluLCBjdHgsIGVuZ2luZSwgTUlfTk9PUCk7CisJCWlmIChJU19FUlIo cnEpKSB7CisJCQlyZXQgPSBQVFJfRVJSKHJxKTsKKwkJCWlndF9zcGlubmVyX2Zpbmkoc3Bpbik7 CisJCQlrZnJlZShzcGluKTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJaTkxNV9yZXF1ZXN0X2Fk ZChycSk7CisKKwkJaWYgKCFpZ3Rfd2FpdF9mb3Jfc3Bpbm5lcihzcGluLCBycSkpIHsKKwkJCXBy X2VycigiJXM6IFNwaW5uZXIgZmFpbGVkIHRvIHN0YXJ0IVxuIiwgbmFtZSk7CisJCQlpZ3Rfc3Bp bm5lcl9lbmQoc3Bpbik7CisJCQlpZ3Rfc3Bpbm5lcl9maW5pKHNwaW4pOworCQkJa2ZyZWUoc3Bp bik7CisJCQlyZXQgPSAtRVRJTUVET1VUOworCQkJZ290byBvdXQ7CisJCX0KKworCQkqc3Bpbl9v dXQgPSBzcGluOworCX0KKworb3V0OgorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK19f cmVhZF9zbGljZV9jb3VudChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJICAgc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLAorCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkgICBzdHJ1 Y3QgaWd0X3NwaW5uZXIgKnNwaW4sCisJCSAgIHUzMiAqcnBjcykKK3sKKwlzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSA9IE5VTEw7CisJdTMyIHNfbWFzaywgc19zaGlmdDsKKwl1bnNpZ25lZCBpbnQg Y250OworCXUzMiAqYnVmLCB2YWw7CisJbG9uZyByZXQ7CisKKwlyZXQgPSBlbWl0X3JwY3NfcXVl cnkob2JqLCBjdHgsIGVuZ2luZSwgJnJxKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJ aWYgKHNwaW4pCisJCWlndF9zcGlubmVyX2VuZChzcGluKTsKKworCXJldCA9IGk5MTVfcmVxdWVz dF93YWl0KHJxLCBJOTE1X1dBSVRfTE9DS0VELCBNQVhfU0NIRURVTEVfVElNRU9VVCk7CisJaWYg KHJldCA8PSAwKQorCQlyZXR1cm4gcmV0IDwgMCA/IHJldCA6IC1FVElNRTsKKworCWk5MTVfcmVx dWVzdF9wdXQocnEpOworCisJYnVmID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAob2JqLCBJOTE1 X01BUF9XQik7CisJaWYgKElTX0VSUihidWYpKSB7CisJCXJldCA9IFBUUl9FUlIoYnVmKTsKKwkJ cmV0dXJuIHJldDsKKwl9CisKKwlpZiAoSU5URUxfR0VOKGk5MTUpID49IDExKSB7CisJCXNfbWFz ayA9IEdFTjExX1JQQ1NfU19DTlRfTUFTSzsKKwkJc19zaGlmdCA9IEdFTjExX1JQQ1NfU19DTlRf U0hJRlQ7CisJfSBlbHNlIHsKKwkJc19tYXNrID0gR0VOOF9SUENTX1NfQ05UX01BU0s7CisJCXNf c2hpZnQgPSBHRU44X1JQQ1NfU19DTlRfU0hJRlQ7CisJfQorCisJdmFsID0gKmJ1ZjsKKwljbnQg PSAodmFsICYgc19tYXNrKSA+PiBzX3NoaWZ0OworCSpycGNzID0gdmFsOworCisJaTkxNV9nZW1f b2JqZWN0X3VucGluX21hcChvYmopOworCisJcmV0dXJuIGNudDsKK30KKworc3RhdGljIGludAor X19jaGVja19ycGNzKGNvbnN0IGNoYXIgKm5hbWUsIHUzMiBycGNzLCBpbnQgc2xpY2VzLCB1bnNp Z25lZCBpbnQgZXhwZWN0ZWQsCisJICAgICBjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIg KnN1ZmZpeCkKK3sKKwlpZiAoc2xpY2VzID09IGV4cGVjdGVkKQorCQlyZXR1cm4gMDsKKworCWlm IChzbGljZXMgPCAwKSB7CisJCXByX2VycigiJXM6ICVzIHJlYWQgc2xpY2UgY291bnQgZmFpbGVk IHdpdGggJWQlc1xuIiwKKwkJICAgICAgIG5hbWUsIHByZWZpeCwgc2xpY2VzLCBzdWZmaXgpOwor CQlyZXR1cm4gc2xpY2VzOworCX0KKworCXByX2VycigiJXM6ICVzIHNsaWNlIGNvdW50ICVkIGlz IG5vdCAldSVzXG4iLAorCSAgICAgICBuYW1lLCBwcmVmaXgsIHNsaWNlcywgZXhwZWN0ZWQsIHN1 ZmZpeCk7CisKKwlwcl9pbmZvKCJSUENTPTB4JXg7ICV1JXN4JXUlc1xuIiwKKwkJcnBjcywgc2xp Y2VzLAorCQkocnBjcyAmIEdFTjhfUlBDU19TX0NOVF9FTkFCTEUpID8gIioiIDogIiIsCisJCShy cGNzICYgR0VOOF9SUENTX1NTX0NOVF9NQVNLKSA+PiBHRU44X1JQQ1NfU1NfQ05UX1NISUZULAor CQkocnBjcyAmIEdFTjhfUlBDU19TU19DTlRfRU5BQkxFKSA/ICIqIiA6ICIiKTsKKworCXJldHVy biAtRUlOVkFMOworfQorCitzdGF0aWMgaW50CitfX3NzZXVfZmluaXNoKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LAorCSAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJICAgICAgdW5zaWdu ZWQgaW50IGZsYWdzLAorCSAgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJICAg ICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmtjdHgsCisJICAgICAgc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAorCSAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos CisJICAgICAgdW5zaWduZWQgaW50IGV4cGVjdGVkLAorCSAgICAgIHN0cnVjdCBpZ3Rfc3Bpbm5l ciAqc3BpbikKK3sKKwl1bnNpZ25lZCBpbnQgc2xpY2VzID0KKwkJaHdlaWdodDMyKGludGVsX2Rl dmljZV9kZWZhdWx0X3NzZXUoaTkxNSkuc2xpY2VfbWFzayk7CisJdTMyIHJwY3MgPSAwOworCWlu dCByZXQgPSAwOworCisJaWYgKGZsYWdzICYgVEVTVF9SRVNFVCkgeworCQlyZXQgPSBpOTE1X3Jl c2V0X2VuZ2luZShlbmdpbmUsICJzc2V1Iik7CisJCWlmIChyZXQpCisJCQlnb3RvIG91dDsKKwl9 CisKKwlyZXQgPSBfX3JlYWRfc2xpY2VfY291bnQoaTkxNSwgY3R4LCBlbmdpbmUsIG9iaiwKKwkJ CQkgZmxhZ3MgJiBURVNUX1JFU0VUID8gTlVMTCA6IHNwaW4sICZycGNzKTsKKwlyZXQgPSBfX2No ZWNrX3JwY3MobmFtZSwgcnBjcywgcmV0LCBleHBlY3RlZCwgIkNvbnRleHQiLCAiISIpOworCWlm IChyZXQpCisJCWdvdG8gb3V0OworCisJcmV0ID0gX19yZWFkX3NsaWNlX2NvdW50KGk5MTUsIGtj dHgsIGVuZ2luZSwgb2JqLCBOVUxMLCAmcnBjcyk7CisJcmV0ID0gX19jaGVja19ycGNzKG5hbWUs IHJwY3MsIHJldCwgc2xpY2VzLCAiS2VybmVsIGNvbnRleHQiLCAiISIpOworCitvdXQ6CisJaWYg KHNwaW4pCisJCWlndF9zcGlubmVyX2VuZChzcGluKTsKKworCWlmICgoZmxhZ3MgJiBURVNUX0lE TEUpICYmIHJldCA9PSAwKSB7CisJCXJldCA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoaTkxNSwK KwkJCQkJICAgICBJOTE1X1dBSVRfTE9DS0VELAorCQkJCQkgICAgIE1BWF9TQ0hFRFVMRV9USU1F T1VUKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisKKwkJcmV0ID0gX19yZWFkX3NsaWNl X2NvdW50KGk5MTUsIGN0eCwgZW5naW5lLCBvYmosIE5VTEwsICZycGNzKTsKKwkJcmV0ID0gX19j aGVja19ycGNzKG5hbWUsIHJwY3MsIHJldCwgZXhwZWN0ZWQsCisJCQkJICAgIkNvbnRleHQiLCAi IGFmdGVyIGlkbGUhIik7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAorX19z c2V1X3Rlc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJICAgIGNvbnN0IGNoYXIg Km5hbWUsCisJICAgIHVuc2lnbmVkIGludCBmbGFncywKKwkgICAgc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmN0eCwKKwkgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCSAgICBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCSAgICBzdHJ1Y3QgaW50ZWxfc3NldSBz c2V1KQoreworCXN0cnVjdCBpZ3Rfc3Bpbm5lciAqc3BpbiA9IE5VTEw7CisJc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmtjdHg7CisJaW50IHJldDsKKworCWtjdHggPSBrZXJuZWxfY29udGV4dChp OTE1KTsKKwlpZiAoSVNfRVJSKGtjdHgpKQorCQlyZXR1cm4gUFRSX0VSUihrY3R4KTsKKworCXJl dCA9IF9fc3NldV9wcmVwYXJlKGk5MTUsIG5hbWUsIGZsYWdzLCBjdHgsIGVuZ2luZSwgJnNwaW4p OworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJcmV0ID0gX19pOTE1X2dlbV9jb250ZXh0X3Jl Y29uZmlndXJlX3NzZXUoY3R4LCBlbmdpbmUsIHNzZXUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0 OworCisJcmV0ID0gX19zc2V1X2ZpbmlzaChpOTE1LCBuYW1lLCBmbGFncywgY3R4LCBrY3R4LCBl bmdpbmUsIG9iaiwKKwkJCSAgICBod2VpZ2h0MzIoc3NldS5zbGljZV9tYXNrKSwgc3Bpbik7CisK K291dDoKKwlpZiAoc3BpbikgeworCQlpZ3Rfc3Bpbm5lcl9lbmQoc3Bpbik7CisJCWlndF9zcGlu bmVyX2Zpbmkoc3Bpbik7CisJCWtmcmVlKHNwaW4pOworCX0KKworCWtlcm5lbF9jb250ZXh0X2Ns b3NlKGtjdHgpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAorX19pZ3RfY3R4X3Nz ZXUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJICAgICAgIGNvbnN0IGNoYXIgKm5h bWUsCisJICAgICAgIHVuc2lnbmVkIGludCBmbGFncykKK3sKKwlzdHJ1Y3QgaW50ZWxfc3NldSBk ZWZhdWx0X3NzZXUgPSBpbnRlbF9kZXZpY2VfZGVmYXVsdF9zc2V1KGk5MTUpOworCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGk5MTUtPmVuZ2luZVtSQ1NdOworCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKKwlz dHJ1Y3QgaW50ZWxfc3NldSBwZ19zc2V1OworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOworCXN0 cnVjdCBkcm1fZmlsZSAqZmlsZTsKKwlpbnQgcmV0OworCisJaWYgKElOVEVMX0dFTihpOTE1KSA8 IDkpCisJCXJldHVybiAwOworCisJaWYgKCFSVU5USU1FX0lORk8oaTkxNSktPnNzZXUuaGFzX3Ns aWNlX3BnKQorCQlyZXR1cm4gMDsKKworCWlmIChod2VpZ2h0MzIoZGVmYXVsdF9zc2V1LnNsaWNl X21hc2spIDwgMikKKwkJcmV0dXJuIDA7CisKKwkvKgorCSAqIEdlbjExIFZNRSBmcmllbmRseSBw b3dlci1nYXRlZCBjb25maWd1cmF0aW9uIHdpdGggaGFsZiBlbmFibGVkCisJICogc3ViLXNsaWNl cy4KKwkgKi8KKwlwZ19zc2V1ID0gZGVmYXVsdF9zc2V1OworCXBnX3NzZXUuc2xpY2VfbWFzayA9 IDE7CisJcGdfc3NldS5zdWJzbGljZV9tYXNrID0KKwkJfih+MCA8PCAoaHdlaWdodDMyKGRlZmF1 bHRfc3NldS5zdWJzbGljZV9tYXNrKSAvIDIpKTsKKworCXByX2luZm8oIlNTRVUgc3VidGVzdCAn JXMnLCBmbGFncz0leCwgZGVmX3NsaWNlcz0ldSwgcGdfc2xpY2VzPSV1XG4iLAorCQluYW1lLCBm bGFncywgaHdlaWdodDMyKGRlZmF1bHRfc3NldS5zbGljZV9tYXNrKSwKKwkJaHdlaWdodDMyKHBn X3NzZXUuc2xpY2VfbWFzaykpOworCisJZmlsZSA9IG1vY2tfZmlsZShpOTE1KTsKKwlpZiAoSVNf RVJSKGZpbGUpKQorCQlyZXR1cm4gUFRSX0VSUihmaWxlKTsKKworCWlmIChmbGFncyAmIFRFU1Rf UkVTRVQpCisJCWlndF9nbG9iYWxfcmVzZXRfbG9jayhpOTE1KTsKKworCW11dGV4X2xvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQo aTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOworCWlmIChJU19FUlIoY3R4KSkgeworCQlyZXQgPSBQ VFJfRVJSKGN0eCk7CisJCWdvdG8gb3V0X3VubG9jazsKKwl9CisKKwlvYmogPSBpOTE1X2dlbV9v YmplY3RfY3JlYXRlX2ludGVybmFsKGk5MTUsIFBBR0VfU0laRSk7CisJaWYgKElTX0VSUihvYmop KSB7CisJCXJldCA9IFBUUl9FUlIob2JqKTsKKwkJZ290byBvdXRfdW5sb2NrOworCX0KKworCXdh a2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKKworCS8qIEZpcnN0IHNldCB0aGUg ZGVmYXVsdCBtYXNrLiAqLworCXJldCA9IF9fc3NldV90ZXN0KGk5MTUsIG5hbWUsIGZsYWdzLCBj dHgsIGVuZ2luZSwgb2JqLCBkZWZhdWx0X3NzZXUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2Zh aWw7CisKKwkvKiBUaGVuIHNldCBhIHBvd2VyLWdhdGVkIGNvbmZpZ3VyYXRpb24uICovCisJcmV0 ID0gX19zc2V1X3Rlc3QoaTkxNSwgbmFtZSwgZmxhZ3MsIGN0eCwgZW5naW5lLCBvYmosIHBnX3Nz ZXUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2ZhaWw7CisKKwkvKiBCYWNrIHRvIGRlZmF1bHRz LiAqLworCXJldCA9IF9fc3NldV90ZXN0KGk5MTUsIG5hbWUsIGZsYWdzLCBjdHgsIGVuZ2luZSwg b2JqLCBkZWZhdWx0X3NzZXUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2ZhaWw7CisKKwkvKiBP bmUgbGFzdCBwb3dlci1nYXRlZCBjb25maWd1cmF0aW9uIGZvciB0aGUgcm9hZC4gKi8KKwlyZXQg PSBfX3NzZXVfdGVzdChpOTE1LCBuYW1lLCBmbGFncywgY3R4LCBlbmdpbmUsIG9iaiwgcGdfc3Nl dSk7CisJaWYgKHJldCkKKwkJZ290byBvdXRfZmFpbDsKKworb3V0X2ZhaWw6CisJaWYgKGlndF9m bHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpKQorCQlyZXQgPSAtRUlPOworCisJaTkx NV9nZW1fb2JqZWN0X3B1dChvYmopOworCisJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2Fr ZXJlZik7CisKK291dF91bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKKworCWlmIChmbGFncyAmIFRFU1RfUkVTRVQpCisJCWlndF9nbG9iYWxfcmVzZXRfdW5s b2NrKGk5MTUpOworCisJbW9ja19maWxlX2ZyZWUoaTkxNSwgZmlsZSk7CisKKwlpZiAocmV0KQor CQlwcl9lcnIoIiVzOiBGYWlsZWQgd2l0aCAlZCFcbiIsIG5hbWUsIHJldCk7CisKKwlyZXR1cm4g cmV0OworfQorCitzdGF0aWMgaW50IGlndF9jdHhfc3NldSh2b2lkICphcmcpCit7CisJc3RydWN0 IHsKKwkJY29uc3QgY2hhciAqbmFtZTsKKwkJdW5zaWduZWQgaW50IGZsYWdzOworCX0gKnBoYXNl LCBwaGFzZXNbXSA9IHsKKwkJeyAubmFtZSA9ICJiYXNpYyIsIC5mbGFncyA9IDAgfSwKKwkJeyAu bmFtZSA9ICJpZGxlIiwgLmZsYWdzID0gVEVTVF9JRExFIH0sCisJCXsgLm5hbWUgPSAiYnVzeSIs IC5mbGFncyA9IFRFU1RfQlVTWSB9LAorCQl7IC5uYW1lID0gImJ1c3ktcmVzZXQiLCAuZmxhZ3Mg PSBURVNUX0JVU1kgfCBURVNUX1JFU0VUIH0sCisJCXsgLm5hbWUgPSAiYnVzeS1pZGxlIiwgLmZs YWdzID0gVEVTVF9CVVNZIHwgVEVTVF9JRExFIH0sCisJCXsgLm5hbWUgPSAicmVzZXQtaWRsZSIs IC5mbGFncyA9IFRFU1RfUkVTRVQgfCBURVNUX0lETEUgfSwKKwl9OworCXVuc2lnbmVkIGludCBp OworCWludCByZXQgPSAwOworCisJZm9yIChpID0gMCwgcGhhc2UgPSBwaGFzZXM7IHJldCA9PSAw ICYmIGkgPCBBUlJBWV9TSVpFKHBoYXNlcyk7CisJICAgICBpKyssIHBoYXNlKyspCisJCXJldCA9 IF9faWd0X2N0eF9zc2V1KGFyZywgcGhhc2UtPm5hbWUsIHBoYXNlLT5mbGFncyk7CisKKwlyZXR1 cm4gcmV0OworfQorCiBzdGF0aWMgaW50IGlndF9jdHhfcmVhZG9ubHkodm9pZCAqYXJnKQogewog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwpAQCAtMTE2Miw2ICsxNjMzLDcg QEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogCQlTVUJURVNUKGxpdmVfbm9wX3N3aXRjaCksCiAJCVNVQlRFU1Qo aWd0X2N0eF9leGVjKSwKIAkJU1VCVEVTVChpZ3RfY3R4X3JlYWRvbmx5KSwKKwkJU1VCVEVTVChp Z3RfY3R4X3NzZXUpLAogCQlTVUJURVNUKGlndF92bV9pc29sYXRpb24pLAogCX07CiAKLS0gCjIu MTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==