From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 2/7] drm/i915: Introduce per-engine workarounds Date: Fri, 30 Nov 2018 17:44:07 +0000 Message-ID: <20181130174412.15767-3-tvrtko.ursulin@linux.intel.com> References: <20181130174412.15767-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181130174412.15767-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 Cc: intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCldlIHN0b3Bw ZWQgcmUtYXBwbHlpbmcgdGhlIEdUIHdvcmthcm91bmRzIGFmdGVyIGVuZ2luZSByZXNldCBzaW5j ZSBjb21taXQKNTliNDQ5ZDVjODJhICgiZHJtL2k5MTU6IFNwbGl0IG91dCBmdW5jdGlvbnMgZm9y IGRpZmZlcmVudCBraW5kcyBvZgp3b3JrYXJvdW5kcyIpLgoKSXNzdWUgd2l0aCB0aGlzIGlzIHRo YXQgc29tZSBvZiB0aGUgR1Qgd29ya2Fyb3VuZHMgbGl2ZSBpbiB0aGUgTU1JTyBzcGFjZQp3aGlj aCBnZXRzIGxvc3QgZHVyaW5nIGVuZ2luZSByZXNldHMuIFNvIGZhciB0aGUgcmVnaXN0ZXJzIGlu IDB4Mnh4eCBhbmQKMHhieHh4IGFkZHJlc3MgcmFuZ2UgaGF2ZSBiZWVuIGlkZW50aWZpZWQgdG8g YmUgYWZmZWN0ZWQuCgpUaGlzIGxvc2luZyBvZiBhcHBsaWVkIHdvcmthcm91bmRzIGhhcyBvYnZp b3VzIG5lZ2F0aXZlIGVmZmVjdHMgYW5kIGNhbgpldmVuIGxlYWQgdG8gaGFyZCBzeXN0ZW0gaGFu Z3MgKHNlZSB0aGUgbGlua2VkIEJ1Z3ppbGxhKS4KClJhdGhlciB0aGFuIGp1c3QgcmVzdG9yaW5n IHRoaXMgcmUtYXBwbGljYXRpb24sIGJlY2F1c2Ugd2UgaGF2ZSBhbHNvCm9ic2VydmVkIHRoYXQg aXQgaXMgbm90IHNhZmUgdG8ganVzdCByZS13cml0ZSBhbGwgR1Qgd29ya2Fyb3VuZHMgYWZ0ZXIK ZW5naW5lIHJlc2V0cyAoR1BVIG1pZ2h0IGJlIGxpdmUgYW5kIHdlaXJkIGhhcmR3YXJlIHN0YXRl cyBjYW4gaGFwcGVuKSwKd2UgaW50cm9kdWNlIGEgbmV3IGNsYXNzIG9mIHBlci1lbmdpbmUgd29y a2Fyb3VuZHMgYW5kIG1vdmUgb25seSB0aGUKYWZmZWN0ZWQgR1Qgd29ya2Fyb3VuZHMgb3Zlci4K ClVzaW5nIHRoZSBmcmFtZXdvcmsgaW50cm9kdWNlZCBpbiB0aGUgcHJldmlvdXMgcGF0Y2gsIHdl IHRoZXJlZm9yZSBhZnRlcgplbmdpbmUgcmVzZXQsIHJlLWFwcGx5IG9ubHkgdGhlIHdvcmthcm91 bmRzIGxpdmluZyBpbiB0aGUgYWZmZWN0ZWQgTU1JTwphZGRyZXNzIHJhbmdlcy4KClNpZ25lZC1v ZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkJ1Z3ppbGxh OiBodHRwczovL2J1Z3ppbGxhLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3OTQ1 CkZpeGVzOiA1OWI0NDlkNWM4MmEgKCJkcm0vaTkxNTogU3BsaXQgb3V0IGZ1bmN0aW9ucyBmb3Ig ZGlmZmVyZW50IGtpbmRzIG9mIHdvcmthcm91bmRzIikKQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eu a3VvcHBhbGFAbGludXguaW50ZWwuY29tPgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29u LmNvLnVrPgpDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6 IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KQ2M6IFJv ZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KQ2M6IGludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3Mu YyAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgfCAg IDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oICB8ICAgMiArCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jIHwgMjQ5ICsrKysrKysrKysr KystLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5oIHwg ICAzICsKIDUgZmlsZXMgY2hhbmdlZCwgMTQ4IGluc2VydGlvbnMoKyksIDExMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IDc1OWMwZmQ1OGY4 Yy4uZWY1ZDIwMmU5ZDQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9l bmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwpA QCAtNzIzLDYgKzcyMyw4IEBAIHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXBfY29tbW9uKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlfX2ludGVsX2NvbnRleHRfdW5waW4oaTkxNS0+ a2VybmVsX2NvbnRleHQsIGVuZ2luZSk7CiAKIAlpOTE1X3RpbWVsaW5lX2ZpbmkoJmVuZ2luZS0+ dGltZWxpbmUpOworCisJaW50ZWxfd2FfbGlzdF9mcmVlKCZlbmdpbmUtPndhX2xpc3QpOwogfQog CiB1NjQgaW50ZWxfZW5naW5lX2dldF9hY3RpdmVfaGVhZChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDExZjRlNjE0ODU1 Ny4uZGZhZmMzZjcxMGQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMTYxNyw2ICsx NjE3LDggQEAgc3RhdGljIGJvb2wgdW5leHBlY3RlZF9zdGFydGluZ19zdGF0ZShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIHN0YXRpYyBpbnQgZ2VuOF9pbml0X2NvbW1vbl9yaW5n KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKKwlpbnRlbF9lbmdpbmVfd29ya2Fy b3VuZHNfYXBwbHkoZW5naW5lKTsKKwogCWludGVsX21vY3NfaW5pdF9lbmdpbmUoZW5naW5lKTsK IAogCWludGVsX2VuZ2luZV9yZXNldF9icmVhZGNydW1icyhlbmdpbmUpOwpAQCAtMjMxNCw2ICsy MzE2LDggQEAgaW50IGxvZ2ljYWxfcmVuZGVyX3JpbmdfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCiAJCQkgIHJldCk7CiAJfQogCisJaW50ZWxfZW5naW5lX3dvcmthcm91bmRz X2luaXQoZW5naW5lKTsKKwogCXJldHVybiAwOwogCiBlcnJfY2xlYW51cF9jb21tb246CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggOGEyMjcwYjIwOWIwLi5jNWZm M2QzMWNhYjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTE1 LDYgKzE1LDcgQEAKICNpbmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCiAjaW5jbHVkZSAiaTkxNV90 aW1lbGluZS5oIgogI2luY2x1ZGUgImludGVsX2dwdV9jb21tYW5kcy5oIgorI2luY2x1ZGUgImlu dGVsX3dvcmthcm91bmRzLmgiCiAKIHN0cnVjdCBkcm1fcHJpbnRlcjsKIHN0cnVjdCBpOTE1X3Nj aGVkX2F0dHI7CkBAIC00NTEsNiArNDUyLDcgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiAK IAlzdHJ1Y3QgaW50ZWxfaHdfc3RhdHVzX3BhZ2Ugc3RhdHVzX3BhZ2U7CiAJc3RydWN0IGk5MTVf Y3R4X3dvcmthcm91bmRzIHdhX2N0eDsKKwlzdHJ1Y3QgaTkxNV93YV9saXN0IHdhX2xpc3Q7CiAJ c3RydWN0IGk5MTVfdm1hICpzY3JhdGNoOwogCiAJdTMyICAgICAgICAgICAgIGlycV9rZWVwX21h c2s7IC8qIGFsd2F5cyBrZWVwIHRoZXNlIGludGVycnVwdHMgKi8KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF93b3JrYXJvdW5kcy5jCmluZGV4IGZmMjBlYmY5ZTA0MC4uYmU2M2EyYWYzNDgxIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMKQEAgLTY1MywxNyArNjUz LDYgQEAgc3RhdGljIHZvaWQgZ2VuOV9ndF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwgPSAmZGV2 X3ByaXYtPmd0X3dhX2xpc3Q7CiAKLQkvKiBXYUNvbnRleHRTd2l0Y2hXaXRoQ29uY3VycmVudFRM QkludmFsaWRhdGU6c2tsLGJ4dCxrYmwsZ2xrLGNmbCAqLwotCXdhX21hc2tlZF9lbih3YWwsCi0J CSAgICAgR0VOOV9DU0ZFX0NISUNLRU4xX1JDUywKLQkJICAgICBHRU45X1BSRUVNUFRfR1BHUFVf U1lOQ19TV0lUQ0hfRElTQUJMRSk7Ci0KLQotCS8qIFdhRW5hYmxlTGJzU2xhUmV0cnlUaW1lckRl Y3JlbWVudDpza2wsYnh0LGtibCxnbGssY2ZsICovCi0Jd2Ffd3JpdGVfb3Iod2FsLAotCQkgICAg QkRXX1NDUkFUQ0gxLAotCQkgICAgR0VOOV9MQlNfU0xBX1JFVFJZX1RJTUVSX0RFQ1JFTUVOVF9F TkFCTEUpOwotCiAJLyogV2FEaXNhYmxlS2lsbExvZ2ljOmJ4dCxza2wsa2JsICovCiAJaWYgKCFJ U19DT0ZGRUVMQUtFKGRldl9wcml2KSkKIAkJd2Ffd3JpdGVfb3Iod2FsLApAQCAtNjg1LDI0ICs2 NzQsNiBAQCBzdGF0aWMgdm9pZCBnZW45X2d0X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXdhX3dyaXRlX29yKHdhbCwKIAkJICAgIEdBTV9FQ09D SEssCiAJCSAgICBCRFdfRElTQUJMRV9IRENfSU5WQUxJREFUSU9OKTsKLQotCS8qIFdhUHJvZ3Jh bUwzU3FjUmVnMURlZmF1bHRGb3JQZXJmOmJ4dCxnbGsgKi8KLQlpZiAoSVNfR0VOOV9MUChkZXZf cHJpdikpCi0JCXdhX3dyaXRlX21hc2tlZF9vcih3YWwsCi0JCQkJICAgR0VOOF9MM1NRQ1JFRzEs Ci0JCQkJICAgTDNfUFJJT19DUkVESVRTX01BU0ssCi0JCQkJICAgTDNfR0VORVJBTF9QUklPX0NS RURJVFMoNjIpIHwKLQkJCQkgICBMM19ISUdIX1BSSU9fQ1JFRElUUygyKSk7Ci0KLQkvKiBXYU9D TENvaGVyZW50TGluZUZsdXNoOnNrbCxieHQsa2JsLGNmbCAqLwotCXdhX3dyaXRlX29yKHdhbCwK LQkJICAgIEdFTjhfTDNTUUNSRUc0LAotCQkgICAgR0VOOF9MUVNDX0ZMVVNIX0NPSEVSRU5UX0xJ TkVTKTsKLQotCS8qIFdhRW5hYmxlUHJlZW1wdGlvbkdyYW51bGFyaXR5Q29udHJvbEJ5VU1EOnNr bCxieHQsa2JsLGNmbCxbY25sXSAqLwotCXdhX21hc2tlZF9lbih3YWwsCi0JCSAgICAgR0VON19G Rl9TTElDRV9DU19DSElDS0VOMSwKLQkJICAgICBHRU45X0ZGU0NfUEVSQ1RYX1BSRUVNUFRfQ1RS TCk7CiB9CiAKIHN0YXRpYyB2b2lkIHNrbF9ndF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKQEAgLTcxMSwxMSArNjgyLDYgQEAgc3RhdGljIHZvaWQg c2tsX2d0X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCiAJZ2VuOV9ndF93b3JrYXJvdW5kc19pbml0KGRldl9wcml2KTsKIAotCS8qIFdhRW5hYmxl R2Fwc1RzdkNyZWRpdEZpeDpza2wgKi8KLQl3YV93cml0ZV9vcih3YWwsCi0JCSAgICBHRU44X0dB UkJDTlRMLAotCQkgICAgR0VOOV9HQVBTX1RTVl9DUkVESVRfRElTQUJMRSk7Ci0KIAkvKiBXYURp c2FibGVHYWZzVW5pdENsa0dhdGluZzpza2wgKi8KIAl3YV93cml0ZV9vcih3YWwsCiAJCSAgICBH RU43X1VDR0NUTDQsCkBAIC03MzQsMTEgKzcwMCw2IEBAIHN0YXRpYyB2b2lkIGJ4dF9ndF93b3Jr YXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCWdlbjlf Z3Rfd29ya2Fyb3VuZHNfaW5pdChkZXZfcHJpdik7CiAKLQkvKiBXYURpc2FibGVQb29sZWRFdUxv YWRCYWxhbmNpbmdGaXg6Ynh0ICovCi0Jd2FfbWFza2VkX2VuKHdhbCwKLQkJICAgICBGRl9TTElD RV9DU19DSElDS0VOMiwKLQkJICAgICBHRU45X1BPT0xFRF9FVV9MT0FEX0JBTEFOQ0lOR19GSVhf RElTQUJMRSk7Ci0KIAkvKiBXYUluUGxhY2VEZWNvbXByZXNzaW9uSGFuZzpieHQgKi8KIAl3YV93 cml0ZV9vcih3YWwsCiAJCSAgICBHRU45X0dBTVRfRUNPX1JFR19SV19JQSwKQEAgLTc1MSwxMSAr NzEyLDYgQEAgc3RhdGljIHZvaWQga2JsX2d0X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJZ2VuOV9ndF93b3JrYXJvdW5kc19pbml0KGRldl9w cml2KTsKIAotCS8qIFdhRW5hYmxlR2Fwc1RzdkNyZWRpdEZpeDprYmwgKi8KLQl3YV93cml0ZV9v cih3YWwsCi0JCSAgICBHRU44X0dBUkJDTlRMLAotCQkgICAgR0VOOV9HQVBTX1RTVl9DUkVESVRf RElTQUJMRSk7Ci0KIAkvKiBXYURpc2FibGVEeW5hbWljQ3JlZGl0U2hhcmluZzprYmwgKi8KIAlp ZiAoSVNfS0JMX1JFVklEKGRldl9wcml2LCAwLCBLQkxfUkVWSURfQjApKQogCQl3YV93cml0ZV9v cih3YWwsCkBAIC03NzEsMjEgKzcyNyw2IEBAIHN0YXRpYyB2b2lkIGtibF9ndF93b3JrYXJvdW5k c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAl3YV93cml0ZV9vcih3 YWwsCiAJCSAgICBHRU45X0dBTVRfRUNPX1JFR19SV19JQSwKIAkJICAgIEdBTVRfRUNPX0VOQUJM RV9JTl9QTEFDRV9ERUNPTVBSRVNTKTsKLQotCS8qIFdhS0JMVkVDU1NlbWFwaG9yZVdhaXRQb2xs OmtibCAqLwotCWlmIChJU19LQkxfUkVWSUQoZGV2X3ByaXYsIEtCTF9SRVZJRF9BMCwgS0JMX1JF VklEX0UwKSkgewotCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Ci0JCXVuc2lnbmVk IGludCB0bXA7Ci0KLQkJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIHRtcCkgewot CQkJaWYgKGVuZ2luZS0+aWQgPT0gUkNTKQotCQkJCWNvbnRpbnVlOwotCi0JCQl3YV93cml0ZSh3 YWwsCi0JCQkJIFJJTkdfU0VNQV9XQUlUX1BPTEwoZW5naW5lLT5tbWlvX2Jhc2UpLAotCQkJCSAx KTsKLQkJfQotCX0KIH0KIAogc3RhdGljIHZvaWQgZ2xrX2d0X3dvcmthcm91bmRzX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpAQCAtNzk5LDExICs3NDAsNiBAQCBzdGF0 aWMgdm9pZCBjZmxfZ3Rfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAKIAlnZW45X2d0X3dvcmthcm91bmRzX2luaXQoZGV2X3ByaXYpOwogCi0JLyog V2FFbmFibGVHYXBzVHN2Q3JlZGl0Rml4OmNmbCAqLwotCXdhX3dyaXRlX29yKHdhbCwKLQkJICAg IEdFTjhfR0FSQkNOVEwsCi0JCSAgICBHRU45X0dBUFNfVFNWX0NSRURJVF9ESVNBQkxFKTsKLQog CS8qIFdhRGlzYWJsZUdhZnNVbml0Q2xrR2F0aW5nOmNmbCAqLwogCXdhX3dyaXRlX29yKHdhbCwK IAkJICAgIEdFTjdfVUNHQ1RMNCwKQEAgLTg5NCwxMSArODMwLDYgQEAgc3RhdGljIHZvaWQgY25s X2d0X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CXdhX3dyaXRlX29yKHdhbCwKIAkJICAgIEdFTjlfR0FNVF9FQ09fUkVHX1JXX0lBLAogCQkgICAg R0FNVF9FQ09fRU5BQkxFX0lOX1BMQUNFX0RFQ09NUFJFU1MpOwotCi0JLyogV2FFbmFibGVQcmVl bXB0aW9uR3JhbnVsYXJpdHlDb250cm9sQnlVTUQ6Y25sICovCi0Jd2FfbWFza2VkX2VuKHdhbCwK LQkJICAgICBHRU43X0ZGX1NMSUNFX0NTX0NISUNLRU4xLAotCQkgICAgIEdFTjlfRkZTQ19QRVJD VFhfUFJFRU1QVF9DVFJMKTsKIH0KIAogc3RhdGljIHZvaWQgaWNsX2d0X3dvcmthcm91bmRzX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpAQCAtOTA3LDUzICs4MzgsMTcg QEAgc3RhdGljIHZvaWQgaWNsX2d0X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogCiAJd2FfaW5pdF9tY3IoZGV2X3ByaXYpOwogCi0JLyogVGhpcyBp cyBub3QgYW4gV2EuIEVuYWJsZSBmb3IgYmV0dGVyIGltYWdlIHF1YWxpdHkgKi8KLQl3YV9tYXNr ZWRfZW4od2FsLAotCQkgICAgXzNEX0NISUNLRU4zLAotCQkgICAgXzNEX0NISUNLRU4zX0FBX0xJ TkVfUVVBTElUWV9GSVhfRU5BQkxFKTsKLQogCS8qIFdhSW5QbGFjZURlY29tcHJlc3Npb25IYW5n OmljbCAqLwogCXdhX3dyaXRlX29yKHdhbCwKIAkJICAgIEdFTjlfR0FNVF9FQ09fUkVHX1JXX0lB LAogCQkgICAgR0FNVF9FQ09fRU5BQkxFX0lOX1BMQUNFX0RFQ09NUFJFU1MpOwogCi0JLyogV2FQ aXBlbGluZUZsdXNoQ29oZXJlbnRMaW5lczppY2wgKi8KLQl3YV93cml0ZV9vcih3YWwsCi0JCSAg ICBHRU44X0wzU1FDUkVHNCwKLQkJICAgIEdFTjhfTFFTQ19GTFVTSF9DT0hFUkVOVF9MSU5FUyk7 Ci0KLQkvKiBXYV8xNDA1NTQzNjIyOmljbAotCSAqIEZvcm1lcmx5IGtub3duIGFzIFdhR0FQWlBy aW9yaXR5U2NoZW1lCi0JICovCi0Jd2Ffd3JpdGVfb3Iod2FsLAotCQkgICAgR0VOOF9HQVJCQ05U TCwKLQkJICAgIEdFTjExX0FSQklUUkFUSU9OX1BSSU9fT1JERVJfTUFTSyk7Ci0KLQkvKiBXYV8x NjA0MjIzNjY0OmljbAotCSAqIEZvcm1lcmx5IGtub3duIGFzIFdhTDNCYW5rQWRkcmVzc0hhc2hp bmcKLQkgKi8KLQl3YV93cml0ZV9tYXNrZWRfb3Iod2FsLAotCQkJICAgR0VOOF9HQVJCQ05UTCwK LQkJCSAgIEdFTjExX0hBU0hfQ1RSTF9FWENMX01BU0ssCi0JCQkgICBHRU4xMV9IQVNIX0NUUkxf RVhDTF9CSVQwKTsKLQl3YV93cml0ZV9tYXNrZWRfb3Iod2FsLAotCQkJICAgR0VOMTFfR0xCTElO VkwsCi0JCQkgICBHRU4xMV9CQU5LX0hBU0hfQUREUl9FWENMX01BU0ssCi0JCQkgICBHRU4xMV9C QU5LX0hBU0hfQUREUl9FWENMX0JJVDApOwotCiAJLyogV2FNb2RpZnlHYW1UbGJQYXJ0aXRpb25p bmc6aWNsICovCiAJd2Ffd3JpdGVfbWFza2VkX29yKHdhbCwKIAkJCSAgIEdFTjExX0dBQ0JfUEVS Rl9DVFJMLAogCQkJICAgR0VOMTFfSEFTSF9DVFJMX01BU0ssCiAJCQkgICBHRU4xMV9IQVNIX0NU UkxfQklUMCB8IEdFTjExX0hBU0hfQ1RSTF9CSVQ0KTsKIAotCS8qIFdhXzE0MDU3MzMyMTY6aWNs Ci0JICogRm9ybWVybHkga25vd24gYXMgV2FEaXNhYmxlQ2xlYW5FdmljdHMKLQkgKi8KLQl3YV93 cml0ZV9vcih3YWwsCi0JCSAgICBHRU44X0wzU1FDUkVHNCwKLQkJICAgIEdFTjExX0xRU0NfQ0xF QU5fRVZJQ1RfRElTQUJMRSk7Ci0KIAkvKiBXYV8xNDA1NzY2MTA3OmljbAogCSAqIEZvcm1lcmx5 IGtub3duIGFzIFdhQ0wyU0ZIYWxmTWF4QWxsb2MKIAkgKi8KQEAgLTk4NiwxMyArODgxLDYgQEAg c3RhdGljIHZvaWQgaWNsX2d0X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCQkJICAgIElORl9VTklUX0xFVkVMX0NMS0dBVEUsCiAJCQkgICAgQ0dQ U0ZfQ0xLR0FURV9ESVMpOwogCi0JLyogV2FGb3J3YXJkUHJvZ3Jlc3NTb2Z0UmVzZXQ6aWNsICov Ci0Jd2Ffd3JpdGVfb3Iod2FsLAotCQkgICAgR0VOMTBfU0NSQVRDSF9MTkNGMiwKLQkJICAgIFBN RkxVU0hET05FX0xOSUNSU0RST1AgfAotCQkgICAgUE1GTFVTSF9HQVBMM1VOQkxPQ0sgfAotCQkg ICAgUE1GTFVTSERPTkVfTE5FQkxLKTsKLQogCS8qIFdhXzE0MDY0NjMwOTk6aWNsCiAJICogRm9y bWVybHkga25vd24gYXMgV2FHYW1UbGJQZW5kRXJyb3IKIAkgKi8KQEAgLTEyNDIsNiArMTEzMCwx NDMgQEAgdm9pZCBpbnRlbF93aGl0ZWxpc3Rfd29ya2Fyb3VuZHNfYXBwbHkoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogCXdoaXRlbGlzdF9hcHBseShlbmdpbmUsIHdoaXRlbGlzdF9i dWlsZChlbmdpbmUsICZ3KSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJjc19lbmdpbmVfd2FfaW5pdChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7CisJc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsID0gJmVu Z2luZS0+d2FfbGlzdDsKKworCWlmIChJU19HRU45KGk5MTUpKSB7CisJCS8qIFdhQ29udGV4dFN3 aXRjaFdpdGhDb25jdXJyZW50VExCSW52YWxpZGF0ZTpza2wsYnh0LGtibCxnbGssY2ZsICovCisJ CXdhX21hc2tlZF9lbih3YWwsCisJCQkgICAgIEdFTjlfQ1NGRV9DSElDS0VOMV9SQ1MsCisJCQkg ICAgIEdFTjlfUFJFRU1QVF9HUEdQVV9TWU5DX1NXSVRDSF9ESVNBQkxFKTsKKworCQkvKiBXYUVu YWJsZUxic1NsYVJldHJ5VGltZXJEZWNyZW1lbnQ6c2tsLGJ4dCxrYmwsZ2xrLGNmbCAqLworCQl3 YV93cml0ZV9vcih3YWwsCisJCQkgICAgQkRXX1NDUkFUQ0gxLAorCQkJICAgIEdFTjlfTEJTX1NM QV9SRVRSWV9USU1FUl9ERUNSRU1FTlRfRU5BQkxFKTsKKworCQkvKiBXYVByb2dyYW1MM1NxY1Jl ZzFEZWZhdWx0Rm9yUGVyZjpieHQsZ2xrICovCisJCWlmIChJU19HRU45X0xQKGk5MTUpKQorCQkJ d2Ffd3JpdGVfbWFza2VkX29yKHdhbCwKKwkJCQkJICAgR0VOOF9MM1NRQ1JFRzEsCisJCQkJCSAg IEwzX1BSSU9fQ1JFRElUU19NQVNLLAorCQkJCQkgICBMM19HRU5FUkFMX1BSSU9fQ1JFRElUUyg2 MikgfAorCQkJCQkgICBMM19ISUdIX1BSSU9fQ1JFRElUUygyKSk7CisKKwkJLyogV2FPQ0xDb2hl cmVudExpbmVGbHVzaDpza2wsYnh0LGtibCxjZmwgKi8KKwkJd2Ffd3JpdGVfb3Iod2FsLAorCQkJ ICAgIEdFTjhfTDNTUUNSRUc0LAorCQkJICAgIEdFTjhfTFFTQ19GTFVTSF9DT0hFUkVOVF9MSU5F Uyk7CisJfQorCisJaWYgKElTX0JST1hUT04oaTkxNSkpIHsKKwkJLyogV2FEaXNhYmxlUG9vbGVk RXVMb2FkQmFsYW5jaW5nRml4OmJ4dCAqLworCQl3YV9tYXNrZWRfZW4od2FsLAorCQkJICAgICBG Rl9TTElDRV9DU19DSElDS0VOMiwKKwkJCSAgICAgR0VOOV9QT09MRURfRVVfTE9BRF9CQUxBTkNJ TkdfRklYX0RJU0FCTEUpOworCX0KKworCWlmIChJU19TS1lMQUtFKGk5MTUpIHx8IElTX0tBQllM QUtFKGk5MTUpIHx8IElTX0NPRkZFRUxBS0UoaTkxNSkpIHsKKwkJLyogV2FFbmFibGVHYXBzVHN2 Q3JlZGl0Rml4OnNrbCxrYmwsY2ZsICovCisJCXdhX3dyaXRlX29yKHdhbCwKKwkJCSAgICBHRU44 X0dBUkJDTlRMLAorCQkJICAgIEdFTjlfR0FQU19UU1ZfQ1JFRElUX0RJU0FCTEUpOworCX0KKwor CWlmIChJU19HRU45KGk5MTUpIHx8IElTX0NBTk5PTkxBS0UoaTkxNSkpIHsKKwkJLyogV2FFbmFi bGVQcmVlbXB0aW9uR3JhbnVsYXJpdHlDb250cm9sQnlVTUQ6c2tsLGJ4dCxrYmwsY2ZsLGNubCAq LworCQl3YV9tYXNrZWRfZW4od2FsLAorCQkJICAgICBHRU43X0ZGX1NMSUNFX0NTX0NISUNLRU4x LAorCQkJICAgICBHRU45X0ZGU0NfUEVSQ1RYX1BSRUVNUFRfQ1RSTCk7CisJfQorCisJaWYgKElT X0lDRUxBS0UoaTkxNSkpIHsKKwkJLyogVGhpcyBpcyBub3QgYW4gV2EuIEVuYWJsZSBmb3IgYmV0 dGVyIGltYWdlIHF1YWxpdHkgKi8KKwkJd2FfbWFza2VkX2VuKHdhbCwKKwkJCSAgICAgXzNEX0NI SUNLRU4zLAorCQkJICAgICBfM0RfQ0hJQ0tFTjNfQUFfTElORV9RVUFMSVRZX0ZJWF9FTkFCTEUp OworCisJCS8qIFdhUGlwZWxpbmVGbHVzaENvaGVyZW50TGluZXM6aWNsICovCisJCXdhX3dyaXRl X29yKHdhbCwKKwkJCSAgICBHRU44X0wzU1FDUkVHNCwKKwkJCSAgICBHRU44X0xRU0NfRkxVU0hf Q09IRVJFTlRfTElORVMpOworCisJCS8qCisJCSAqIFdhXzE0MDU1NDM2MjI6aWNsCisJCSAqIEZv cm1lcmx5IGtub3duIGFzIFdhR0FQWlByaW9yaXR5U2NoZW1lCisJCSAqLworCQl3YV93cml0ZV9v cih3YWwsCisJCQkgICAgR0VOOF9HQVJCQ05UTCwKKwkJCSAgICBHRU4xMV9BUkJJVFJBVElPTl9Q UklPX09SREVSX01BU0spOworCisJCS8qCisJCSAqIFdhXzE2MDQyMjM2NjQ6aWNsCisJCSAqIEZv cm1lcmx5IGtub3duIGFzIFdhTDNCYW5rQWRkcmVzc0hhc2hpbmcKKwkJICovCisJCXdhX3dyaXRl X21hc2tlZF9vcih3YWwsCisJCQkJICAgR0VOOF9HQVJCQ05UTCwKKwkJCQkgICBHRU4xMV9IQVNI X0NUUkxfRVhDTF9NQVNLLAorCQkJCSAgIEdFTjExX0hBU0hfQ1RSTF9FWENMX0JJVDApOworCQl3 YV93cml0ZV9tYXNrZWRfb3Iod2FsLAorCQkJCSAgIEdFTjExX0dMQkxJTlZMLAorCQkJCSAgIEdF TjExX0JBTktfSEFTSF9BRERSX0VYQ0xfTUFTSywKKwkJCQkgICBHRU4xMV9CQU5LX0hBU0hfQURE Ul9FWENMX0JJVDApOworCisJCS8qCisJCSAqIFdhXzE0MDU3MzMyMTY6aWNsCisJCSAqIEZvcm1l cmx5IGtub3duIGFzIFdhRGlzYWJsZUNsZWFuRXZpY3RzCisJCSAqLworCQl3YV93cml0ZV9vcih3 YWwsCisJCQkgICAgR0VOOF9MM1NRQ1JFRzQsCisJCQkgICAgR0VOMTFfTFFTQ19DTEVBTl9FVklD VF9ESVNBQkxFKTsKKworCQkvKiBXYUZvcndhcmRQcm9ncmVzc1NvZnRSZXNldDppY2wgKi8KKwkJ d2Ffd3JpdGVfb3Iod2FsLAorCQkJICAgIEdFTjEwX1NDUkFUQ0hfTE5DRjIsCisJCQkgICAgUE1G TFVTSERPTkVfTE5JQ1JTRFJPUCB8CisJCQkgICAgUE1GTFVTSF9HQVBMM1VOQkxPQ0sgfAorCQkJ ICAgIFBNRkxVU0hET05FX0xORUJMSyk7CisJfQorfQorCitzdGF0aWMgdm9pZCB4Y3NfZW5naW5l X3dhX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1OworCXN0cnVjdCBpOTE1X3dhX2xpc3Qg KndhbCA9ICZlbmdpbmUtPndhX2xpc3Q7CisKKwlpZiAoSVNfS0FCWUxBS0UoaTkxNSkpIHsKKwkJ LyogV2FLQkxWRUNTU2VtYXBob3JlV2FpdFBvbGw6a2JsICovCisJCWlmIChJU19LQkxfUkVWSUQo aTkxNSwgS0JMX1JFVklEX0EwLCBLQkxfUkVWSURfRTApKSB7CisJCQl3YV93cml0ZSh3YWwsCisJ CQkJIFJJTkdfU0VNQV9XQUlUX1BPTEwoZW5naW5lLT5tbWlvX2Jhc2UpLAorCQkJCSAxKTsKKwkJ fQorCX0KK30KKwordm9pZCBpbnRlbF9lbmdpbmVfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsID0gJmVu Z2luZS0+d2FfbGlzdDsKKworCWlmIChHRU1fV0FSTl9PTihJTlRFTF9HRU4oZW5naW5lLT5pOTE1 KSA8IDgpKQorCQlyZXR1cm47CisKKwl3YV9pbml0X3N0YXJ0KHdhbCwgZW5naW5lLT5uYW1lKTsK KworCWlmIChlbmdpbmUtPmlkID09IFJDUykKKwkJcmNzX2VuZ2luZV93YV9pbml0KGVuZ2luZSk7 CisJZWxzZQorCQl4Y3NfZW5naW5lX3dhX2luaXQoZW5naW5lKTsKKworCXdhX2luaXRfZmluaXNo KHdhbCk7Cit9CisKK3ZvaWQgaW50ZWxfZW5naW5lX3dvcmthcm91bmRzX2FwcGx5KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwl3YV9saXN0X2FwcGx5KGVuZ2luZS0+aTkxNSwg JmVuZ2luZS0+d2FfbGlzdCk7Cit9CisKICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9T RUxGVEVTVCkKICNpbmNsdWRlICJzZWxmdGVzdHMvaW50ZWxfd29ya2Fyb3VuZHMuYyIKICNlbmRp ZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmgKaW5kZXggNjRhZWQ5Y2Yw MjAwLi4yOTk4NzY3ZDUxY2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3dvcmthcm91bmRzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3Vu ZHMuaApAQCAtMzYsNCArMzYsNyBAQCB2b2lkIGludGVsX2d0X3dvcmthcm91bmRzX2FwcGx5KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKIHZvaWQgaW50ZWxfd2hpdGVsaXN0 X3dvcmthcm91bmRzX2FwcGx5KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKK3Zv aWQgaW50ZWxfZW5naW5lX3dvcmthcm91bmRzX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKK3ZvaWQgaW50ZWxfZW5naW5lX3dvcmthcm91bmRzX2FwcGx5KHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSk7CisKICNlbmRpZgotLSAKMi4xOS4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK