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: Fri, 11 May 2018 15:37:29 +0300 Message-ID: <87h8ne9xme.fsf@gaia.fi.intel.com> References: <1525814984-20039-1-git-send-email-oscar.mateo@intel.com> <1525814984-20039-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 70BA56F13D for ; Fri, 11 May 2018 12:37:35 +0000 (UTC) In-Reply-To: <1525814984-20039-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 Cc: Rodrigo Vivi 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 YWtlQWRkRGVsYXlGb3JBY2sKPiB2ODogcy9JQ0xfSERDX0NISUNLRU4wL0lDTF9IRENfTU9ERSAo TWlrYSkKPiB2OToKPiAgIC0gQywgbm90IGxpc3AgKENocmlzKQo+ICAgLSBXYUluY3JlYXNlRGVm YXVsdFRMQkVudHJpZXMgaXMgdGhlIHNhbWUgZm9yIEdFTiA+IDlfTFAgKFR2cnRrbykKPgo+IFNp Z25lZC1vZmYtYnk6IE9zY2FyIE1hdGVvIDxvc2Nhci5tYXRlb0BpbnRlbC5jb20+Cj4gQ2M6IFJv ZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiBDYzogVG9tYXN6IExpcyA8dG9t YXN6Lmxpc0BpbnRlbC5jb20+Cj4gQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAbGlu dXguaW50ZWwuY29tPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwu Y29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgIHwg IDkgKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAgIHwg IDYgKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgICB8ICAx ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICB8ICAyICsrCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICAgfCAgNCArKy0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgICAgICB8ICA3ICsrKy0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMgfCA0NiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+ICA3IGZpbGVzIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKyksIDYg ZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCAwNGUyNzgwLi5h ZDc5ZDVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTI0NjksNiArMjQ2OSwx NSBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBpOTE1X3NnX3NlZ21lbnRfc2l6ZSh2b2lk KQo+ICAjZGVmaW5lIElTX0NOTF9SRVZJRChwLCBzaW5jZSwgdW50aWwpIFwKPiAgCShJU19DQU5O T05MQUtFKHApICYmIElTX1JFVklEKHAsIHNpbmNlLCB1bnRpbCkpCj4gIAo+ICsjZGVmaW5lIElD TF9SRVZJRF9BMAkJMHgwCj4gKyNkZWZpbmUgSUNMX1JFVklEX0EyCQkweDEKPiArI2RlZmluZSBJ Q0xfUkVWSURfQjAJCTB4Mwo+ICsjZGVmaW5lIElDTF9SRVZJRF9CMgkJMHg0Cj4gKyNkZWZpbmUg SUNMX1JFVklEX0MwCQkweDUKPiArCj4gKyNkZWZpbmUgSVNfSUNMX1JFVklEKHAsIHNpbmNlLCB1 bnRpbCkgXAo+ICsJKElTX0lDRUxBS0UocCkgJiYgSVNfUkVWSUQocCwgc2luY2UsIHVudGlsKSkK PiArCj4gIC8qCj4gICAqIFRoZSBnZW5YIGRlc2lnbmF0aW9uIHR5cGljYWxseSByZWZlcnMgdG8g dGhlIHJlbmRlciBlbmdpbmUsIHNvIHJlbmRlcgo+ICAgKiBjYXBhYmlsaXR5IHJlbGF0ZWQgY2hl Y2tzIHNob3VsZCB1c2UgSVNfR0VOLCB3aGlsZSBkaXNwbGF5IGFuZCBvdGhlciBjaGVja3MKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IGluZGV4IGM4NzliZmQuLmVhMzBlODQgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IEBAIC0yMTM3LDE1ICsyMTM3LDE1 IEBAIHN0YXRpYyB2b2lkIGd0dF93cml0ZV93b3JrYXJvdW5kcyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIAkgKiBjYWxsZWQgb24gZHJpdmVyIGxvYWQgYW5kIGFmdGVyIGEg R1BVIHJlc2V0LCBzbyB5b3UgY2FuIHBsYWNlCj4gIAkgKiB3b3JrYXJvdW5kcyBoZXJlIGV2ZW4g aWYgdGhleSBnZXQgb3ZlcndyaXR0ZW4gYnkgR1BVIHJlc2V0Lgo+ICAJICovCj4gLQkvKiBXYUlu Y3JlYXNlRGVmYXVsdFRMQkVudHJpZXM6Y2h2LGJkdyxza2wsYnh0LGtibCxnbGssY2ZsLGNubCAq Lwo+ICsJLyogV2FJbmNyZWFzZURlZmF1bHRUTEJFbnRyaWVzOmNodixiZHcsc2tsLGJ4dCxrYmws Z2xrLGNmbCxjbmwsaWNsICovCj4gIAlpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiAgCQlJ OTE1X1dSSVRFKEdFTjhfTDNfTFJBXzFfR1BHUFUsIEdFTjhfTDNfTFJBXzFfR1BHUFVfREVGQVVM VF9WQUxVRV9CRFcpOwo+ICAJZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gIAkJ STkxNV9XUklURShHRU44X0wzX0xSQV8xX0dQR1BVLCBHRU44X0wzX0xSQV8xX0dQR1BVX0RFRkFV TFRfVkFMVUVfQ0hWKTsKPiAtCWVsc2UgaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpIHx8IElTX0dF TjEwKGRldl9wcml2KSkKPiAtCQlJOTE1X1dSSVRFKEdFTjhfTDNfTFJBXzFfR1BHUFUsIEdFTjlf TDNfTFJBXzFfR1BHUFVfREVGQVVMVF9WQUxVRV9TS0wpOwo+ICAJZWxzZSBpZiAoSVNfR0VOOV9M UChkZXZfcHJpdikpCj4gIAkJSTkxNV9XUklURShHRU44X0wzX0xSQV8xX0dQR1BVLCBHRU45X0wz X0xSQV8xX0dQR1BVX0RFRkFVTFRfVkFMVUVfQlhUKTsKPiArCWVsc2UgaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSkKPiArCQlJOTE1X1dSSVRFKEdFTjhfTDNfTFJBXzFfR1BHUFUsIEdFTjlf TDNfTFJBXzFfR1BHUFVfREVGQVVMVF9WQUxVRV9TS0wpOwo+ICAKPiAgCS8qCj4gIAkgKiBUbyBz dXBwb3J0IDY0SyBQVEVzIHdlIG5lZWQgdG8gZmlyc3QgZW5hYmxlIHRoZSB1c2Ugb2YgdGhlCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggMDg1OTI4Yy4uMmIyMmQ0ZCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC03MjM4LDYgKzcyMzgsNyBAQCBlbnVtIHsKPiAgLyog R0VOOCBjaGlja2VuICovCj4gICNkZWZpbmUgSERDX0NISUNLRU4wCQkJCV9NTUlPKDB4NzMwMCkK PiAgI2RlZmluZSBDTkxfSERDX0NISUNLRU4wCQkJX01NSU8oMHhFNUYwKQo+ICsjZGVmaW5lIElD TF9IRENfTU9ERQkJCQlfTU1JTygweEU1RjQpCj4gICNkZWZpbmUgIEhEQ19GT1JDRV9DU1JfTk9O X0NPSEVSRU5UX09WUl9ESVNBQkxFCSgxPDwxNSkKPiAgI2RlZmluZSAgSERDX0ZFTkNFX0RFU1Rf U0xNX0RJU0FCTEUJCSgxPDwxNCkKPiAgI2RlZmluZSAgSERDX0RPTk9UX0ZFVENIX01FTV9XSEVO X01BU0tFRAkoMTw8MTEpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCA5MTFmMjg4 Li45MjA3NTJhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtMTY2NSw2ICsx NjY1LDggQEAgc3RhdGljIGludCBpbnRlbF9pbml0X3dvcmthcm91bmRfYmIoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCXN3aXRjaCAo SU5URUxfR0VOKGVuZ2luZS0+aTkxNSkpIHsKPiArCWNhc2UgMTE6Cj4gKwkJcmV0dXJuIDA7Cj4g IAljYXNlIDEwOgo+ICAJCXdhX2JiX2ZuWzBdID0gZ2VuMTBfaW5pdF9pbmRpcmVjdGN0eF9iYjsK PiAgCQl3YV9iYl9mblsxXSA9IE5VTEw7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXgg NDEyNjEzMi4uOWM2ZTQ4YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC05MTkw LDcgKzkxOTAsOSBAQCBzdGF0aWMgdm9pZCBub3BfaW5pdF9jbG9ja19nYXRpbmcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgKi8KPiAgdm9pZCBpbnRlbF9pbml0X2Nsb2Nr X2dhdGluZ19ob29rcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAt CWlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkKPiArCWlmIChJU19JQ0VMQUtFKGRldl9wcml2 KSkKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0X2Nsb2NrX2dhdGluZyA9IG5vcF9pbml0X2Ns b2NrX2dhdGluZzsKPiArCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ICAJCWRl dl9wcml2LT5kaXNwbGF5LmluaXRfY2xvY2tfZ2F0aW5nID0gY25sX2luaXRfY2xvY2tfZ2F0aW5n Owo+ICAJZWxzZSBpZiAoSVNfQ09GRkVFTEFLRShkZXZfcHJpdikpCj4gIAkJZGV2X3ByaXYtPmRp c3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPSBjZmxfaW5pdF9jbG9ja19nYXRpbmc7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiBpbmRleCBkNmUyMGYwLi40NDgyOTNlIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiBAQCAtMTM5LDcgKzEzOSw5IEBAIGVudW0g YWNrX3R5cGUgewo+ICAJICogaW4gdGhlIGhvcGUgdGhhdCB0aGUgb3JpZ2luYWwgYWNrIHdpbGwg YmUgZGVsaXZlcmVkIGFsb25nIHdpdGgKPiAgCSAqIHRoZSBmYWxsYmFjayBhY2suCj4gIAkgKgo+ IC0JICogVGhpcyB3b3JrYXJvdW5kIGlzIGRlc2NyaWJlZCBpbiBIU0RFUyAjMTYwNDI1NDUyNAo+ ICsJICogVGhpcyB3b3JrYXJvdW5kIGlzIGRlc2NyaWJlZCBpbiBIU0RFUyAjMTYwNDI1NDUyNCBh bmQgaXQncyBrbm93biBhczoKPiArCSAqIFdhUnNGb3JjZXdha2VBZGREZWxheUZvckFjazpza2ws Ynh0LGtibCxnbGssY2ZsLGNubCxpY2wKPiArCSAqIGFsdGhvdWdoIHRoZSBuYW1lIGlzIGEgYml0 IG1pc2xlYWRpbmcuCj4gIAkgKi8KPiAgCj4gIAlwYXNzID0gMTsKPiBAQCAtMTM5NCw3ICsxMzk2 LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfdW5jb3JlX2Z3X2RvbWFpbnNfaW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAx MSkgewo+ICAJCWludCBpOwo+ICAKPiAtCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dh a2VfZ2V0ID0gZndfZG9tYWluc19nZXQ7Cj4gKwkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3Jj ZV93YWtlX2dldCA9Cj4gKwkJCWZ3X2RvbWFpbnNfZ2V0X3dpdGhfZmFsbGJhY2s7Cj4gIAkJZGV2 X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX3B1dCA9IGZ3X2RvbWFpbnNfcHV0Owo+ICAJ CWZ3X2RvbWFpbl9pbml0KGRldl9wcml2LCBGV19ET01BSU5fSURfUkVOREVSLAo+ICAJCQkgICAg ICAgRk9SQ0VXQUtFX1JFTkRFUl9HRU45LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29y a2Fyb3VuZHMuYwo+IGluZGV4IGVjOWQzNDAuLjczZDAyZDMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMKPiBAQCAtNDQxLDYgKzQ0MSwyNyBAQCBzdGF0aWMg aW50IGNubF9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiArc3RhdGljIGludCBpY2xfY3R4X3dvcmth cm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwkv KiBXYV8xNjA0MzcwNTg1OmljbCAocHJlLXByb2QpCj4gKwkgKiBGb3JtZXJseSBrbm93biBhcyBX YVB1c2hDb25zdGFudERlcmVmZXJlbmNlSG9sZERpc2FibGUKPiArCSAqLwo+ICsJaWYgKElTX0lD TF9SRVZJRChkZXZfcHJpdiwgSUNMX1JFVklEX0EwLCBJQ0xfUkVWSURfQjApKQo+ICsJCVdBX1NF VF9CSVRfTUFTS0VEKEdFTjdfUk9XX0NISUNLRU4yLAo+ICsJCQkJICBQVVNIX0NPTlNUQU5UX0RF UkVGX0RJU0FCTEUpOwo+ICsKPiArCS8qIFdhRm9yY2VFbmFibGVOb25Db2hlcmVudDppY2wKPiAr CSAqIFRoaXMgaXMgbm90IHRoZSBzYW1lIHdvcmthcm91bmQgYXMgaW4gZWFybHkgR2VuOSBwbGF0 Zm9ybXMsIHdoZXJlCj4gKwkgKiBsYWNraW5nIHRoaXMgY291bGQgY2F1c2Ugc3lzdGVtIGhhbmdz LCBidXQgY29oZXJlbmN5IHBlcmZvcm1hbmNlCj4gKwkgKiBvdmVyaGVhZCBpcyBoaWdoIGFuZCBv bmx5IGEgZmV3IGNvbXB1dGUgd29ya2xvYWRzIHJlYWxseSBuZWVkIGl0Cj4gKwkgKiAodGhlIHJl Z2lzdGVyIGlzIHdoaXRlbGlzdGVkIGluIGhhcmR3YXJlIG5vdywgc28gVU1EcyBjYW4gb3B0IGlu Cj4gKwkgKiBmb3IgY29oZXJlbmN5IGlmIHRoZXkgaGF2ZSBhIGdvb2QgcmVhc29uKS4KPiArCSAq Lwo+ICsJV0FfU0VUX0JJVF9NQVNLRUQoSUNMX0hEQ19NT0RFLCBIRENfRk9SQ0VfTk9OX0NPSEVS RU5UKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgaW50IGludGVsX2N0eF93b3JrYXJv dW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJaW50 IGVyciA9IDA7Cj4gQEAgLTQ2NSw2ICs0ODYsOCBAQCBpbnQgaW50ZWxfY3R4X3dvcmthcm91bmRz X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWVyciA9IGNmbF9j dHhfd29ya2Fyb3VuZHNfaW5pdChkZXZfcHJpdik7Cj4gIAllbHNlIGlmIChJU19DQU5OT05MQUtF KGRldl9wcml2KSkKPiAgCQllcnIgPSBjbmxfY3R4X3dvcmthcm91bmRzX2luaXQoZGV2X3ByaXYp Owo+ICsJZWxzZSBpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpCj4gKwkJZXJyID0gaWNsX2N0eF93 b3JrYXJvdW5kc19pbml0KGRldl9wcml2KTsKPiAgCWVsc2UKPiAgCQlNSVNTSU5HX0NBU0UoSU5U RUxfR0VOKGRldl9wcml2KSk7Cj4gIAlpZiAoZXJyKQo+IEBAIC02NjMsNiArNjg2LDIxIEBAIHN0 YXRpYyB2b2lkIGNubF9ndF93b3JrYXJvdW5kc19hcHBseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIAkJICAgX01BU0tFRF9CSVRfRU5BQkxFKEdFTjlfRkZTQ19QRVJDVFhf UFJFRU1QVF9DVFJMKSk7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIGljbF9ndF93b3JrYXJvdW5k c19hcHBseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCS8qIFRo aXMgaXMgbm90IGFuIFdhLiBFbmFibGUgZm9yIGJldHRlciBpbWFnZSBxdWFsaXR5ICovCj4gKwlJ OTE1X1dSSVRFKF8zRF9DSElDS0VOMywKPiArCQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoXzNEX0NI SUNLRU4zX0FBX0xJTkVfUVVBTElUWV9GSVhfRU5BQkxFKSk7Cj4gKwo+ICsJLyogV2FJblBsYWNl RGVjb21wcmVzc2lvbkhhbmc6aWNsICovCj4gKwlJOTE1X1dSSVRFKEdFTjlfR0FNVF9FQ09fUkVH X1JXX0lBLCBJOTE1X1JFQUQoR0VOOV9HQU1UX0VDT19SRUdfUldfSUEpIHwKPiArCQkJCQkgICAg R0FNVF9FQ09fRU5BQkxFX0lOX1BMQUNFX0RFQ09NUFJFU1MpOwo+ICsKPiArCS8qIFdhUGlwZWxp bmVGbHVzaENvaGVyZW50TGluZXM6aWNsICovCj4gKwlJOTE1X1dSSVRFKEdFTjhfTDNTUUNSRUc0 LCBJOTE1X1JFQUQoR0VOOF9MM1NRQ1JFRzQpIHwKPiArCQkJCSAgIEdFTjhfTFFTQ19GTFVTSF9D T0hFUkVOVF9MSU5FUyk7CgpPaywgZm9yIGljbCwgdGhpcyBpcyBuZWVkZWQuIEFuZCBsaWtlIHlv dSBzYWlkLCBpdCBpcyBkaWZmZXJlbnQKdGhhbiB3aGF0IHRoZSBXYUZsdXNoQ29oZXJlbnRMM0Nh Y2hlTGluZXNBdENvbnRleHRTd2l0Y2ggZG9lcy4KClRoZXJlIGlzIG1vcmUgdG8gdGhpcyBzYWdh LCBhcyBXYVBpcGVsaW5lRmx1c2hDb2hlcmVudExpbmVzCmlzIG5lZWRlZCBhbHNvIGZvciBvdGhl ciBwbGF0Zm9ybXMsIGFuZCB3ZSBkb24ndCBoYXZlIGl0LgpBbmQgaXQgd2lsbCBjb2xsaWRlIHdp dGggaG93IHdlIGRvIHBlciBiYiB3b3JrYXJvdW5kcyBhcm91bmQgdGhpcyByZWcuCgpBIHRoaW5n IHdlIG11Y2ggcmVjaGVjayBhbHNvIG9uIGljbCwgaWYgd2UgYWRkIGluZGlyZWN0IGNvbnRleHQg YmIncy4KClJldmlld2VkLWJ5OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4Lmlu dGVsLmNvbT4KCj4gK30KPiArCj4gIHZvaWQgaW50ZWxfZ3Rfd29ya2Fyb3VuZHNfYXBwbHkoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8IDgpCj4gQEAgLTY4Myw2ICs3MjEsOCBAQCB2b2lkIGludGVsX2d0X3dvcmthcm91 bmRzX2FwcGx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQljZmxfZ3Rf d29ya2Fyb3VuZHNfYXBwbHkoZGV2X3ByaXYpOwo+ICAJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShk ZXZfcHJpdikpCj4gIAkJY25sX2d0X3dvcmthcm91bmRzX2FwcGx5KGRldl9wcml2KTsKPiArCWVs c2UgaWYgKElTX0lDRUxBS0UoZGV2X3ByaXYpKQo+ICsJCWljbF9ndF93b3JrYXJvdW5kc19hcHBs eShkZXZfcHJpdik7Cj4gIAllbHNlCj4gIAkJTUlTU0lOR19DQVNFKElOVEVMX0dFTihkZXZfcHJp dikpOwo+ICB9Cj4gQEAgLTc2MSw2ICs4MDEsMTAgQEAgc3RhdGljIHZvaWQgY25sX3doaXRlbGlz dF9idWlsZChzdHJ1Y3Qgd2hpdGVsaXN0ICp3KQo+ICAJd2hpdGVsaXN0X3JlZyh3LCBHRU44X0NT X0NISUNLRU4xKTsKPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgaWNsX3doaXRlbGlzdF9idWlsZChz dHJ1Y3Qgd2hpdGVsaXN0ICp3KQo+ICt7Cj4gK30KPiArCj4gIHN0YXRpYyBzdHJ1Y3Qgd2hpdGVs aXN0ICp3aGl0ZWxpc3RfYnVpbGQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJ CQkJCSBzdHJ1Y3Qgd2hpdGVsaXN0ICp3KQo+ICB7Cj4gQEAgLTc4OSw2ICs4MzMsOCBAQCBzdGF0 aWMgc3RydWN0IHdoaXRlbGlzdCAqd2hpdGVsaXN0X2J1aWxkKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwKPiAgCQljZmxfd2hpdGVsaXN0X2J1aWxkKHcpOwo+ICAJZWxzZSBpZiAoSVNf Q0FOTk9OTEFLRShpOTE1KSkKPiAgCQljbmxfd2hpdGVsaXN0X2J1aWxkKHcpOwo+ICsJZWxzZSBp ZiAoSVNfSUNFTEFLRShpOTE1KSkKPiArCQlpY2xfd2hpdGVsaXN0X2J1aWxkKHcpOwo+ICAJZWxz ZQo+ICAJCU1JU1NJTkdfQ0FTRShJTlRFTF9HRU4oaTkxNSkpOwo+ICAKPiAtLSAKPiAxLjkuMQpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK