From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 5/5] drm/i915/cfl: Introduce Coffee Lake workardounds. Date: Thu, 08 Jun 2017 17:01:57 +0300 Message-ID: <87y3t2bmsq.fsf@gaia.fi.intel.com> References: <1496776802-28759-1-git-send-email-rodrigo.vivi@intel.com> <1496776802-28759-5-git-send-email-rodrigo.vivi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id E1A706E3D3 for ; Thu, 8 Jun 2017 14:02:15 +0000 (UTC) In-Reply-To: <1496776802-28759-5-git-send-email-rodrigo.vivi@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: Dhinakaran Pandiyan , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org Um9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPiB3cml0ZXM6Cgo+IENvZmZlZSBM YWtlIGluaGVyaXQgbW9zdCBvZiBLYWJ5bGFrZSBwcm9kdWN0aW9uCj4gd29ya2FyZG91bmRzLgo+ Cj4gT25seSBkaWZmZXJlbmNlIGlkZW50aWZpZWQgc28gZmFyIGlzOgo+IC0gV2FEaXNhYmxlTFNR Q1JPUEVSRmZvck9DTCBpcyBtYXJrZWQgYXMgU0lXQV9ORVZFUgo+Cj4gQ2M6IERoaW5ha2FyYW4g UGFuZGl5YW4gPGRoaW5ha2FyYW4ucGFuZGl5YW5AaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6 IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9lbmdpbmVfY3MuYyB8IDc1ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgfCAxMCArKy0t LQo+ICAzIGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQo+ Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCA0ZmY4NTRlLi44ZTA1NWIx IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMTg4NCw3ICsxODg0 LDcgQEAgc3RhdGljIHZvaWQgZ3R0X3dyaXRlX3dvcmthcm91bmRzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgCSAqIGNhbGxlZCBvbiBkcml2ZXIgbG9hZCBhbmQgYWZ0ZXIg YSBHUFUgcmVzZXQsIHNvIHlvdSBjYW4gcGxhY2UKPiAgCSAqIHdvcmthcm91bmRzIGhlcmUgZXZl biBpZiB0aGV5IGdldCBvdmVyd3JpdHRlbiBieSBHUFUgcmVzZXQuCj4gIAkgKi8KPiAtCS8qIFdh SW5jcmVhc2VEZWZhdWx0VExCRW50cmllczpjaHYsYmR3LHNrbCxieHQsa2JsLGdsayAqLwo+ICsJ LyogV2FJbmNyZWFzZURlZmF1bHRUTEJFbnRyaWVzOmNodixiZHcsc2tsLGJ4dCxrYmwsZ2xrLGNm bCAqLwo+ICAJaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gIAkJSTkxNV9XUklURShHRU44 X0wzX0xSQV8xX0dQR1BVLCBHRU44X0wzX0xSQV8xX0dQR1BVX0RFRkFVTFRfVkFMVUVfQkRXKTsK PiAgCWVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2VuZ2luZV9jcy5jCj4gaW5kZXggYmMzOGJkMS4uNjMwZmY2ZSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gQEAgLTgxNCwyNCArODE0LDI0IEBAIHN0 YXRpYyBpbnQgZ2VuOV9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkx NTsKPiAgCWludCByZXQ7Cj4gIAo+IC0JLyogV2FDb25leHRTd2l0Y2hXaXRoQ29uY3VycmVudFRM QkludmFsaWRhdGU6c2tsLGJ4dCxrYmwsZ2xrICovCj4gKwkvKiBXYUNvbmV4dFN3aXRjaFdpdGhD b25jdXJyZW50VExCSW52YWxpZGF0ZTpza2wsYnh0LGtibCxnbGssY2ZsICovCj4gIAlJOTE1X1dS SVRFKEdFTjlfQ1NGRV9DSElDS0VOMV9SQ1MsIF9NQVNLRURfQklUX0VOQUJMRShHRU45X1BSRUVN UFRfR1BHUFVfU1lOQ19TV0lUQ0hfRElTQUJMRSkpOwo+ICAKPiAtCS8qIFdhRW5hYmxlTGJzU2xh UmV0cnlUaW1lckRlY3JlbWVudDpza2wsYnh0LGtibCxnbGsgKi8KPiArCS8qIFdhRW5hYmxlTGJz U2xhUmV0cnlUaW1lckRlY3JlbWVudDpza2wsYnh0LGtibCxnbGssY2ZsICovCj4gIAlJOTE1X1dS SVRFKEJEV19TQ1JBVENIMSwgSTkxNV9SRUFEKEJEV19TQ1JBVENIMSkgfAo+ICAJCSAgIEdFTjlf TEJTX1NMQV9SRVRSWV9USU1FUl9ERUNSRU1FTlRfRU5BQkxFKTsKPiAgCj4gLQkvKiBXYURpc2Fi bGVLaWxsTG9naWM6Ynh0LHNrbCxrYmwgKi8KPiArCS8qIFdhRGlzYWJsZUtpbGxMb2dpYzpieHQs c2tsLGtibCxjZmwgKi8KPiAgCUk5MTVfV1JJVEUoR0FNX0VDT0NISywgSTkxNV9SRUFEKEdBTV9F Q09DSEspIHwKPiAgCQkgICBFQ09DSEtfRElTX1RMQik7Cj4KCkkgY291bGRuJ3QgZmluZCByZWZl cmVuY2UgdG8gdGhpcyBpbiBhbnl3aGVyZS4gU28gSQp3b3VsZCBzdWdnZXN0IGV4Y2x1ZGluZyBp dCwgdW5sZXNzIHlvdSBoYXZlIGJldHRlciBzb3VyY2VzIDopCgoKPiAtCS8qIFdhQ2xlYXJGbG93 Q29udHJvbEdwZ3B1Q29udGV4dFNhdmU6c2tsLGJ4dCxrYmwsZ2xrICovCj4gLQkvKiBXYURpc2Fi bGVQYXJ0aWFsSW5zdFNob290ZG93bjpza2wsYnh0LGtibCxnbGsgKi8KPiArCS8qIFdhQ2xlYXJG bG93Q29udHJvbEdwZ3B1Q29udGV4dFNhdmU6c2tsLGJ4dCxrYmwsZ2xrLGNmbCAqLwo+ICsJLyog V2FEaXNhYmxlUGFydGlhbEluc3RTaG9vdGRvd246c2tsLGJ4dCxrYmwsZ2xrLGNmbCAqLwo+ICAJ V0FfU0VUX0JJVF9NQVNLRUQoR0VOOF9ST1dfQ0hJQ0tFTiwKPiAgCQkJICBGTE9XX0NPTlRST0xf RU5BQkxFIHwKPiAgCQkJICBQQVJUSUFMX0lOU1RSVUNUSU9OX1NIT09URE9XTl9ESVNBQkxFKTsK PiAgCj4gLQkvKiBTeW5jaW5nIGRlcGVuZGVuY2llcyBiZXR3ZWVuIGNhbWVyYSBhbmQgZ3JhcGhp Y3M6c2tsLGJ4dCxrYmwgKi8KPiArCS8qIFN5bmNpbmcgZGVwZW5kZW5jaWVzIGJldHdlZW4gY2Ft ZXJhIGFuZCBncmFwaGljczpza2wsYnh0LGtibCxjZmwgKi8KPiAgCVdBX1NFVF9CSVRfTUFTS0VE KEhBTEZfU0xJQ0VfQ0hJQ0tFTjMsCj4gIAkJCSAgR0VOOV9ESVNBQkxFX09DTF9PT0JfU1VQUFJF U1NfTE9HSUMpOwo+CgpCc3BlYyBzYXlzIHRoYXQgc2hvdWxkIGJlIGRpc2FibGVkIGZvciBza2wr LiBCc3BlYyBpcyBvdXRkYXRlZD8KCj4gQEAgLTg1MSwxOCArODUxLDE4IEBAIHN0YXRpYyBpbnQg Z2VuOV9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAg CQkgKi8KPiAgCX0KPiAgCj4gLQkvKiBXYUVuYWJsZVlWMTJCdWdGaXhJbkhhbGZTbGljZUNoaWNr ZW43OnNrbCxieHQsa2JsLGdsayAqLwo+IC0JLyogV2FFbmFibGVTYW1wbGVyR1BHUFVQcmVlbXB0 aW9uU3VwcG9ydDpza2wsYnh0LGtibCAqLwo+ICsJLyogV2FFbmFibGVZVjEyQnVnRml4SW5IYWxm U2xpY2VDaGlja2VuNzpza2wsYnh0LGtibCxnbGssY2ZsICovCj4gKwkvKiBXYUVuYWJsZVNhbXBs ZXJHUEdQVVByZWVtcHRpb25TdXBwb3J0OnNrbCxieHQsa2JsLGNmbCAqLwo+ICAJV0FfU0VUX0JJ VF9NQVNLRUQoR0VOOV9IQUxGX1NMSUNFX0NISUNLRU43LAo+ICAJCQkgIEdFTjlfRU5BQkxFX1lW MTJfQlVHRklYIHwKPiAgCQkJICBHRU45X0VOQUJMRV9HUEdQVV9QUkVFTVBUSU9OKTsKPiAgCj4g LQkvKiBXYTR4NFNUQ09wdGltaXphdGlvbkRpc2FibGU6c2tsLGJ4dCxrYmwsZ2xrICovCj4gLQkv KiBXYURpc2FibGVQYXJ0aWFsUmVzb2x2ZUluVmM6c2tsLGJ4dCxrYmwgKi8KPiArCS8qIFdhNHg0 U1RDT3B0aW1pemF0aW9uRGlzYWJsZTpza2wsYnh0LGtibCxnbGssY2ZsICovCj4gKwkvKiBXYURp c2FibGVQYXJ0aWFsUmVzb2x2ZUluVmM6c2tsLGJ4dCxrYmwsY2ZsICovCj4gIAlXQV9TRVRfQklU X01BU0tFRChDQUNIRV9NT0RFXzEsIChHRU44XzR4NF9TVENfT1BUSU1JWkFUSU9OX0RJU0FCTEUg fAo+ICAJCQkJCSBHRU45X1BBUlRJQUxfUkVTT0xWRV9JTl9WQ19ESVNBQkxFKSk7Cj4gIAo+IC0J LyogV2FDY3NUbGJQcmVmZXRjaERpc2FibGU6c2tsLGJ4dCxrYmwsZ2xrICovCj4gKwkvKiBXYUNj c1RsYlByZWZldGNoRGlzYWJsZTpza2wsYnh0LGtibCxnbGssY2ZsICovCj4gIAlXQV9DTFJfQklU X01BU0tFRChHRU45X0hBTEZfU0xJQ0VfQ0hJQ0tFTjUsCj4gIAkJCSAgR0VOOV9DQ1NfVExCX1BS RUZFVENIX0VOQUJMRSk7Cj4gIAo+IEBAIC04NzEsNyArODcxLDcgQEAgc3RhdGljIGludCBnZW45 X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJCVdB X1NFVF9CSVRfTUFTS0VEKFNMSUNFX0VDT19DSElDS0VOMCwKPiAgCQkJCSAgUElYRUxfTUFTS19D QU1NSU5HX0RJU0FCTEUpOwo+ICAKPiAtCS8qIFdhRm9yY2VDb250ZXh0U2F2ZVJlc3RvcmVOb25D b2hlcmVudDpza2wsYnh0LGtibCAqLwo+ICsJLyogV2FGb3JjZUNvbnRleHRTYXZlUmVzdG9yZU5v bkNvaGVyZW50OnNrbCxieHQsa2JsLGNmbCAqLwo+ICAJV0FfU0VUX0JJVF9NQVNLRUQoSERDX0NI SUNLRU4wLAo+ICAJCQkgIEhEQ19GT1JDRV9DT05URVhUX1NBVkVfUkVTVE9SRV9OT05fQ09IRVJF TlQgfAo+ICAJCQkgIEhEQ19GT1JDRV9DU1JfTk9OX0NPSEVSRU5UX09WUl9ESVNBQkxFKTsKPiBA QCAtODg5LDM5ICs4ODksNDAgQEAgc3RhdGljIGludCBnZW45X2luaXRfd29ya2Fyb3VuZHMoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJICogYSBUTEIgaW52YWxpZGF0aW9uIG9j Y3VycyBkdXJpbmcgYSBQU0QgZmx1c2guCj4gIAkgKi8KPiAgCj4gLQkvKiBXYUZvcmNlRW5hYmxl Tm9uQ29oZXJlbnQ6c2tsLGJ4dCxrYmwgKi8KPiArCS8qIFdhRm9yY2VFbmFibGVOb25Db2hlcmVu dDpza2wsYnh0LGtibCxjZmwgKi8KPiAgCVdBX1NFVF9CSVRfTUFTS0VEKEhEQ19DSElDS0VOMCwK PiAgCQkJICBIRENfRk9SQ0VfTk9OX0NPSEVSRU5UKTsKPiAgCj4gLQkvKiBXYURpc2FibGVIRENJ bnZhbGlkYXRpb246c2tsLGJ4dCxrYmwgKi8KPiArCS8qIFdhRGlzYWJsZUhEQ0ludmFsaWRhdGlv bjpza2wsYnh0LGtibCxjZmwgKi8KPiAgCUk5MTVfV1JJVEUoR0FNX0VDT0NISywgSTkxNV9SRUFE KEdBTV9FQ09DSEspIHwKPiAgCQkgICBCRFdfRElTQUJMRV9IRENfSU5WQUxJREFUSU9OKTsKPgoK VGhlIHR3byBhYm92ZSBhcmUgbm90IG1lbnRpb25lZCB3aXRoIGNmbC4gQnV0IHRoZSBjb21tZW50 IGFuZApoaXN0b3J5IG9mIHRoZXNlIHdvcmthcm91bmRzIHNwZWFrcyB2b2x1bWVzLCBzbyBJIGFn cmVlIHdpdGggdGhlc2UuCgo+IC0JLyogV2FEaXNhYmxlU2FtcGxlclBvd2VyQnlwYXNzRm9yU09Q aW5nUG9uZzpza2wsYnh0LGtibCAqLwo+ICsJLyogV2FEaXNhYmxlU2FtcGxlclBvd2VyQnlwYXNz Rm9yU09QaW5nUG9uZzpza2wsYnh0LGtibCxjZmwgKi8KPiAgCWlmIChJU19TS1lMQUtFKGRldl9w cml2KSB8fAo+ICAJICAgIElTX0tBQllMQUtFKGRldl9wcml2KSB8fAo+ICsJICAgIElTX0NPRkZF RUxBS0UoZGV2X3ByaXYpfHwKPiAgCSAgICBJU19CWFRfUkVWSUQoZGV2X3ByaXYsIDAsIEJYVF9S RVZJRF9CMCkpCj4gIAkJV0FfU0VUX0JJVF9NQVNLRUQoSEFMRl9TTElDRV9DSElDS0VOMywKPiAg CQkJCSAgR0VOOF9TQU1QTEVSX1BPV0VSX0JZUEFTU19ESVMpOwo+ICAKPiAtCS8qIFdhRGlzYWJs ZVNUVW5pdFBvd2VyT3B0aW1pemF0aW9uOnNrbCxieHQsa2JsLGdsayAqLwo+ICsJLyogV2FEaXNh YmxlU1RVbml0UG93ZXJPcHRpbWl6YXRpb246c2tsLGJ4dCxrYmwsZ2xrLGNmbCAqLwo+ICAJV0Ff U0VUX0JJVF9NQVNLRUQoSEFMRl9TTElDRV9DSElDS0VOMiwgR0VOOF9TVF9QT19ESVNBQkxFKTsK PiAgCj4gLQkvKiBXYU9DTENvaGVyZW50TGluZUZsdXNoOnNrbCxieHQsa2JsICovCj4gKwkvKiBX YU9DTENvaGVyZW50TGluZUZsdXNoOnNrbCxieHQsa2JsLGNmbCAqLwo+ICAJSTkxNV9XUklURShH RU44X0wzU1FDUkVHNCwgKEk5MTVfUkVBRChHRU44X0wzU1FDUkVHNCkgfAo+ICAJCQkJICAgIEdF TjhfTFFTQ19GTFVTSF9DT0hFUkVOVF9MSU5FUykpOwo+CgpGb3IgbWUgaXQgc2VlbXMgdGhhdCB0 aGUgd29ya2Fyb3VuZCBuYW1lIGhhcyBjaGFuZ2VkOgpXYVBpcGVsaW5lRmx1c2hDb2hlcmVudExp bmVzLiBTaG91bGQgYmUgY2FycmllZCB0byBjZmwuCgo+IC0JLyogV2FWRkVTdGF0ZUFmdGVyUGlw ZUNvbnRyb2x3aXRoTWVkaWFTdGF0ZUNsZWFyOnNrbCxieHQsZ2xrICovCj4gKwkvKiBXYVZGRVN0 YXRlQWZ0ZXJQaXBlQ29udHJvbHdpdGhNZWRpYVN0YXRlQ2xlYXI6c2tsLGJ4dCxnbGssY2ZsICov Cj4gIAlyZXQgPSB3YV9yaW5nX3doaXRlbGlzdF9yZWcoZW5naW5lLCBHRU45X0NUWF9QUkVFTVBU X1JFRyk7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JLyogV2FFbmFibGVQ cmVlbXB0aW9uR3JhbnVsYXJpdHlDb250cm9sQnlVTUQ6c2tsLGJ4dCxrYmwgKi8KPiArCS8qIFdh RW5hYmxlUHJlZW1wdGlvbkdyYW51bGFyaXR5Q29udHJvbEJ5VU1EOnNrbCxieHQsa2JsLGNmbCAq Lwo+ICAJcmV0PSB3YV9yaW5nX3doaXRlbGlzdF9yZWcoZW5naW5lLCBHRU44X0NTX0NISUNLRU4x KTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQkvKiBXYUFsbG93VU1EVG9N b2RpZnlIRENDaGlja2VuMTpza2wsYnh0LGtibCxnbGsgKi8KPiArCS8qIFdhQWxsb3dVTURUb01v ZGlmeUhEQ0NoaWNrZW4xOnNrbCxieHQsa2JsLGdsayxjZmwgKi8KPiAgCXJldCA9IHdhX3Jpbmdf d2hpdGVsaXN0X3JlZyhlbmdpbmUsIEdFTjhfSERDX0NISUNLRU4xKTsKPiAgCWlmIChyZXQpCj4g IAkJcmV0dXJuIHJldDsKPiBAQCAtMTE0MCw2ICsxMTQxLDM4IEBAIHN0YXRpYyBpbnQgZ2xrX2lu aXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJcmV0dXJu IDA7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQgY2ZsX2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IGdlbjlf aW5pdF93b3JrYXJvdW5kcyhlbmdpbmUpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ ICsKPiArCS8qIFdhRW5hYmxlR2Fwc1RzdkNyZWRpdEZpeDpjZmwgKi8KPiArCUk5MTVfV1JJVEUo R0VOOF9HQVJCQ05UTCwgKEk5MTVfUkVBRChHRU44X0dBUkJDTlRMKSB8Cj4gKwkJCQkgICBHRU45 X0dBUFNfVFNWX0NSRURJVF9ESVNBQkxFKSk7Cj4gKwo+ICsJLyogV2FUb0VuYWJsZUh3Rml4Rm9y UHVzaENvbnN0SFdCdWc6Y2ZsICovCj4gKwlXQV9TRVRfQklUX01BU0tFRChDT01NT05fU0xJQ0Vf Q0hJQ0tFTjIsCj4gKwkJCSAgR0VOOF9TQkVfRElTQUJMRV9SRVBMQVlfQlVGX09QVElNSVpBVElP Tik7Cj4gKwo+ICsJLyogV2FEaXNhYmxlR2Fmc1VuaXRDbGtHYXRpbmc6Y2ZsICovCj4gKwlXQV9T RVRfQklUKEdFTjdfVUNHQ1RMNCwgR0VOOF9FVV9HQVVOSVRfQ0xPQ0tfR0FURV9ESVNBQkxFKTsK PiArCj4gKwkvKiBXYURpc2FibGVTYmVDYWNoZURpc3BhdGNoUG9ydFNoYXJpbmc6Y2ZsICovCj4g KwlXQV9TRVRfQklUX01BU0tFRCgKPiArCQlHRU43X0hBTEZfU0xJQ0VfQ0hJQ0tFTjEsCj4gKwkJ R0VON19TQkVfU1NfQ0FDSEVfRElTUEFUQ0hfUE9SVF9TSEFSSU5HX0RJU0FCTEUpOwo+ICsKPiAr CS8qIFdhSW5QbGFjZURlY29tcHJlc3Npb25IYW5nOmNmbCAqLwo+ICsJV0FfU0VUX0JJVChHRU45 X0dBTVRfRUNPX1JFR19SV19JQSwKPiArCQkgICBHQU1UX0VDT19FTkFCTEVfSU5fUExBQ0VfREVD T01QUkVTUyk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIGludCBpbml0X3dvcmthcm91 bmRzX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICB7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gQEAgLTExNjIsNiAr MTE5NSw4IEBAIGludCBpbml0X3dvcmthcm91bmRzX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAJCWVyciA9IGtibF9pbml0X3dvcmthcm91bmRzKGVuZ2luZSk7Cj4gIAll bHNlIGlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiAgCQllcnIgPSAgZ2xrX2luaXRfd29y a2Fyb3VuZHMoZW5naW5lKTsKPiArCWVsc2UgaWYgKElTX0NPRkZFRUxBS0UoZGV2X3ByaXYpKQo+ ICsJCWVyciA9IGNmbF9pbml0X3dvcmthcm91bmRzKGVuZ2luZSk7Cj4gIAllbHNlCj4gIAkJZXJy ID0gMDsKPiAgCWlmIChlcnIpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggOThhZWJh OS4uMGFlZDEzZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC01OCwyNCArNTgs MjQgQEAKPiAgCj4gIHN0YXRpYyB2b2lkIGdlbjlfaW5pdF9jbG9ja19nYXRpbmcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQkvKiBTZWUgQnNwZWMgbm90ZSBmb3Ig UFNSMl9DVEwgYml0IDMxLCBXYSM4Mjg6c2tsLGJ4dCxrYmwgKi8KPiArCS8qIFNlZSBCc3BlYyBu b3RlIGZvciBQU1IyX0NUTCBiaXQgMzEsIFdhIzgyODpza2wsYnh0LGtibCxjZmwgKi8KPiAgCUk5 MTVfV1JJVEUoQ0hJQ0tFTl9QQVIxXzEsCj4gIAkJICAgSTkxNV9SRUFEKENISUNLRU5fUEFSMV8x KSB8IFNLTF9FRFBfUFNSX0ZJWF9SRFdSQVApOwo+ICAKPiAgCUk5MTVfV1JJVEUoR0VOOF9DT05G SUcwLAo+ICAJCSAgIEk5MTVfUkVBRChHRU44X0NPTkZJRzApIHwgR0VOOV9ERUZBVUxUX0ZJWEVT KTsKPiAgCj4gLQkvKiBXYUVuYWJsZUNoaWNrZW5EQ1BSOnNrbCxieHQsa2JsLGdsayAqLwo+ICsJ LyogV2FFbmFibGVDaGlja2VuRENQUjpza2wsYnh0LGtibCxnbGssY2ZsICovCj4gIAlJOTE1X1dS SVRFKEdFTjhfQ0hJQ0tFTl9EQ1BSXzEsCj4gIAkJICAgSTkxNV9SRUFEKEdFTjhfQ0hJQ0tFTl9E Q1BSXzEpIHwgTUFTS19XQUtFTUVNKTsKPiAgCj4gLQkvKiBXYUZiY1R1cm5PZmZGYmNXYXRlcm1h cms6c2tsLGJ4dCxrYmwgKi8KPiAtCS8qIFdhRmJjV2FrZU1lbU9uOnNrbCxieHQsa2JsLGdsayAq Lwo+ICsJLyogV2FGYmNUdXJuT2ZmRmJjV2F0ZXJtYXJrOnNrbCxieHQsa2JsLGNmbCAqLwo+ICsJ LyogV2FGYmNXYWtlTWVtT246c2tsLGJ4dCxrYmwsZ2xrLGNmbCAqLwo+ICAJSTkxNV9XUklURShE SVNQX0FSQl9DVEwsIEk5MTVfUkVBRChESVNQX0FSQl9DVEwpIHwKPiAgCQkgICBESVNQX0ZCQ19X TV9ESVMgfAo+ICAJCSAgIERJU1BfRkJDX01FTU9SWV9XQUtFKTsKPiAgCj4gLQkvKiBXYUZiY0hp Z2hNZW1Cd0NvcnJ1cHRpb25Bdm9pZGFuY2U6c2tsLGJ4dCxrYmwgKi8KPiArCS8qIFdhRmJjSGln aE1lbUJ3Q29ycnVwdGlvbkF2b2lkYW5jZTpza2wsYnh0LGtibCxjZmwgKi8KCkkgaGF2ZW4ndCBy dW1tYWdlZCBhcm91bmQgd2hhdCBuZXcgd2UgbWlnaHQgYmUgbWlzc2luZy4gU28Kd2Ugc2hvdWxk IGRvIGEgc2Vjb25kIHBhc3MgYWZ0ZXIgbW9udGggb3IgdHdvLgoKV2l0aCBXYURpc2FibGVLaWxs TG9naWMgYW5kIEdFTjlfRElTQUJMRV9PQ0xfT09CX1NVUFBSRVNTX0xPR0lDCmRvdWJsZSBjaGVj a2VkLgoKUmV2aWV3ZWQtYnk6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAaW50ZWwuY29t PgoKCj4gIAlJOTE1X1dSSVRFKElMS19EUEZDX0NISUNLRU4sIEk5MTVfUkVBRChJTEtfRFBGQ19D SElDS0VOKSB8Cj4gIAkJICAgSUxLX0RQRkNfRElTQUJMRV9EVU1NWTApOwo+ICB9Cj4gLS0gCj4g MS45LjEKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK