From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH 4/4] drm: adv7511/33: add HDMI CEC support Date: Thu, 10 Aug 2017 14:19:10 +0530 Message-ID: <811a3e0c-d938-744e-2d1d-46be76b708aa@codeaurora.org> References: <20170730130743.19681-1-hverkuil@xs4all.nl> <20170730130743.19681-5-hverkuil@xs4all.nl> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170730130743.19681-5-hverkuil@xs4all.nl> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Hans Verkuil , linux-media@vger.kernel.org Cc: devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, Hans Verkuil List-Id: devicetree@vger.kernel.org CgpPbiAwNy8zMC8yMDE3IDA2OjM3IFBNLCBIYW5zIFZlcmt1aWwgd3JvdGU6Cj4gRnJvbTogSGFu cyBWZXJrdWlsIDxoYW5zLnZlcmt1aWxAY2lzY28uY29tPgo+IAo+IEFkZCBzdXBwb3J0IGZvciBI RE1JIENFQyB0byB0aGUgZHJtIGFkdjc1MTEvYWR2NzUzMyBkcml2ZXJzLgo+IAo+IFRoZSBDRUMg cmVnaXN0ZXJzIHRoYXQgd2UgbmVlZCB0byB1c2UgYXJlIGlkZW50aWNhbCBmb3IgYm90aCBkcml2 ZXJzLAo+IGJ1dCB0aGV5IGFwcGVhciBhdCBkaWZmZXJlbnQgb2Zmc2V0cyBpbiB0aGUgcmVnaXN0 ZXIgbWFwLgoKVGhhbmtzIGZvciB0aGUgcGF0Y2guIFNvbWUgbWlub3IgY29tbWVudHMgYmVsb3cu Cgo+IAo+IFNpZ25lZC1vZmYtYnk6IEhhbnMgVmVya3VpbCA8aGFucy52ZXJrdWlsQGNpc2NvLmNv bT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9LY29uZmlnICAgICAg IHwgICA4ICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9NYWtlZmlsZSAgICAg IHwgICAxICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9hZHY3NTExLmggICAg IHwgIDQ1ICsrKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9hZHY3NTExX2Nl Yy5jIHwgMzE0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJt L2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmMgfCAxNTIgKysrKysrKysrKystLQo+ICAgZHJp dmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MzMuYyAgICAgfCAgMzAgKy0tCj4gICA2 IGZpbGVzIGNoYW5nZWQsIDUwMCBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkKPiAgIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fkdjc1MTEvYWR2NzUxMV9j ZWMuYwo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fkdjc1MTEvS2Nv bmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9LY29uZmlnCj4gaW5kZXggMmZl ZDU2N2Y5OTQzLi41OTJiOWQyZWMwMzQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS9hZHY3NTExL0tjb25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fkdjc1 MTEvS2NvbmZpZwo+IEBAIC0yMSwzICsyMSwxMSBAQCBjb25maWcgRFJNX0kyQ19BRFY3NTMzCj4g ICAJZGVmYXVsdCB5Cj4gICAJaGVscAo+ICAgCSAgU3VwcG9ydCBmb3IgdGhlIEFuYWxvZyBEZXZp Y2VzIEFEVjc1MzMgRFNJIHRvIEhETUkgZW5jb2Rlci4KPiArCj4gK2NvbmZpZyBEUk1fSTJDX0FE Vjc1MTFfQ0VDCj4gKwlib29sICJBRFY3NTExLzMzIEhETUkgQ0VDIGRyaXZlciIKPiArCWRlcGVu ZHMgb24gRFJNX0kyQ19BRFY3NTExCj4gKwlzZWxlY3QgQ0VDX0NPUkUKPiArCWRlZmF1bHQgeQo+ ICsJaGVscAo+ICsJICBXaGVuIHNlbGVjdGVkIHRoZSBIRE1JIHRyYW5zbWl0dGVyIHdpbGwgc3Vw cG9ydCB0aGUgQ0VDIGZlYXR1cmUuCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlk Z2UvYWR2NzUxMS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9NYWtl ZmlsZQo+IGluZGV4IDViYTY3NTUzNGY2ZS4uNWJiMzg0OTM4YTcxIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9icmlkZ2UvYWR2NzUxMS9NYWtlZmlsZQo+IEBAIC0xLDQgKzEsNSBAQAo+ICAgYWR2NzUx MS15IDo9IGFkdjc1MTFfZHJ2Lm8KPiAgIGFkdjc1MTEtJChDT05GSUdfRFJNX0kyQ19BRFY3NTEx X0FVRElPKSArPSBhZHY3NTExX2F1ZGlvLm8KPiArYWR2NzUxMS0kKENPTkZJR19EUk1fSTJDX0FE Vjc1MTFfQ0VDKSArPSBhZHY3NTExX2NlYy5vCj4gICBhZHY3NTExLSQoQ09ORklHX0RSTV9JMkNf QURWNzUzMykgKz0gYWR2NzUzMy5vCj4gICBvYmotJChDT05GSUdfRFJNX0kyQ19BRFY3NTExKSAr PSBhZHY3NTExLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTEx L2Fkdjc1MTEuaCBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9hZHY3NTExLmgKPiBp bmRleCBmZTE4YTVkMmQ4NGIuLjRmZDdiMTRmNjE5YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL2Fkdjc1MTEvYWR2NzUxMS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS9hZHY3NTExL2Fkdjc1MTEuaAo+IEBAIC0xOTUsNiArMTk1LDI1IEBACj4gICAjZGVmaW5l IEFEVjc1MTFfUEFDS0VUX0dNKHgpCSAgICBBRFY3NTExX1BBQ0tFVCg1LCB4KQo+ICAgI2RlZmlu ZSBBRFY3NTExX1BBQ0tFVF9TUEFSRSh4KQkgICAgQURWNzUxMV9QQUNLRVQoNiwgeCkKPiAgIAo+ ICsjZGVmaW5lIEFEVjc1MTFfUkVHX0NFQ19UWF9GUkFNRV9IRFIJMHgwMAo+ICsjZGVmaW5lIEFE Vjc1MTFfUkVHX0NFQ19UWF9GUkFNRV9EQVRBMAkweDAxCj4gKyNkZWZpbmUgQURWNzUxMV9SRUdf Q0VDX1RYX0ZSQU1FX0xFTgkweDEwCj4gKyNkZWZpbmUgQURWNzUxMV9SRUdfQ0VDX1RYX0VOQUJM RQkweDExCj4gKyNkZWZpbmUgQURWNzUxMV9SRUdfQ0VDX1RYX1JFVFJZCTB4MTIKPiArI2RlZmlu ZSBBRFY3NTExX1JFR19DRUNfVFhfTE9XX0RSVl9DTlQJMHgxNAo+ICsjZGVmaW5lIEFEVjc1MTFf UkVHX0NFQ19SWF9GUkFNRV9IRFIJMHgxNQo+ICsjZGVmaW5lIEFEVjc1MTFfUkVHX0NFQ19SWF9G UkFNRV9EQVRBMAkweDE2Cj4gKyNkZWZpbmUgQURWNzUxMV9SRUdfQ0VDX1JYX0ZSQU1FX0xFTgkw eDI1Cj4gKyNkZWZpbmUgQURWNzUxMV9SRUdfQ0VDX1JYX0VOQUJMRQkweDI2Cj4gKyNkZWZpbmUg QURWNzUxMV9SRUdfQ0VDX1JYX0JVRkZFUlMJMHg0YQo+ICsjZGVmaW5lIEFEVjc1MTFfUkVHX0NF Q19MT0dfQUREUl9NQVNLCTB4NGIKPiArI2RlZmluZSBBRFY3NTExX1JFR19DRUNfTE9HX0FERFJf MF8xCTB4NGMKPiArI2RlZmluZSBBRFY3NTExX1JFR19DRUNfTE9HX0FERFJfMgkweDRkCj4gKyNk ZWZpbmUgQURWNzUxMV9SRUdfQ0VDX0NMS19ESVYJCTB4NGUKPiArI2RlZmluZSBBRFY3NTExX1JF R19DRUNfU09GVF9SRVNFVAkweDUwCj4gKwo+ICsjZGVmaW5lIEFEVjc1MzNfUkVHX0NFQ19PRkZT RVQJCTB4NzAKPiArCj4gICBlbnVtIGFkdjc1MTFfaW5wdXRfY2xvY2sgewo+ICAgCUFEVjc1MTFf SU5QVVRfQ0xPQ0tfMVgsCj4gICAJQURWNzUxMV9JTlBVVF9DTE9DS18yWCwKPiBAQCAtMjk3LDYg KzMxNiw4IEBAIGVudW0gYWR2NzUxMV90eXBlIHsKPiAgIAlBRFY3NTMzLAo+ICAgfTsKPiAgIAo+ ICsjZGVmaW5lIEFEVjc1MTFfTUFYX0FERFJTIDMKPiArCj4gICBzdHJ1Y3QgYWR2NzUxMSB7Cj4g ICAJc3RydWN0IGkyY19jbGllbnQgKmkyY19tYWluOwo+ICAgCXN0cnVjdCBpMmNfY2xpZW50ICpp MmNfZWRpZDsKPiBAQCAtMzQzLDE1ICszNjQsMjkgQEAgc3RydWN0IGFkdjc1MTEgewo+ICAgCj4g ICAJZW51bSBhZHY3NTExX3R5cGUgdHlwZTsKPiAgIAlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICph dWRpb19wZGV2Owo+ICsKPiArCXN0cnVjdCBjZWNfYWRhcHRlciAqY2VjX2FkYXA7Cj4gKwl1OCAg IGNlY19hZGRyW0FEVjc1MTFfTUFYX0FERFJTXTsKPiArCXU4ICAgY2VjX3ZhbGlkX2FkZHJzOwo+ ICsJYm9vbCBjZWNfZW5hYmxlZF9hZGFwOwo+ICsJc3RydWN0IGNsayAqY2VjX2NsazsKPiArCXUz MiBjZWNfY2xrX2ZyZXE7Cj4gICB9Owo+ICAgCj4gKyNpZmRlZiBDT05GSUdfRFJNX0kyQ19BRFY3 NTExX0NFQwo+ICtleHRlcm4gY29uc3Qgc3RydWN0IGNlY19hZGFwX29wcyBhZHY3NTExX2NlY19h ZGFwX29wczsKPiArCj4gK3ZvaWQgYWR2NzUxMV9jZWNfaW5pdChzdHJ1Y3QgYWR2NzUxMSAqYWR2 NzUxMSwgdW5zaWduZWQgaW50IG9mZnNldCk7Cj4gK2ludCBhZHY3NTExX2NlY19wYXJzZV9kdChz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBhZHY3NTExICphZHY3NTExKTsKPiArdm9pZCBhZHY3 NTExX2NlY19pcnFfcHJvY2VzcyhzdHJ1Y3QgYWR2NzUxMSAqYWR2NzUxMSwgdW5zaWduZWQgaW50 IGlycTEpOwo+ICsjZW5kaWYKPiArCj4gICAjaWZkZWYgQ09ORklHX0RSTV9JMkNfQURWNzUzMwo+ ICAgdm9pZCBhZHY3NTMzX2RzaV9wb3dlcl9vbihzdHJ1Y3QgYWR2NzUxMSAqYWR2KTsKPiAgIHZv aWQgYWR2NzUzM19kc2lfcG93ZXJfb2ZmKHN0cnVjdCBhZHY3NTExICphZHYpOwo+ICAgdm9pZCBh ZHY3NTMzX21vZGVfc2V0KHN0cnVjdCBhZHY3NTExICphZHYsIHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlKTsKPiAgIGludCBhZHY3NTMzX3BhdGNoX3JlZ2lzdGVycyhzdHJ1Y3QgYWR2NzUx MSAqYWR2KTsKPiAtdm9pZCBhZHY3NTMzX3VuaW5pdF9jZWMoc3RydWN0IGFkdjc1MTEgKmFkdik7 Cj4gLWludCBhZHY3NTMzX2luaXRfY2VjKHN0cnVjdCBhZHY3NTExICphZHYpOwo+ICtpbnQgYWR2 NzUzM19wYXRjaF9jZWNfcmVnaXN0ZXJzKHN0cnVjdCBhZHY3NTExICphZHYpOwo+ICAgaW50IGFk djc1MzNfYXR0YWNoX2RzaShzdHJ1Y3QgYWR2NzUxMSAqYWR2KTsKPiAgIHZvaWQgYWR2NzUzM19k ZXRhY2hfZHNpKHN0cnVjdCBhZHY3NTExICphZHYpOwo+ICAgaW50IGFkdjc1MzNfcGFyc2VfZHQo c3RydWN0IGRldmljZV9ub2RlICpucCwgc3RydWN0IGFkdjc1MTEgKmFkdik7Cj4gQEAgLTM3NCwx MSArNDA5LDcgQEAgc3RhdGljIGlubGluZSBpbnQgYWR2NzUzM19wYXRjaF9yZWdpc3RlcnMoc3Ry dWN0IGFkdjc1MTEgKmFkdikKPiAgIAlyZXR1cm4gLUVOT0RFVjsKPiAgIH0KPiAgIAo+IC1zdGF0 aWMgaW5saW5lIHZvaWQgYWR2NzUzM191bmluaXRfY2VjKHN0cnVjdCBhZHY3NTExICphZHYpCj4g LXsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSBpbnQgYWR2NzUzM19pbml0X2NlYyhzdHJ1Y3Qg YWR2NzUxMSAqYWR2KQo+ICtzdGF0aWMgaW5saW5lIGludCBhZHY3NTMzX3BhdGNoX2NlY19yZWdp c3RlcnMoc3RydWN0IGFkdjc1MTEgKmFkdikKPiAgIHsKPiAgIAlyZXR1cm4gLUVOT0RFVjsKPiAg IH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFf Y2VjLmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fkdjc1MTEvYWR2NzUxMV9jZWMuYwo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi43NDA4MWNiZmI1ZGIKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1 MTFfY2VjLmMKPiBAQCAtMCwwICsxLDMxNCBAQAo+ICsvKgo+ICsgKiBhZHY3NTExX2NlYy5jIC0g QW5hbG9nIERldmljZXMgQURWNzUxMS8zMyBjZWMgZHJpdmVyCj4gKyAqCj4gKyAqIENvcHlyaWdo dCAyMDE3IENpc2NvIFN5c3RlbXMsIEluYy4gYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmln aHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IG1heSByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU IFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+ICsgKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKPiArICogTUVSQ0hBTlRBQklM SVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKPiArICogTk9OSU5GUklO R0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVS Uwo+ICsgKiBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4KPiArICogQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4KPiArICogQ09OTkVDVElPTiBXSVRIIFRI RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQo+ICsgKiBTT0ZU V0FSRS4KPiArICoKPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgo+ ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gKwo+ ICsjaW5jbHVkZSA8bWVkaWEvY2VjLmg+Cj4gKwo+ICsjaW5jbHVkZSAiYWR2NzUxMS5oIgo+ICsK PiArI2RlZmluZSBBRFY3NTExX0lOVDFfQ0VDX01BU0sgXAo+ICsJKEFEVjc1MTFfSU5UMV9DRUNf VFhfUkVBRFkgfCBBRFY3NTExX0lOVDFfQ0VDX1RYX0FSQklUX0xPU1QgfCBcCj4gKwkgQURWNzUx MV9JTlQxX0NFQ19UWF9SRVRSWV9USU1FT1VUIHwgQURWNzUxMV9JTlQxX0NFQ19SWF9SRUFEWTEp Cj4gKwo+ICtzdGF0aWMgdm9pZCBhZHZfY2VjX3R4X3Jhd19zdGF0dXMoc3RydWN0IGFkdjc1MTEg KmFkdjc1MTEsIHU4IHR4X3Jhd19zdGF0dXMpCj4gK3sKPiArCXVuc2lnbmVkIGludCBvZmZzZXQg PSBhZHY3NTExLT50eXBlID09IEFEVjc1MzMgPwo+ICsJCQkJCUFEVjc1MzNfUkVHX0NFQ19PRkZT RVQgOiAwOwo+ICsJdW5zaWduZWQgaW50IHZhbDsKPiArCj4gKwlpZiAocmVnbWFwX3JlYWQoYWR2 NzUxMS0+cmVnbWFwX2NlYywKPiArCQkJQURWNzUxMV9SRUdfQ0VDX1RYX0VOQUJMRSArIG9mZnNl dCwgJnZhbCkpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWlmICgodmFsICYgMHgwMSkgPT0gMCkKPiAr CQlyZXR1cm47Cj4gKwo+ICsJaWYgKHR4X3Jhd19zdGF0dXMgJiAweDEwKSB7CgpTaG91bGQgd2Ug dHJ5IHRvIHVzZSBJUlExIG1hc2tzIChBRFY3NTExX0lOVDFfQ0VDX1RYX0FSQklUX0xPU1QgaGVy ZSkgdG8gbWFrZSB0aGUKY29kZSBtb3JlIGxlZ2libGU/CgpTYW1lIGNvbW1lbnRzIGZvciB0aGUg cmVzdCBvZiB0aGlzIGZ1bmMgYW5kIGFkdjc1MTFfY2VjX2lycV9wcm9jZXNzIGJlbG93LgoKPiAr CQljZWNfdHJhbnNtaXRfYXR0ZW1wdF9kb25lKGFkdjc1MTEtPmNlY19hZGFwLAo+ICsJCQkJCSAg Q0VDX1RYX1NUQVRVU19BUkJfTE9TVCk7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsJaWYgKHR4X3Jh d19zdGF0dXMgJiAweDA4KSB7Cj4gKwkJdTggc3RhdHVzOwo+ICsJCXU4IGVycl9jbnQgPSAwOwo+ ICsJCXU4IG5hY2tfY250ID0gMDsKPiArCQl1OCBsb3dfZHJpdmVfY250ID0gMDsKPiArCQl1bnNp Z25lZCBpbnQgY250Owo+ICsKPiArCQkvKgo+ICsJCSAqIFdlIHNldCB0aGlzIHN0YXR1cyBiaXQg c2luY2UgdGhpcyBoYXJkd2FyZSBwZXJmb3Jtcwo+ICsJCSAqIHJldHJhbnNtaXNzaW9ucy4KPiAr CQkgKi8KPiArCQlzdGF0dXMgPSBDRUNfVFhfU1RBVFVTX01BWF9SRVRSSUVTOwo+ICsJCWlmIChy ZWdtYXBfcmVhZChhZHY3NTExLT5yZWdtYXBfY2VjLAo+ICsJCQkgICAgQURWNzUxMV9SRUdfQ0VD X1RYX0xPV19EUlZfQ05UICsgb2Zmc2V0LCAmY250KSkgewo+ICsJCQllcnJfY250ID0gMTsKPiAr CQkJc3RhdHVzIHw9IENFQ19UWF9TVEFUVVNfRVJST1I7Cj4gKwkJfSBlbHNlIHsKPiArCQkJbmFj a19jbnQgPSBjbnQgJiAweGY7Cj4gKwkJCWlmIChuYWNrX2NudCkKPiArCQkJCXN0YXR1cyB8PSBD RUNfVFhfU1RBVFVTX05BQ0s7Cj4gKwkJCWxvd19kcml2ZV9jbnQgPSBjbnQgPj4gNDsKPiArCQkJ aWYgKGxvd19kcml2ZV9jbnQpCj4gKwkJCQlzdGF0dXMgfD0gQ0VDX1RYX1NUQVRVU19MT1dfRFJJ VkU7Cj4gKwkJfQo+ICsJCWNlY190cmFuc21pdF9kb25lKGFkdjc1MTEtPmNlY19hZGFwLCBzdGF0 dXMsCj4gKwkJCQkgIDAsIG5hY2tfY250LCBsb3dfZHJpdmVfY250LCBlcnJfY250KTsKPiArCQly ZXR1cm47Cj4gKwl9Cj4gKwlpZiAodHhfcmF3X3N0YXR1cyAmIDB4MjApIHsKPiArCQljZWNfdHJh bnNtaXRfYXR0ZW1wdF9kb25lKGFkdjc1MTEtPmNlY19hZGFwLCBDRUNfVFhfU1RBVFVTX09LKTsK PiArCQlyZXR1cm47Cj4gKwl9Cj4gK30KPiArCj4gK3ZvaWQgYWR2NzUxMV9jZWNfaXJxX3Byb2Nl c3Moc3RydWN0IGFkdjc1MTEgKmFkdjc1MTEsIHVuc2lnbmVkIGludCBpcnExKQo+ICt7Cj4gKwl1 bnNpZ25lZCBpbnQgb2Zmc2V0ID0gYWR2NzUxMS0+dHlwZSA9PSBBRFY3NTMzID8KPiArCQkJCQlB RFY3NTMzX1JFR19DRUNfT0ZGU0VUIDogMDsKPiArCXN0cnVjdCBjZWNfbXNnIG1zZyA9IHt9Owo+ ICsJdW5zaWduZWQgaW50IGxlbjsKPiArCXVuc2lnbmVkIGludCB2YWw7Cj4gKwl1OCBpOwo+ICsK PiArCWlmIChpcnExICYgMHgzOCkgPiArCQlhZHZfY2VjX3R4X3Jhd19zdGF0dXMoYWR2NzUxMSwg aXJxMSk7Cj4gKwo+ICsJaWYgKCEoaXJxMSAmIDEpKQo+ICsJCXJldHVybjsKPiArCj4gKwlpZiAo cmVnbWFwX3JlYWQoYWR2NzUxMS0+cmVnbWFwX2NlYywKPiArCQkJQURWNzUxMV9SRUdfQ0VDX1JY X0ZSQU1FX0xFTiArIG9mZnNldCwgJmxlbikpCj4gKwkJcmV0dXJuOwo+ICsKPiArCW1zZy5sZW4g PSBsZW4gJiAweDFmOwo+ICsKPiArCWlmIChtc2cubGVuID4gMTYpCj4gKwkJbXNnLmxlbiA9IDE2 Owo+ICsKPiArCWlmICghbXNnLmxlbikKPiArCQlyZXR1cm47Cj4gKwo+ICsJZm9yIChpID0gMDsg aSA8IG1zZy5sZW47IGkrKykgewo+ICsJCXJlZ21hcF9yZWFkKGFkdjc1MTEtPnJlZ21hcF9jZWMs Cj4gKwkJCSAgICBpICsgQURWNzUxMV9SRUdfQ0VDX1JYX0ZSQU1FX0hEUiArIG9mZnNldCwgJnZh bCk7Cj4gKwkJbXNnLm1zZ1tpXSA9IHZhbDsKPiArCX0KPiArCj4gKwkvKiB0b2dnbGUgdG8gcmUt ZW5hYmxlIHJ4IDEgKi8KPiArCXJlZ21hcF93cml0ZShhZHY3NTExLT5yZWdtYXBfY2VjLAo+ICsJ CSAgICAgQURWNzUxMV9SRUdfQ0VDX1JYX0JVRkZFUlMgKyBvZmZzZXQsIDEpOwo+ICsJcmVnbWFw X3dyaXRlKGFkdjc1MTEtPnJlZ21hcF9jZWMsCj4gKwkJICAgICBBRFY3NTExX1JFR19DRUNfUlhf QlVGRkVSUyArIG9mZnNldCwgMCk7Cj4gKwljZWNfcmVjZWl2ZWRfbXNnKGFkdjc1MTEtPmNlY19h ZGFwLCAmbXNnKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBhZHY3NTExX2NlY19hZGFwX2VuYWJs ZShzdHJ1Y3QgY2VjX2FkYXB0ZXIgKmFkYXAsIGJvb2wgZW5hYmxlKQo+ICt7Cj4gKwlzdHJ1Y3Qg YWR2NzUxMSAqYWR2NzUxMSA9IGNlY19nZXRfZHJ2ZGF0YShhZGFwKTsKPiArCXVuc2lnbmVkIGlu dCBvZmZzZXQgPSBhZHY3NTExLT50eXBlID09IEFEVjc1MzMgPwo+ICsJCQkJCUFEVjc1MzNfUkVH X0NFQ19PRkZTRVQgOiAwOwo+ICsKPiArCWlmIChhZHY3NTExLT5pMmNfY2VjID09IE5VTEwpCj4g KwkJcmV0dXJuIC1FSU87Cj4gKwo+ICsJaWYgKCFhZHY3NTExLT5jZWNfZW5hYmxlZF9hZGFwICYm IGVuYWJsZSkgewo+ICsJCS8qIHBvd2VyIHVwIGNlYyBzZWN0aW9uICovCj4gKwkJcmVnbWFwX3Vw ZGF0ZV9iaXRzKGFkdjc1MTEtPnJlZ21hcF9jZWMsCj4gKwkJCQkgICBBRFY3NTExX1JFR19DRUNf Q0xLX0RJViArIG9mZnNldCwKPiArCQkJCSAgIDB4MDMsIDB4MDEpOwo+ICsJCS8qIGxlZ2FjeSBt b2RlIGFuZCBjbGVhciBhbGwgcnggYnVmZmVycyAqLwo+ICsJCXJlZ21hcF93cml0ZShhZHY3NTEx LT5yZWdtYXBfY2VjLAo+ICsJCQkgICAgIEFEVjc1MTFfUkVHX0NFQ19SWF9CVUZGRVJTICsgb2Zm c2V0LCAweDA3KTsKPiArCQlyZWdtYXBfd3JpdGUoYWR2NzUxMS0+cmVnbWFwX2NlYywKPiArCQkJ ICAgICBBRFY3NTExX1JFR19DRUNfUlhfQlVGRkVSUyArIG9mZnNldCwgMCk7Cj4gKwkJLyogaW5p dGlhbGx5IGRpc2FibGUgdHggKi8KPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMoYWR2NzUxMS0+cmVn bWFwX2NlYywKPiArCQkJCSAgIEFEVjc1MTFfUkVHX0NFQ19UWF9FTkFCTEUgKyBvZmZzZXQsIDEs IDApOwo+ICsJCS8qIGVuYWJsZWQgaXJxczogKi8KPiArCQkvKiB0eDogcmVhZHkgKi8KPiArCQkv KiB0eDogYXJiaXRyYXRpb24gbG9zdCAqLwo+ICsJCS8qIHR4OiByZXRyeSB0aW1lb3V0ICovCj4g KwkJLyogcng6IHJlYWR5IDEgKi8KPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMoYWR2NzUxMS0+cmVn bWFwLAo+ICsJCQkJICAgQURWNzUxMV9SRUdfSU5UX0VOQUJMRSgxKSwgMHgzZiwKPiArCQkJCSAg IEFEVjc1MTFfSU5UMV9DRUNfTUFTSyk7Cj4gKwl9IGVsc2UgaWYgKGFkdjc1MTEtPmNlY19lbmFi bGVkX2FkYXAgJiYgIWVuYWJsZSkgewo+ICsJCXJlZ21hcF91cGRhdGVfYml0cyhhZHY3NTExLT5y ZWdtYXAsCj4gKwkJCQkgICBBRFY3NTExX1JFR19JTlRfRU5BQkxFKDEpLCAweDNmLCAwKTsKPiAr CQkvKiBkaXNhYmxlIGFkZHJlc3MgbWFzayAxLTMgKi8KPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMo YWR2NzUxMS0+cmVnbWFwX2NlYywKPiArCQkJCSAgIEFEVjc1MTFfUkVHX0NFQ19MT0dfQUREUl9N QVNLICsgb2Zmc2V0LAo+ICsJCQkJICAgMHg3MCwgMHgwMCk7Cj4gKwkJLyogcG93ZXIgZG93biBj ZWMgc2VjdGlvbiAqLwo+ICsJCXJlZ21hcF91cGRhdGVfYml0cyhhZHY3NTExLT5yZWdtYXBfY2Vj LAo+ICsJCQkJICAgQURWNzUxMV9SRUdfQ0VDX0NMS19ESVYgKyBvZmZzZXQsCj4gKwkJCQkgICAw eDAzLCAweDAwKTsKPiArCQlhZHY3NTExLT5jZWNfdmFsaWRfYWRkcnMgPSAwOwo+ICsJfQo+ICsJ YWR2NzUxMS0+Y2VjX2VuYWJsZWRfYWRhcCA9IGVuYWJsZTsKPiArCXJldHVybiAwOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IGFkdjc1MTFfY2VjX2FkYXBfbG9nX2FkZHIoc3RydWN0IGNlY19hZGFw dGVyICphZGFwLCB1OCBhZGRyKQo+ICt7Cj4gKwlzdHJ1Y3QgYWR2NzUxMSAqYWR2NzUxMSA9IGNl Y19nZXRfZHJ2ZGF0YShhZGFwKTsKPiArCXVuc2lnbmVkIGludCBvZmZzZXQgPSBhZHY3NTExLT50 eXBlID09IEFEVjc1MzMgPwo+ICsJCQkJCUFEVjc1MzNfUkVHX0NFQ19PRkZTRVQgOiAwOwo+ICsJ dW5zaWduZWQgaW50IGksIGZyZWVfaWR4ID0gQURWNzUxMV9NQVhfQUREUlM7Cj4gKwo+ICsJaWYg KCFhZHY3NTExLT5jZWNfZW5hYmxlZF9hZGFwKQo+ICsJCXJldHVybiBhZGRyID09IENFQ19MT0df QUREUl9JTlZBTElEID8gMCA6IC1FSU87Cj4gKwo+ICsJaWYgKGFkZHIgPT0gQ0VDX0xPR19BRERS X0lOVkFMSUQpIHsKPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMoYWR2NzUxMS0+cmVnbWFwX2NlYywK PiArCQkJCSAgIEFEVjc1MTFfUkVHX0NFQ19MT0dfQUREUl9NQVNLICsgb2Zmc2V0LAo+ICsJCQkJ ICAgMHg3MCwgMCk7Cj4gKwkJYWR2NzUxMS0+Y2VjX3ZhbGlkX2FkZHJzID0gMDsKPiArCQlyZXR1 cm4gMDsKPiArCX0KPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQURWNzUxMV9NQVhfQUREUlM7IGkr Kykgewo+ICsJCWJvb2wgaXNfdmFsaWQgPSBhZHY3NTExLT5jZWNfdmFsaWRfYWRkcnMgJiAoMSA8 PCBpKTsKPiArCj4gKwkJaWYgKGZyZWVfaWR4ID09IEFEVjc1MTFfTUFYX0FERFJTICYmICFpc192 YWxpZCkKPiArCQkJZnJlZV9pZHggPSBpOwo+ICsJCWlmIChpc192YWxpZCAmJiBhZHY3NTExLT5j ZWNfYWRkcltpXSA9PSBhZGRyKQo+ICsJCQlyZXR1cm4gMDsKPiArCX0KPiArCWlmIChpID09IEFE Vjc1MTFfTUFYX0FERFJTKSB7Cj4gKwkJaSA9IGZyZWVfaWR4Owo+ICsJCWlmIChpID09IEFEVjc1 MTFfTUFYX0FERFJTKQo+ICsJCQlyZXR1cm4gLUVOWElPOwo+ICsJfQo+ICsJYWR2NzUxMS0+Y2Vj X2FkZHJbaV0gPSBhZGRyOwo+ICsJYWR2NzUxMS0+Y2VjX3ZhbGlkX2FkZHJzIHw9IDEgPDwgaTsK PiArCj4gKwlzd2l0Y2ggKGkpIHsKPiArCWNhc2UgMDoKPiArCQkvKiBlbmFibGUgYWRkcmVzcyBt YXNrIDAgKi8KPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMoYWR2NzUxMS0+cmVnbWFwX2NlYywKPiAr CQkJCSAgIEFEVjc1MTFfUkVHX0NFQ19MT0dfQUREUl9NQVNLICsgb2Zmc2V0LAo+ICsJCQkJICAg MHgxMCwgMHgxMCk7Cj4gKwkJLyogc2V0IGFkZHJlc3MgZm9yIG1hc2sgMCAqLwo+ICsJCXJlZ21h cF91cGRhdGVfYml0cyhhZHY3NTExLT5yZWdtYXBfY2VjLAo+ICsJCQkJICAgQURWNzUxMV9SRUdf Q0VDX0xPR19BRERSXzBfMSArIG9mZnNldCwKPiArCQkJCSAgIDB4MGYsIGFkZHIpOwo+ICsJCWJy ZWFrOwo+ICsJY2FzZSAxOgo+ICsJCS8qIGVuYWJsZSBhZGRyZXNzIG1hc2sgMSAqLwo+ICsJCXJl Z21hcF91cGRhdGVfYml0cyhhZHY3NTExLT5yZWdtYXBfY2VjLAo+ICsJCQkJICAgQURWNzUxMV9S RUdfQ0VDX0xPR19BRERSX01BU0sgKyBvZmZzZXQsCj4gKwkJCQkgICAweDIwLCAweDIwKTsKPiAr CQkvKiBzZXQgYWRkcmVzcyBmb3IgbWFzayAxICovCj4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGFk djc1MTEtPnJlZ21hcF9jZWMsCj4gKwkJCQkgICBBRFY3NTExX1JFR19DRUNfTE9HX0FERFJfMF8x ICsgb2Zmc2V0LAo+ICsJCQkJICAgMHhmMCwgYWRkciA8PCA0KTsKPiArCQlicmVhazsKPiArCWNh c2UgMjoKPiArCQkvKiBlbmFibGUgYWRkcmVzcyBtYXNrIDIgKi8KPiArCQlyZWdtYXBfdXBkYXRl X2JpdHMoYWR2NzUxMS0+cmVnbWFwX2NlYywKPiArCQkJCSAgIEFEVjc1MTFfUkVHX0NFQ19MT0df QUREUl9NQVNLICsgb2Zmc2V0LAo+ICsJCQkJICAgMHg0MCwgMHg0MCk7Cj4gKwkJLyogc2V0IGFk ZHJlc3MgZm9yIG1hc2sgMSAqLwo+ICsJCXJlZ21hcF91cGRhdGVfYml0cyhhZHY3NTExLT5yZWdt YXBfY2VjLAo+ICsJCQkJICAgQURWNzUxMV9SRUdfQ0VDX0xPR19BRERSXzIgKyBvZmZzZXQsCj4g KwkJCQkgICAweDBmLCBhZGRyKTsKPiArCQlicmVhazsKPiArCX0KPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IGFkdjc1MTFfY2VjX2FkYXBfdHJhbnNtaXQoc3RydWN0IGNlY19h ZGFwdGVyICphZGFwLCB1OCBhdHRlbXB0cywKPiArCQkJCSAgICAgdTMyIHNpZ25hbF9mcmVlX3Rp bWUsIHN0cnVjdCBjZWNfbXNnICptc2cpCj4gK3sKPiArCXN0cnVjdCBhZHY3NTExICphZHY3NTEx ID0gY2VjX2dldF9kcnZkYXRhKGFkYXApOwo+ICsJdW5zaWduZWQgaW50IG9mZnNldCA9IGFkdjc1 MTEtPnR5cGUgPT0gQURWNzUzMyA/Cj4gKwkJCQkJQURWNzUzM19SRUdfQ0VDX09GRlNFVCA6IDA7 Cj4gKwl1OCBsZW4gPSBtc2ctPmxlbjsKPiArCXVuc2lnbmVkIGludCBpOwo+ICsKPiArCS8qCj4g KwkgKiBUaGUgbnVtYmVyIG9mIHJldHJpZXMgaXMgdGhlIG51bWJlciBvZiBhdHRlbXB0cyAtIDEs IGJ1dCByZXRyeQo+ICsJICogYXQgbGVhc3Qgb25jZS4gSXQncyBub3QgY2xlYXIgaWYgYSB2YWx1 ZSBvZiAwIGlzIGFsbG93ZWQsIHNvCj4gKwkgKiBsZXQncyBkbyBhdCBsZWFzdCBvbmUgcmV0cnku Cj4gKwkgKi8KPiArCXJlZ21hcF91cGRhdGVfYml0cyhhZHY3NTExLT5yZWdtYXBfY2VjLAo+ICsJ CQkgICBBRFY3NTExX1JFR19DRUNfVFhfUkVUUlkgKyBvZmZzZXQsCj4gKwkJCSAgIDB4NzAsIG1h eCgxLCBhdHRlbXB0cyAtIDEpIDw8IDQpOwo+ICsKPiArCS8qIGJsb2NraW5nLCBjbGVhciBjZWMg dHggaXJxIHN0YXR1cyAqLwo+ICsJcmVnbWFwX3VwZGF0ZV9iaXRzKGFkdjc1MTEtPnJlZ21hcCwg QURWNzUxMV9SRUdfSU5UKDEpLCAweDM4LCAweDM4KTsKPiArCj4gKwkvKiB3cml0ZSBkYXRhICov ID4gKwlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCj4gKwkJcmVnbWFwX3dyaXRlKGFkdjc1MTEt PnJlZ21hcF9jZWMsIGkgKyBvZmZzZXQsIG1zZy0+bXNnW2ldKTsKCk1heWJlICJpICsgQURWNzUx MV9SRUdfQ0VDX1RYX0ZSQU1FX0hEUiArIG9mZnNldCIgaGVyZSBmb3IgbW9yZSBjbGFyaXR5PwoK PiArCj4gKwkvKiBzZXQgbGVuZ3RoIChkYXRhICsgaGVhZGVyKSAqLwo+ICsJcmVnbWFwX3dyaXRl KGFkdjc1MTEtPnJlZ21hcF9jZWMsCj4gKwkJICAgICBBRFY3NTExX1JFR19DRUNfVFhfRlJBTUVf TEVOICsgb2Zmc2V0LCBsZW4pOwo+ICsJLyogc3RhcnQgdHJhbnNtaXQsIGVuYWJsZSB0eCAqLwo+ ICsJcmVnbWFwX3dyaXRlKGFkdjc1MTEtPnJlZ21hcF9jZWMsCj4gKwkJICAgICBBRFY3NTExX1JF R19DRUNfVFhfRU5BQkxFICsgb2Zmc2V0LCAweDAxKTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ ICtjb25zdCBzdHJ1Y3QgY2VjX2FkYXBfb3BzIGFkdjc1MTFfY2VjX2FkYXBfb3BzID0gewo+ICsJ LmFkYXBfZW5hYmxlID0gYWR2NzUxMV9jZWNfYWRhcF9lbmFibGUsCj4gKwkuYWRhcF9sb2dfYWRk ciA9IGFkdjc1MTFfY2VjX2FkYXBfbG9nX2FkZHIsCj4gKwkuYWRhcF90cmFuc21pdCA9IGFkdjc1 MTFfY2VjX2FkYXBfdHJhbnNtaXQsCj4gK307Cj4gKwo+ICt2b2lkIGFkdjc1MTFfY2VjX2luaXQo c3RydWN0IGFkdjc1MTEgKmFkdjc1MTEsIHVuc2lnbmVkIGludCBvZmZzZXQpCj4gK3sKPiArCXJl Z21hcF93cml0ZShhZHY3NTExLT5yZWdtYXAsIEFEVjc1MTFfUkVHX0NFQ19DVFJMICsgb2Zmc2V0 LCAwKTsKPiArCS8qIGNlYyBzb2Z0IHJlc2V0ICovCj4gKwlyZWdtYXBfd3JpdGUoYWR2NzUxMS0+ cmVnbWFwX2NlYywKPiArCQkgICAgIEFEVjc1MTFfUkVHX0NFQ19TT0ZUX1JFU0VUICsgb2Zmc2V0 LCAweDAxKTsKPiArCXJlZ21hcF93cml0ZShhZHY3NTExLT5yZWdtYXBfY2VjLAo+ICsJCSAgICAg QURWNzUxMV9SRUdfQ0VDX1NPRlRfUkVTRVQgKyBvZmZzZXQsIDB4MDApOwo+ICsKPiArCS8qIGxl Z2FjeSBtb2RlICovCj4gKwlyZWdtYXBfd3JpdGUoYWR2NzUxMS0+cmVnbWFwX2NlYywKPiArCQkg ICAgIEFEVjc1MTFfUkVHX0NFQ19SWF9CVUZGRVJTICsgb2Zmc2V0LCAweDAwKTsKPiArCj4gKwly ZWdtYXBfd3JpdGUoYWR2NzUxMS0+cmVnbWFwX2NlYywKPiArCQkgICAgIEFEVjc1MTFfUkVHX0NF Q19DTEtfRElWICsgb2Zmc2V0LAo+ICsJCSAgICAgKChhZHY3NTExLT5jZWNfY2xrX2ZyZXEgLyA3 NTAwMDApIC0gMSkgPDwgMik7Cj4gK30KPiArCj4gK2ludCBhZHY3NTExX2NlY19wYXJzZV9kdChz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBhZHY3NTExICphZHY3NTExKQo+ICt7Cj4gKwlhZHY3 NTExLT5jZWNfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImNlYyIpOwo+ICsJaWYgKElTX0VSUihh ZHY3NTExLT5jZWNfY2xrKSkgewo+ICsJCWludCByZXQgPSBQVFJfRVJSKGFkdjc1MTEtPmNlY19j bGspOwo+ICsKPiArCQlhZHY3NTExLT5jZWNfY2xrID0gTlVMTDsKPiArCQlyZXR1cm4gcmV0Owo+ ICsJfQo+ICsJY2xrX3ByZXBhcmVfZW5hYmxlKGFkdjc1MTEtPmNlY19jbGspOwo+ICsJYWR2NzUx MS0+Y2VjX2Nsa19mcmVxID0gY2xrX2dldF9yYXRlKGFkdjc1MTEtPmNlY19jbGspOwo+ICsJcmV0 dXJuIDA7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTEx L2Fkdjc1MTFfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fkdjc1MTEvYWR2NzUxMV9k cnYuYwo+IGluZGV4IGY3NWFiNjI3ODExMy4uMWJlZjMzZTk5MzU4IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9hZHY3NTExX2Rydi5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmMKPiBAQCAtMTEsMTIgKzExLDE1 IEBACj4gICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvb2Zf ZGV2aWNlLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICsjaW5jbHVkZSA8bGludXgv Y2xrLmg+Cj4gICAKPiAgICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICAgI2luY2x1ZGUgPGRybS9k cm1fYXRvbWljLmg+Cj4gICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gICAj aW5jbHVkZSA8ZHJtL2RybV9lZGlkLmg+Cj4gICAKPiArI2luY2x1ZGUgPG1lZGlhL2NlYy5oPgo+ ICsKPiAgICNpbmNsdWRlICJhZHY3NTExLmgiCj4gICAKPiAgIC8qIEFESSByZWNvbW1lbmRlZCB2 YWx1ZXMgZm9yIHByb3BlciBvcGVyYXRpb24uICovCj4gQEAgLTMzOSw4ICszNDIsMTAgQEAgc3Rh dGljIHZvaWQgX19hZHY3NTExX3Bvd2VyX29uKHN0cnVjdCBhZHY3NTExICphZHY3NTExKQo+ICAg CQkgKi8KPiAgIAkJcmVnbWFwX3dyaXRlKGFkdjc1MTEtPnJlZ21hcCwgQURWNzUxMV9SRUdfSU5U X0VOQUJMRSgwKSwKPiAgIAkJCSAgICAgQURWNzUxMV9JTlQwX0VESURfUkVBRFkgfCBBRFY3NTEx X0lOVDBfSFBEKTsKPiAtCQlyZWdtYXBfd3JpdGUoYWR2NzUxMS0+cmVnbWFwLCBBRFY3NTExX1JF R19JTlRfRU5BQkxFKDEpLAo+IC0JCQkgICAgIEFEVjc1MTFfSU5UMV9ERENfRVJST1IpOwo+ICsJ CXJlZ21hcF91cGRhdGVfYml0cyhhZHY3NTExLT5yZWdtYXAsCj4gKwkJCQkgICBBRFY3NTExX1JF R19JTlRfRU5BQkxFKDEpLAo+ICsJCQkJICAgQURWNzUxMV9JTlQxX0REQ19FUlJPUiwKPiArCQkJ CSAgIEFEVjc1MTFfSU5UMV9ERENfRVJST1IpOwo+ICAgCX0KPiAgIAo+ICAgCS8qCj4gQEAgLTM3 Niw2ICszODEsOSBAQCBzdGF0aWMgdm9pZCBfX2Fkdjc1MTFfcG93ZXJfb2ZmKHN0cnVjdCBhZHY3 NTExICphZHY3NTExKQo+ICAgCXJlZ21hcF91cGRhdGVfYml0cyhhZHY3NTExLT5yZWdtYXAsIEFE Vjc1MTFfUkVHX1BPV0VSLAo+ICAgCQkJICAgQURWNzUxMV9QT1dFUl9QT1dFUl9ET1dOLAo+ICAg CQkJICAgQURWNzUxMV9QT1dFUl9QT1dFUl9ET1dOKTsKPiArCXJlZ21hcF91cGRhdGVfYml0cyhh ZHY3NTExLT5yZWdtYXAsCj4gKwkJCSAgIEFEVjc1MTFfUkVHX0lOVF9FTkFCTEUoMSksCj4gKwkJ CSAgIEFEVjc1MTFfSU5UMV9ERENfRVJST1IsIDApOwo+ICAgCXJlZ2NhY2hlX21hcmtfZGlydHko YWR2NzUxMS0+cmVnbWFwKTsKPiAgIH0KPiAgIAo+IEBAIC00MjYsNiArNDM0LDggQEAgc3RhdGlj IHZvaWQgYWR2NzUxMV9ocGRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gICAKPiAg IAlpZiAoYWR2NzUxMS0+Y29ubmVjdG9yLnN0YXR1cyAhPSBzdGF0dXMpIHsKPiAgIAkJYWR2NzUx MS0+Y29ubmVjdG9yLnN0YXR1cyA9IHN0YXR1czsKPiArCQlpZiAoc3RhdHVzID09IGNvbm5lY3Rv cl9zdGF0dXNfZGlzY29ubmVjdGVkKQo+ICsJCQljZWNfcGh5c19hZGRyX2ludmFsaWRhdGUoYWR2 NzUxMS0+Y2VjX2FkYXApOwo+ICAgCQlkcm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50KGFkdjc1 MTEtPmNvbm5lY3Rvci5kZXYpOwo+ICAgCX0KPiAgIH0KPiBAQCAtNDU2LDYgKzQ2NiwxMCBAQCBz dGF0aWMgaW50IGFkdjc1MTFfaXJxX3Byb2Nlc3Moc3RydWN0IGFkdjc1MTEgKmFkdjc1MTEsIGJv b2wgcHJvY2Vzc19ocGQpCj4gICAJCQl3YWtlX3VwX2FsbCgmYWR2NzUxMS0+d3EpOwo+ICAgCX0K PiAgIAo+ICsjaWZkZWYgQ09ORklHX0RSTV9JMkNfQURWNzUxMV9DRUMKPiArCWFkdjc1MTFfY2Vj X2lycV9wcm9jZXNzKGFkdjc1MTEsIGlycTEpOwo+ICsjZW5kaWYKPiArCj4gICAJcmV0dXJuIDA7 Cj4gICB9Cj4gICAKPiBAQCAtNTk5LDYgKzYxMyw4IEBAIHN0YXRpYyBpbnQgYWR2NzUxMV9nZXRf bW9kZXMoc3RydWN0IGFkdjc1MTEgKmFkdjc1MTEsCj4gICAKPiAgIAlhZHY3NTExX3NldF9jb25m aWdfY3NjKGFkdjc1MTEsIGNvbm5lY3RvciwgYWR2NzUxMS0+cmdiKTsKPiAgIAo+ICsJY2VjX3Nf cGh5c19hZGRyX2Zyb21fZWRpZChhZHY3NTExLT5jZWNfYWRhcCwgZWRpZCk7Cj4gKwo+ICAgCXJl dHVybiBjb3VudDsKPiAgIH0KPiAgIAo+IEBAIC05MjAsNiArOTM2LDg0IEBAIHN0YXRpYyB2b2lk IGFkdjc1MTFfdW5pbml0X3JlZ3VsYXRvcnMoc3RydWN0IGFkdjc1MTEgKmFkdikKPiAgIAlyZWd1 bGF0b3JfYnVsa19kaXNhYmxlKGFkdi0+bnVtX3N1cHBsaWVzLCBhZHYtPnN1cHBsaWVzKTsKPiAg IH0KPiAgIAo+ICtzdGF0aWMgYm9vbCBhZHY3NTMzX2NlY19yZWdpc3Rlcl92b2xhdGlsZShzdHJ1 Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByZWcpCj4gK3sKPiArCXN3aXRjaCAocmVnKSB7 Cj4gKwljYXNlIEFEVjc1MTFfUkVHX0NFQ19SWF9GUkFNRV9IRFIgKyBBRFY3NTMzX1JFR19DRUNf T0ZGU0VUOgo+ICsJY2FzZSBBRFY3NTExX1JFR19DRUNfUlhfRlJBTUVfREFUQTAgKyBBRFY3NTMz X1JFR19DRUNfT0ZGU0VULi4uCj4gKwkJQURWNzUxMV9SRUdfQ0VDX1JYX0ZSQU1FX0RBVEEwICsg QURWNzUzM19SRUdfQ0VDX09GRlNFVCArIDE0Ogo+ICsJY2FzZSBBRFY3NTExX1JFR19DRUNfUlhf RlJBTUVfTEVOICsgQURWNzUzM19SRUdfQ0VDX09GRlNFVDoKPiArCWNhc2UgQURWNzUxMV9SRUdf Q0VDX1JYX0JVRkZFUlMgKyBBRFY3NTMzX1JFR19DRUNfT0ZGU0VUOgo+ICsJY2FzZSBBRFY3NTEx X1JFR19DRUNfVFhfTE9XX0RSVl9DTlQgKyBBRFY3NTMzX1JFR19DRUNfT0ZGU0VUOgo+ICsJCXJl dHVybiB0cnVlOwo+ICsJfQo+ICsKPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIGFkdjc1MzNfY2VjX3JlZ21hcF9jb25maWcgPSB7 Cj4gKwkucmVnX2JpdHMgPSA4LAo+ICsJLnZhbF9iaXRzID0gOCwKPiArCj4gKwkubWF4X3JlZ2lz dGVyID0gMHhmZiwKPiArCS5jYWNoZV90eXBlID0gUkVHQ0FDSEVfUkJUUkVFLAo+ICsJLnZvbGF0 aWxlX3JlZyA9IGFkdjc1MzNfY2VjX3JlZ2lzdGVyX3ZvbGF0aWxlLAo+ICt9Owo+ICsKPiArc3Rh dGljIGJvb2wgYWR2NzUxMV9jZWNfcmVnaXN0ZXJfdm9sYXRpbGUoc3RydWN0IGRldmljZSAqZGV2 LCB1bnNpZ25lZCBpbnQgcmVnKQo+ICt7CgpNYXliZSB3ZSBjb3VsZCBjb21iaW5lIHRoZSB0d28g cmVnaXN0ZXJfdm9sYXRpbGUoKSBmdW5jcyBhbmQgdGhlIHJlbWFwX2NvbmZpZyBzdHJ1Y3RzCmZv ciBhZHY3NTExIGFuZCBhZHY3NTMzIGJ5IHBhc3NpbmcgKHJlZyArIG9mZnNldCkgdG8gc3dpdGNo PwoKPiArCXN3aXRjaCAocmVnKSB7Cj4gKwljYXNlIEFEVjc1MTFfUkVHX0NFQ19SWF9GUkFNRV9I RFI6Cj4gKwljYXNlIEFEVjc1MTFfUkVHX0NFQ19SWF9GUkFNRV9EQVRBMC4uLgo+ICsJCUFEVjc1 MTFfUkVHX0NFQ19SWF9GUkFNRV9EQVRBMCArIDE0Ogo+ICsJY2FzZSBBRFY3NTExX1JFR19DRUNf UlhfRlJBTUVfTEVOOgo+ICsJY2FzZSBBRFY3NTExX1JFR19DRUNfUlhfQlVGRkVSUzoKPiArCWNh c2UgQURWNzUxMV9SRUdfQ0VDX1RYX0xPV19EUlZfQ05UOgo+ICsJCXJldHVybiB0cnVlOwo+ICsJ fQo+ICsKPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBy ZWdtYXBfY29uZmlnIGFkdjc1MTFfY2VjX3JlZ21hcF9jb25maWcgPSB7Cj4gKwkucmVnX2JpdHMg PSA4LAo+ICsJLnZhbF9iaXRzID0gOCwKPiArCj4gKwkubWF4X3JlZ2lzdGVyID0gMHhmZiwKPiAr CS5jYWNoZV90eXBlID0gUkVHQ0FDSEVfUkJUUkVFLAo+ICsJLnZvbGF0aWxlX3JlZyA9IGFkdjc1 MTFfY2VjX3JlZ2lzdGVyX3ZvbGF0aWxlLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBhZHY3NTEx X2luaXRfY2VjX3JlZ21hcChzdHJ1Y3QgYWR2NzUxMSAqYWR2KQo+ICt7Cj4gKwlpbnQgcmV0Owo+ ICsKPiArCWFkdi0+aTJjX2NlYyA9IGkyY19uZXdfZHVtbXkoYWR2LT5pMmNfbWFpbi0+YWRhcHRl ciwKPiArCQkJCSAgICAgYWR2LT5pMmNfbWFpbi0+YWRkciAtIDEpOwo+ICsJaWYgKCFhZHYtPmky Y19jZWMpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJYWR2LT5yZWdtYXBfY2VjID0gZGV2 bV9yZWdtYXBfaW5pdF9pMmMoYWR2LT5pMmNfY2VjLAo+ICsJCQkJCSAgICAgICBhZHYtPnR5cGUg PT0gQURWNzUzMyA/Cj4gKwkJCQkJICAgICAgICZhZHY3NTMzX2NlY19yZWdtYXBfY29uZmlnIDoK PiArCQkJCQkmYWR2NzUxMV9jZWNfcmVnbWFwX2NvbmZpZyk7Cj4gKwlpZiAoSVNfRVJSKGFkdi0+ cmVnbWFwX2NlYykpIHsKPiArCQlyZXQgPSBQVFJfRVJSKGFkdi0+cmVnbWFwX2NlYyk7Cj4gKwkJ Z290byBlcnI7Cj4gKwl9Cj4gKwo+ICsJaWYgKGFkdi0+dHlwZSA9PSBBRFY3NTMzKSB7Cj4gKwkJ cmV0ID0gYWR2NzUzM19wYXRjaF9jZWNfcmVnaXN0ZXJzKGFkdik7Cj4gKwkJaWYgKHJldCkKPiAr CQkJZ290byBlcnI7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK2VycjoKPiArCWkyY191bnJl Z2lzdGVyX2RldmljZShhZHYtPmkyY19jZWMpOwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiAg IHN0YXRpYyBpbnQgYWR2NzUxMV9wYXJzZV9kdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLAo+ICAg CQkJICAgIHN0cnVjdCBhZHY3NTExX2xpbmtfY29uZmlnICpjb25maWcpCj4gICB7Cj4gQEAgLTEw MTAsNiArMTEwNCw3IEBAIHN0YXRpYyBpbnQgYWR2NzUxMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVu dCAqaTJjLCBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCj4gICAJc3RydWN0IGRldmlj ZSAqZGV2ID0gJmkyYy0+ZGV2Owo+ICAgCXVuc2lnbmVkIGludCBtYWluX2kyY19hZGRyID0gaTJj LT5hZGRyIDw8IDE7Cj4gICAJdW5zaWduZWQgaW50IGVkaWRfaTJjX2FkZHIgPSBtYWluX2kyY19h ZGRyICsgNDsKPiArCXVuc2lnbmVkIGludCBvZmZzZXQ7Cj4gICAJdW5zaWduZWQgaW50IHZhbDsK PiAgIAlpbnQgcmV0Owo+ICAgCj4gQEAgLTEwMzUsNiArMTEzMCw3IEBAIHN0YXRpYyBpbnQgYWR2 NzUxMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjLCBjb25zdCBzdHJ1Y3QgaTJjX2Rldmlj ZV9pZCAqaWQpCj4gICAJCXJldCA9IGFkdjc1MTFfcGFyc2VfZHQoZGV2LT5vZl9ub2RlLCAmbGlu a19jb25maWcpOwo+ICAgCWVsc2UKPiAgIAkJcmV0ID0gYWR2NzUzM19wYXJzZV9kdChkZXYtPm9m X25vZGUsIGFkdjc1MTEpOwo+ICsKClRoaXMgbGluZSBzZWVtcyB1bm5lY2Vzc2FyeS4KCj4gICAJ aWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IEBAIC0xMDkzLDExICsxMTg5LDkgQEAg c3RhdGljIGludCBhZHY3NTExX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMsIGNvbnN0IHN0 cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKPiAgIAkJZ290byB1bmluaXRfcmVndWxhdG9yczsKPiAg IAl9Cj4gICAKPiAtCWlmIChhZHY3NTExLT50eXBlID09IEFEVjc1MzMpIHsKPiAtCQlyZXQgPSBh ZHY3NTMzX2luaXRfY2VjKGFkdjc1MTEpOwo+IC0JCWlmIChyZXQpCj4gLQkJCWdvdG8gZXJyX2ky Y191bnJlZ2lzdGVyX2VkaWQ7Cj4gLQl9Cj4gKwlyZXQgPSBhZHY3NTExX2luaXRfY2VjX3JlZ21h cChhZHY3NTExKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBlcnJfaTJjX3VucmVnaXN0ZXJfZWRp ZDsKPiAgIAo+ICAgCUlOSVRfV09SSygmYWR2NzUxMS0+aHBkX3dvcmssIGFkdjc1MTFfaHBkX3dv cmspOwo+ICAgCj4gQEAgLTExMTIsMTAgKzEyMDYsNiBAQCBzdGF0aWMgaW50IGFkdjc1MTFfcHJv YmUoc3RydWN0IGkyY19jbGllbnQgKmkyYywgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlk KQo+ICAgCQkJZ290byBlcnJfdW5yZWdpc3Rlcl9jZWM7Cj4gICAJfQo+ICAgCj4gLQkvKiBDRUMg aXMgdW51c2VkIGZvciBub3cgKi8KPiAtCXJlZ21hcF93cml0ZShhZHY3NTExLT5yZWdtYXAsIEFE Vjc1MTFfUkVHX0NFQ19DVFJMLAo+IC0JCSAgICAgQURWNzUxMV9DRUNfQ1RSTF9QT1dFUl9ET1dO KTsKPiAtCj4gICAJYWR2NzUxMV9wb3dlcl9vZmYoYWR2NzUxMSk7Cj4gICAKPiAgIAlpMmNfc2V0 X2NsaWVudGRhdGEoaTJjLCBhZHY3NTExKTsKPiBAQCAtMTEzNCwxMCArMTIyNCwzOSBAQCBzdGF0 aWMgaW50IGFkdjc1MTFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYywgY29uc3Qgc3RydWN0 IGkyY19kZXZpY2VfaWQgKmlkKQo+ICAgCj4gICAJYWR2NzUxMV9hdWRpb19pbml0KGRldiwgYWR2 NzUxMSk7Cj4gICAKPiArCW9mZnNldCA9IGFkdjc1MTEtPnR5cGUgPT0gQURWNzUzMyA/IEFEVjc1 MzNfUkVHX0NFQ19PRkZTRVQgOiAwOwo+ICsKPiArI2lmZGVmIENPTkZJR19EUk1fSTJDX0FEVjc1 MTFfQ0VDCj4gKwlyZXQgPSBhZHY3NTExX2NlY19wYXJzZV9kdChkZXYsIGFkdjc1MTEpOwo+ICsJ aWYgKHJldCkKPiArCQlnb3RvIGVycl91bnJlZ2lzdGVyX2NlYzsKPiArCj4gKwlhZHY3NTExLT5j ZWNfYWRhcCA9IGNlY19hbGxvY2F0ZV9hZGFwdGVyKCZhZHY3NTExX2NlY19hZGFwX29wcywKPiAr CQlhZHY3NTExLCBkZXZfbmFtZSgmaTJjLT5kZXYpLCBDRUNfQ0FQX1RSQU5TTUlUIHwKPiArCQlD RUNfQ0FQX0xPR19BRERSUyB8IENFQ19DQVBfUEFTU1RIUk9VR0ggfCBDRUNfQ0FQX1JDLAo+ICsJ CUFEVjc1MTFfTUFYX0FERFJTKTsKPiArCXJldCA9IFBUUl9FUlJfT1JfWkVSTyhhZHY3NTExLT5j ZWNfYWRhcCk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyX3VucmVnaXN0ZXJfY2VjOwo+ICsK PiArCWFkdjc1MTFfY2VjX2luaXQoYWR2NzUxMSwgb2Zmc2V0KTsKPiArCj4gKwlyZXQgPSBjZWNf cmVnaXN0ZXJfYWRhcHRlcihhZHY3NTExLT5jZWNfYWRhcCwgJmkyYy0+ZGV2KTsKPiArCWlmIChy ZXQpIHsKPiArCQljZWNfZGVsZXRlX2FkYXB0ZXIoYWR2NzUxMS0+Y2VjX2FkYXApOwo+ICsJCWdv dG8gZXJyX3VucmVnaXN0ZXJfY2VjOwo+ICsJfQoKV2UgY291bGQgaWRlYWxseSBwdXQgdGhpcyBj b2RlIGluIGEgc2luZ2xlIGZ1bmMgYW5kIG1ha2UgYWR2NzUxMV9jZWNfaW5pdCwKYWR2NzUxMV9j ZWNfcGFyc2VfZHQgYW5kIGFkdjc1MTFfY2VjX2FkYXBfb3BzIHdpdGhpbiB0aGUgc2NvcGUgb2Yg YWR2NzUxMV9jZWMuYy4KSXQncyBub3QgbmVjZXNzYXJ5IHRvIGRvLCB0aG91Z2guCgo+ICsjZWxz ZQo+ICsJcmVnbWFwX3dyaXRlKGFkdjc1MTEtPnJlZ21hcCwgQURWNzUxMV9SRUdfQ0VDX0NUUkwg KyBvZmZzZXQsCj4gKwkJICAgICBBRFY3NTExX0NFQ19DVFJMX1BPV0VSX0RPV04pOwo+ICsjZW5k aWYKPiArCj4gICAJcmV0dXJuIDA7Cj4gICAKPiAgIGVycl91bnJlZ2lzdGVyX2NlYzoKPiAtCWFk djc1MzNfdW5pbml0X2NlYyhhZHY3NTExKTsKPiArCWkyY191bnJlZ2lzdGVyX2RldmljZShhZHY3 NTExLT5pMmNfY2VjKTsKPiArCWlmIChhZHY3NTExLT5jZWNfY2xrKQo+ICsJCWNsa19kaXNhYmxl X3VucHJlcGFyZShhZHY3NTExLT5jZWNfY2xrKTsKPiAgIGVycl9pMmNfdW5yZWdpc3Rlcl9lZGlk Ogo+ICAgCWkyY191bnJlZ2lzdGVyX2RldmljZShhZHY3NTExLT5pMmNfZWRpZCk7Cj4gICB1bmlu aXRfcmVndWxhdG9yczoKPiBAQCAtMTE1MCwxMCArMTI2OSwxMSBAQCBzdGF0aWMgaW50IGFkdjc1 MTFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gICB7Cj4gICAJc3RydWN0IGFkdjc1 MTEgKmFkdjc1MTEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTsKPiAgIAo+IC0JaWYgKGFkdjc1 MTEtPnR5cGUgPT0gQURWNzUzMykgewo+ICsJaWYgKGFkdjc1MTEtPnR5cGUgPT0gQURWNzUzMykK PiAgIAkJYWR2NzUzM19kZXRhY2hfZHNpKGFkdjc1MTEpOwo+IC0JCWFkdjc1MzNfdW5pbml0X2Nl YyhhZHY3NTExKTsKPiAtCX0KPiArCWkyY191bnJlZ2lzdGVyX2RldmljZShhZHY3NTExLT5pMmNf Y2VjKTsKPiArCWlmIChhZHY3NTExLT5jZWNfY2xrKQo+ICsJCWNsa19kaXNhYmxlX3VucHJlcGFy ZShhZHY3NTExLT5jZWNfY2xrKTsKPiAgIAo+ICAgCWFkdjc1MTFfdW5pbml0X3JlZ3VsYXRvcnMo YWR2NzUxMSk7Cj4gICAKPiBAQCAtMTE2MSw2ICsxMjgxLDggQEAgc3RhdGljIGludCBhZHY3NTEx X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICAgCj4gICAJYWR2NzUxMV9hdWRpb19l eGl0KGFkdjc1MTEpOwo+ICAgCj4gKwljZWNfdW5yZWdpc3Rlcl9hZGFwdGVyKGFkdjc1MTEtPmNl Y19hZGFwKTsKPiArCj4gICAJaTJjX3VucmVnaXN0ZXJfZGV2aWNlKGFkdjc1MTEtPmkyY19lZGlk KTsKPiAgIAo+ICAgCWtmcmVlKGFkdjc1MTEtPmVkaWQpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL2Fkdjc1MTEvYWR2NzUzMy5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS9hZHY3NTExL2Fkdjc1MzMuYwo+IGluZGV4IGFjODA0ZjgxZTJmNi4uMGUxNzNhYmI5MTNjIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9hZHY3NTMzLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fkdjc1MTEvYWR2NzUzMy5jCj4gQEAgLTE0NSwz NyArMTQ1LDExIEBAIGludCBhZHY3NTMzX3BhdGNoX3JlZ2lzdGVycyhzdHJ1Y3QgYWR2NzUxMSAq YWR2KQo+ICAgCQkJCSAgICAgQVJSQVlfU0laRShhZHY3NTMzX2ZpeGVkX3JlZ2lzdGVycykpOwo+ ICAgfQo+ICAgCj4gLXZvaWQgYWR2NzUzM191bmluaXRfY2VjKHN0cnVjdCBhZHY3NTExICphZHYp Cj4gK2ludCBhZHY3NTMzX3BhdGNoX2NlY19yZWdpc3RlcnMoc3RydWN0IGFkdjc1MTEgKmFkdikK PiAgIHsKPiAtCWkyY191bnJlZ2lzdGVyX2RldmljZShhZHYtPmkyY19jZWMpOwo+IC19Cj4gLQo+ IC1pbnQgYWR2NzUzM19pbml0X2NlYyhzdHJ1Y3QgYWR2NzUxMSAqYWR2KQo+IC17Cj4gLQlpbnQg cmV0Owo+IC0KPiAtCWFkdi0+aTJjX2NlYyA9IGkyY19uZXdfZHVtbXkoYWR2LT5pMmNfbWFpbi0+ YWRhcHRlciwKPiAtCQkJCSAgICAgYWR2LT5pMmNfbWFpbi0+YWRkciAtIDEpOwo+IC0JaWYgKCFh ZHYtPmkyY19jZWMpCj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gLQo+IC0JYWR2LT5yZWdtYXBfY2Vj ID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoYWR2LT5pMmNfY2VjLAo+IC0JCQkJCSZhZHY3NTMzX2Nl Y19yZWdtYXBfY29uZmlnKTsKCmFkdjc1MzNfY2VjX3JlZ21hcF9jb25maWcgc3RydWN0IGlzbid0 IG5lZWRlZCBpbiB0aGUgZmlsZSBhbnltb3JlLCB0aGF0IHRvbwpjYW4gYmUgZGVsZXRlZC4KCkxv b2tzIGdvb2QgdG8gbWUgb3RoZXJ3aXNlLgoKVGhhbmtzLApBcmNoaXQKCj4gLQlpZiAoSVNfRVJS KGFkdi0+cmVnbWFwX2NlYykpIHsKPiAtCQlyZXQgPSBQVFJfRVJSKGFkdi0+cmVnbWFwX2NlYyk7 Cj4gLQkJZ290byBlcnI7Cj4gLQl9Cj4gLQo+IC0JcmV0ID0gcmVnbWFwX3JlZ2lzdGVyX3BhdGNo KGFkdi0+cmVnbWFwX2NlYywKPiArCXJldHVybiByZWdtYXBfcmVnaXN0ZXJfcGF0Y2goYWR2LT5y ZWdtYXBfY2VjLAo+ICAgCQkJCSAgICBhZHY3NTMzX2NlY19maXhlZF9yZWdpc3RlcnMsCj4gICAJ CQkJICAgIEFSUkFZX1NJWkUoYWR2NzUzM19jZWNfZml4ZWRfcmVnaXN0ZXJzKSk7Cj4gLQlpZiAo cmV0KQo+IC0JCWdvdG8gZXJyOwo+IC0KPiAtCXJldHVybiAwOwo+IC1lcnI6Cj4gLQlhZHY3NTMz X3VuaW5pdF9jZWMoYWR2KTsKPiAtCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAgIGludCBhZHY3 NTMzX2F0dGFjaF9kc2koc3RydWN0IGFkdjc1MTEgKmFkdikKPiAKCi0tIApRdWFsY29tbSBJbm5v dmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiBDb2RlIEF1cm9yYSBGb3J1bSwKYSBM aW51eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdApfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK