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 12:50:09 +0000 Message-ID: <20181203125014.3219-3-tvrtko.ursulin@linux.intel.com> References: <20181203125014.3219-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: <20181203125014.3219-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 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 dW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuYwppbmRleCAx ZThiZmI5YTIwMzQuLjRlZjBkZDA5YmZmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfd29ya2Fyb3VuZHMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93 b3JrYXJvdW5kcy5jCkBAIC02NTcsMTcgKzY1Nyw2IEBAIHN0YXRpYyB2b2lkIGdlbjlfZ3Rfd29y a2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKIAlzdHJ1Y3Qg aTkxNV93YV9saXN0ICp3YWwgPSAmaTkxNS0+Z3Rfd2FfbGlzdDsKIAotCS8qIFdhQ29udGV4dFN3 aXRjaFdpdGhDb25jdXJyZW50VExCSW52YWxpZGF0ZTpza2wsYnh0LGtibCxnbGssY2ZsICovCi0J d2FfbWFza2VkX2VuKHdhbCwKLQkJICAgICBHRU45X0NTRkVfQ0hJQ0tFTjFfUkNTLAotCQkgICAg IEdFTjlfUFJFRU1QVF9HUEdQVV9TWU5DX1NXSVRDSF9ESVNBQkxFKTsKLQotCi0JLyogV2FFbmFi bGVMYnNTbGFSZXRyeVRpbWVyRGVjcmVtZW50OnNrbCxieHQsa2JsLGdsayxjZmwgKi8KLQl3YV93 cml0ZV9vcih3YWwsCi0JCSAgICBCRFdfU0NSQVRDSDEsCi0JCSAgICBHRU45X0xCU19TTEFfUkVU UllfVElNRVJfREVDUkVNRU5UX0VOQUJMRSk7Ci0KIAkvKiBXYURpc2FibGVLaWxsTG9naWM6Ynh0 LHNrbCxrYmwgKi8KIAlpZiAoIUlTX0NPRkZFRUxBS0UoaTkxNSkpCiAJCXdhX3dyaXRlX29yKHdh bCwKQEAgLTY4OSwyNCArNjc4LDYgQEAgc3RhdGljIHZvaWQgZ2VuOV9ndF93b3JrYXJvdW5kc19p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCXdhX3dyaXRlX29yKHdhbCwKIAkJ ICAgIEdBTV9FQ09DSEssCiAJCSAgICBCRFdfRElTQUJMRV9IRENfSU5WQUxJREFUSU9OKTsKLQot CS8qIFdhUHJvZ3JhbUwzU3FjUmVnMURlZmF1bHRGb3JQZXJmOmJ4dCxnbGsgKi8KLQlpZiAoSVNf R0VOOV9MUChpOTE1KSkKLQkJd2Ffd3JpdGVfbWFza2VkX29yKHdhbCwKLQkJCQkgICBHRU44X0wz U1FDUkVHMSwKLQkJCQkgICBMM19QUklPX0NSRURJVFNfTUFTSywKLQkJCQkgICBMM19HRU5FUkFM X1BSSU9fQ1JFRElUUyg2MikgfAotCQkJCSAgIEwzX0hJR0hfUFJJT19DUkVESVRTKDIpKTsKLQot CS8qIFdhT0NMQ29oZXJlbnRMaW5lRmx1c2g6c2tsLGJ4dCxrYmwsY2ZsICovCi0Jd2Ffd3JpdGVf b3Iod2FsLAotCQkgICAgR0VOOF9MM1NRQ1JFRzQsCi0JCSAgICBHRU44X0xRU0NfRkxVU0hfQ09I RVJFTlRfTElORVMpOwotCi0JLyogV2FFbmFibGVQcmVlbXB0aW9uR3JhbnVsYXJpdHlDb250cm9s QnlVTUQ6c2tsLGJ4dCxrYmwsY2ZsLFtjbmxdICovCi0Jd2FfbWFza2VkX2VuKHdhbCwKLQkJICAg ICBHRU43X0ZGX1NMSUNFX0NTX0NISUNLRU4xLAotCQkgICAgIEdFTjlfRkZTQ19QRVJDVFhfUFJF RU1QVF9DVFJMKTsKIH0KIAogc3RhdGljIHZvaWQgc2tsX2d0X3dvcmthcm91bmRzX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCkBAIC03MTUsMTEgKzY4Niw2IEBAIHN0YXRpYyB2 b2lkIHNrbF9ndF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQogCiAJZ2VuOV9ndF93b3JrYXJvdW5kc19pbml0KGk5MTUpOwogCi0JLyogV2FFbmFibGVHYXBz VHN2Q3JlZGl0Rml4OnNrbCAqLwotCXdhX3dyaXRlX29yKHdhbCwKLQkJICAgIEdFTjhfR0FSQkNO VEwsCi0JCSAgICBHRU45X0dBUFNfVFNWX0NSRURJVF9ESVNBQkxFKTsKLQogCS8qIFdhRGlzYWJs ZUdhZnNVbml0Q2xrR2F0aW5nOnNrbCAqLwogCXdhX3dyaXRlX29yKHdhbCwKIAkJICAgIEdFTjdf VUNHQ1RMNCwKQEAgLTczOCwxMSArNzA0LDYgQEAgc3RhdGljIHZvaWQgYnh0X2d0X3dvcmthcm91 bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAKIAlnZW45X2d0X3dvcmth cm91bmRzX2luaXQoaTkxNSk7CiAKLQkvKiBXYURpc2FibGVQb29sZWRFdUxvYWRCYWxhbmNpbmdG aXg6Ynh0ICovCi0Jd2FfbWFza2VkX2VuKHdhbCwKLQkJICAgICBGRl9TTElDRV9DU19DSElDS0VO MiwKLQkJICAgICBHRU45X1BPT0xFRF9FVV9MT0FEX0JBTEFOQ0lOR19GSVhfRElTQUJMRSk7Ci0K IAkvKiBXYUluUGxhY2VEZWNvbXByZXNzaW9uSGFuZzpieHQgKi8KIAl3YV93cml0ZV9vcih3YWws CiAJCSAgICBHRU45X0dBTVRfRUNPX1JFR19SV19JQSwKQEAgLTc1NSwxMSArNzE2LDYgQEAgc3Rh dGljIHZvaWQga2JsX2d0X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpCiAKIAlnZW45X2d0X3dvcmthcm91bmRzX2luaXQoaTkxNSk7CiAKLQkvKiBXYUVuYWJs ZUdhcHNUc3ZDcmVkaXRGaXg6a2JsICovCi0Jd2Ffd3JpdGVfb3Iod2FsLAotCQkgICAgR0VOOF9H QVJCQ05UTCwKLQkJICAgIEdFTjlfR0FQU19UU1ZfQ1JFRElUX0RJU0FCTEUpOwotCiAJLyogV2FE aXNhYmxlRHluYW1pY0NyZWRpdFNoYXJpbmc6a2JsICovCiAJaWYgKElTX0tCTF9SRVZJRChpOTE1 LCAwLCBLQkxfUkVWSURfQjApKQogCQl3YV93cml0ZV9vcih3YWwsCkBAIC03NzUsMjEgKzczMSw2 IEBAIHN0YXRpYyB2b2lkIGtibF9ndF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQogCXdhX3dyaXRlX29yKHdhbCwKIAkJICAgIEdFTjlfR0FNVF9FQ09fUkVH X1JXX0lBLAogCQkgICAgR0FNVF9FQ09fRU5BQkxFX0lOX1BMQUNFX0RFQ09NUFJFU1MpOwotCi0J LyogV2FLQkxWRUNTU2VtYXBob3JlV2FpdFBvbGw6a2JsICovCi0JaWYgKElTX0tCTF9SRVZJRChp OTE1LCBLQkxfUkVWSURfQTAsIEtCTF9SRVZJRF9FMCkpIHsKLQkJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lOwotCQl1bnNpZ25lZCBpbnQgdG1wOwotCi0JCWZvcl9lYWNoX2VuZ2luZShl bmdpbmUsIGk5MTUsIHRtcCkgewotCQkJaWYgKGVuZ2luZS0+aWQgPT0gUkNTKQotCQkJCWNvbnRp bnVlOwotCi0JCQl3YV93cml0ZSh3YWwsCi0JCQkJIFJJTkdfU0VNQV9XQUlUX1BPTEwoZW5naW5l LT5tbWlvX2Jhc2UpLAotCQkJCSAxKTsKLQkJfQotCX0KIH0KIAogc3RhdGljIHZvaWQgZ2xrX2d0 X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCkBAIC04MDMs MTEgKzc0NCw2IEBAIHN0YXRpYyB2b2lkIGNmbF9ndF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQogCiAJZ2VuOV9ndF93b3JrYXJvdW5kc19pbml0KGk5MTUp OwogCi0JLyogV2FFbmFibGVHYXBzVHN2Q3JlZGl0Rml4OmNmbCAqLwotCXdhX3dyaXRlX29yKHdh bCwKLQkJICAgIEdFTjhfR0FSQkNOVEwsCi0JCSAgICBHRU45X0dBUFNfVFNWX0NSRURJVF9ESVNB QkxFKTsKLQogCS8qIFdhRGlzYWJsZUdhZnNVbml0Q2xrR2F0aW5nOmNmbCAqLwogCXdhX3dyaXRl X29yKHdhbCwKIAkJICAgIEdFTjdfVUNHQ1RMNCwKQEAgLTg5OCwxMSArODM0LDYgQEAgc3RhdGlj IHZvaWQgY25sX2d0X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCiAJd2Ffd3JpdGVfb3Iod2FsLAogCQkgICAgR0VOOV9HQU1UX0VDT19SRUdfUldfSUEsCiAJ CSAgICBHQU1UX0VDT19FTkFCTEVfSU5fUExBQ0VfREVDT01QUkVTUyk7Ci0KLQkvKiBXYUVuYWJs ZVByZWVtcHRpb25HcmFudWxhcml0eUNvbnRyb2xCeVVNRDpjbmwgKi8KLQl3YV9tYXNrZWRfZW4o d2FsLAotCQkgICAgIEdFTjdfRkZfU0xJQ0VfQ1NfQ0hJQ0tFTjEsCi0JCSAgICAgR0VOOV9GRlND X1BFUkNUWF9QUkVFTVBUX0NUUkwpOwogfQogCiBzdGF0aWMgdm9pZCBpY2xfZ3Rfd29ya2Fyb3Vu ZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKQEAgLTkxMSw1MyArODQyLDE3 IEBAIHN0YXRpYyB2b2lkIGljbF9ndF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQogCiAJd2FfaW5pdF9tY3IoaTkxNSk7CiAKLQkvKiBUaGlzIGlzIG5vdCBh biBXYS4gRW5hYmxlIGZvciBiZXR0ZXIgaW1hZ2UgcXVhbGl0eSAqLwotCXdhX21hc2tlZF9lbih3 YWwsCi0JCSAgICBfM0RfQ0hJQ0tFTjMsCi0JCSAgICBfM0RfQ0hJQ0tFTjNfQUFfTElORV9RVUFM SVRZX0ZJWF9FTkFCTEUpOwotCiAJLyogV2FJblBsYWNlRGVjb21wcmVzc2lvbkhhbmc6aWNsICov CiAJd2Ffd3JpdGVfb3Iod2FsLAogCQkgICAgR0VOOV9HQU1UX0VDT19SRUdfUldfSUEsCiAJCSAg ICBHQU1UX0VDT19FTkFCTEVfSU5fUExBQ0VfREVDT01QUkVTUyk7CiAKLQkvKiBXYVBpcGVsaW5l Rmx1c2hDb2hlcmVudExpbmVzOmljbCAqLwotCXdhX3dyaXRlX29yKHdhbCwKLQkJICAgIEdFTjhf TDNTUUNSRUc0LAotCQkgICAgR0VOOF9MUVNDX0ZMVVNIX0NPSEVSRU5UX0xJTkVTKTsKLQotCS8q IFdhXzE0MDU1NDM2MjI6aWNsCi0JICogRm9ybWVybHkga25vd24gYXMgV2FHQVBaUHJpb3JpdHlT Y2hlbWUKLQkgKi8KLQl3YV93cml0ZV9vcih3YWwsCi0JCSAgICBHRU44X0dBUkJDTlRMLAotCQkg ICAgR0VOMTFfQVJCSVRSQVRJT05fUFJJT19PUkRFUl9NQVNLKTsKLQotCS8qIFdhXzE2MDQyMjM2 NjQ6aWNsCi0JICogRm9ybWVybHkga25vd24gYXMgV2FMM0JhbmtBZGRyZXNzSGFzaGluZwotCSAq LwotCXdhX3dyaXRlX21hc2tlZF9vcih3YWwsCi0JCQkgICBHRU44X0dBUkJDTlRMLAotCQkJICAg R0VOMTFfSEFTSF9DVFJMX0VYQ0xfTUFTSywKLQkJCSAgIEdFTjExX0hBU0hfQ1RSTF9FWENMX0JJ VDApOwotCXdhX3dyaXRlX21hc2tlZF9vcih3YWwsCi0JCQkgICBHRU4xMV9HTEJMSU5WTCwKLQkJ CSAgIEdFTjExX0JBTktfSEFTSF9BRERSX0VYQ0xfTUFTSywKLQkJCSAgIEdFTjExX0JBTktfSEFT SF9BRERSX0VYQ0xfQklUMCk7Ci0KIAkvKiBXYU1vZGlmeUdhbVRsYlBhcnRpdGlvbmluZzppY2wg Ki8KIAl3YV93cml0ZV9tYXNrZWRfb3Iod2FsLAogCQkJICAgR0VOMTFfR0FDQl9QRVJGX0NUUkws CiAJCQkgICBHRU4xMV9IQVNIX0NUUkxfTUFTSywKIAkJCSAgIEdFTjExX0hBU0hfQ1RSTF9CSVQw IHwgR0VOMTFfSEFTSF9DVFJMX0JJVDQpOwogCi0JLyogV2FfMTQwNTczMzIxNjppY2wKLQkgKiBG b3JtZXJseSBrbm93biBhcyBXYURpc2FibGVDbGVhbkV2aWN0cwotCSAqLwotCXdhX3dyaXRlX29y KHdhbCwKLQkJICAgIEdFTjhfTDNTUUNSRUc0LAotCQkgICAgR0VOMTFfTFFTQ19DTEVBTl9FVklD VF9ESVNBQkxFKTsKLQogCS8qIFdhXzE0MDU3NjYxMDc6aWNsCiAJICogRm9ybWVybHkga25vd24g YXMgV2FDTDJTRkhhbGZNYXhBbGxvYwogCSAqLwpAQCAtOTkwLDI2ICs4ODUsMTIgQEAgc3RhdGlj IHZvaWQgaWNsX2d0X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCiAJCQkgICAgSU5GX1VOSVRfTEVWRUxfQ0xLR0FURSwKIAkJCSAgICBDR1BTRl9DTEtHQVRF X0RJUyk7CiAKLQkvKiBXYUZvcndhcmRQcm9ncmVzc1NvZnRSZXNldDppY2wgKi8KLQl3YV93cml0 ZV9vcih3YWwsCi0JCSAgICBHRU4xMF9TQ1JBVENIX0xOQ0YyLAotCQkgICAgUE1GTFVTSERPTkVf TE5JQ1JTRFJPUCB8Ci0JCSAgICBQTUZMVVNIX0dBUEwzVU5CTE9DSyB8Ci0JCSAgICBQTUZMVVNI RE9ORV9MTkVCTEspOwotCiAJLyogV2FfMTQwNjQ2MzA5OTppY2wKIAkgKiBGb3JtZXJseSBrbm93 biBhcyBXYUdhbVRsYlBlbmRFcnJvcgogCSAqLwogCXdhX3dyaXRlX29yKHdhbCwKIAkJICAgIEdB TVRfQ0hLTl9CSVRfUkVHLAogCQkgICAgR0FNVF9DSEtOX0RJU0FCTEVfTDNfQ09IX1BJUEUpOwot Ci0JLyogV2FfMTQwNjYwOTI1NTppY2wgKHByZS1wcm9kKSAqLwotCWlmIChJU19JQ0xfUkVWSUQo aTkxNSwgSUNMX1JFVklEX0EwLCBJQ0xfUkVWSURfQjApKQotCQl3YV93cml0ZV9vcih3YWwsCi0J CQkgICAgR0VON19TQVJDSEtNRCwKLQkJCSAgICBHRU43X0RJU0FCTEVfREVNQU5EX1BSRUZFVENI IHwKLQkJCSAgICBHRU43X0RJU0FCTEVfU0FNUExFUl9QUkVGRVRDSCk7CiB9CiAKIHZvaWQgaW50 ZWxfZ3RfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKQEAg LTEyNDYsNiArMTEyNywxNDggQEAgdm9pZCBpbnRlbF93aGl0ZWxpc3Rfd29ya2Fyb3VuZHNfYXBw bHkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXdoaXRlbGlzdF9hcHBseShlbmdp bmUsIHdoaXRlbGlzdF9idWlsZChlbmdpbmUsICZ3KSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJjc19l bmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7CisJc3RydWN0IGk5MTVfd2Ff bGlzdCAqd2FsID0gJmVuZ2luZS0+d2FfbGlzdDsKKworCWlmIChJU19JQ0VMQUtFKGk5MTUpKSB7 CisJCS8qIFRoaXMgaXMgbm90IGFuIFdhLiBFbmFibGUgZm9yIGJldHRlciBpbWFnZSBxdWFsaXR5 ICovCisJCXdhX21hc2tlZF9lbih3YWwsCisJCQkgICAgIF8zRF9DSElDS0VOMywKKwkJCSAgICAg XzNEX0NISUNLRU4zX0FBX0xJTkVfUVVBTElUWV9GSVhfRU5BQkxFKTsKKworCQkvKiBXYVBpcGVs aW5lRmx1c2hDb2hlcmVudExpbmVzOmljbCAqLworCQl3YV93cml0ZV9vcih3YWwsCisJCQkgICAg R0VOOF9MM1NRQ1JFRzQsCisJCQkgICAgR0VOOF9MUVNDX0ZMVVNIX0NPSEVSRU5UX0xJTkVTKTsK KworCQkvKgorCQkgKiBXYV8xNDA1NTQzNjIyOmljbAorCQkgKiBGb3JtZXJseSBrbm93biBhcyBX YUdBUFpQcmlvcml0eVNjaGVtZQorCQkgKi8KKwkJd2Ffd3JpdGVfb3Iod2FsLAorCQkJICAgIEdF TjhfR0FSQkNOVEwsCisJCQkgICAgR0VOMTFfQVJCSVRSQVRJT05fUFJJT19PUkRFUl9NQVNLKTsK KworCQkvKgorCQkgKiBXYV8xNjA0MjIzNjY0OmljbAorCQkgKiBGb3JtZXJseSBrbm93biBhcyBX YUwzQmFua0FkZHJlc3NIYXNoaW5nCisJCSAqLworCQl3YV93cml0ZV9tYXNrZWRfb3Iod2FsLAor CQkJCSAgIEdFTjhfR0FSQkNOVEwsCisJCQkJICAgR0VOMTFfSEFTSF9DVFJMX0VYQ0xfTUFTSywK KwkJCQkgICBHRU4xMV9IQVNIX0NUUkxfRVhDTF9CSVQwKTsKKwkJd2Ffd3JpdGVfbWFza2VkX29y KHdhbCwKKwkJCQkgICBHRU4xMV9HTEJMSU5WTCwKKwkJCQkgICBHRU4xMV9CQU5LX0hBU0hfQURE Ul9FWENMX01BU0ssCisJCQkJICAgR0VOMTFfQkFOS19IQVNIX0FERFJfRVhDTF9CSVQwKTsKKwor CQkvKgorCQkgKiBXYV8xNDA1NzMzMjE2OmljbAorCQkgKiBGb3JtZXJseSBrbm93biBhcyBXYURp c2FibGVDbGVhbkV2aWN0cworCQkgKi8KKwkJd2Ffd3JpdGVfb3Iod2FsLAorCQkJICAgIEdFTjhf TDNTUUNSRUc0LAorCQkJICAgIEdFTjExX0xRU0NfQ0xFQU5fRVZJQ1RfRElTQUJMRSk7CisKKwkJ LyogV2FGb3J3YXJkUHJvZ3Jlc3NTb2Z0UmVzZXQ6aWNsICovCisJCXdhX3dyaXRlX29yKHdhbCwK KwkJCSAgICBHRU4xMF9TQ1JBVENIX0xOQ0YyLAorCQkJICAgIFBNRkxVU0hET05FX0xOSUNSU0RS T1AgfAorCQkJICAgIFBNRkxVU0hfR0FQTDNVTkJMT0NLIHwKKwkJCSAgICBQTUZMVVNIRE9ORV9M TkVCTEspOworCisJCS8qIFdhXzE0MDY2MDkyNTU6aWNsIChwcmUtcHJvZCkgKi8KKwkJaWYgKElT X0lDTF9SRVZJRChpOTE1LCBJQ0xfUkVWSURfQTAsIElDTF9SRVZJRF9CMCkpCisJCQl3YV93cml0 ZV9vcih3YWwsCisJCQkJICAgIEdFTjdfU0FSQ0hLTUQsCisJCQkJICAgIEdFTjdfRElTQUJMRV9E RU1BTkRfUFJFRkVUQ0ggfAorCQkJCSAgICBHRU43X0RJU0FCTEVfU0FNUExFUl9QUkVGRVRDSCk7 CisJfQorCisJaWYgKElTX0dFTjkoaTkxNSkgfHwgSVNfQ0FOTk9OTEFLRShpOTE1KSkgeworCQkv KiBXYUVuYWJsZVByZWVtcHRpb25HcmFudWxhcml0eUNvbnRyb2xCeVVNRDpza2wsYnh0LGtibCxj ZmwsY25sICovCisJCXdhX21hc2tlZF9lbih3YWwsCisJCQkgICAgIEdFTjdfRkZfU0xJQ0VfQ1Nf Q0hJQ0tFTjEsCisJCQkgICAgIEdFTjlfRkZTQ19QRVJDVFhfUFJFRU1QVF9DVFJMKTsKKwl9CisK KwlpZiAoSVNfU0tZTEFLRShpOTE1KSB8fCBJU19LQUJZTEFLRShpOTE1KSB8fCBJU19DT0ZGRUVM QUtFKGk5MTUpKSB7CisJCS8qIFdhRW5hYmxlR2Fwc1RzdkNyZWRpdEZpeDpza2wsa2JsLGNmbCAq LworCQl3YV93cml0ZV9vcih3YWwsCisJCQkgICAgR0VOOF9HQVJCQ05UTCwKKwkJCSAgICBHRU45 X0dBUFNfVFNWX0NSRURJVF9ESVNBQkxFKTsKKwl9CisKKwlpZiAoSVNfQlJPWFRPTihpOTE1KSkg eworCQkvKiBXYURpc2FibGVQb29sZWRFdUxvYWRCYWxhbmNpbmdGaXg6Ynh0ICovCisJCXdhX21h c2tlZF9lbih3YWwsCisJCQkgICAgIEZGX1NMSUNFX0NTX0NISUNLRU4yLAorCQkJICAgICBHRU45 X1BPT0xFRF9FVV9MT0FEX0JBTEFOQ0lOR19GSVhfRElTQUJMRSk7CisJfQorCisJaWYgKElTX0dF TjkoaTkxNSkpIHsKKwkJLyogV2FDb250ZXh0U3dpdGNoV2l0aENvbmN1cnJlbnRUTEJJbnZhbGlk YXRlOnNrbCxieHQsa2JsLGdsayxjZmwgKi8KKwkJd2FfbWFza2VkX2VuKHdhbCwKKwkJCSAgICAg R0VOOV9DU0ZFX0NISUNLRU4xX1JDUywKKwkJCSAgICAgR0VOOV9QUkVFTVBUX0dQR1BVX1NZTkNf U1dJVENIX0RJU0FCTEUpOworCisJCS8qIFdhRW5hYmxlTGJzU2xhUmV0cnlUaW1lckRlY3JlbWVu dDpza2wsYnh0LGtibCxnbGssY2ZsICovCisJCXdhX3dyaXRlX29yKHdhbCwKKwkJCSAgICBCRFdf U0NSQVRDSDEsCisJCQkgICAgR0VOOV9MQlNfU0xBX1JFVFJZX1RJTUVSX0RFQ1JFTUVOVF9FTkFC TEUpOworCisJCS8qIFdhUHJvZ3JhbUwzU3FjUmVnMURlZmF1bHRGb3JQZXJmOmJ4dCxnbGsgKi8K KwkJaWYgKElTX0dFTjlfTFAoaTkxNSkpCisJCQl3YV93cml0ZV9tYXNrZWRfb3Iod2FsLAorCQkJ CQkgICBHRU44X0wzU1FDUkVHMSwKKwkJCQkJICAgTDNfUFJJT19DUkVESVRTX01BU0ssCisJCQkJ CSAgIEwzX0dFTkVSQUxfUFJJT19DUkVESVRTKDYyKSB8CisJCQkJCSAgIEwzX0hJR0hfUFJJT19D UkVESVRTKDIpKTsKKworCQkvKiBXYU9DTENvaGVyZW50TGluZUZsdXNoOnNrbCxieHQsa2JsLGNm bCAqLworCQl3YV93cml0ZV9vcih3YWwsCisJCQkgICAgR0VOOF9MM1NRQ1JFRzQsCisJCQkgICAg R0VOOF9MUVNDX0ZMVVNIX0NPSEVSRU5UX0xJTkVTKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHhj c19lbmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7CisJc3RydWN0IGk5MTVf d2FfbGlzdCAqd2FsID0gJmVuZ2luZS0+d2FfbGlzdDsKKworCS8qIFdhS0JMVkVDU1NlbWFwaG9y ZVdhaXRQb2xsOmtibCAqLworCWlmIChJU19LQkxfUkVWSUQoaTkxNSwgS0JMX1JFVklEX0EwLCBL QkxfUkVWSURfRTApKSB7CisJCXdhX3dyaXRlKHdhbCwKKwkJCSBSSU5HX1NFTUFfV0FJVF9QT0xM KGVuZ2luZS0+bW1pb19iYXNlKSwKKwkJCSAxKTsKKwl9Cit9CisKK3ZvaWQgaW50ZWxfZW5naW5l X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0 cnVjdCBpOTE1X3dhX2xpc3QgKndhbCA9ICZlbmdpbmUtPndhX2xpc3Q7CisKKwlpZiAoR0VNX1dB Uk5fT04oSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPCA4KSkKKwkJcmV0dXJuOworCisJd2FfaW5p dF9zdGFydCh3YWwsIGVuZ2luZS0+bmFtZSk7CisKKwlpZiAoZW5naW5lLT5pZCA9PSBSQ1MpCisJ CXJjc19lbmdpbmVfd2FfaW5pdChlbmdpbmUpOworCWVsc2UKKwkJeGNzX2VuZ2luZV93YV9pbml0 KGVuZ2luZSk7CisKKwl3YV9pbml0X2ZpbmlzaCh3YWwpOworfQorCit2b2lkIGludGVsX2VuZ2lu ZV9hcHBseV93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJ d2FfbGlzdF9hcHBseShlbmdpbmUtPmk5MTUsICZlbmdpbmUtPndhX2xpc3QpOworfQorCiAjaWYg SVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpCiAjaW5jbHVkZSAic2VsZnRlc3Rz L2ludGVsX3dvcmthcm91bmRzLmMiCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93 b3JrYXJvdW5kcy5oCmluZGV4IDI2MzEwNjYwMGZkYy4uOTc5Njk1YTUzOTY0IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmgKQEAgLTM1LDQgKzM1LDcgQEAgdm9pZCBp bnRlbF9ndF9hcHBseV93b3JrYXJvdW5kcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwogCiB2b2lkIGludGVsX3doaXRlbGlzdF93b3JrYXJvdW5kc19hcHBseShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCit2b2lkIGludGVsX2VuZ2luZV9pbml0X3dvcmthcm91 bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cit2b2lkIGludGVsX2VuZ2luZV9h cHBseV93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOworCiAjZW5k aWYKLS0gCjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==