From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 2/4] drm/i915: Add lspcon support for I915 driver Date: Thu, 11 Aug 2016 16:51:46 +0300 Message-ID: <20160811135146.GO4329@intel.com> References: <1467723950-14093-1-git-send-email-shashank.sharma@intel.com> <1467723950-14093-3-git-send-email-shashank.sharma@intel.com> <20160811070316.GZ4329@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id A829B6E231 for ; Thu, 11 Aug 2016 13:51:49 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Sharma, Shashank" Cc: intel-gfx@lists.freedesktop.org, paulo.r.zanoni@intel.com, rodrigo.vivi@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBBdWcgMTEsIDIwMTYgYXQgMDI6MzY6MjNQTSArMDUzMCwgU2hhcm1hLCBTaGFzaGFu ayB3cm90ZToKPiBSZWdhcmRzCj4gCj4gU2hhc2hhbmsKPiAKPiAKPiBPbiA4LzExLzIwMTYgMTI6 MzMgUE0sIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+IE9uIFR1ZSwgSnVsIDA1LCAyMDE2IGF0 IDA2OjM1OjQ4UE0gKzA1MzAsIFNoYXNoYW5rIFNoYXJtYSB3cm90ZToKPiA+PiBUaGlzIHBhdGNo IGFkZHMgYSBuZXcgZmlsZSwgdG8gYWNjb21tb2RhdGUgbHNwY29uIHN1cHBvcnQKPiA+PiBmb3Ig STkxNSBkcml2ZXIuIFRoZXNlIGZ1bmN0aW9ucyBwcm9iZSwgZGV0ZWN0LCBpbml0aWFsaXplCj4g Pj4gYW5kIGNvbmZpZ3VyZSBhbiBvbi1ib2FyZCBsc3Bjb24gZGV2aWNlIGR1cmluZyB0aGUgZHJp dmVyCj4gPj4gaW5pdCB0aW1lLgo+ID4+Cj4gPj4gQWxzbywgdGhpcyBwYXRjaCBhZGRzIGEgc21h bGwgc3RydWN0dXJlIGZvciBsc3Bjb24gZGV2aWNlLAo+ID4+IHdoaWNoIHdpbGwgcHJvdmlkZSB0 aGUgcnVudGltZSBzdGF0dXMgb2YgdGhlIGRldmljZS4KPiA+Pgo+ID4+IFYyOiBhZGRyZXNzZWQg dmlsbGUncyByZXZpZXcgY29tbWVudHMKPiA+PiAtIENsZWFuIHRoZSBsZWZ0b3ZlciBtYWNyb3Mg ZnJvbSBwcmV2aW91cyBwYXRjaCBzZXQKPiA+Pgo+ID4+IFYzOiBSZWJhc2UKPiA+Pgo+ID4+IFNp Z25lZC1vZmYtYnk6IFNoYXNoYW5rIFNoYXJtYSA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNvbT4K PiA+PiBTaWduZWQtb2ZmLWJ5OiBBa2FzaGRlZXAgU2hhcm1hIDxha2FzaGRlZXAuc2hhcm1hQGlu dGVsLmNvbT4KPiA+PiBSZXZpZXdlZC1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50 ZWwuY29tPgo+ID4+IC0tLQo+ID4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAg ICAgfCAgIDEgKwo+ID4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgfCAg MTMgKysrLQo+ID4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHNwY29uLmMgfCAxNDUg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPj4gICAzIGZpbGVzIGNoYW5n ZWQsIDE1OCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gPj4gICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHNwY29uLmMKPiA+Pgo+ID4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlCj4gPj4gaW5kZXggNjE4MjkzYy4uNjRjZDM3MyAxMDA2NDQKPiA+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlCj4gPj4gQEAgLTk1LDYgKzk1LDcgQEAgaTkxNS15ICs9IGR2b19jaDcw MTcubyBcCj4gPj4gICAJICBpbnRlbF9kdm8ubyBcCj4gPj4gICAJICBpbnRlbF9oZG1pLm8gXAo+ ID4+ICAgCSAgaW50ZWxfaTJjLm8gXAo+ID4+ICsJICBpbnRlbF9sc3Bjb24ubyBcCj4gPj4gICAJ ICBpbnRlbF9sdmRzLm8gXAo+ID4+ICAgCSAgaW50ZWxfcGFuZWwubyBcCj4gPj4gICAJICBpbnRl bF9zZHZvLm8gXAo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPj4gaW5kZXggZTZhMjRk Mi4uZTY5ODJjZiAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaAo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPj4gQEAg LTkyMiwxMiArOTIyLDE5IEBAIHN0cnVjdCBpbnRlbF9kcCB7Cj4gPj4gICAJYm9vbCBjb21wbGlh bmNlX3Rlc3RfYWN0aXZlOwo+ID4+ICAgfTsKPiA+PiAgIAo+ID4+ICtzdHJ1Y3QgaW50ZWxfbHNw Y29uIHsKPiA+PiArCWJvb2wgYWN0aXZlOwo+ID4+ICsJZW51bSBkcm1fbHNwY29uX21vZGUgbW9k ZV9vZl9vcDsKPiA+IEknZCBjYWxsIHRoaXMganVzdCAnbW9kZScKPiBJIGRvbnQgd2FudCByZWFk ZXIgdG8gZ2V0IGNvbmZ1c2VkIHRoaXMgd2l0aCBhIHZpZGVvbW9kZSwgc28gbWFkZSBpdCAKPiBt b3JlIGNsZWFyIDopCj4gRG8geW91IHRoaW5rIHdlIGNhbiBrZWVwIGl0IHRoaXMgd2F5ID8KCkkg ZG9uJ3QgdGhpbmsgdGhlcmUncyBhbnkgcmVhbCBjaGFuY2Ugb2YgYSBtaXh1cCB0aGVyZS4gSXQn cyBhbHdheXMgZ29pbmcKdG8gdXNlZCBhcyBsc3Bjb24ubW9kZSBJIHRoaW5rLCBhbmQgdGhlIHR5 cGVzIGFyZSBpbmNvbXBhdGlibGUgYW55d2F5LgoKPiA+PiArCXN0cnVjdCBkcm1fZHBfYXV4ICph dXg7Cj4gPj4gK307Cj4gPj4gKwo+ID4+ICAgc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCB7Cj4g Pj4gICAJc3RydWN0IGludGVsX2VuY29kZXIgYmFzZTsKPiA+PiAgIAllbnVtIHBvcnQgcG9ydDsK PiA+PiAgIAl1MzIgc2F2ZWRfcG9ydF9iaXRzOwo+ID4+ICAgCXN0cnVjdCBpbnRlbF9kcCBkcDsK PiA+PiAgIAlzdHJ1Y3QgaW50ZWxfaGRtaSBoZG1pOwo+ID4+ICsJc3RydWN0IGludGVsX2xzcGNv biBsc3Bjb247Cj4gPj4gICAJZW51bSBpcnFyZXR1cm4gKCpocGRfcHVsc2UpKHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKiwgYm9vbCk7Cj4gPj4gICAJYm9vbCByZWxlYXNlX2NsMl9vdmVycmlk ZTsKPiA+PiAgIAl1aW50OF90IG1heF9sYW5lczsKPiA+PiBAQCAtMTQ3OCw3ICsxNDg1LDYgQEAg Ym9vbCBpbnRlbF9oZG1pX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+ID4+ICAgCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZp Zyk7Cj4gPj4gICB2b2lkIGludGVsX2RwX2R1YWxfbW9kZV9zZXRfdG1kc19vdXRwdXQoc3RydWN0 IGludGVsX2hkbWkgKmhkbWksIGJvb2wgZW5hYmxlKTsKPiA+PiAgIAo+ID4+IC0KPiA+PiAgIC8q IGludGVsX2x2ZHMuYyAqLwo+ID4+ICAgdm9pZCBpbnRlbF9sdmRzX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7Cj4gPj4gICBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZ2V0X2x2ZHNf ZW5jb2RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+PiBAQCAtMTc3OSw0ICsxNzg1LDkg QEAgaW50IGludGVsX2NvbG9yX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGRy bV9jcnRjX3N0YXRlICpzdGF0ZSk7Cj4gPj4gICB2b2lkIGludGVsX2NvbG9yX3NldF9jc2Moc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiA+PiAgIHZvaWQgaW50ZWxfY29sb3Jf bG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gPj4gICAKPiA+ PiArLyogaW50ZWxfbHNwY29uLmMgKi8KPiA+PiArYm9vbCBsc3Bjb25faW5pdChzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCk7Cj4gPj4gK2VudW0gZHJtX2Nvbm5lY3Rv cl9zdGF0dXMKPiA+PiArbHNwY29uX2xzX21vZGVfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpOwo+ID4+ICtib29sIGlzX2xzcGNvbl9hY3RpdmUoc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpOwo+ID4+ICAgI2VuZGlmIC8qIF9fSU5U RUxfRFJWX0hfXyAqLwo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9sc3Bjb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xzcGNvbi5jCj4gPj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiA+PiBpbmRleCAwMDAwMDAwLi5mZGVmZjcxCj4gPj4gLS0tIC9k ZXYvbnVsbAo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xzcGNvbi5jCj4g Pj4gQEAgLTAsMCArMSwxNDUgQEAKPiA+PiArLyoKPiA+PiArICogQ29weXJpZ2h0IMKpIDIwMTYg SW50ZWwgQ29ycG9yYXRpb24KPiA+PiArICoKPiA+PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiA+PiAr ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKPiA+PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ID4+ICsgKiB0 aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0 ZSwgc3VibGljZW5zZSwKPiA+PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gPj4gKyAqIFNvZnR3YXJlIGlz IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6 Cj4gPj4gKyAqCj4gPj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiA+PiArICogcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZQo+ID4+ICsgKiBTb2Z0d2FyZS4KPiA+PiArICoKPiA+PiArICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKPiA+PiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gPj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ID4+ ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ID4+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ID4+ICsgKiBG Uk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF IE9SIE9USEVSCj4gPj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPiA+PiArICoKPiA+ PiArICoKPiA+PiArICovCj4gPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPiA+PiArI2lu Y2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ID4+ICsjaW5jbHVkZSA8ZHJtL2RybV9k cF9kdWFsX21vZGVfaGVscGVyLmg+Cj4gPj4gKyNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPiA+PiAr Cj4gPj4gK2Jvb2wgaXNfbHNwY29uX2FjdGl2ZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpk aWdfcG9ydCkKPiA+PiArewo+ID4+ICsJcmV0dXJuIGRpZ19wb3J0LT5sc3Bjb24uYWN0aXZlOwo+ ID4+ICt9Cj4gPiB1bnVzZWQgLT4ga2lsbCBpdAo+ID4KPiA+IEluIGZhY3QgdGhlIHdob2xlIGxz cGNvbi5hY3RpdmUgZmxhZ3Mgc2VlbXMgcHJldHR5IHBvaW50bGVzcywgc28gSSdkCj4gPiBqdXN0 IGtpbGwgdGhhdCB0b28uCj4gUGxlYXNlIG5vdGUgdGhhdCwgSSB0cmllZCB0byBhZGRyZXNzIGJv dGggbW90aGVyYm9hcmQtZG93biBtb2RlIGFzIHdlbGwgCj4gYXMgYWRhcHRlci1tb2RlIExTUENP Tgo+IGluIHRoaXMgZGVzaWduLiBJbiBjYXNlIG9mIGFkYXB0ZXIgbW9kZSBsc3Bjb24sIHdlIHdp bGwgbmVlZCB0aGlzLgoKV2UgZG9uJ3QgdXNlIGl0LCBzbyBjbGVhcmx5IGl0J3Mgbm90IG5lZWRl ZC4KCj4gPgo+ID4+ICsKPiA+PiArZW51bSBkcm1fbHNwY29uX21vZGUgbHNwY29uX2dldF9jdXJy ZW50X21vZGUoc3RydWN0IGludGVsX2xzcGNvbiAqbHNwY29uKQo+ID4+ICt7Cj4gPj4gKwllbnVt IGRybV9sc3Bjb25fbW9kZSBjdXJyZW50X21vZGUgPSBEUk1fTFNQQ09OX01PREVfSU5WQUxJRDsK PiA+PiArCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9ICZsc3Bjb24tPmF1eC0+ZGRjOwo+ ID4+ICsKPiA+PiArCWlmIChkcm1fbHNwY29uX2dldF9tb2RlKGFkYXB0ZXIsICZjdXJyZW50X21v ZGUpKQo+ID4+ICsJCURSTV9FUlJPUigiRXJyb3IgcmVhZGluZyBMU1BDT04gbW9kZVxuIik7Cj4g Pj4gKwllbHNlCj4gPj4gKwkJRFJNX0RFQlVHX0tNUygiQ3VycmVudCBMU1BDT04gbW9kZSAlc1xu IiwKPiA+PiArCQkJY3VycmVudF9tb2RlID09IERSTV9MU1BDT05fTU9ERV9QQ09OID8gIlBDT04i IDogIkxTIik7Cj4gPj4gKwlyZXR1cm4gY3VycmVudF9tb2RlOwo+ID4+ICt9Cj4gPiBJIHdhcyBn b2luZyB0byBzdWdnZXN0IGtpbGxpbmcgdGhpcyBvbmUgdG9vLCBidXQgSSBndWVzcyB0aGUgZGVi dWcKPiA+IG91dHB1dCBtaWdodCBiZSB1c2VmdWwuIE1ha2UgaXQgc3RhdGljIGF0IGxlYXN0Lgo+ IFN1cmUsIHdpbGwgbWFrZSBpdCBzdGF0aWMuIEFsc28gd2UgaGF2ZSBhIHBsYW4gdG8gZXhwb3Nl IG9uZSBEUk0gCj4gcHJvcGVydHkgdG8gaGFuZGxlIGFkYXB0ZXIgbW9kZSBsc3Bjb24KPiBhdCB0 aGF0IHRpbWUgdGhpcyB3aWxsIGhlbHAuCgpQbGVhc2UgZG9uJ3QuIEl0IHNob3VsZCBqdXN0IGJl IGF1dG9tYWdpYy4KCj4gPj4gKwo+ID4+ICtpbnQgbHNwY29uX2NoYW5nZV9tb2RlKHN0cnVjdCBp bnRlbF9sc3Bjb24gKmxzcGNvbiwKPiA+PiArCWVudW0gZHJtX2xzcGNvbl9tb2RlIG1vZGUsIGJv b2wgZm9yY2UpCj4gPiBzdGF0aWMKPiBTdXJlLgo+ID4KPiA+PiArewo+ID4+ICsJaW50IGVycjsK PiA+PiArCWVudW0gZHJtX2xzcGNvbl9tb2RlIGN1cnJlbnRfbW9kZTsKPiA+PiArCXN0cnVjdCBp MmNfYWRhcHRlciAqYWRhcHRlciA9ICZsc3Bjb24tPmF1eC0+ZGRjOwo+ID4+ICsKPiA+PiArCWVy ciA9IGRybV9sc3Bjb25fZ2V0X21vZGUoYWRhcHRlciwgJmN1cnJlbnRfbW9kZSk7Cj4gPj4gKwlp ZiAoZXJyKSB7Cj4gPj4gKwkJRFJNX0VSUk9SKCJFcnJvciByZWFkaW5nIExTUENPTiBtb2RlXG4i KTsKPiA+PiArCQlyZXR1cm4gZXJyOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCWlmIChjdXJyZW50 X21vZGUgPT0gbW9kZSAmJiAhZm9yY2UpIHsKPiA+PiArCQlEUk1fREVCVUdfS01TKCJDdXJyZW50 IG1vZGUgPSBkZXNpcmVkIExTUENPTiBtb2RlXG4iKTsKPiA+PiArCQlyZXR1cm4gMDsKPiA+PiAr CX0KPiA+IFdlIGFsd2F5cyBjYWxsIHRoaXMgd2l0aCBmb3JjZT09dHJ1ZSwgc28gaXQgbG9va3Mg bGlrZSBhIHBvaW50bGVzcwo+ID4gcGFyYW1ldGVyLiBBbHNvIGlmIGZvcmNlPT10cnVlIGFsd2F5 cywgaXQgZG9lc24ndCBuZWNlc3NhcnkgdG8gZXZlbgo+ID4gcXVlcnkgdGhlIGN1cnJlbnQgbW9k ZS4gT2ggYW5kIEkgdGhpbmsgd2UndmUgYWxyZWFkeSBxdWVyaWVkIHRoZSBtb2RlCj4gPiB3aGVu IHRoaXMgZ2V0cyBjYWxsZWQuCj4gQXMgbWVudGlvbmVkLCBJIHdhbnRlZCB0byBrZWVwIHRoZSBz Y29wZSBvZiBzd2l0Y2hpbmcgbHNwY29uIG1vZGVzLCBpbiAKPiB0aGUgZGVzaWduIGluZnJhc3Ry dWN0dXJlLgo+IFNvIEkga2VwdCB0aGVzZSB0aGluZ3MgYXMgcG9zc2liaWxpdHkuCgpJZiBJIGNh bid0IHNlZSBhbnkgdXNlcnMgSSBjYW4ndCBwb3NzaWJseSBqdWRnZSB3aGV0aGVyIGl0J3Mgc3Vm ZmljaWVudApvciBub3QuIE1vdmUgYW55IGluZnJhc3RydWN0dXJlIHRvIHRoZSBwYXRjaGVzIHRo YXQgbmVlZCBpdC4KCj4gCj4gSUYgd2UgY3JlYXRlIGEgRFJNIHByb3BlcnR5IHRvIHF1ZXJ5IExT UENPTiBtb2RlLCB0aGF0IGdldF9wcm9wZXJ0eSAKPiBmdW5jdGlvbiB3aWxsIGNhbGwgdGhpcwo+ IGZ1bmN0aW9uIHdpdGggZm9yY2UgPSBmYWxzZSwgY296IGZvciB0aGlzIHF1ZXJ5IHdlIGRvbnQg d2FudCB0byBwcm9iZSAKPiB0aGUgSFcgYWdhaW4uCj4gPj4gKwo+ID4+ICsJZXJyID0gZHJtX2xz cGNvbl9zZXRfbW9kZShhZGFwdGVyLCBtb2RlKTsKPiA+PiArCWlmIChlcnIgPCAwKSB7Cj4gPj4g KwkJRFJNX0VSUk9SKCJMU1BDT04gbW9kZSBjaGFuZ2UgZmFpbGVkXG4iKTsKPiA+PiArCQlyZXR1 cm4gZXJyOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCWxzcGNvbi0+bW9kZV9vZl9vcCA9IG1vZGU7 Cj4gPj4gKwlEUk1fREVCVUdfS01TKCJMU1BDT04gbW9kZSBjaGFuZ2VkIGRvbmVcbiIpOwo+ID4+ ICsJcmV0dXJuIDA7Cj4gPj4gK30KPiA+PiArCj4gPj4gK2Jvb2wgbHNwY29uX2RldGVjdF9pZGVu dGlmaWVyKHN0cnVjdCBpbnRlbF9sc3Bjb24gKmxzcGNvbikKPiA+IHN0YXRpYwo+IGdvdCBpdC4K PiA+Cj4gPj4gK3sKPiA+PiArCWVudW0gZHJtX2RwX2R1YWxfbW9kZV90eXBlIGFkYXB0b3JfdHlw ZTsKPiA+PiArCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciA9ICZsc3Bjb24tPmF1eC0+ZGRj Owo+ID4+ICsKPiA+PiArCS8qIExldHMgcHJvYmUgdGhlIGFkYXB0b3IgYW5kIGNoZWNrIGl0cyB0 eXBlICovCj4gPj4gKwlhZGFwdG9yX3R5cGUgPSBkcm1fZHBfZHVhbF9tb2RlX2RldGVjdChhZGFw dGVyKTsKPiA+PiArCWlmIChhZGFwdG9yX3R5cGUgIT0gRFJNX0RQX0RVQUxfTU9ERV9MU1BDT04p IHsKPiA+PiArCQlEUk1fREVCVUdfS01TKCJObyBMU1BDT04gZGV0ZWN0ZWQsIGZvdW5kICVzXG4i LAo+ID4+ICsJCQlkcm1fZHBfZ2V0X2R1YWxfbW9kZV90eXBlX25hbWUoYWRhcHRvcl90eXBlKSk7 Cj4gPj4gKwkJcmV0dXJuIGZhbHNlOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCS8qIFlheSAuLi4g Z290IGEgTFNQQ09OIGRldmljZSAqLwo+ID4+ICsJRFJNX0RFQlVHX0tNUygiTFNQQ09OIGRldGVj dGVkXG4iKTsKPiA+PiArCXJldHVybiB0cnVlOwo+ID4+ICt9Cj4gPiBUaGlzIGlzIHNtYWxsIGZ1 bmN0aW9uIGFuZCBjYWxsZWQgb25seSBvbmNlLCBzbyBJJ2QganVzdCBpbmxpbmUgaXQgaW50bwo+ ID4gdGhlIGNhbGxlciBhY3R1YWxseS4KPiBDYW4gYmUgZG9uZSwgYnV0IHRoZSBjYWxsZXIgaXMg aW50ZWxJX2RkaV9pbml0LCB3aGljaCBJIGRvbnQgd2FudCB0byAKPiBwb3B1bGF0ZSB3aXRoIGxz cGNvbiBzcGVjaWZpYyBjb2RlLCB3aGVuIHdlIGhhdmUgYSBzZXBhcmF0ZSBmaWxlCj4gZm9yIGxz cGNvbi4gRG8geW91IHRoaW5rIGl0cyBhIGdvb2QgaWRlYSA/IG9yIHlvdSBwcmVmZXIgdG8gaGF2 ZSB0aGF0IGluIAo+IGRkaV9pbml0IG9ubHkgPwoKVGhlIGNhbGxlciBpcyBsc3Bjb25fcHJvYmUo KS4KCj4gPj4gKwo+ID4+ICtlbnVtIGRybV9sc3Bjb25fbW9kZSBsc3Bjb25fcHJvYmUoc3RydWN0 IGludGVsX2xzcGNvbiAqbHNwY29uKQo+ID4gc3RhdGljCj4gR290IGl0Lgo+ID4KPiA+PiArewo+ ID4+ICsKPiA+PiArCS8qIERldGVjdCBhIHZhbGlkIGxzcGNvbiBhZGFwdG9yICovCj4gPj4gKwlp ZiAoIWxzcGNvbl9kZXRlY3RfaWRlbnRpZmllcihsc3Bjb24pKSB7Cj4gPj4gKwkJRFJNX0RFQlVH X0tNUygiTm8gTFNQQ09OIGlkZW50aWZpZXIgZm91bmRcbiIpOwo+ID4+ICsJCXJldHVybiBmYWxz ZTsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwkvKiBHZXQgTFNQQ09OJ3MgbW9kZSBvZiBvcGVyYXRp b24gKi8KPiA+PiArCWxzcGNvbi0+bW9kZV9vZl9vcCA9IGxzcGNvbl9nZXRfY3VycmVudF9tb2Rl KGxzcGNvbik7Cj4gPj4gKwlsc3Bjb24tPmFjdGl2ZSA9IHRydWU7Cj4gPj4gKwlyZXR1cm4gdHJ1 ZTsKPiA+PiArfQo+ID4+ICsKPiA+PiArYm9vbCBsc3Bjb25faW5pdChzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKPiA+PiArewo+ID4+ICsJc3RydWN0IGludGVsX2Rw ICpkcCA9ICZpbnRlbF9kaWdfcG9ydC0+ZHA7Cj4gPj4gKwlzdHJ1Y3QgaW50ZWxfbHNwY29uICps c3Bjb24gPSAmaW50ZWxfZGlnX3BvcnQtPmxzcGNvbjsKPiA+PiArCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRldjsKPiA+PiArCj4gPj4gKwlpZiAo IUlTX0dFTjkoZGV2KSkgewo+ID4+ICsJCURSTV9FUlJPUigiTFNQQ09OIGlzIHN1cHBvcnRlZCBv biBHRU45IG9ubHlcbiIpOwo+ID4+ICsJCXJldHVybiBmYWxzZTsKPiA+PiArCX0KPiA+IEp1c3Qg cmVtb3ZlIHRoaXMgY2hlY2s/IElmIGl0J3Mgbm90IHByZXNlbnQsIHdlIHdvbid0IGRldGVjdCBp dC4KPiBGYXVsdHkgVkJUID8gSnVzdCBiZWluZyBwYXJhbm9pZC4KCkNhbid0IGJlIHNpbmNlIHdl IGRvbid0IGV2ZW4gcGFyc2UgdGhhdCBwYXJ0IGZyb20gdGhlIFZCVCBvbiBvdGhlcgpwbGF0Zm9y bXMuCgo+ID4+ICsKPiA+PiArCWxzcGNvbi0+YWN0aXZlID0gZmFsc2U7Cj4gPj4gKwlsc3Bjb24t Pm1vZGVfb2Zfb3AgPSBEUk1fTFNQQ09OX01PREVfSU5WQUxJRDsKPiA+PiArCWxzcGNvbi0+YXV4 ID0gJmRwLT5hdXg7Cj4gPj4gKwo+ID4+ICsJaWYgKCFsc3Bjb25fcHJvYmUobHNwY29uKSkgewo+ ID4+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIHByb2JlIGxzcGNvblxuIik7Cj4gPj4gKwkJcmV0 dXJuIGZhbHNlOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCS8qCj4gPj4gKwkqIEluIHRoZSBTVyBz dGF0ZSBtYWNoaW5lLCBsZXRzIFB1dCBMU1BDT04gaW4gUENPTiBtb2RlIG9ubHkuCj4gPj4gKwkq IEluIHRoaXMgd2F5LCBpdCB3aWxsIHdvcmsgd2l0aCBib3RoIEhETUkgMS40IHNpbmtzIGFzIHdl bGwgYXMgSERNSQo+ID4+ICsJKiAyLjAgc2lua3MuCj4gPj4gKwkqLwo+ID4+ICsJaWYgKGxzcGNv bi0+YWN0aXZlICYmIGxzcGNvbi0+bW9kZV9vZl9vcCAhPSBEUk1fTFNQQ09OX01PREVfUENPTikg ewo+ID4+ICsJCWlmIChsc3Bjb25fY2hhbmdlX21vZGUobHNwY29uLCBEUk1fTFNQQ09OX01PREVf UENPTiwKPiA+PiArCQkJdHJ1ZSkgPCAwKSB7Cj4gPiBpbmRlbnQgZmFpbC4KPiBzYW1lIGFzIHBy ZXZpb3VzLgo+IAo+IFJlZ2FyZHMKPiBTaGFzaGFuawo+ID4+ICsJCQlEUk1fRVJST1IoIkxTUENP TiBtb2RlIGNoYW5nZSB0byBQQ09OIGZhaWxlZFxuIik7Cj4gPj4gKwkJCXJldHVybiBmYWxzZTsK PiA+PiArCQl9Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJRFJNX0RFQlVHX0tNUygiU3VjY2Vzczog TFNQQ09OIGluaXRcbiIpOwo+ID4+ICsJcmV0dXJuIHRydWU7Cj4gPj4gK30KPiA+PiAtLSAKPiA+ PiAxLjkuMQoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==