From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 01/22] drm/i915/icl: Introduce initial Icelake Workarounds Date: Thu, 26 Apr 2018 18:01:51 +0300 Message-ID: <87bme6ypsw.fsf@gaia.fi.intel.com> References: <1524256446-28490-1-git-send-email-oscar.mateo@intel.com> <1524256446-28490-2-git-send-email-oscar.mateo@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 744AA6E70E for ; Thu, 26 Apr 2018 15:01:56 +0000 (UTC) In-Reply-To: <1524256446-28490-2-git-send-email-oscar.mateo@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Oscar Mateo , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3NjYXIgTWF0ZW8gPG9zY2FyLm1hdGVvQGludGVsLmNvbT4gd3JpdGVzOgoKPiBJbmhlcml0IHdv cmthcm91bmRzIGZyb20gcHJldmlvdXMgcGxhdGZvcm1zIHRoYXQgYXJlIHN0aWxsIHZhbGlkIGZv cgo+IEljZWxha2UuCj4KPiB2MjogR0VON19ST1dfQ0hJQ0tFTjIgaXMgbWFza2VkCj4gdjM6Cj4g ICAtIFNpbmNlIGl0IGhhcyBiZWVuIGZpeGVkIGFscmVhZHkgaW4gdXBzdHJlYW0sIHJlbW92ZWQg dGhlIFRPRE8KPiAgICAgY29tbWVudCBhYm91dCBXQV9TRVRfQklUIGZvciBXYUluUGxhY2VEZWNv bXByZXNzaW9uSGFuZy4KPiAgIC0gU3F1YXNoZWQgd2l0aCB0aGlzIHBhdGNoOgo+ICAgICAgIGRy bS9pOTE1L2ljbDogYWRkIGljZWxha2VfaW5pdF9jbG9ja19nYXRpbmcoKQo+ICAgICBmcm9tIFBh dWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+ICAgLSBTcXVhc2hlZCB3aXRo IHRoaXMgcGF0Y2g6Cj4gICAgICAgZHJtL2k5MTUvaWNsOiBXYUZvcmNlRW5hYmxlTm9uQ29oZXJl bnQKPiAgICAgZnJvbSBPc2NhciBNYXRlbyA8b3NjYXIubWF0ZW9AaW50ZWwuY29tPgo+ICAgLSBX YVB1c2hDb25zdGFudERlcmVmZXJlbmNlSG9sZERpc2FibGUgaXMgbm93IFdhXzE2MDQzNzA1ODUg YW5kCj4gICAgIGFwcGxpZXMgdG8gQjAgYXMgd2VsbC4KPiAgIC0gV2FQaXBlQ29udHJvbEJlZm9y ZTNEU3RhdGVTYW1wbGVQYXR0ZXJuIFdBQkIgd2FzIGJlaW5nIGFwcGxpZWQKPiAgICAgdG8gSUNM IGluY29ycmVjdGx5Lgo+IHY0Ogo+ICAgLSBXcmFwIHRoZSBjb21taXQgbWVzc2FnZQo+ICAgLSBz L2Rldl9wcml2L3AgdG8gcGxlYXNlIGNoZWNrcGF0Y2gKPiB2NTogUmViYXNlZCBvbiB0b3Agb2Yg dGhlIFdBIHJlZmFjdG9yaW5nCj4gdjY6IFJlYmFzZWQgb24gdG9wIG9mIGZ1cnRoZXIgd2hpdGVs aXN0IHJlZ2lzdGVycyByZWZhY3RvcmluZyAoTWljaGVsKQo+IHY3OiBBZGRlZCBXYVJzRm9yY2V3 YWtlQWRkRGVsYXlGb3JBY2sKPgo+IENjOiBUb21hc3ogTGlzIDx0b21hc3oubGlzQGludGVsLmNv bT4KPiBDYzogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+Cj4g U2lnbmVkLW9mZi1ieTogT3NjYXIgTWF0ZW8gPG9zY2FyLm1hdGVvQGludGVsLmNvbT4KPiAtLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICB8ICA5ICsrKysrKysK PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICB8ICA0ICstLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICAgIHwgIDEgKwo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgIHwgIDIgKysKPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgICB8ICA0ICsrLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF91bmNvcmUuYyAgICAgIHwgIDcgKysrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfd29ya2Fyb3VuZHMuYyB8IDQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4gIDcgZmlsZXMgY2hhbmdlZCwgNjggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkK Pgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDAyODY5MTEuLjFkYzE1N2YgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjQ2Miw2ICsyNDYyLDE1IEBAIHN0YXRpYyBp bmxpbmUgdW5zaWduZWQgaW50IGk5MTVfc2dfc2VnbWVudF9zaXplKHZvaWQpCj4gICNkZWZpbmUg SVNfQ05MX1JFVklEKHAsIHNpbmNlLCB1bnRpbCkgXAo+ICAJKElTX0NBTk5PTkxBS0UocCkgJiYg SVNfUkVWSUQocCwgc2luY2UsIHVudGlsKSkKPiAgCj4gKyNkZWZpbmUgSUNMX1JFVklEX0EwCQkw eDAKPiArI2RlZmluZSBJQ0xfUkVWSURfQTIJCTB4MQoKSnVzdCBub3RlZCB0aGF0IGZvciBzb21l IHJlYXNvbiBic3BlYyBwdXRzIEEwIGFuZCBBMiB1bmRlcgpzYW1lIHJldmlkLiBCc3BlYyBlcnI/ Cgo+ICsjZGVmaW5lIElDTF9SRVZJRF9CMAkJMHgzCj4gKyNkZWZpbmUgSUNMX1JFVklEX0IyCQkw eDQKPiArI2RlZmluZSBJQ0xfUkVWSURfQzAJCTB4NQo+ICsKPiArI2RlZmluZSBJU19JQ0xfUkVW SUQocCwgc2luY2UsIHVudGlsKSBcCj4gKwkoSVNfSUNFTEFLRShwKSAmJiBJU19SRVZJRChwLCBz aW5jZSwgdW50aWwpKQo+ICsKPiAgLyoKPiAgICogVGhlIGdlblggZGVzaWduYXRpb24gdHlwaWNh bGx5IHJlZmVycyB0byB0aGUgcmVuZGVyIGVuZ2luZSwgc28gcmVuZGVyCj4gICAqIGNhcGFiaWxp dHkgcmVsYXRlZCBjaGVja3Mgc2hvdWxkIHVzZSBJU19HRU4sIHdoaWxlIGRpc3BsYXkgYW5kIG90 aGVyIGNoZWNrcwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXggMjFkNzJm Ni4uMjIxYjg3MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTIx NDAsMTIgKzIxNDAsMTIgQEAgc3RhdGljIHZvaWQgZ3R0X3dyaXRlX3dvcmthcm91bmRzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCSAqIGNhbGxlZCBvbiBkcml2ZXIgbG9h ZCBhbmQgYWZ0ZXIgYSBHUFUgcmVzZXQsIHNvIHlvdSBjYW4gcGxhY2UKPiAgCSAqIHdvcmthcm91 bmRzIGhlcmUgZXZlbiBpZiB0aGV5IGdldCBvdmVyd3JpdHRlbiBieSBHUFUgcmVzZXQuCj4gIAkg Ki8KPiAtCS8qIFdhSW5jcmVhc2VEZWZhdWx0VExCRW50cmllczpjaHYsYmR3LHNrbCxieHQsa2Js LGdsayxjZmwsY25sICovCj4gKwkvKiBXYUluY3JlYXNlRGVmYXVsdFRMQkVudHJpZXM6Y2h2LGJk dyxza2wsYnh0LGtibCxnbGssY2ZsLGNubCxpY2wgKi8KPiAgCWlmIChJU19CUk9BRFdFTEwoZGV2 X3ByaXYpKQo+ICAJCUk5MTVfV1JJVEUoR0VOOF9MM19MUkFfMV9HUEdQVSwgR0VOOF9MM19MUkFf MV9HUEdQVV9ERUZBVUxUX1ZBTFVFX0JEVyk7Cj4gIAllbHNlIGlmIChJU19DSEVSUllWSUVXKGRl dl9wcml2KSkKPiAgCQlJOTE1X1dSSVRFKEdFTjhfTDNfTFJBXzFfR1BHUFUsIEdFTjhfTDNfTFJB XzFfR1BHUFVfREVGQVVMVF9WQUxVRV9DSFYpOwo+IC0JZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZf cHJpdikgfHwgSVNfR0VOMTAoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZf cHJpdikgfHwgSVNfR0VOMTAoZGV2X3ByaXYpIHx8IElTX0dFTjExKGRldl9wcml2KSkKPiAgCQlJ OTE1X1dSSVRFKEdFTjhfTDNfTFJBXzFfR1BHUFUsIEdFTjlfTDNfTFJBXzFfR1BHUFVfREVGQVVM VF9WQUxVRV9TS0wpOwo+ICAJZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJSTkx NV9XUklURShHRU44X0wzX0xSQV8xX0dQR1BVLCBHRU45X0wzX0xSQV8xX0dQR1BVX0RFRkFVTFRf VkFMVUVfQlhUKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCBmYjEwNjAyLi5mMmVl MjI1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTcyMDMsNiArNzIwMyw3IEBA IGVudW0gewo+ICAvKiBHRU44IGNoaWNrZW4gKi8KPiAgI2RlZmluZSBIRENfQ0hJQ0tFTjAJCQkJ X01NSU8oMHg3MzAwKQo+ICAjZGVmaW5lIENOTF9IRENfQ0hJQ0tFTjAJCQlfTU1JTygweEU1RjAp Cj4gKyNkZWZpbmUgSUNMX0hEQ19DSElDS0VOMAkJCV9NTUlPKDB4RTVGNCkKPiAgI2RlZmluZSAg SERDX0ZPUkNFX0NTUl9OT05fQ09IRVJFTlRfT1ZSX0RJU0FCTEUJKDE8PDE1KQo+ICAjZGVmaW5l ICBIRENfRkVOQ0VfREVTVF9TTE1fRElTQUJMRQkJKDE8PDE0KQo+ICAjZGVmaW5lICBIRENfRE9O T1RfRkVUQ0hfTUVNX1dIRU5fTUFTS0VECSgxPDwxMSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu Ywo+IGluZGV4IDAyOTkwMWEuLjJkNjU3MmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu Ywo+IEBAIC0xNjM2LDYgKzE2MzYsOCBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfd29ya2Fyb3Vu ZF9iYihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAkJcmV0dXJuIC1FSU5WQUw7 Cj4gIAo+ICAJc3dpdGNoIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSkgewo+ICsJY2FzZSAxMToK PiArCQlyZXR1cm4gMDsKPiAgCWNhc2UgMTA6Cj4gIAkJd2FfYmJfZm5bMF0gPSBnZW4xMF9pbml0 X2luZGlyZWN0Y3R4X2JiOwo+ICAJCXdhX2JiX2ZuWzFdID0gTlVMTDsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMKPiBpbmRleCA0YmFhYjg1Li4zYjdkODA0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jCj4gQEAgLTkxMjMsNyArOTEyMyw5IEBAIHN0YXRpYyB2b2lkIG5vcF9pbml0X2Nsb2Nr X2dhdGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAqLwo+ICB2b2lk IGludGVsX2luaXRfY2xvY2tfZ2F0aW5nX2hvb2tzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgewo+IC0JaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ICsJaWYgKElT X0lDRUxBS0UoZGV2X3ByaXYpKQo+ICsJCWRldl9wcml2LT5kaXNwbGF5LmluaXRfY2xvY2tfZ2F0 aW5nID0gbm9wX2luaXRfY2xvY2tfZ2F0aW5nOwo+ICsJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShk ZXZfcHJpdikpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPSBjbmxf aW5pdF9jbG9ja19nYXRpbmc7Cj4gIAllbHNlIGlmIChJU19DT0ZGRUVMQUtFKGRldl9wcml2KSkK PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0X2Nsb2NrX2dhdGluZyA9IGNmbF9pbml0X2Nsb2Nr X2dhdGluZzsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3Jl LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+IGluZGV4IGQ2ZTIwZjAu LjQ0ODI5M2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3Jl LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+IEBAIC0xMzks NyArMTM5LDkgQEAgZW51bSBhY2tfdHlwZSB7Cj4gIAkgKiBpbiB0aGUgaG9wZSB0aGF0IHRoZSBv cmlnaW5hbCBhY2sgd2lsbCBiZSBkZWxpdmVyZWQgYWxvbmcgd2l0aAo+ICAJICogdGhlIGZhbGxi YWNrIGFjay4KPiAgCSAqCj4gLQkgKiBUaGlzIHdvcmthcm91bmQgaXMgZGVzY3JpYmVkIGluIEhT REVTICMxNjA0MjU0NTI0Cj4gKwkgKiBUaGlzIHdvcmthcm91bmQgaXMgZGVzY3JpYmVkIGluIEhT REVTICMxNjA0MjU0NTI0IGFuZCBpdCdzIGtub3duIGFzOgo+ICsJICogV2FSc0ZvcmNld2FrZUFk ZERlbGF5Rm9yQWNrOnNrbCxieHQsa2JsLGdsayxjZmwsY25sLGljbAo+ICsJICogYWx0aG91Z2gg dGhlIG5hbWUgaXMgYSBiaXQgbWlzbGVhZGluZy4KCkp1c3QgZm9yIHRoZSByZWNvcmQ6CgpXaGVu IEkgaW1wbGVtZW50ZWQgdGhpcyB0aGVyZSB3YXMgcmVjb21tZW5kYXRpb24gdG8gZG8gYm90aCwg ZGVsYXlpbmcKZm9yIGFjayBhbmQgdGhlbiB0aGlzIG1ldGhvZCBvZiB1c2luZyBhIHJlc2VydmVy IGJpdC4gTXkgaW50ZXJwcmV0YXRpb24Kd2FzIHRoYXQgdGhlIGRlbGF5IHdhcyB1c2VkIGFzIGEg Zmlyc3Qgd2VhcG9uIHRvIGNvbWJhdCB0aGUgaXNzdWUuIEFuZAp0aGVuIGxhdGVyLCByZXNlcnZl IGJpdCBtZXRob2QgYXBwZWFyZWQuCgpJIGRpZCBub3QgdXNlIFdhUnNGb3JjZXdha2VBZGREZWxh eUZvckFjayBhcyBJIHRob3VnaHQgdGhhdCB0aGlzIHdpbGwgYmUKbmFtZWQgZGlmZmVyZW50bHku IEFuZCBhbHNvIEkgdGhpbmsgdGhpcyBtZXRob2QgaXMgYSBzdXBlcnNldCwKbWFraW5nIGRlbGF5 aW5nIGlycmVsZXZhbnQuIEFzIHdlIGZhbGxiYWNrIHRvIHJlc2VydmUgaXMgd2UgbWlzcyBhY2sK c28gbm8gbmVlZCB0byBkZWxheSBiZWZvcmUgcG9sbGluZy4gQW5kIGFkZGluZyBkZWxheSB0byBo b3RwYXRoIHNob3VsZApiZSB0aGUgbGFzdCByZXNvcnQgYW55d2F5cy4KCkkgdGhpbmsgdGhpcyBp cyB0aGUgZXZvbHV0aW9uIG9mIFdhUnNGb3JjZXdha2VBZGREZWxheUZvckFjawoodjIpIGFuZCB0 aGVyZSBpcyBubyBiZXR0ZXIgbmFtZSwgd2Ugc2hvdWxkIGtlZXAgaXQuCgo+ICAJICovCj4gIAo+ ICAJcGFzcyA9IDE7Cj4gQEAgLTEzOTQsNyArMTM5Niw4IEBAIHN0YXRpYyB2b2lkIGludGVsX3Vu Y29yZV9md19kb21haW5zX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpIHsKPiAgCQlpbnQgaTsKPiAgCj4gLQkJ ZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dldCA9IGZ3X2RvbWFpbnNfZ2V0Owo+ ICsJCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQgPQo+ICsJCQlmd19kb21h aW5zX2dldF93aXRoX2ZhbGxiYWNrOwo+ICAJCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vf d2FrZV9wdXQgPSBmd19kb21haW5zX3B1dDsKPiAgCQlmd19kb21haW5faW5pdChkZXZfcHJpdiwg RldfRE9NQUlOX0lEX1JFTkRFUiwKPiAgCQkJICAgICAgIEZPUkNFV0FLRV9SRU5ERVJfR0VOOSwK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMKPiBpbmRleCBlYzlkMzQw Li4zZjAwNjIzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmth cm91bmRzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5j Cj4gQEAgLTQ0MSw2ICs0NDEsMjcgQEAgc3RhdGljIGludCBjbmxfY3R4X3dvcmthcm91bmRzX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJcmV0dXJuIDA7Cj4gIH0K PiAgCj4gK3N0YXRpYyBpbnQgaWNsX2N0eF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJLyogV2FfMTYwNDM3MDU4NTppY2wgKHByZS1w cm9kKQo+ICsJICogRm9ybWVybHkga25vd24gYXMgV2FQdXNoQ29uc3RhbnREZXJlZmVyZW5jZUhv bGREaXNhYmxlCj4gKwkgKi8KPiArCWlmIChJU19JQ0xfUkVWSUQoZGV2X3ByaXYsIElDTF9SRVZJ RF9BMCwgSUNMX1JFVklEX0IwKSkKPiArCQlXQV9TRVRfQklUX01BU0tFRChHRU43X1JPV19DSElD S0VOMiwKPiArCQkJCSAgUFVTSF9DT05TVEFOVF9ERVJFRl9ESVNBQkxFKTsKCkluaGVyaXRlZCBm cm9tIENOTCBhbmQgaGFkIHRvIGNoZWNrIGlmIHdlIGhhdmUgdGhhdCBvbiBjbmwuIFdlIGRvLgoK PiArCj4gKwkvKiBXYUZvcmNlRW5hYmxlTm9uQ29oZXJlbnQ6aWNsCj4gKwkgKiBUaGlzIGlzIG5v dCB0aGUgc2FtZSB3b3JrYXJvdW5kIGFzIGluIGVhcmx5IEdlbjkgcGxhdGZvcm1zLCB3aGVyZQo+ ICsJICogbGFja2luZyB0aGlzIGNvdWxkIGNhdXNlIHN5c3RlbSBoYW5ncywgYnV0IGNvaGVyZW5j eSBwZXJmb3JtYW5jZQo+ICsJICogb3ZlcmhlYWQgaXMgaGlnaCBhbmQgb25seSBhIGZldyBjb21w dXRlIHdvcmtsb2FkcyByZWFsbHkgbmVlZCBpdAo+ICsJICogKHRoZSByZWdpc3RlciBpcyB3aGl0 ZWxpc3RlZCBpbiBoYXJkd2FyZSBub3csIHNvIFVNRHMgY2FuIG9wdCBpbgo+ICsJICogZm9yIGNv aGVyZW5jeSBpZiB0aGV5IGhhdmUgYSBnb29kIHJlYXNvbikuCj4gKwkgKi8KPiArCVdBX1NFVF9C SVRfTUFTS0VEKElDTF9IRENfQ0hJQ0tFTjAsIEhEQ19GT1JDRV9OT05fQ09IRVJFTlQpOwoKUmln aHQsIGJ1dCB0aGUgcmVnaXN0ZXIgbmFtZSBzaG91bGQgYmUgSUNMX0hEQ19NT0RFLgoKPiArCj4g KwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgaW50IGludGVsX2N0eF93b3JrYXJvdW5kc19pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJaW50IGVyciA9IDA7Cj4g QEAgLTQ2NSw2ICs0ODYsOCBAQCBpbnQgaW50ZWxfY3R4X3dvcmthcm91bmRzX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWVyciA9IGNmbF9jdHhfd29ya2Fyb3Vu ZHNfaW5pdChkZXZfcHJpdik7Cj4gIAllbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkK PiAgCQllcnIgPSBjbmxfY3R4X3dvcmthcm91bmRzX2luaXQoZGV2X3ByaXYpOwo+ICsJZWxzZSBp ZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpCj4gKwkJZXJyID0gaWNsX2N0eF93b3JrYXJvdW5kc19p bml0KGRldl9wcml2KTsKPiAgCWVsc2UKPiAgCQlNSVNTSU5HX0NBU0UoSU5URUxfR0VOKGRldl9w cml2KSk7Cj4gIAlpZiAoZXJyKQo+IEBAIC02NjMsNiArNjg2LDIxIEBAIHN0YXRpYyB2b2lkIGNu bF9ndF93b3JrYXJvdW5kc19hcHBseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gIAkJICAgX01BU0tFRF9CSVRfRU5BQkxFKEdFTjlfRkZTQ19QRVJDVFhfUFJFRU1QVF9DVFJM KSk7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIGljbF9ndF93b3JrYXJvdW5kc19hcHBseShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCS8qIFRoaXMgaXMgbm90IGFu IFdhLiBFbmFibGUgZm9yIGJldHRlciBpbWFnZSBxdWFsaXR5ICovCj4gKwlJOTE1X1dSSVRFKF8z RF9DSElDS0VOMywKPiArCQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoXzNEX0NISUNLRU4zX0FBX0xJ TkVfUVVBTElUWV9GSVhfRU5BQkxFKSk7Cj4gKwo+ICsJLyogV2FJblBsYWNlRGVjb21wcmVzc2lv bkhhbmc6aWNsICovCj4gKwlJOTE1X1dSSVRFKEdFTjlfR0FNVF9FQ09fUkVHX1JXX0lBLCAoSTkx NV9SRUFEKEdFTjlfR0FNVF9FQ09fUkVHX1JXX0lBKSB8Cj4gKwkJCQkJICAgICBHQU1UX0VDT19F TkFCTEVfSU5fUExBQ0VfREVDT01QUkVTUykpOwo+ICsKPiArCS8qIFdhUGlwZWxpbmVGbHVzaENv aGVyZW50TGluZXM6aWNsICovCj4gKwlJOTE1X1dSSVRFKEdFTjhfTDNTUUNSRUc0LCAoSTkxNV9S RUFEKEdFTjhfTDNTUUNSRUc0KSB8Cj4gKwkJCQkgICAgR0VOOF9MUVNDX0ZMVVNIX0NPSEVSRU5U X0xJTkVTKSk7CgpEaWRuJ3QgZmluZCBhIEhTREVTIGVudHJ5IGZvciB0aGlzLiBUaGUgd29ya2Fy b3VuZCBuYW1lIGFuZCB0aGUgcmVnL2JpdAptYXRjaGVzIHRoby4KCkJ1dCB0aGUgcmVhbCBxdWVz dGlvbiBpbiBoZXJlIGlzIHRoYXQgZG8gd2UgbmVlZCB0byBzZXQgdGhpcyB0aHJvdWdoCmluZGly ZWN0IGJiIGxpa2Ugd2UgZG8gd2l0aCBnZW5bOCw5XS4KCkFuZCBqdXN0IHRvIG5vdGUgdGhhdCBj bmwgaXMgbWlzc2luZyB0aGlzIHRvby4gQnV0IHRoYXQgY2FuIGJlIGRvbmUKYXMgYSBmb2xsb3d1 cCB3aGVuIHdlIGZpcnN0IGZpZ3VyZSBvdXQgdGhhdCBzaG91bGQgd2UgdXNlIHRoZSBpbmRpcmVj dApiYiBmb3IgYWxsID49IGdlbjguCgotTWlrYQoKPiArfQo+ICsKPiAgdm9pZCBpbnRlbF9ndF93 b3JrYXJvdW5kc19hcHBseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsK PiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCkKPiBAQCAtNjgzLDYgKzcyMSw4IEBAIHZv aWQgaW50ZWxfZ3Rfd29ya2Fyb3VuZHNfYXBwbHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICAJCWNmbF9ndF93b3JrYXJvdW5kc19hcHBseShkZXZfcHJpdik7Cj4gIAllbHNl IGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkKPiAgCQljbmxfZ3Rfd29ya2Fyb3VuZHNfYXBw bHkoZGV2X3ByaXYpOwo+ICsJZWxzZSBpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpCj4gKwkJaWNs X2d0X3dvcmthcm91bmRzX2FwcGx5KGRldl9wcml2KTsKPiAgCWVsc2UKPiAgCQlNSVNTSU5HX0NB U0UoSU5URUxfR0VOKGRldl9wcml2KSk7Cj4gIH0KPiBAQCAtNzYxLDYgKzgwMSwxMCBAQCBzdGF0 aWMgdm9pZCBjbmxfd2hpdGVsaXN0X2J1aWxkKHN0cnVjdCB3aGl0ZWxpc3QgKncpCj4gIAl3aGl0 ZWxpc3RfcmVnKHcsIEdFTjhfQ1NfQ0hJQ0tFTjEpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBp Y2xfd2hpdGVsaXN0X2J1aWxkKHN0cnVjdCB3aGl0ZWxpc3QgKncpCj4gK3sKPiArfQo+ICsKPiAg c3RhdGljIHN0cnVjdCB3aGl0ZWxpc3QgKndoaXRlbGlzdF9idWlsZChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCj4gIAkJCQkJIHN0cnVjdCB3aGl0ZWxpc3QgKncpCj4gIHsKPiBAQCAt Nzg5LDYgKzgzMyw4IEBAIHN0YXRpYyBzdHJ1Y3Qgd2hpdGVsaXN0ICp3aGl0ZWxpc3RfYnVpbGQo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJCWNmbF93aGl0ZWxpc3RfYnVpbGQo dyk7Cj4gIAllbHNlIGlmIChJU19DQU5OT05MQUtFKGk5MTUpKQo+ICAJCWNubF93aGl0ZWxpc3Rf YnVpbGQodyk7Cj4gKwllbHNlIGlmIChJU19JQ0VMQUtFKGk5MTUpKQo+ICsJCWljbF93aGl0ZWxp c3RfYnVpbGQodyk7Cj4gIAllbHNlCj4gIAkJTUlTU0lOR19DQVNFKElOVEVMX0dFTihpOTE1KSk7 Cj4gIAo+IC0tIAo+IDEuOS4xCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=