From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 2/7] drm/i915: Introduce per-engine workarounds Date: Mon, 3 Dec 2018 13:33:41 +0000 Message-ID: <20181203133341.10258-1-tvrtko.ursulin@linux.intel.com> References: <20181203125014.3219-3-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: <20181203125014.3219-3-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 bmRzIGxpdmluZyBpbiB0aGUgYWZmZWN0ZWQgTU1JTwphZGRyZXNzIHJhbmdlcy4KCnYyOgogKiBN b3ZlIFdhXzE0MDY2MDkyNTU6aWNsIHRvIGVuZ2luZSB3b3JrYXJvdW5kcyBhcyB3ZWxsLgogKiBS ZW5hbWUgQVBJLiAoQ2hyaXMgV2lsc29uKQogKiBEcm9wIHJlZHVuZGFudCBJU19LQUJZTEFLRS4g KENocmlzIFdpbHNvbikKICogUmUtb3JkZXIgZW5naW5lIHdhLyBpbml0IHNvIGxhdGVzdCBwbGF0 Zm9ybXMgYXJlIGZpcnN0LiAoUm9kcmlnbyBWaXZpKQoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQnVnemlsbGE6IGh0dHBzOi8vYnVnemls bGEuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc5NDUKRml4ZXM6IDU5YjQ0OWQ1 YzgyYSAoImRybS9pOTE1OiBTcGxpdCBvdXQgZnVuY3Rpb25zIGZvciBkaWZmZXJlbnQga2luZHMg b2Ygd29ya2Fyb3VuZHMiKQpDYzogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBsaW51eC5p bnRlbC5jb20+CkNjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBKYW5p IE5pa3VsYSA8amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tPgpDYzogSm9vbmFzIExhaHRpbmVu IDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogUm9kcmlnbyBWaXZpIDxyb2Ry aWdvLnZpdmlAaW50ZWwuY29tPgpDYzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpB Y2tlZC1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgpSZXZpZXdlZC1i eTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYyAgICAgICAgIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaCAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29y a2Fyb3VuZHMuYyB8IDI2MSArKysrKysrKysrKystLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuaCB8ICAgMyArCiA1IGZpbGVzIGNoYW5nZWQsIDE1MyBp bnNlcnRpb25zKCspLCAxMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9l bmdpbmVfY3MuYwppbmRleCA3NTljMGZkNThmOGMuLmVmNWQyMDJlOWQ0NSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTcyMyw2ICs3MjMsOCBAQCB2b2lkIGludGVs X2VuZ2luZV9jbGVhbnVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJ X19pbnRlbF9jb250ZXh0X3VucGluKGk5MTUtPmtlcm5lbF9jb250ZXh0LCBlbmdpbmUpOwogCiAJ aTkxNV90aW1lbGluZV9maW5pKCZlbmdpbmUtPnRpbWVsaW5lKTsKKworCWludGVsX3dhX2xpc3Rf ZnJlZSgmZW5naW5lLT53YV9saXN0KTsKIH0KIAogdTY0IGludGVsX2VuZ2luZV9nZXRfYWN0aXZl X2hlYWQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYwppbmRleCAxMWY0ZTYxNDg1NTcuLjdhNzc4N2NiYWZlZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMKQEAgLTE2MTcsNiArMTYxNyw4IEBAIHN0YXRpYyBib29sIHVuZXhwZWN0 ZWRfc3RhcnRpbmdfc3RhdGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiBzdGF0 aWMgaW50IGdlbjhfaW5pdF9jb21tb25fcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiB7CisJaW50ZWxfZW5naW5lX2FwcGx5X3dvcmthcm91bmRzKGVuZ2luZSk7CisKIAlpbnRl bF9tb2NzX2luaXRfZW5naW5lKGVuZ2luZSk7CiAKIAlpbnRlbF9lbmdpbmVfcmVzZXRfYnJlYWRj cnVtYnMoZW5naW5lKTsKQEAgLTIzMTQsNiArMjMxNiw4IEBAIGludCBsb2dpY2FsX3JlbmRlcl9y aW5nX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkJICByZXQpOwogCX0K IAorCWludGVsX2VuZ2luZV9pbml0X3dvcmthcm91bmRzKGVuZ2luZSk7CisKIAlyZXR1cm4gMDsK IAogZXJyX2NsZWFudXBfY29tbW9uOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oCmluZGV4IDhhMjI3MGIyMDliMC4uYzVmZjNkMzFjYWI3IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5oCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSAiaTkxNV9z ZWxmdGVzdC5oIgogI2luY2x1ZGUgImk5MTVfdGltZWxpbmUuaCIKICNpbmNsdWRlICJpbnRlbF9n cHVfY29tbWFuZHMuaCIKKyNpbmNsdWRlICJpbnRlbF93b3JrYXJvdW5kcy5oIgogCiBzdHJ1Y3Qg ZHJtX3ByaW50ZXI7CiBzdHJ1Y3QgaTkxNV9zY2hlZF9hdHRyOwpAQCAtNDUxLDYgKzQ1Miw3IEBA IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogCiAJc3RydWN0IGludGVsX2h3X3N0YXR1c19wYWdl IHN0YXR1c19wYWdlOwogCXN0cnVjdCBpOTE1X2N0eF93b3JrYXJvdW5kcyB3YV9jdHg7CisJc3Ry dWN0IGk5MTVfd2FfbGlzdCB3YV9saXN0OwogCXN0cnVjdCBpOTE1X3ZtYSAqc2NyYXRjaDsKIAog CXUzMiAgICAgICAgICAgICBpcnFfa2VlcF9tYXNrOyAvKiBhbHdheXMga2VlcCB0aGVzZSBpbnRl cnJ1cHRzICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJv dW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuYwppbmRleCBj MzI1NmFiMmM0MTEuLjg0Nzk4OGQxNWU4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfd29ya2Fyb3VuZHMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93 b3JrYXJvdW5kcy5jCkBAIC02NTYsMTcgKzY1Niw2IEBAIHN0YXRpYyB2b2lkIGdlbjlfZ3Rfd29y a2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKIAlzdHJ1Y3Qg aTkxNV93YV9saXN0ICp3YWwgPSAmaTkxNS0+Z3Rfd2FfbGlzdDsKIAotCS8qIFdhQ29udGV4dFN3 aXRjaFdpdGhDb25jdXJyZW50VExCSW52YWxpZGF0ZTpza2wsYnh0LGtibCxnbGssY2ZsICovCi0J d2FfbWFza2VkX2VuKHdhbCwKLQkJICAgICBHRU45X0NTRkVfQ0hJQ0tFTjFfUkNTLAotCQkgICAg IEdFTjlfUFJFRU1QVF9HUEdQVV9TWU5DX1NXSVRDSF9ESVNBQkxFKTsKLQotCi0JLyogV2FFbmFi bGVMYnNTbGFSZXRyeVRpbWVyRGVjcmVtZW50OnNrbCxieHQsa2JsLGdsayxjZmwgKi8KLQl3YV93 cml0ZV9vcih3YWwsCi0JCSAgICBCRFdfU0NSQVRDSDEsCi0JCSAgICBHRU45X0xCU19TTEFfUkVU UllfVElNRVJfREVDUkVNRU5UX0VOQUJMRSk7Ci0KIAkvKiBXYURpc2FibGVLaWxsTG9naWM6Ynh0 LHNrbCxrYmwgKi8KIAlpZiAoIUlTX0NPRkZFRUxBS0UoaTkxNSkpCiAJCXdhX3dyaXRlX29yKHdh bCwKQEAgLTY4OCwyNCArNjc3LDYgQEAgc3RhdGljIHZvaWQgZ2VuOV9ndF93b3JrYXJvdW5kc19p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCXdhX3dyaXRlX29yKHdhbCwKIAkJ ICAgIEdBTV9FQ09DSEssCiAJCSAgICBCRFdfRElTQUJMRV9IRENfSU5WQUxJREFUSU9OKTsKLQot CS8qIFdhUHJvZ3JhbUwzU3FjUmVnMURlZmF1bHRGb3JQZXJmOmJ4dCxnbGsgKi8KLQlpZiAoSVNf R0VOOV9MUChpOTE1KSkKLQkJd2Ffd3JpdGVfbWFza2VkX29yKHdhbCwKLQkJCQkgICBHRU44X0wz U1FDUkVHMSwKLQkJCQkgICBMM19QUklPX0NSRURJVFNfTUFTSywKLQkJCQkgICBMM19HRU5FUkFM X1BSSU9fQ1JFRElUUyg2MikgfAotCQkJCSAgIEwzX0hJR0hfUFJJT19DUkVESVRTKDIpKTsKLQot CS8qIFdhT0NMQ29oZXJlbnRMaW5lRmx1c2g6c2tsLGJ4dCxrYmwsY2ZsICovCi0Jd2Ffd3JpdGVf b3Iod2FsLAotCQkgICAgR0VOOF9MM1NRQ1JFRzQsCi0JCSAgICBHRU44X0xRU0NfRkxVU0hfQ09I RVJFTlRfTElORVMpOwotCi0JLyogV2FFbmFibGVQcmVlbXB0aW9uR3JhbnVsYXJpdHlDb250cm9s QnlVTUQ6c2tsLGJ4dCxrYmwsY2ZsLFtjbmxdICovCi0Jd2FfbWFza2VkX2VuKHdhbCwKLQkJICAg ICBHRU43X0ZGX1NMSUNFX0NTX0NISUNLRU4xLAotCQkgICAgIEdFTjlfRkZTQ19QRVJDVFhfUFJF RU1QVF9DVFJMKTsKIH0KIAogc3RhdGljIHZvaWQgc2tsX2d0X3dvcmthcm91bmRzX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCkBAIC03MTQsMTEgKzY4NSw2IEBAIHN0YXRpYyB2 b2lkIHNrbF9ndF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQogCiAJZ2VuOV9ndF93b3JrYXJvdW5kc19pbml0KGk5MTUpOwogCi0JLyogV2FFbmFibGVHYXBz VHN2Q3JlZGl0Rml4OnNrbCAqLwotCXdhX3dyaXRlX29yKHdhbCwKLQkJICAgIEdFTjhfR0FSQkNO VEwsCi0JCSAgICBHRU45X0dBUFNfVFNWX0NSRURJVF9ESVNBQkxFKTsKLQogCS8qIFdhRGlzYWJs ZUdhZnNVbml0Q2xrR2F0aW5nOnNrbCAqLwogCXdhX3dyaXRlX29yKHdhbCwKIAkJICAgIEdFTjdf VUNHQ1RMNCwKQEAgLTczNywxMSArNzAzLDYgQEAgc3RhdGljIHZvaWQgYnh0X2d0X3dvcmthcm91 bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAKIAlnZW45X2d0X3dvcmth cm91bmRzX2luaXQoaTkxNSk7CiAKLQkvKiBXYURpc2FibGVQb29sZWRFdUxvYWRCYWxhbmNpbmdG aXg6Ynh0ICovCi0Jd2FfbWFza2VkX2VuKHdhbCwKLQkJICAgICBGRl9TTElDRV9DU19DSElDS0VO MiwKLQkJICAgICBHRU45X1BPT0xFRF9FVV9MT0FEX0JBTEFOQ0lOR19GSVhfRElTQUJMRSk7Ci0K IAkvKiBXYUluUGxhY2VEZWNvbXByZXNzaW9uSGFuZzpieHQgKi8KIAl3YV93cml0ZV9vcih3YWws CiAJCSAgICBHRU45X0dBTVRfRUNPX1JFR19SV19JQSwKQEAgLTc1NCwxMSArNzE1LDYgQEAgc3Rh dGljIHZvaWQga2JsX2d0X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpCiAKIAlnZW45X2d0X3dvcmthcm91bmRzX2luaXQoaTkxNSk7CiAKLQkvKiBXYUVuYWJs ZUdhcHNUc3ZDcmVkaXRGaXg6a2JsICovCi0Jd2Ffd3JpdGVfb3Iod2FsLAotCQkgICAgR0VOOF9H QVJCQ05UTCwKLQkJICAgIEdFTjlfR0FQU19UU1ZfQ1JFRElUX0RJU0FCTEUpOwotCiAJLyogV2FE aXNhYmxlRHluYW1pY0NyZWRpdFNoYXJpbmc6a2JsICovCiAJaWYgKElTX0tCTF9SRVZJRChpOTE1 LCAwLCBLQkxfUkVWSURfQjApKQogCQl3YV93cml0ZV9vcih3YWwsCkBAIC03NzQsMjEgKzczMCw2 IEBAIHN0YXRpYyB2b2lkIGtibF9ndF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQogCXdhX3dyaXRlX29yKHdhbCwKIAkJICAgIEdFTjlfR0FNVF9FQ09fUkVH X1JXX0lBLAogCQkgICAgR0FNVF9FQ09fRU5BQkxFX0lOX1BMQUNFX0RFQ09NUFJFU1MpOwotCi0J LyogV2FLQkxWRUNTU2VtYXBob3JlV2FpdFBvbGw6a2JsICovCi0JaWYgKElTX0tCTF9SRVZJRChp OTE1LCBLQkxfUkVWSURfQTAsIEtCTF9SRVZJRF9FMCkpIHsKLQkJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lOwotCQl1bnNpZ25lZCBpbnQgdG1wOwotCi0JCWZvcl9lYWNoX2VuZ2luZShl bmdpbmUsIGk5MTUsIHRtcCkgewotCQkJaWYgKGVuZ2luZS0+aWQgPT0gUkNTKQotCQkJCWNvbnRp bnVlOwotCi0JCQl3YV93cml0ZSh3YWwsCi0JCQkJIFJJTkdfU0VNQV9XQUlUX1BPTEwoZW5naW5l LT5tbWlvX2Jhc2UpLAotCQkJCSAxKTsKLQkJfQotCX0KIH0KIAogc3RhdGljIHZvaWQgZ2xrX2d0 X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCkBAIC04MDIs MTEgKzc0Myw2IEBAIHN0YXRpYyB2b2lkIGNmbF9ndF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQogCiAJZ2VuOV9ndF93b3JrYXJvdW5kc19pbml0KGk5MTUp OwogCi0JLyogV2FFbmFibGVHYXBzVHN2Q3JlZGl0Rml4OmNmbCAqLwotCXdhX3dyaXRlX29yKHdh bCwKLQkJICAgIEdFTjhfR0FSQkNOVEwsCi0JCSAgICBHRU45X0dBUFNfVFNWX0NSRURJVF9ESVNB QkxFKTsKLQogCS8qIFdhRGlzYWJsZUdhZnNVbml0Q2xrR2F0aW5nOmNmbCAqLwogCXdhX3dyaXRl X29yKHdhbCwKIAkJICAgIEdFTjdfVUNHQ1RMNCwKQEAgLTg5NywxMSArODMzLDYgQEAgc3RhdGlj IHZvaWQgY25sX2d0X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCiAJd2Ffd3JpdGVfb3Iod2FsLAogCQkgICAgR0VOOV9HQU1UX0VDT19SRUdfUldfSUEsCiAJ CSAgICBHQU1UX0VDT19FTkFCTEVfSU5fUExBQ0VfREVDT01QUkVTUyk7Ci0KLQkvKiBXYUVuYWJs ZVByZWVtcHRpb25HcmFudWxhcml0eUNvbnRyb2xCeVVNRDpjbmwgKi8KLQl3YV9tYXNrZWRfZW4o d2FsLAotCQkgICAgIEdFTjdfRkZfU0xJQ0VfQ1NfQ0hJQ0tFTjEsCi0JCSAgICAgR0VOOV9GRlND X1BFUkNUWF9QUkVFTVBUX0NUUkwpOwogfQogCiBzdGF0aWMgdm9pZCBpY2xfZ3Rfd29ya2Fyb3Vu ZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKQEAgLTkxMCw1MyArODQxLDE3 IEBAIHN0YXRpYyB2b2lkIGljbF9ndF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQogCiAJd2FfaW5pdF9tY3IoaTkxNSk7CiAKLQkvKiBUaGlzIGlzIG5vdCBh biBXYS4gRW5hYmxlIGZvciBiZXR0ZXIgaW1hZ2UgcXVhbGl0eSAqLwotCXdhX21hc2tlZF9lbih3 YWwsCi0JCSAgICAgXzNEX0NISUNLRU4zLAotCQkgICAgIF8zRF9DSElDS0VOM19BQV9MSU5FX1FV QUxJVFlfRklYX0VOQUJMRSk7Ci0KIAkvKiBXYUluUGxhY2VEZWNvbXByZXNzaW9uSGFuZzppY2wg Ki8KIAl3YV93cml0ZV9vcih3YWwsCiAJCSAgICBHRU45X0dBTVRfRUNPX1JFR19SV19JQSwKIAkJ ICAgIEdBTVRfRUNPX0VOQUJMRV9JTl9QTEFDRV9ERUNPTVBSRVNTKTsKIAotCS8qIFdhUGlwZWxp bmVGbHVzaENvaGVyZW50TGluZXM6aWNsICovCi0Jd2Ffd3JpdGVfb3Iod2FsLAotCQkgICAgR0VO OF9MM1NRQ1JFRzQsCi0JCSAgICBHRU44X0xRU0NfRkxVU0hfQ09IRVJFTlRfTElORVMpOwotCi0J LyogV2FfMTQwNTU0MzYyMjppY2wKLQkgKiBGb3JtZXJseSBrbm93biBhcyBXYUdBUFpQcmlvcml0 eVNjaGVtZQotCSAqLwotCXdhX3dyaXRlX29yKHdhbCwKLQkJICAgIEdFTjhfR0FSQkNOVEwsCi0J CSAgICBHRU4xMV9BUkJJVFJBVElPTl9QUklPX09SREVSX01BU0spOwotCi0JLyogV2FfMTYwNDIy MzY2NDppY2wKLQkgKiBGb3JtZXJseSBrbm93biBhcyBXYUwzQmFua0FkZHJlc3NIYXNoaW5nCi0J ICovCi0Jd2Ffd3JpdGVfbWFza2VkX29yKHdhbCwKLQkJCSAgIEdFTjhfR0FSQkNOVEwsCi0JCQkg ICBHRU4xMV9IQVNIX0NUUkxfRVhDTF9NQVNLLAotCQkJICAgR0VOMTFfSEFTSF9DVFJMX0VYQ0xf QklUMCk7Ci0Jd2Ffd3JpdGVfbWFza2VkX29yKHdhbCwKLQkJCSAgIEdFTjExX0dMQkxJTlZMLAot CQkJICAgR0VOMTFfQkFOS19IQVNIX0FERFJfRVhDTF9NQVNLLAotCQkJICAgR0VOMTFfQkFOS19I QVNIX0FERFJfRVhDTF9CSVQwKTsKLQogCS8qIFdhTW9kaWZ5R2FtVGxiUGFydGl0aW9uaW5nOmlj bCAqLwogCXdhX3dyaXRlX21hc2tlZF9vcih3YWwsCiAJCQkgICBHRU4xMV9HQUNCX1BFUkZfQ1RS TCwKIAkJCSAgIEdFTjExX0hBU0hfQ1RSTF9NQVNLLAogCQkJICAgR0VOMTFfSEFTSF9DVFJMX0JJ VDAgfCBHRU4xMV9IQVNIX0NUUkxfQklUNCk7CiAKLQkvKiBXYV8xNDA1NzMzMjE2OmljbAotCSAq IEZvcm1lcmx5IGtub3duIGFzIFdhRGlzYWJsZUNsZWFuRXZpY3RzCi0JICovCi0Jd2Ffd3JpdGVf b3Iod2FsLAotCQkgICAgR0VOOF9MM1NRQ1JFRzQsCi0JCSAgICBHRU4xMV9MUVNDX0NMRUFOX0VW SUNUX0RJU0FCTEUpOwotCiAJLyogV2FfMTQwNTc2NjEwNzppY2wKIAkgKiBGb3JtZXJseSBrbm93 biBhcyBXYUNMMlNGSGFsZk1heEFsbG9jCiAJICovCkBAIC05ODksMjYgKzg4NCwxMiBAQCBzdGF0 aWMgdm9pZCBpY2xfZ3Rfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKIAkJCSAgICBJTkZfVU5JVF9MRVZFTF9DTEtHQVRFLAogCQkJICAgIENHUFNGX0NMS0dB VEVfRElTKTsKIAotCS8qIFdhRm9yd2FyZFByb2dyZXNzU29mdFJlc2V0OmljbCAqLwotCXdhX3dy aXRlX29yKHdhbCwKLQkJICAgIEdFTjEwX1NDUkFUQ0hfTE5DRjIsCi0JCSAgICBQTUZMVVNIRE9O RV9MTklDUlNEUk9QIHwKLQkJICAgIFBNRkxVU0hfR0FQTDNVTkJMT0NLIHwKLQkJICAgIFBNRkxV U0hET05FX0xORUJMSyk7Ci0KIAkvKiBXYV8xNDA2NDYzMDk5OmljbAogCSAqIEZvcm1lcmx5IGtu b3duIGFzIFdhR2FtVGxiUGVuZEVycm9yCiAJICovCiAJd2Ffd3JpdGVfb3Iod2FsLAogCQkgICAg R0FNVF9DSEtOX0JJVF9SRUcsCiAJCSAgICBHQU1UX0NIS05fRElTQUJMRV9MM19DT0hfUElQRSk7 Ci0KLQkvKiBXYV8xNDA2NjA5MjU1OmljbCAocHJlLXByb2QpICovCi0JaWYgKElTX0lDTF9SRVZJ RChpOTE1LCBJQ0xfUkVWSURfQTAsIElDTF9SRVZJRF9CMCkpCi0JCXdhX3dyaXRlX29yKHdhbCwK LQkJCSAgICBHRU43X1NBUkNIS01ELAotCQkJICAgIEdFTjdfRElTQUJMRV9ERU1BTkRfUFJFRkVU Q0ggfAotCQkJICAgIEdFTjdfRElTQUJMRV9TQU1QTEVSX1BSRUZFVENIKTsKIH0KIAogdm9pZCBp bnRlbF9ndF9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQpA QCAtMTI0NSw2ICsxMTI2LDE0OCBAQCB2b2lkIGludGVsX3doaXRlbGlzdF93b3JrYXJvdW5kc19h cHBseShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJd2hpdGVsaXN0X2FwcGx5KGVu Z2luZSwgd2hpdGVsaXN0X2J1aWxkKGVuZ2luZSwgJncpKTsKIH0KIAorc3RhdGljIHZvaWQgcmNz X2VuZ2luZV93YV9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKKwlzdHJ1Y3QgaTkxNV93 YV9saXN0ICp3YWwgPSAmZW5naW5lLT53YV9saXN0OworCisJaWYgKElTX0lDRUxBS0UoaTkxNSkp IHsKKwkJLyogVGhpcyBpcyBub3QgYW4gV2EuIEVuYWJsZSBmb3IgYmV0dGVyIGltYWdlIHF1YWxp dHkgKi8KKwkJd2FfbWFza2VkX2VuKHdhbCwKKwkJCSAgICAgXzNEX0NISUNLRU4zLAorCQkJICAg ICBfM0RfQ0hJQ0tFTjNfQUFfTElORV9RVUFMSVRZX0ZJWF9FTkFCTEUpOworCisJCS8qIFdhUGlw ZWxpbmVGbHVzaENvaGVyZW50TGluZXM6aWNsICovCisJCXdhX3dyaXRlX29yKHdhbCwKKwkJCSAg ICBHRU44X0wzU1FDUkVHNCwKKwkJCSAgICBHRU44X0xRU0NfRkxVU0hfQ09IRVJFTlRfTElORVMp OworCisJCS8qCisJCSAqIFdhXzE0MDU1NDM2MjI6aWNsCisJCSAqIEZvcm1lcmx5IGtub3duIGFz IFdhR0FQWlByaW9yaXR5U2NoZW1lCisJCSAqLworCQl3YV93cml0ZV9vcih3YWwsCisJCQkgICAg R0VOOF9HQVJCQ05UTCwKKwkJCSAgICBHRU4xMV9BUkJJVFJBVElPTl9QUklPX09SREVSX01BU0sp OworCisJCS8qCisJCSAqIFdhXzE2MDQyMjM2NjQ6aWNsCisJCSAqIEZvcm1lcmx5IGtub3duIGFz IFdhTDNCYW5rQWRkcmVzc0hhc2hpbmcKKwkJICovCisJCXdhX3dyaXRlX21hc2tlZF9vcih3YWws CisJCQkJICAgR0VOOF9HQVJCQ05UTCwKKwkJCQkgICBHRU4xMV9IQVNIX0NUUkxfRVhDTF9NQVNL LAorCQkJCSAgIEdFTjExX0hBU0hfQ1RSTF9FWENMX0JJVDApOworCQl3YV93cml0ZV9tYXNrZWRf b3Iod2FsLAorCQkJCSAgIEdFTjExX0dMQkxJTlZMLAorCQkJCSAgIEdFTjExX0JBTktfSEFTSF9B RERSX0VYQ0xfTUFTSywKKwkJCQkgICBHRU4xMV9CQU5LX0hBU0hfQUREUl9FWENMX0JJVDApOwor CisJCS8qCisJCSAqIFdhXzE0MDU3MzMyMTY6aWNsCisJCSAqIEZvcm1lcmx5IGtub3duIGFzIFdh RGlzYWJsZUNsZWFuRXZpY3RzCisJCSAqLworCQl3YV93cml0ZV9vcih3YWwsCisJCQkgICAgR0VO OF9MM1NRQ1JFRzQsCisJCQkgICAgR0VOMTFfTFFTQ19DTEVBTl9FVklDVF9ESVNBQkxFKTsKKwor CQkvKiBXYUZvcndhcmRQcm9ncmVzc1NvZnRSZXNldDppY2wgKi8KKwkJd2Ffd3JpdGVfb3Iod2Fs LAorCQkJICAgIEdFTjEwX1NDUkFUQ0hfTE5DRjIsCisJCQkgICAgUE1GTFVTSERPTkVfTE5JQ1JT RFJPUCB8CisJCQkgICAgUE1GTFVTSF9HQVBMM1VOQkxPQ0sgfAorCQkJICAgIFBNRkxVU0hET05F X0xORUJMSyk7CisKKwkJLyogV2FfMTQwNjYwOTI1NTppY2wgKHByZS1wcm9kKSAqLworCQlpZiAo SVNfSUNMX1JFVklEKGk5MTUsIElDTF9SRVZJRF9BMCwgSUNMX1JFVklEX0IwKSkKKwkJCXdhX3dy aXRlX29yKHdhbCwKKwkJCQkgICAgR0VON19TQVJDSEtNRCwKKwkJCQkgICAgR0VON19ESVNBQkxF X0RFTUFORF9QUkVGRVRDSCB8CisJCQkJICAgIEdFTjdfRElTQUJMRV9TQU1QTEVSX1BSRUZFVENI KTsKKwl9CisKKwlpZiAoSVNfR0VOOShpOTE1KSB8fCBJU19DQU5OT05MQUtFKGk5MTUpKSB7CisJ CS8qIFdhRW5hYmxlUHJlZW1wdGlvbkdyYW51bGFyaXR5Q29udHJvbEJ5VU1EOnNrbCxieHQsa2Js LGNmbCxjbmwgKi8KKwkJd2FfbWFza2VkX2VuKHdhbCwKKwkJCSAgICAgR0VON19GRl9TTElDRV9D U19DSElDS0VOMSwKKwkJCSAgICAgR0VOOV9GRlNDX1BFUkNUWF9QUkVFTVBUX0NUUkwpOworCX0K KworCWlmIChJU19TS1lMQUtFKGk5MTUpIHx8IElTX0tBQllMQUtFKGk5MTUpIHx8IElTX0NPRkZF RUxBS0UoaTkxNSkpIHsKKwkJLyogV2FFbmFibGVHYXBzVHN2Q3JlZGl0Rml4OnNrbCxrYmwsY2Zs ICovCisJCXdhX3dyaXRlX29yKHdhbCwKKwkJCSAgICBHRU44X0dBUkJDTlRMLAorCQkJICAgIEdF TjlfR0FQU19UU1ZfQ1JFRElUX0RJU0FCTEUpOworCX0KKworCWlmIChJU19CUk9YVE9OKGk5MTUp KSB7CisJCS8qIFdhRGlzYWJsZVBvb2xlZEV1TG9hZEJhbGFuY2luZ0ZpeDpieHQgKi8KKwkJd2Ff bWFza2VkX2VuKHdhbCwKKwkJCSAgICAgRkZfU0xJQ0VfQ1NfQ0hJQ0tFTjIsCisJCQkgICAgIEdF TjlfUE9PTEVEX0VVX0xPQURfQkFMQU5DSU5HX0ZJWF9ESVNBQkxFKTsKKwl9CisKKwlpZiAoSVNf R0VOOShpOTE1KSkgeworCQkvKiBXYUNvbnRleHRTd2l0Y2hXaXRoQ29uY3VycmVudFRMQkludmFs aWRhdGU6c2tsLGJ4dCxrYmwsZ2xrLGNmbCAqLworCQl3YV9tYXNrZWRfZW4od2FsLAorCQkJICAg ICBHRU45X0NTRkVfQ0hJQ0tFTjFfUkNTLAorCQkJICAgICBHRU45X1BSRUVNUFRfR1BHUFVfU1lO Q19TV0lUQ0hfRElTQUJMRSk7CisKKwkJLyogV2FFbmFibGVMYnNTbGFSZXRyeVRpbWVyRGVjcmVt ZW50OnNrbCxieHQsa2JsLGdsayxjZmwgKi8KKwkJd2Ffd3JpdGVfb3Iod2FsLAorCQkJICAgIEJE V19TQ1JBVENIMSwKKwkJCSAgICBHRU45X0xCU19TTEFfUkVUUllfVElNRVJfREVDUkVNRU5UX0VO QUJMRSk7CisKKwkJLyogV2FQcm9ncmFtTDNTcWNSZWcxRGVmYXVsdEZvclBlcmY6Ynh0LGdsayAq LworCQlpZiAoSVNfR0VOOV9MUChpOTE1KSkKKwkJCXdhX3dyaXRlX21hc2tlZF9vcih3YWwsCisJ CQkJCSAgIEdFTjhfTDNTUUNSRUcxLAorCQkJCQkgICBMM19QUklPX0NSRURJVFNfTUFTSywKKwkJ CQkJICAgTDNfR0VORVJBTF9QUklPX0NSRURJVFMoNjIpIHwKKwkJCQkJICAgTDNfSElHSF9QUklP X0NSRURJVFMoMikpOworCisJCS8qIFdhT0NMQ29oZXJlbnRMaW5lRmx1c2g6c2tsLGJ4dCxrYmws Y2ZsICovCisJCXdhX3dyaXRlX29yKHdhbCwKKwkJCSAgICBHRU44X0wzU1FDUkVHNCwKKwkJCSAg ICBHRU44X0xRU0NfRkxVU0hfQ09IRVJFTlRfTElORVMpOworCX0KK30KKworc3RhdGljIHZvaWQg eGNzX2VuZ2luZV93YV9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKKwlzdHJ1Y3QgaTkx NV93YV9saXN0ICp3YWwgPSAmZW5naW5lLT53YV9saXN0OworCisJLyogV2FLQkxWRUNTU2VtYXBo b3JlV2FpdFBvbGw6a2JsICovCisJaWYgKElTX0tCTF9SRVZJRChpOTE1LCBLQkxfUkVWSURfQTAs IEtCTF9SRVZJRF9FMCkpIHsKKwkJd2Ffd3JpdGUod2FsLAorCQkJIFJJTkdfU0VNQV9XQUlUX1BP TEwoZW5naW5lLT5tbWlvX2Jhc2UpLAorCQkJIDEpOworCX0KK30KKwordm9pZCBpbnRlbF9lbmdp bmVfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJ c3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsID0gJmVuZ2luZS0+d2FfbGlzdDsKKworCWlmIChHRU1f V0FSTl9PTihJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDgpKQorCQlyZXR1cm47CisKKwl3YV9p bml0X3N0YXJ0KHdhbCwgZW5naW5lLT5uYW1lKTsKKworCWlmIChlbmdpbmUtPmlkID09IFJDUykK KwkJcmNzX2VuZ2luZV93YV9pbml0KGVuZ2luZSk7CisJZWxzZQorCQl4Y3NfZW5naW5lX3dhX2lu aXQoZW5naW5lKTsKKworCXdhX2luaXRfZmluaXNoKHdhbCk7Cit9CisKK3ZvaWQgaW50ZWxfZW5n aW5lX2FwcGx5X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sK Kwl3YV9saXN0X2FwcGx5KGVuZ2luZS0+aTkxNSwgJmVuZ2luZS0+d2FfbGlzdCk7Cit9CisKICNp ZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKICNpbmNsdWRlICJzZWxmdGVz dHMvaW50ZWxfd29ya2Fyb3VuZHMuYyIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3dvcmthcm91bmRzLmgKaW5kZXggMjYzMTA2NjAwZmRjLi45Nzk2OTVhNTM5NjQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuaApAQCAtMzUsNCArMzUsNyBAQCB2b2lk IGludGVsX2d0X2FwcGx5X3dvcmthcm91bmRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7CiAKIHZvaWQgaW50ZWxfd2hpdGVsaXN0X3dvcmthcm91bmRzX2FwcGx5KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKK3ZvaWQgaW50ZWxfZW5naW5lX2luaXRfd29ya2Fy b3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKK3ZvaWQgaW50ZWxfZW5naW5l X2FwcGx5X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CisKICNl bmRpZgotLSAKMi4xOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK