From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Yan Subject: Re: [PATCH V5 1/7] imx-drm: imx-hdmi: split imx soc specific code from imx-hdmi Date: Mon, 10 Nov 2014 19:28:05 +0800 Message-ID: <5460A145.5010508@rock-chips.com> References: <1415424410-7364-1-git-send-email-andy.yan@rock-chips.com> <1415424523-7440-1-git-send-email-andy.yan@rock-chips.com> <5460989F.4040905@imgtec.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <5460989F.4040905@imgtec.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" To: Zubair Lutfullah Kakakhel , airlied@linux.ie, heiko@sntech.de, fabio.estevam@freescale.com, rmk+kernel@arm.linux.org.uk Cc: devel@driverdev.osuosl.org, devicetree@vger.kernel.org, Arnd Bergmann , Josh Boyer , Greg Kroah-Hartman , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Inki Dae , linux-rockchip@lists.infradead.org, Rob Herring , Sean Paul , djkurtz@google.com, Philipp Zabel , ykk@rock-chips.com, Grant Likely , Dave Airlie , Shawn Guo , jay.xu@rock-chips.com, Lucas Stach List-Id: devicetree@vger.kernel.org SGkgWnViYWlyOgogICAgIHRoYW5rcyB2ZXJ5IG11Y2ggZm9yIHlvdXIgY29tbWVudHMuCk9uIDIw MTTlubQxMeaciDEw5pelIDE4OjUxLCBadWJhaXIgTHV0ZnVsbGFoIEtha2FraGVsIHdyb3RlOgo+ IEhpIEFuZHksCj4KPiBBIGZldyBjb21tZW50cyBpbmxpbmUuCj4KPiBPbiAwOC8xMS8xNCAwNToy OCwgQW5keSBZYW4gd3JvdGU6Cj4+IGlteDYgYW5kIHJvY2tjaGlwIHJrMzI4OCBhbmQgSlo0Nzgw IChJbmdlbmljIFhidXJzdC9NSVBTKQo+PiB1c2UgdGhlIGludGVyZmFjZSBjb21wYXRpYmxlIERl c2lnbndhcmUgSERNSSBJUCwgYnV0IHRoZXkKPj4gYWxzbyBoYXZlIHNvbWUgbGlnaHRseSBkaWZm ZXJlbmNlLCBzdWNoIGFzIHBoeSBwbGwgY29uZmlndXJhdGlvbiwKPj4gcmVnaXN0ZXIgd2lkdGgs IDRLIHN1cHBvcnQsIGNsayB1c2VhZ2UsIGFuZCB0aGUgY3J0YyBtdXggY29uZmlndXJhdGlvbgo+ PiBpcyBhbHNvIHBsYXRmb3JtIHNwZWNpZmljLgo+Pgo+PiBUbyByZXVzZSB0aGUgaW14IGhkbWkg ZHJpdmVyLCBzcGxpdCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSBvdXQKPj4gdG8gZHdfaGRt aS1pbXguYy4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQW5keSBZYW4gPGFuZHkueWFuQHJvY2stY2hp cHMuY29tPgo+PiAtLS0KPj4gICBkcml2ZXJzL3N0YWdpbmcvaW14LWRybS9NYWtlZmlsZSAgICAg IHwgICAyICstCj4+ICAgZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vZHdfaGRtaS1pbXguYyB8IDIx NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAgZHJpdmVycy9zdGFnaW5nL2lteC1k cm0vaW14LWhkbWkuYyAgICB8IDI1NyArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cj4+ICAgZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vaW14LWhkbWkuaCAgICB8ICA0MyArKysrKysK Pj4gICA0IGZpbGVzIGNoYW5nZWQsIDMyMCBpbnNlcnRpb25zKCspLCAxOTYgZGVsZXRpb25zKC0p Cj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9pbXgtZHJtL2R3X2hkbWkt aW14LmMKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9pbXgtZHJtL01ha2VmaWxl IGIvZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vTWFrZWZpbGUKPj4gaW5kZXggNTgyYzQzOC4uODA5 MDI3ZCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vTWFrZWZpbGUKPj4g KysrIGIvZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vTWFrZWZpbGUKPj4gQEAgLTksNCArOSw0IEBA IG9iai0kKENPTkZJR19EUk1fSU1YX0xEQikgKz0gaW14LWxkYi5vCj4+ICAgCj4+ICAgaW14LWlw dXYzLWNydGMtb2JqcyAgOj0gaXB1djMtY3J0Yy5vIGlwdXYzLXBsYW5lLm8KPj4gICBvYmotJChD T05GSUdfRFJNX0lNWF9JUFVWMykJKz0gaW14LWlwdXYzLWNydGMubwo+PiAtb2JqLSQoQ09ORklH X0RSTV9JTVhfSERNSSkgKz0gaW14LWhkbWkubwo+PiArb2JqLSQoQ09ORklHX0RSTV9JTVhfSERN SSkgKz0gaW14LWhkbWkubyBkd19oZG1pLWlteC5vCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0 YWdpbmcvaW14LWRybS9kd19oZG1pLWlteC5jIGIvZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vZHdf aGRtaS1pbXguYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi41NDIy Njc5Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vZHdf aGRtaS1pbXguYwo+PiBAQCAtMCwwICsxLDIxNCBAQAo+PiArLyoKPj4gKyAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Cj4+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMiBhcwo+PiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24uCj4+ICsgKi8KPiBQbGVhc2UgYWRkIHRoZSBvbGQgZnJlZXNjYWxlIGNvcHlyaWdo dHMgYW5kIGEgY29tbWVudCBvbiBob3cgdGhpcyBmaWxlIGlzIGRlcml2ZWQgZnJvbS4KICAgb2ss IEkgd2lsbCBhZGQgaXQgaW4gVjcKPiBBbmQgYSBub3RlIG9uIHBsYXRmb3JtIHNwZWNpZmljIGZp bGUgZm9yIGlteCBoZG1pIHVzaW5nIGR3YyBoZG1pIGRybSBicmlkZ2UuCiAgICBzb3JyeSwgSSBh bSBub3QgY2xlYXIgd2hpY2ggc3BlY2lmaWMgZmlsZSB5b3UgbWVhbnMuIFdvdWxkIHlvdSAKcGxl YXNlIHRlbGwKICAgIG1lIG1vcmUgYWJvdXQgdGhlIG5vdGU/Cj4+ICsjaW5jbHVkZSA8bGludXgv bW9kdWxlLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4+ICsjaW5j bHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24v aW14NnEtaW9tdXhjLWdwci5oPgo+PiArI2luY2x1ZGUgPHZpZGVvL2lteC1pcHUtdjMuaD4KPj4g KyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPj4g Kwo+PiArI2luY2x1ZGUgImlteC1kcm0uaCIKPj4gKyNpbmNsdWRlICJpbXgtaGRtaS5oIgo+PiAr Cj4+ICtzdHJ1Y3QgaW14X2hkbWlfcHJpdiB7Cj4+ICsJc3RydWN0IGRldmljZSAqZGV2Owo+PiAr CXN0cnVjdCBjbGsgKmlzZnJfY2xrOwo+PiArCXN0cnVjdCBjbGsgKmlhaGJfY2xrOwo+PiArCXN0 cnVjdCByZWdtYXAgKnJlZ21hcDsKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg bXBsbF9jb25maWcgaW14X21wbGxfY2ZnW10gPSB7Cj4+ICsJewo+PiArCQk0NTI1MDAwMCwgewo+ PiArCQkJeyAweDAxZTAsIDB4MDAwMCB9LAo+PiArCQkJeyAweDIxZTEsIDB4MDAwMCB9LAo+PiAr CQkJeyAweDQxZTIsIDB4MDAwMCB9Cj4+ICsJCX0sCj4+ICsJfSwgewo+PiArCQk5MjUwMDAwMCwg ewo+PiArCQkJeyAweDAxNDAsIDB4MDAwNSB9LAo+PiArCQkJeyAweDIxNDEsIDB4MDAwNSB9LAo+ PiArCQkJeyAweDQxNDIsIDB4MDAwNSB9LAo+PiArCX0sCj4+ICsJfSwgewo+PiArCQkxNDg1MDAw MDAsIHsKPj4gKwkJCXsgMHgwMGEwLCAweDAwMGEgfSwKPj4gKwkJCXsgMHgyMGExLCAweDAwMGEg fSwKPj4gKwkJCXsgMHg0MGEyLCAweDAwMGEgfSwKPj4gKwkJfSwKPj4gKwl9LCB7Cj4+ICsJCX4w VUwsIHsKPj4gKwkJCXsgMHgwMGEwLCAweDAwMGEgfSwKPj4gKwkJCXsgMHgyMDAxLCAweDAwMGYg fSwKPj4gKwkJCXsgMHg0MDAyLCAweDAwMGYgfSwKPj4gKwkJfSwKPj4gKwl9Cj4+ICt9Owo+PiAr Cj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGN1cnJfY3RybCBpbXhfY3VyX2N0cltdID0gewo+PiAr CS8qICAgICAgcGl4ZWxjbGsgICAgIGJwcDggICAgYnBwMTAgICBicHAxMiAqLwo+PiArCXsKPj4g KwkJNTQwMDAwMDAsIHsgMHgwOTFjLCAweDA5MWMsIDB4MDZkYyB9LAo+PiArCX0sIHsKPj4gKwkJ NTg0MDAwMDAsIHsgMHgwOTFjLCAweDA2ZGMsIDB4MDZkYyB9LAo+PiArCX0sIHsKPj4gKwkJNzIw MDAwMDAsIHsgMHgwNmRjLCAweDA2ZGMsIDB4MDkxYyB9LAo+PiArCX0sIHsKPj4gKwkJNzQyNTAw MDAsIHsgMHgwNmRjLCAweDBiNWMsIDB4MDkxYyB9LAo+PiArCX0sIHsKPj4gKwkJMTE4ODAwMDAw LCB7IDB4MDkxYywgMHgwOTFjLCAweDA2ZGMgfSwKPj4gKwl9LCB7Cj4+ICsJCTIxNjAwMDAwMCwg eyAweDA2ZGMsIDB4MGI1YywgMHgwOTFjIH0sCj4+ICsJfQo+PiArfTsKPiBUaGVzZSBwbGwgY2xv Y2tzLiBBcmUgdGhleSBjb21wbGV0ZWx5IGRpZmZlcmVudD8KPgo+IEkgYXNzdW1lIHRoZXkgYXJl IGRlcGVuZGVudCBvbiBkaXNwbGF5IHJlc29sdXRpb25zLiBUaGUgb2xkCj4gb25lcyBzaG91bGQg cmVtYWluIHRoZSBzYW1lLiBXaXRoIG5ldyBhZGRpdGlvbnMgZm9yIDRLIGNsb2NrCj4gcmF0ZXMg ZS5nLgo+CiAgICAgZXZlbiB0aGUgMTA4MFAgb24gcm9ja2NoaXAgcGxhdGZvcm0sIHdlIG5lZWQg YSBkaWZmZXJlbnQKICAgICBjb25maWd1cmF0aW9uLCBvdGhlcndpc2Ugd2UgY2FuJ3QgZ2V0IHRo ZSBiZXN0IFNJLgo+PiArCj4+ICtzdGF0aWMgaW50IGlteF9oZG1pX3BhcnNlX2R0KHN0cnVjdCBp bXhfaGRtaV9wcml2ICpoZG1pKQo+PiArewo+PiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBo ZG1pLT5kZXYtPm9mX25vZGU7Cj4+ICsKPj4gKwloZG1pLT5yZWdtYXAgPSBzeXNjb25fcmVnbWFw X2xvb2t1cF9ieV9waGFuZGxlKG5wLCAiZ3ByIik7Cj4+ICsJaWYgKElTX0VSUihoZG1pLT5yZWdt YXApKSB7Cj4+ICsJCWRldl9lcnIoaGRtaS0+ZGV2LCAiVW5hYmxlIHRvIGdldCBncHJcbiIpOwo+ PiArCQlyZXR1cm4gUFRSX0VSUihoZG1pLT5yZWdtYXApOwo+PiArCX0KPj4gKwo+PiArCWhkbWkt PmlzZnJfY2xrID0gZGV2bV9jbGtfZ2V0KGhkbWktPmRldiwgImlzZnIiKTsKPj4gKwlpZiAoSVNf RVJSKGhkbWktPmlzZnJfY2xrKSkgewo+PiArCQlkZXZfZXJyKGhkbWktPmRldiwgIlVuYWJsZSB0 byBnZXQgSERNSSBpc2ZyIGNsa1xuIik7Cj4+ICsJCXJldHVybiBQVFJfRVJSKGhkbWktPmlzZnJf Y2xrKTsKPj4gKwl9Cj4+ICsKPj4gKwloZG1pLT5pYWhiX2NsayA9IGRldm1fY2xrX2dldChoZG1p LT5kZXYsICJpYWhiIik7Cj4+ICsJaWYgKElTX0VSUihoZG1pLT5pYWhiX2NsaykpIHsKPj4gKwkJ ZGV2X2VycihoZG1pLT5kZXYsICJVbmFibGUgdG8gZ2V0IEhETUkgaWFoYiBjbGtcbiIpOwo+PiAr CQlyZXR1cm4gUFRSX0VSUihoZG1pLT5pYWhiX2Nsayk7Cj4+ICsJfQo+PiArCj4gVGhlc2UgdHdv IGNsb2Nrcy4gVGhpcyBpcyBob3cgdGhleSBhcmUgc3RydWN0dXJlZCBvbiB0aGUgano0NzgwIGFz IHdlbGwuCj4KPiA+RnJvbSBhbiBlYXJsaWVyIHBhdGNoIHNlcmllcwo+Cj4gInllcywgdGhpcyBJ UCBjb3JlIG5lZWQgdG8gYmUgY2xvY2tlZC4gQnV0IGRpZmZlcmVudCBTb2MgaGFzIGRpZmZlcmVu dAo+IHVzYWdlIG9mIHRoZSBjbGssIG9uIGZyZWVzY2FsZSBpbXggcGxhdGZvcm0gb25lIGNsayBp cyB1c2VkIGZvciBpc2ZyLCBvbmUgaXMgdXNlZCBmb3IgaWFoYiwKPiBidXQgb24gcm9ja2NoaXAg cmszMjg4LCBvbmUgY2xrIGlzIHVzZWQgZm9yIGNvbnRyb2wgbG9naWMgLCB0aGUgYW5vdGhlciBp cyB1c2VkIGZvciBoZGNwLgo+IEkgYW0gbm90IHN1cmUgaG93IGFyZSB0aGUgY2xvY2tzIG9uIGp6 NDc4MCIKPgo+IFRoZXkgbWlnaHQgYmUgbGFiZWxsZWQgYXMgc3VjaCBpbiB0aGUgcmszMjg4IGRv Y3VtZW50Lgo+IEJ1dCB3aGF0IGFyZSB0aGV5IHVzZWQgZm9yIGFuZCBob3cgYXJlIHRoZXkgZGlm ZmVyZW50Pwo+Cj4gVGhlIGNsb2NrcyBhcmUgc2ltcGx5IGVuYWJsZWQgaW4gZHdjLWhkbWkgYXMg dGhlc2UgYXJlIHRoZSBvbmVzIHRoYXQgY2xvY2sgdGhlIERXQyBJUCBjb3JlLgo+Cj4gSSBkb3Vi dCB0aGUgY29yZSBpcyBhbHdheXMgY2xvY2tlZCBpbiB0aGUgcmszMjg4Lgo+Cj4gSSB0aGluayB0 aGlzIGJlbG9uZ3MgaW4gdGhlIGR3Y19oZG1pIGRyaXZlciBiYWNrZW5kLgogICAgb24gcmszMjg4 LCBvbiBjbGsgY2FsbGVkIHBjbGsgaXMgdXNlZCBmb3IgY29udHJvbCBsb2dpYywgdGhlIG90aGVy IApjbGsgY2FsbGVkIGhkY3BfY2xrCiAgICBpcyB1c2VkIGZvciBoZGNwIGFwcGxpY2F0aW9uLCB0 aGlzZSBjbGsgY2FuIGRpc2FibGVkIHdoZW4gaGRjcCBpcyAKbm90IHVzZWQuCj4KPj4gKwlyZXR1 cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgKmlteF9oZG1pX2lteF9zZXR1cChzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PiArewo+PiArCXN0cnVjdCBpbXhfaGRtaV9wcml2 ICpoZG1pOwo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwloZG1pID0gZGV2bV9remFsbG9jKCZwZGV2 LT5kZXYsIHNpemVvZigqaGRtaSksIEdGUF9LRVJORUwpOwo+PiArCWlmICghaGRtaSkKPj4gKwkJ cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4+ICsJaGRtaS0+ZGV2ID0gJnBkZXYtPmRldjsKPj4g Kwo+PiArCXJldCA9IGlteF9oZG1pX3BhcnNlX2R0KGhkbWkpOwo+PiArCWlmIChyZXQgPCAwKQo+ PiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+PiArCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZSho ZG1pLT5pc2ZyX2Nsayk7Cj4+ICsJaWYgKHJldCkgewo+PiArCQlkZXZfZXJyKGhkbWktPmRldiwK Pj4gKwkJCSJDYW5ub3QgZW5hYmxlIEhETUkgaXNmciBjbG9jazogJWRcbiIsIHJldCk7Cj4+ICsJ CXJldHVybiBFUlJfUFRSKHJldCk7Cj4+ICsJfQo+PiArCj4+ICsJcmV0ID0gY2xrX3ByZXBhcmVf ZW5hYmxlKGhkbWktPmlhaGJfY2xrKTsKPj4gKwlpZiAocmV0KSB7Cj4+ICsJCWRldl9lcnIoaGRt aS0+ZGV2LAo+PiArCQkJIkNhbm5vdCBlbmFibGUgSERNSSBpYWhiIGNsb2NrOiAlZFxuIiwgcmV0 KTsKPj4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPj4gKwl9Cj4+ICsKPj4gKwlyZXR1cm4gaGRt aTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgaW14X2hkbWlfaW14X2V4aXQodm9pZCAqcHJp dikKPj4gK3sKPj4gKwlzdHJ1Y3QgaW14X2hkbWlfcHJpdiAqaGRtaSA9IChzdHJ1Y3QgaW14X2hk bWlfcHJpdiAqKXByaXY7Cj4+ICsKPj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUoaGRtaS0+aXNm cl9jbGspOwo+PiArCj4+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGhkbWktPmlhaGJfY2xrKTsK Pj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgaW14X2hkbWlfaW14X2VuY29kZXJfY29tbWl0KHZv aWQgKnByaXYsIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPj4gK3sKPj4gKwlzdHJ1Y3Qg aW14X2hkbWlfcHJpdiAqaGRtaSA9IChzdHJ1Y3QgaW14X2hkbWlfcHJpdiAqKXByaXY7Cj4+ICsJ aW50IG11eCA9IGlteF9kcm1fZW5jb2Rlcl9nZXRfbXV4X2lkKGhkbWktPmRldi0+b2Zfbm9kZSwg ZW5jb2Rlcik7Cj4+ICsKPj4gKwlyZWdtYXBfdXBkYXRlX2JpdHMoaGRtaS0+cmVnbWFwLCBJT01V WENfR1BSMywKPj4gKwkJCSAgIElNWDZRX0dQUjNfSERNSV9NVVhfQ1RMX01BU0ssCj4+ICsJCQkg ICBtdXggPDwgSU1YNlFfR1BSM19IRE1JX01VWF9DVExfU0hJRlQpOwo+PiArfQo+PiArCj4+ICtz dGF0aWMgdm9pZCBpbXhfaGRtaV9pbXhfZW5jb2Rlcl9wcmVwYXJlKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCj4+ICsJCQkJCSBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4+ ICt7Cj4+ICsJaW14X2RybV9wYW5lbF9mb3JtYXQoZW5jb2RlciwgVjRMMl9QSVhfRk1UX1JHQjI0 KTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHN0cnVjdCBpbXhfaGRtaV9wbGF0X2RhdGEgaW14NnFf aGRtaV9kcnZfZGF0YSA9IHsKPj4gKwkuc2V0dXAJCQk9IGlteF9oZG1pX2lteF9zZXR1cCwKPj4g KwkuZXhpdAkJCT0gaW14X2hkbWlfaW14X2V4aXQsCj4+ICsJLmVuY29kZXJfY29tbWl0CQk9IGlt eF9oZG1pX2lteF9lbmNvZGVyX2NvbW1pdCwKPj4gKwkuZW5jb2Rlcl9wcmVwYXJlCT0gaW14X2hk bWlfaW14X2VuY29kZXJfcHJlcGFyZSwKPj4gKwkubXBsbF9jZmcJCT0gaW14X21wbGxfY2ZnLAo+ PiArCS5jdXJfY3RyCQk9IGlteF9jdXJfY3RyLAo+PiArCS5kZXZfdHlwZQkJPSBJTVg2UV9IRE1J LAo+PiArfTsKPj4gKwo+PiArc3RhdGljIHN0cnVjdCBpbXhfaGRtaV9wbGF0X2RhdGEgaW14NmRs X2hkbWlfZHJ2X2RhdGEgPSB7Cj4+ICsJLnNldHVwCQkJPSBpbXhfaGRtaV9pbXhfc2V0dXAsCj4+ ICsJLmV4aXQJCQk9IGlteF9oZG1pX2lteF9leGl0LAo+PiArCS5lbmNvZGVyX2NvbW1pdAkJPSBp bXhfaGRtaV9pbXhfZW5jb2Rlcl9jb21taXQsCj4+ICsJLmVuY29kZXJfcHJlcGFyZQk9IGlteF9o ZG1pX2lteF9lbmNvZGVyX3ByZXBhcmUsCj4+ICsJLm1wbGxfY2ZnCQk9IGlteF9tcGxsX2NmZywK Pj4gKwkuY3VyX2N0cgkJPSBpbXhfY3VyX2N0ciwKPj4gKwkuZGV2X3R5cGUJCT0gSU1YNkRMX0hE TUksCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBpbXhf aGRtaV9pbXhfaWRzW10gPSB7Cj4+ICsJeyAuY29tcGF0aWJsZSA9ICJmc2wsaW14NnEtaGRtaSIs Cj4+ICsJICAuZGF0YSA9ICZpbXg2cV9oZG1pX2Rydl9kYXRhCj4+ICsJfSwgewo+PiArCSAgLmNv bXBhdGlibGUgPSAiZnNsLGlteDZkbC1oZG1pIiwKPj4gKwkgIC5kYXRhID0gJmlteDZkbF9oZG1p X2Rydl9kYXRhCj4+ICsJfSwKPj4gKwl7fSwKPj4gK307Cj4+ICtNT0RVTEVfREVWSUNFX1RBQkxF KG9mLCBpbXhfaGRtaV9pbXhfZHRfaWRzKTsKPj4gKwo+PiArc3RhdGljIGludCBpbXhfaGRtaV9p bXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4gK3sKPj4gKwljb25zdCBz dHJ1Y3QgaW14X2hkbWlfcGxhdF9kYXRhICpwbGF0X2RhdGE7Cj4+ICsJY29uc3Qgc3RydWN0IG9m X2RldmljZV9pZCAqbWF0Y2g7Cj4+ICsKPj4gKwlpZiAoIXBkZXYtPmRldi5vZl9ub2RlKQo+PiAr CQlyZXR1cm4gLUVOT0RFVjsKPj4gKwo+PiArCW1hdGNoID0gb2ZfbWF0Y2hfbm9kZShpbXhfaGRt aV9pbXhfaWRzLCBwZGV2LT5kZXYub2Zfbm9kZSk7Cj4+ICsJcGxhdF9kYXRhID0gbWF0Y2gtPmRh dGE7Cj4+ICsKPj4gKwlyZXR1cm4gaW14X2hkbWlfcGxhdGZvcm1fcmVnaXN0ZXIocGRldiwgcGxh dF9kYXRhKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBpbXhfaGRtaV9pbXhfcmVtb3ZlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ICsJcmV0dXJuIGlteF9oZG1pX3Bs YXRmb3JtX3VucmVnaXN0ZXIocGRldik7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBzdHJ1Y3QgcGxh dGZvcm1fZHJpdmVyIGlteF9oZG1pX2lteF9wbGF0Zm9ybV9kcml2ZXIgPSB7Cj4+ICsJLnByb2Jl ICA9IGlteF9oZG1pX2lteF9wcm9iZSwKPj4gKwkucmVtb3ZlID0gaW14X2hkbWlfaW14X3JlbW92 ZSwKPj4gKwkuZHJpdmVyID0gewo+PiArCQkubmFtZSA9ICJkd2hkbWktaW14IiwKPj4gKwkJLm93 bmVyID0gVEhJU19NT0RVTEUsCj4+ICsJCS5vZl9tYXRjaF90YWJsZSA9IGlteF9oZG1pX2lteF9p ZHMsCj4+ICsJfSwKPj4gK307Cj4+ICsKPj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoaW14X2hk bWlfaW14X3BsYXRmb3JtX2RyaXZlcik7Cj4+ICsKPj4gK01PRFVMRV9BVVRIT1IoIkFuZHkgWWFu IDxhbmR5LnlhbkByb2NrLWNoaXBzLmNvbT4iKTsKPj4gK01PRFVMRV9ERVNDUklQVElPTigiSU1Y NiBTcGVjaWZpYyBEVy1IRE1JIERyaXZlciBFeHRlbnNpb24iKTsKPj4gK01PRFVMRV9MSUNFTlNF KCJHUEwiKTsKPj4gK01PRFVMRV9BTElBUygicGxhdGZvcm06ZHdoZG1pLWlteCIpOwo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vaW14LWhkbWkuYyBiL2RyaXZlcnMvc3Rh Z2luZy9pbXgtZHJtL2lteC1oZG1pLmMKPj4gaW5kZXggYWFlYzZiMi4uY2Q5Y2Y4NiAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vaW14LWhkbWkuYwo+PiArKysgYi9kcml2 ZXJzL3N0YWdpbmcvaW14LWRybS9pbXgtaGRtaS5jCj4+IEBAIC0xNiwyMyArMTYsMTcgQEAKPj4g ICAjaW5jbHVkZSA8bGludXgvaXJxLmg+Cj4+ICAgI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4+ ICAgI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+PiAtI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+PiAg ICNpbmNsdWRlIDxsaW51eC9oZG1pLmg+Cj4+IC0jaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4+ IC0jaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgo+PiAtI2luY2x1ZGUgPGxpbnV4L21mZC9z eXNjb24vaW14NnEtaW9tdXhjLWdwci5oPgo+PiAgICNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2Uu aD4KPj4gLQo+IFBsZWFzZSBsZWF2ZSB0aGlzIGxpbmUuIEtlZXBzIHRoZSBkcm0gaGVhZGVycyBz ZXBhcmF0ZQogICAgb2sKPgo+PiArI2luY2x1ZGUgPGRybS9kcm1fb2YuaD4KPj4gICAjaW5jbHVk ZSA8ZHJtL2RybVAuaD4KPj4gICAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+PiAg ICNpbmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPj4gICAjaW5jbHVkZSA8ZHJtL2RybV9lbmNvZGVy X3NsYXZlLmg+Cj4+IC0jaW5jbHVkZSA8dmlkZW8vaW14LWlwdS12My5oPgo+PiAgIAo+PiAgICNp bmNsdWRlICJpbXgtaGRtaS5oIgo+PiAtI2luY2x1ZGUgImlteC1kcm0uaCIKPj4gICAKPj4gLSNk ZWZpbmUgSERNSV9FRElEX0xFTgkJNTEyCj4+ICsjZGVmaW5lIEhETUlfRURJRF9MRU4gICAgICAg ICAgNTEyCj4gV2h5IGlzIHRoaXMgY2hhbmdlIGhlcmU/IElzIGl0IGFkZGluZyBzcGFjZXMgaW5z dGVhZCBvZiB0YWJzPwo+Cj4+ICAgCj4+ICAgI2RlZmluZSBSR0IJCQkwCj4+ICAgI2RlZmluZSBZ Q0JDUjQ0NAkJMQo+PiBAQCAtNTQsMTEgKzQ4LDYgQEAgZW51bSBoZG1pX2RhdGFtYXAgewo+PiAg IAlZQ2JDcjQyMl8xMkIgPSAweDEyLAo+PiAgIH07Cj4+ICAgCj4+IC1lbnVtIGlteF9oZG1pX2Rl dnR5cGUgewo+PiAtCUlNWDZRX0hETUksCj4+IC0JSU1YNkRMX0hETUksCj4+IC19Owo+PiAtCj4+ ICAgc3RhdGljIGNvbnN0IHUxNiBjc2NfY29lZmZfZGVmYXVsdFszXVs0XSA9IHsKPj4gICAJeyAw eDIwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAgfSwKPj4gICAJeyAweDAwMDAsIDB4MjAwMCwg MHgwMDAwLCAweDAwMDAgfSwKPj4gQEAgLTEyMSw2ICsxMTAsOCBAQCBzdHJ1Y3QgaW14X2hkbWkg ewo+PiAgIAlzdHJ1Y3QgY2xrICppYWhiX2NsazsKPiBJIGRpc2FncmVlIHdpdGggbW92aW5nIGNs b2NrcyBvdXQgb2YgdGhlIGR3Yy1oZG1pIGRyaXZlci4KPiBCdXQgSWYgdGhlc2UgY2xvY2tzIGFy ZSBtb3ZlZCBvdXQgaW50byBTb0MgZmlsZXMsIGFueSByZWFzb24gdGhlc2UgdmFyaWFibGVzCj4g cmVtYWluIGluIHRoZSBzdHJ1Y3R1cmU/CgogIHRoZSBwbGwgY29uZmlnIGlzIHBsYXRmb3JtIHNw ZWNpZmljIGFzIEkgZXhwbGFpbmVkIGJlZm9yZSwgc28gd2UgbmVlZCAKbW92ZSBpdCBpbnRvCiAg IHNvYyBmaWxlcy4gVGhlc2UgdmFyaWFibGUgd2lsbCBiZSByZW1vdmVkIGluIG5leHQgdmVyc2lv bi4KPgo+PiAgIAo+PiAgIAlzdHJ1Y3QgaGRtaV9kYXRhX2luZm8gaGRtaV9kYXRhOwo+PiArCWNv bnN0IHN0cnVjdCBpbXhfaGRtaV9wbGF0X2RhdGEgKnBsYXRfZGF0YTsKPj4gKwl2b2lkICpwcml2 Owo+IEFkZGluZyBhIHBsYXRmb3JtIHNwZWNpZmljIHN0cnVjdHVyZSB0byB0aGUgZ2VuZXJpYyBk cml2ZXIgZmVlbHMgc3RyYW5nZS4KPgo+IEZvciB0aGlzIHRvIHdvcmssIGVhY2ggU29DIHdpbGwg bmVlZCB0byB1c2UgdGhlIHNhbWUgc3RydWN0dXJlLgo+Cj4gVGhhdCBpbmRpcmVjdGx5IG1lYW5z LCB0aGVyZSBpcyBzdGlsbCBnZW5lcmljIHN0dWZmIHRoYXQgY2FuIGJlIGluY29ycG9yYXRlZCBp bnRvIHRoZQo+IGdlbmVyaWMgZHdjLWhkbWkgZHJpdmVyLgoKICB0aGVzZSBzdHJ1Y3R1cmUgaXMg Zm9yIHNvbWUgY29udHJvbCBmdW5jdGlvbnMoc3VjaCBhcyBjcnRjIG11eCwgcGFuZWwgCmZvcm1h dCBzZXQsIGRpc3BhbHkgbW9kZSB2YWxpZCkgLGFuZCBpdCB3aWxsIGJlIHJlbW92ZWQgd2hlbiB3 ZSBjb252ZXJ0IAp0byBkcm1fYnJpZGdlIGRyaXZlciBpbiBwYXRjaCM2Cj4KPj4gICAJaW50IHZp YzsKPj4gICAKPj4gICAJdTggZWRpZFtIRE1JX0VESURfTEVOXTsKPj4gQEAgLTEzNywxMyArMTI4 LDYgQEAgc3RydWN0IGlteF9oZG1pIHsKPj4gICAJaW50IHJhdGlvOwo+PiAgIH07Cj4+ICAgCj4+ IC1zdGF0aWMgdm9pZCBpbXhfaGRtaV9zZXRfaXB1X2RpX211eChzdHJ1Y3QgaW14X2hkbWkgKmhk bWksIGludCBpcHVfZGkpCj4+IC17Cj4+IC0JcmVnbWFwX3VwZGF0ZV9iaXRzKGhkbWktPnJlZ21h cCwgSU9NVVhDX0dQUjMsCj4+IC0JCQkgICBJTVg2UV9HUFIzX0hETUlfTVVYX0NUTF9NQVNLLAo+ PiAtCQkJICAgaXB1X2RpIDw8IElNWDZRX0dQUjNfSERNSV9NVVhfQ1RMX1NISUZUKTsKPj4gLX0K Pj4gLQo+PiAgIHN0YXRpYyBpbmxpbmUgdm9pZCBoZG1pX3dyaXRlYihzdHJ1Y3QgaW14X2hkbWkg KmhkbWksIHU4IHZhbCwgaW50IG9mZnNldCkKPj4gICB7Cj4+ICAgCXdyaXRlYih2YWwsIGhkbWkt PnJlZ3MgKyBvZmZzZXQpOwo+PiBAQCAtNzI4LDc2ICs3MTIsMTMgQEAgc3RhdGljIHZvaWQgaW14 X2hkbWlfcGh5X3NlbF9pbnRlcmZhY2VfY29udHJvbChzdHJ1Y3QgaW14X2hkbWkgKmhkbWksIHU4 IGVuYWJsZSkKPj4gICAJCQkgSERNSV9QSFlfQ09ORjBfU0VMRElQSUZfTUFTSyk7Cj4+ICAgfQo+ PiAgIAo+PiAtZW51bSB7Cj4+IC0JUkVTXzgsCj4+IC0JUkVTXzEwLAo+PiAtCVJFU18xMiwKPj4g LQlSRVNfTUFYLAo+PiAtfTsKPj4gLQo+PiAtc3RydWN0IG1wbGxfY29uZmlnIHsKPj4gLQl1bnNp Z25lZCBsb25nIG1waXhlbGNsb2NrOwo+PiAtCXN0cnVjdCB7Cj4+IC0JCXUxNiBjcGNlOwo+PiAt CQl1MTYgZ21wOwo+PiAtCX0gcmVzW1JFU19NQVhdOwo+PiAtfTsKPj4gLQo+PiAtc3RhdGljIGNv bnN0IHN0cnVjdCBtcGxsX2NvbmZpZyBtcGxsX2NvbmZpZ1tdID0gewo+PiAtCXsKPj4gLQkJNDUy NTAwMDAsIHsKPj4gLQkJCXsgMHgwMWUwLCAweDAwMDAgfSwKPj4gLQkJCXsgMHgyMWUxLCAweDAw MDAgfSwKPj4gLQkJCXsgMHg0MWUyLCAweDAwMDAgfQo+PiAtCQl9LAo+PiAtCX0sIHsKPj4gLQkJ OTI1MDAwMDAsIHsKPj4gLQkJCXsgMHgwMTQwLCAweDAwMDUgfSwKPj4gLQkJCXsgMHgyMTQxLCAw eDAwMDUgfSwKPj4gLQkJCXsgMHg0MTQyLCAweDAwMDUgfSwKPj4gLQkJfSwKPj4gLQl9LCB7Cj4+ IC0JCTE0ODUwMDAwMCwgewo+PiAtCQkJeyAweDAwYTAsIDB4MDAwYSB9LAo+PiAtCQkJeyAweDIw YTEsIDB4MDAwYSB9LAo+PiAtCQkJeyAweDQwYTIsIDB4MDAwYSB9LAo+PiAtCQl9LAo+PiAtCX0s IHsKPj4gLQkJfjBVTCwgewo+PiAtCQkJeyAweDAwYTAsIDB4MDAwYSB9LAo+PiAtCQkJeyAweDIw MDEsIDB4MDAwZiB9LAo+PiAtCQkJeyAweDQwMDIsIDB4MDAwZiB9LAo+PiAtCQl9LAo+PiAtCX0K Pj4gLX07Cj4+IC0KPj4gLXN0cnVjdCBjdXJyX2N0cmwgewo+PiAtCXVuc2lnbmVkIGxvbmcgbXBp eGVsY2xvY2s7Cj4+IC0JdTE2IGN1cnJbUkVTX01BWF07Cj4+IC19Owo+PiAtCj4+IC1zdGF0aWMg Y29uc3Qgc3RydWN0IGN1cnJfY3RybCBjdXJyX2N0cmxbXSA9IHsKPj4gLQkvKglwaXhlbGNsayAg ICAgYnBwOCAgICBicHAxMCAgIGJwcDEyICovCj4+IC0Jewo+PiAtCQkgNTQwMDAwMDAsIHsgMHgw OTFjLCAweDA5MWMsIDB4MDZkYyB9LAo+PiAtCX0sIHsKPj4gLQkJIDU4NDAwMDAwLCB7IDB4MDkx YywgMHgwNmRjLCAweDA2ZGMgfSwKPj4gLQl9LCB7Cj4+IC0JCSA3MjAwMDAwMCwgeyAweDA2ZGMs IDB4MDZkYywgMHgwOTFjIH0sCj4+IC0JfSwgewo+PiAtCQkgNzQyNTAwMDAsIHsgMHgwNmRjLCAw eDBiNWMsIDB4MDkxYyB9LAo+PiAtCX0sIHsKPj4gLQkJMTE4ODAwMDAwLCB7IDB4MDkxYywgMHgw OTFjLCAweDA2ZGMgfSwKPj4gLQl9LCB7Cj4+IC0JCTIxNjAwMDAwMCwgeyAweDA2ZGMsIDB4MGI1 YywgMHgwOTFjIH0sCj4+IC0JfQo+PiAtfTsKPj4gLQo+IEFzIG5vdGVkIHByZXZpb3VzbHksIGN1 cnJlbnQgY29udHJvbCBpcyBmcm9tIHRoZSBwaHkgYnkgRFdDLgo+IEhhdmUgdGhleSBjaGFuZ2Vk IGl0IHNvIG11Y2ggdGhhdCBlYWNoIFNvQyB3aWxsIG5lZWQgdG8gZGVmaW5lIGl0cyBvd24/Cj4K PiBJIGhhdmUgdXNlZCB0aGVzZSBmb3IgdGhlIGp6NDc4MC4gQWx0aG91Z2gsIEkgZGlkbid0IGhh dmUgdGhlIGZ1bGwgc3BlYyBvZgo+IHRoZSBleGFjdCBoZG1pIElQIGluIHRoZSBTb0MgdG8gYmUg YWJsZSB0byBjaGVjay4gQnV0IEkgZG91YnQgc3VjaCB2YWx1ZXMKPiB3aWxsIGNoYW5nZSBzaWdu aWZpY2FudGx5IGluIHRoZSBJUCBjb3JlLiBGdXJ0aGVyIGN1cnJlbnRzLGNsb2NrIHNwZWVkcwo+ IG1pZ2h0IGJlIGFkZGVkIHRvIHN1cHBvcnQgZ3JlYXRlciByZXNvbHV0aW9ucy4KPgo+IEJ1dCBl dmVyeXRoaW5nIHNob3VsZCBiZSBiYWNrd2FyZCBjb21wYXRpYmxlICgqaW4gYW4gaWRlYWwgd29y bGQuLiopCj4KPiBQZXJoYXBzIGl0IHdvdWxkIGhlbHAgaWYgeW91IGNvdWxkIHNoYXJlIGFuIFJG QyBwYXRjaCBvZiB3aGF0IHRoZSBwbGF0Zm9ybQo+IGZpbGUgbG9va3MgbGlrZSBmb3IgcmszMjg4 PwogICBvaywgaSB3aWxsIGFkZCByazMyODggcGxhdGZvcm0gY29kZSBsYXRlcgo+IEhvdyBkbyB5 b3UgdGVzdCBhbGwgdGhlc2UgcGF0Y2hlcz8gT24gYW4gaW14IGJvYXJkPyBPciBvbiBhbiByazMy ODggYm9hcmQ/CiAgIEkgdGVzdCB0aGUgcGF0Y2ggb24gcmszMjg4IGJvYXJkLCBpIGRvbid0IGhh dmUgYW4gaW14IGJvYXJkLgo+Cj4+ICAgc3RhdGljIGludCBoZG1pX3BoeV9jb25maWd1cmUoc3Ry dWN0IGlteF9oZG1pICpoZG1pLCB1bnNpZ25lZCBjaGFyIHByZXAsCj4+ICAgCQkJICAgICAgdW5z aWduZWQgY2hhciByZXMsIGludCBjc2NvbikKPj4gICB7Cj4+ICAgCXVuc2lnbmVkIHJlc19pZHgs IGk7Cj4+ICAgCXU4IHZhbCwgbXNlYzsKPj4gKwljb25zdCBzdHJ1Y3QgbXBsbF9jb25maWcgKm1w bGxfY2ZnID0gaGRtaS0+cGxhdF9kYXRhLT5tcGxsX2NmZzsKPj4gKwljb25zdCBzdHJ1Y3QgY3Vy cl9jdHJsICAgKmN1cnJfY3RyID0gaGRtaS0+cGxhdF9kYXRhLT5jdXJfY3RyOwo+PiAgIAo+PiAg IAlpZiAocHJlcCkKPj4gICAJCXJldHVybiAtRUlOVkFMOwo+PiBAQCAtODQzLDIwICs3NjQsMTkg QEAgc3RhdGljIGludCBoZG1pX3BoeV9jb25maWd1cmUoc3RydWN0IGlteF9oZG1pICpoZG1pLCB1 bnNpZ25lZCBjaGFyIHByZXAsCj4+ICAgCWhkbWlfcGh5X3Rlc3RfY2xlYXIoaGRtaSwgMCk7Cj4+ ICAgCj4+ICAgCS8qIFBMTC9NUExMIENmZyAtIGFsd2F5cyBtYXRjaCBvbiBmaW5hbCBlbnRyeSAq Lwo+PiAtCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKG1wbGxfY29uZmlnKSAtIDE7IGkrKykK Pj4gKwlmb3IgKGkgPSAwOyBtcGxsX2NmZ1tpXS5tcGl4ZWxjbG9jayAhPSAofjBVTCk7IGkrKykK Pj4gICAJCWlmIChoZG1pLT5oZG1pX2RhdGEudmlkZW9fbW9kZS5tcGl4ZWxjbG9jayA8PQo+PiAt CQkgICAgbXBsbF9jb25maWdbaV0ubXBpeGVsY2xvY2spCj4+ICsJCSAgICBtcGxsX2NmZ1tpXS5t cGl4ZWxjbG9jaykKPj4gICAJCQlicmVhazsKPj4gKwloZG1pX3BoeV9pMmNfd3JpdGUoaGRtaSwg bXBsbF9jZmdbaV0ucmVzW3Jlc19pZHhdLmNwY2UsIDB4MDYpOwo+PiArCWhkbWlfcGh5X2kyY193 cml0ZShoZG1pLCBtcGxsX2NmZ1tpXS5yZXNbcmVzX2lkeF0uZ21wLCAweDE1KTsKPj4gICAKPj4g LQloZG1pX3BoeV9pMmNfd3JpdGUoaGRtaSwgbXBsbF9jb25maWdbaV0ucmVzW3Jlc19pZHhdLmNw Y2UsIDB4MDYpOwo+PiAtCWhkbWlfcGh5X2kyY193cml0ZShoZG1pLCBtcGxsX2NvbmZpZ1tpXS5y ZXNbcmVzX2lkeF0uZ21wLCAweDE1KTsKPj4gLQo+PiAtCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9T SVpFKGN1cnJfY3RybCk7IGkrKykKPj4gKwlmb3IgKGkgPSAwOyBjdXJyX2N0cltpXS5tcGl4ZWxj bG9jayAhPSAofjBVTCk7IGkrKykKPj4gICAJCWlmIChoZG1pLT5oZG1pX2RhdGEudmlkZW9fbW9k ZS5tcGl4ZWxjbG9jayA8PQo+PiAtCQkgICAgY3Vycl9jdHJsW2ldLm1waXhlbGNsb2NrKQo+PiAr CQkgICAgY3Vycl9jdHJbaV0ubXBpeGVsY2xvY2spCj4+ICAgCQkJYnJlYWs7Cj4+ICAgCj4+IC0J aWYgKGkgPj0gQVJSQVlfU0laRShjdXJyX2N0cmwpKSB7Cj4+ICsJaWYgKGN1cnJfY3RyW2ldLm1w aXhlbGNsb2NrID09ICh+MFVMKSkgewo+PiAgIAkJZGV2X2VycihoZG1pLT5kZXYsCj4+ICAgCQkJ CSJQaXhlbCBjbG9jayAlZCAtIHVuc3VwcG9ydGVkIGJ5IEhETUlcbiIsCj4+ICAgCQkJCWhkbWkt PmhkbWlfZGF0YS52aWRlb19tb2RlLm1waXhlbGNsb2NrKTsKPj4gQEAgLTg2NCw3ICs3ODQsNyBA QCBzdGF0aWMgaW50IGhkbWlfcGh5X2NvbmZpZ3VyZShzdHJ1Y3QgaW14X2hkbWkgKmhkbWksIHVu c2lnbmVkIGNoYXIgcHJlcCwKPj4gICAJfQo+PiAgIAo+PiAgIAkvKiBDVVJSQ1RSTCAqLwo+PiAt CWhkbWlfcGh5X2kyY193cml0ZShoZG1pLCBjdXJyX2N0cmxbaV0uY3VycltyZXNfaWR4XSwgMHgx MCk7Cj4+ICsJaGRtaV9waHlfaTJjX3dyaXRlKGhkbWksIGN1cnJfY3RyW2ldLmN1cnJbcmVzX2lk eF0sIDB4MTApOwo+PiAgIAo+PiAgIAloZG1pX3BoeV9pMmNfd3JpdGUoaGRtaSwgMHgwMDAwLCAw eDEzKTsgIC8qIFBMTFBIQllDVFJMICovCj4+ICAgCWhkbWlfcGh5X2kyY193cml0ZShoZG1pLCAw eDAwMDYsIDB4MTcpOwo+PiBAQCAtMTQ1NCwyMSArMTM3NCwyOSBAQCBzdGF0aWMgdm9pZCBpbXhf aGRtaV9lbmNvZGVyX3ByZXBhcmUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQo+PiAgIAlz dHJ1Y3QgaW14X2hkbWkgKmhkbWkgPSBjb250YWluZXJfb2YoZW5jb2Rlciwgc3RydWN0IGlteF9o ZG1pLCBlbmNvZGVyKTsKPj4gICAKPj4gICAJaW14X2hkbWlfcG93ZXJvZmYoaGRtaSk7Cj4+IC0J aW14X2RybV9wYW5lbF9mb3JtYXQoZW5jb2RlciwgVjRMMl9QSVhfRk1UX1JHQjI0KTsKPj4gKwo+ PiArCWlmIChoZG1pLT5wbGF0X2RhdGEtPmVuY29kZXJfcHJlcGFyZSkKPj4gKwkJaGRtaS0+cGxh dF9kYXRhLT5lbmNvZGVyX3ByZXBhcmUoJmhkbWktPmNvbm5lY3RvciwgZW5jb2Rlcik7Cj4+ICAg fQo+PiAgIAo+PiAgIHN0YXRpYyB2b2lkIGlteF9oZG1pX2VuY29kZXJfY29tbWl0KHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlcikKPj4gICB7Cj4+ICAgCXN0cnVjdCBpbXhfaGRtaSAqaGRtaSA9 IGNvbnRhaW5lcl9vZihlbmNvZGVyLCBzdHJ1Y3QgaW14X2hkbWksIGVuY29kZXIpOwo+PiAtCWlu dCBtdXggPSBpbXhfZHJtX2VuY29kZXJfZ2V0X211eF9pZChoZG1pLT5kZXYtPm9mX25vZGUsIGVu Y29kZXIpOwo+PiAgIAo+PiAtCWlteF9oZG1pX3NldF9pcHVfZGlfbXV4KGhkbWksIG11eCk7Cj4+ ICsJaWYgKGhkbWktPnBsYXRfZGF0YS0+ZW5jb2Rlcl9jb21taXQpCj4+ICsJCWhkbWktPnBsYXRf ZGF0YS0+ZW5jb2Rlcl9jb21taXQoaGRtaS0+cHJpdiwgZW5jb2Rlcik7Cj4+ICAgCj4+ICAgCWlt eF9oZG1pX3Bvd2Vyb24oaGRtaSk7Cj4+ICAgfQo+PiAgIAo+PiArdm9pZCBpbXhfaGRtaV9jb25u ZWN0b3JfZGVzdHJveShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiArewo+PiAr CWRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0b3IpOwo+PiArCWRybV9jb25uZWN0b3Jf Y2xlYW51cChjb25uZWN0b3IpOwo+PiArfQo+PiArCj4+ICAgc3RhdGljIHN0cnVjdCBkcm1fZW5j b2Rlcl9mdW5jcyBpbXhfaGRtaV9lbmNvZGVyX2Z1bmNzID0gewo+PiAtCS5kZXN0cm95ID0gaW14 X2RybV9lbmNvZGVyX2Rlc3Ryb3ksCj4+ICsJLmRlc3Ryb3kgPSBkcm1fZW5jb2Rlcl9jbGVhbnVw LAo+PiAgIH07Cj4+ICAgCj4+ICAgc3RhdGljIHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVu Y3MgaW14X2hkbWlfZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7Cj4+IEBAIC0xNDg0LDcgKzE0MTIs NyBAQCBzdGF0aWMgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgaW14X2hkbWlfY29ubmVjdG9y X2Z1bmNzID0gewo+PiAgIAkuZHBtcyA9IGRybV9oZWxwZXJfY29ubmVjdG9yX2RwbXMsCj4+ICAg CS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAo+ PiAgIAkuZGV0ZWN0ID0gaW14X2hkbWlfY29ubmVjdG9yX2RldGVjdCwKPj4gLQkuZGVzdHJveSA9 IGlteF9kcm1fY29ubmVjdG9yX2Rlc3Ryb3ksCj4+ICsJLmRlc3Ryb3kgPSBpbXhfaGRtaV9jb25u ZWN0b3JfZGVzdHJveSwKPj4gICB9Owo+PiAgIAo+PiAgIHN0YXRpYyBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9oZWxwZXJfZnVuY3MgaW14X2hkbWlfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKPj4g QEAgLTE1NDAsMTIgKzE0NjgsMTAgQEAgc3RhdGljIGlycXJldHVybl90IGlteF9oZG1pX2lycShp bnQgaXJxLCB2b2lkICpkZXZfaWQpCj4+ICAgCj4+ICAgc3RhdGljIGludCBpbXhfaGRtaV9yZWdp c3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgaW14X2hkbWkgKmhkbWkpCj4+ICAg ewo+PiAtCWludCByZXQ7Cj4+ICsJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmhkbWkt PmVuY29kZXI7Cj4+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gaGRtaS0+ZGV2Owo+PiAgIAo+PiAt CXJldCA9IGlteF9kcm1fZW5jb2Rlcl9wYXJzZV9vZihkcm0sICZoZG1pLT5lbmNvZGVyLAo+PiAt CQkJCSAgICAgICBoZG1pLT5kZXYtPm9mX25vZGUpOwo+PiAtCWlmIChyZXQpCj4+IC0JCXJldHVy biByZXQ7Cj4+ICsJZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgPSBkcm1fb2ZfZmluZF9wb3NzaWJs ZV9jcnRjcyhkcm0sIGRldi0+b2Zfbm9kZSk7Cj4+ICAgCj4+ICAgCWhkbWktPmNvbm5lY3Rvci5w b2xsZWQgPSBEUk1fQ09OTkVDVE9SX1BPTExfSFBEOwo+PiAgIAo+PiBAQCAtMTU2NSw1MCArMTQ5 MSwxNiBAQCBzdGF0aWMgaW50IGlteF9oZG1pX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpk cm0sIHN0cnVjdCBpbXhfaGRtaSAqaGRtaSkKPj4gICAJcmV0dXJuIDA7Cj4+ICAgfQo+PiAgIAo+ PiAtc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2VfaWQgaW14X2hkbWlfZGV2dHlwZVtdID0g ewo+PiAtCXsKPj4gLQkJLm5hbWUgPSAiaW14NnEtaGRtaSIsCj4+IC0JCS5kcml2ZXJfZGF0YSA9 IElNWDZRX0hETUksCj4+IC0JfSwgewo+PiAtCQkubmFtZSA9ICJpbXg2ZGwtaGRtaSIsCj4+IC0J CS5kcml2ZXJfZGF0YSA9IElNWDZETF9IRE1JLAo+PiAtCX0sIHsgLyogc2VudGluZWwgKi8gfQo+ PiAtfTsKPj4gLU1PRFVMRV9ERVZJQ0VfVEFCTEUocGxhdGZvcm0sIGlteF9oZG1pX2RldnR5cGUp Owo+PiAtCj4+IC1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBpbXhfaGRtaV9kdF9p ZHNbXSA9IHsKPj4gLXsgLmNvbXBhdGlibGUgPSAiZnNsLGlteDZxLWhkbWkiLCAuZGF0YSA9ICZp bXhfaGRtaV9kZXZ0eXBlW0lNWDZRX0hETUldLCB9LAo+PiAteyAuY29tcGF0aWJsZSA9ICJmc2ws aW14NmRsLWhkbWkiLCAuZGF0YSA9ICZpbXhfaGRtaV9kZXZ0eXBlW0lNWDZETF9IRE1JXSwgfSwK Pj4gLXsgLyogc2VudGluZWwgKi8gfQo+PiAtfTsKPj4gLU1PRFVMRV9ERVZJQ0VfVEFCTEUob2Ys IGlteF9oZG1pX2R0X2lkcyk7Cj4+IC0KPj4gICBzdGF0aWMgaW50IGlteF9oZG1pX2JpbmQoc3Ry dWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCj4+ICAg ewo+PiAgIAlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNl KGRldik7Cj4+IC0JY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfaWQgPQo+PiAtCQkJCW9m X21hdGNoX2RldmljZShpbXhfaGRtaV9kdF9pZHMsIGRldik7Cj4+ICsJc3RydWN0IGlteF9oZG1p ICpoZG1pID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4+ICAgCXN0cnVjdCBkcm1fZGV2 aWNlICpkcm0gPSBkYXRhOwo+PiAgIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LT5vZl9u b2RlOwo+PiAgIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKmRkY19ub2RlOwo+PiAtCXN0cnVjdCBpbXhf aGRtaSAqaGRtaTsKPj4gICAJc3RydWN0IHJlc291cmNlICppb3JlczsKPj4gICAJaW50IHJldCwg aXJxOwo+PiAgIAo+PiAtCWhkbWkgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmhkbWkpLCBH RlBfS0VSTkVMKTsKPj4gLQlpZiAoIWhkbWkpCj4+IC0JCXJldHVybiAtRU5PTUVNOwo+PiAtCj4+ IC0JaGRtaS0+ZGV2ID0gZGV2Owo+PiAtCWhkbWktPnNhbXBsZV9yYXRlID0gNDgwMDA7Cj4+IC0J aGRtaS0+cmF0aW8gPSAxMDA7Cj4+IC0KPj4gLQlpZiAob2ZfaWQpIHsKPj4gLQkJY29uc3Qgc3Ry dWN0IHBsYXRmb3JtX2RldmljZV9pZCAqZGV2aWNlX2lkID0gb2ZfaWQtPmRhdGE7Cj4+IC0KPj4g LQkJaGRtaS0+ZGV2X3R5cGUgPSBkZXZpY2VfaWQtPmRyaXZlcl9kYXRhOwo+PiAtCX0KPj4gLQo+ PiAgIAlkZGNfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUobnAsICJkZGMtaTJjLWJ1cyIsIDApOwo+ PiAgIAlpZiAoZGRjX25vZGUpIHsKPj4gICAJCWhkbWktPmRkYyA9IG9mX2ZpbmRfaTJjX2FkYXB0 ZXJfYnlfbm9kZShkZGNfbm9kZSk7Cj4+IEBAIC0xNjM1LDQwICsxNTI3LDggQEAgc3RhdGljIGlu dCBpbXhfaGRtaV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVy LCB2b2lkICpkYXRhKQo+PiAgIAlpZiAoSVNfRVJSKGhkbWktPnJlZ3MpKQo+PiAgIAkJcmV0dXJu IFBUUl9FUlIoaGRtaS0+cmVncyk7Cj4+ICAgCj4+IC0JaGRtaS0+cmVnbWFwID0gc3lzY29uX3Jl Z21hcF9sb29rdXBfYnlfcGhhbmRsZShucCwgImdwciIpOwo+PiAtCWlmIChJU19FUlIoaGRtaS0+ cmVnbWFwKSkKPj4gLQkJcmV0dXJuIFBUUl9FUlIoaGRtaS0+cmVnbWFwKTsKPj4gLQo+PiAtCWhk bWktPmlzZnJfY2xrID0gZGV2bV9jbGtfZ2V0KGhkbWktPmRldiwgImlzZnIiKTsKPj4gLQlpZiAo SVNfRVJSKGhkbWktPmlzZnJfY2xrKSkgewo+PiAtCQlyZXQgPSBQVFJfRVJSKGhkbWktPmlzZnJf Y2xrKTsKPj4gLQkJZGV2X2VycihoZG1pLT5kZXYsCj4+IC0JCQkiVW5hYmxlIHRvIGdldCBIRE1J IGlzZnIgY2xrOiAlZFxuIiwgcmV0KTsKPj4gLQkJcmV0dXJuIHJldDsKPj4gLQl9Cj4+IC0KPj4g LQlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoaGRtaS0+aXNmcl9jbGspOwo+PiAtCWlmIChyZXQp IHsKPj4gLQkJZGV2X2VycihoZG1pLT5kZXYsCj4+IC0JCQkiQ2Fubm90IGVuYWJsZSBIRE1JIGlz ZnIgY2xvY2s6ICVkXG4iLCByZXQpOwo+PiAtCQlyZXR1cm4gcmV0Owo+PiAtCX0KPj4gLQo+PiAt CWhkbWktPmlhaGJfY2xrID0gZGV2bV9jbGtfZ2V0KGhkbWktPmRldiwgImlhaGIiKTsKPj4gLQlp ZiAoSVNfRVJSKGhkbWktPmlhaGJfY2xrKSkgewo+PiAtCQlyZXQgPSBQVFJfRVJSKGhkbWktPmlh aGJfY2xrKTsKPj4gLQkJZGV2X2VycihoZG1pLT5kZXYsCj4+IC0JCQkiVW5hYmxlIHRvIGdldCBI RE1JIGlhaGIgY2xrOiAlZFxuIiwgcmV0KTsKPj4gLQkJZ290byBlcnJfaXNmcjsKPj4gLQl9Cj4+ IC0KPj4gLQlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoaGRtaS0+aWFoYl9jbGspOwo+PiAtCWlm IChyZXQpIHsKPj4gLQkJZGV2X2VycihoZG1pLT5kZXYsCj4+IC0JCQkiQ2Fubm90IGVuYWJsZSBI RE1JIGlhaGIgY2xvY2s6ICVkXG4iLCByZXQpOwo+PiAtCQlnb3RvIGVycl9pc2ZyOwo+PiAtCX0K Pj4gLQo+PiArCWlmIChoZG1pLT5wbGF0X2RhdGEtPnNldHVwKQo+PiArCQloZG1pLT5wcml2ID0g aGRtaS0+cGxhdF9kYXRhLT5zZXR1cChwZGV2KTsKPj4gICAJLyogUHJvZHVjdCBhbmQgcmV2aXNp b24gSURzICovCj4+ICAgCWRldl9pbmZvKGRldiwKPj4gICAJCSJEZXRlY3RlZCBIRE1JIGNvbnRy b2xsZXIgMHgleDoweCV4OjB4JXg6MHgleFxuIiwKPj4gQEAgLTE2OTYsMTEgKzE1NTYsMTEgQEAg c3RhdGljIGludCBpbXhfaGRtaV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmlj ZSAqbWFzdGVyLCB2b2lkICpkYXRhKQo+PiAgIAo+PiAgIAlyZXQgPSBpbXhfaGRtaV9mYl9yZWdp c3RlcmVkKGhkbWkpOwo+PiAgIAlpZiAocmV0KQo+PiAtCQlnb3RvIGVycl9pYWhiOwo+PiArCQly ZXR1cm4gcmV0Owo+PiAgIAo+PiAgIAlyZXQgPSBpbXhfaGRtaV9yZWdpc3Rlcihkcm0sIGhkbWkp Owo+PiAgIAlpZiAocmV0KQo+PiAtCQlnb3RvIGVycl9pYWhiOwo+PiArCQlyZXR1cm4gcmV0Owo+ PiAgIAo+PiAgIAkvKiBVbm11dGUgaW50ZXJydXB0cyAqLwo+PiAgIAloZG1pX3dyaXRlYihoZG1p LCB+SERNSV9JSF9QSFlfU1RBVDBfSFBELCBIRE1JX0lIX01VVEVfUEhZX1NUQVQwKTsKPj4gQEAg LTE3MDgsMTMgKzE1NjgsNiBAQCBzdGF0aWMgaW50IGlteF9oZG1pX2JpbmQoc3RydWN0IGRldmlj ZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCj4+ICAgCWRldl9zZXRf ZHJ2ZGF0YShkZXYsIGhkbWkpOwo+PiAgIAo+PiAgIAlyZXR1cm4gMDsKPj4gLQo+PiAtZXJyX2lh aGI6Cj4+IC0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGhkbWktPmlhaGJfY2xrKTsKPj4gLWVycl9p c2ZyOgo+PiAtCWNsa19kaXNhYmxlX3VucHJlcGFyZShoZG1pLT5pc2ZyX2Nsayk7Cj4+IC0KPj4g LQlyZXR1cm4gcmV0Owo+PiAgIH0KPj4gICAKPj4gICBzdGF0aWMgdm9pZCBpbXhfaGRtaV91bmJp bmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCj4+IEBAIC0xNzI3 LDkgKzE1ODAsOCBAQCBzdGF0aWMgdm9pZCBpbXhfaGRtaV91bmJpbmQoc3RydWN0IGRldmljZSAq ZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCj4+ICAgCj4+ICAgCWhkbWktPmNvbm5lY3Rvci5m dW5jcy0+ZGVzdHJveSgmaGRtaS0+Y29ubmVjdG9yKTsKPj4gICAJaGRtaS0+ZW5jb2Rlci5mdW5j cy0+ZGVzdHJveSgmaGRtaS0+ZW5jb2Rlcik7Cj4+IC0KPj4gLQljbGtfZGlzYWJsZV91bnByZXBh cmUoaGRtaS0+aWFoYl9jbGspOwo+PiAtCWNsa19kaXNhYmxlX3VucHJlcGFyZShoZG1pLT5pc2Zy X2Nsayk7Cj4+ICsJaWYgKGhkbWktPnBsYXRfZGF0YS0+ZXhpdCkKPj4gKwkJaGRtaS0+cGxhdF9k YXRhLT5leGl0KGhkbWktPnByaXYpOwo+PiAgIAlpMmNfcHV0X2FkYXB0ZXIoaGRtaS0+ZGRjKTsK Pj4gICB9Cj4+ICAgCj4+IEBAIC0xNzQ5LDE3ICsxNjAxLDMyIEBAIHN0YXRpYyBpbnQgaW14X2hk bWlfcGxhdGZvcm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ICAgCXJl dHVybiAwOwo+PiAgIH0KPj4gICAKPj4gLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGlt eF9oZG1pX2RyaXZlciA9IHsKPj4gLQkucHJvYmUgID0gaW14X2hkbWlfcGxhdGZvcm1fcHJvYmUs Cj4+IC0JLnJlbW92ZSA9IGlteF9oZG1pX3BsYXRmb3JtX3JlbW92ZSwKPj4gLQkuZHJpdmVyID0g ewo+PiAtCQkubmFtZSA9ICJpbXgtaGRtaSIsCj4+IC0JCS5vd25lciA9IFRISVNfTU9EVUxFLAo+ PiAtCQkub2ZfbWF0Y2hfdGFibGUgPSBpbXhfaGRtaV9kdF9pZHMsCj4+IC0JfSwKPj4gLX07Cj4+ ICtpbnQgaW14X2hkbWlfcGxhdGZvcm1fcmVnaXN0ZXIoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldiwKPj4gKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaW14X2hkbWlfcGxhdF9kYXRhICpwbGF0 X2RhdGEpCj4+ICt7Cj4+ICsJc3RydWN0IGlteF9oZG1pICpoZG1pOwo+PiArCj4+ICsJaGRtaSA9 IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKmhkbWkpLCBHRlBfS0VSTkVMKTsKPj4g KwlpZiAoIWhkbWkpCj4+ICsJCXJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsJaGRtaS0+cGxhdF9k YXRhID0gcGxhdF9kYXRhOwo+PiArCWhkbWktPmRldiA9ICZwZGV2LT5kZXY7Cj4+ICsJaGRtaS0+ ZGV2X3R5cGUgPSBwbGF0X2RhdGEtPmRldl90eXBlOwo+PiArCWhkbWktPnNhbXBsZV9yYXRlID0g NDgwMDA7Cj4+ICsJaGRtaS0+cmF0aW8gPSAxMDA7Cj4+ICsKPj4gKwlwbGF0Zm9ybV9zZXRfZHJ2 ZGF0YShwZGV2LCBoZG1pKTsKPj4gICAKPj4gLW1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoaW14X2hk bWlfZHJpdmVyKTsKPj4gKwlyZXR1cm4gaW14X2hkbWlfcGxhdGZvcm1fcHJvYmUocGRldik7Cj4+ ICt9Cj4+ICtFWFBPUlRfU1lNQk9MX0dQTChpbXhfaGRtaV9wbGF0Zm9ybV9yZWdpc3Rlcik7Cj4+ ICsKPj4gK2ludCBpbXhfaGRtaV9wbGF0Zm9ybV91bnJlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ICsJcmV0dXJuIGlteF9oZG1pX3BsYXRmb3JtX3JlbW92ZShw ZGV2KTsKPj4gK30KPj4gK0VYUE9SVF9TWU1CT0xfR1BMKGlteF9oZG1pX3BsYXRmb3JtX3VucmVn aXN0ZXIpOwo+PiAgIAo+PiAgIE1PRFVMRV9BVVRIT1IoIlNhc2NoYSBIYXVlciA8cy5oYXVlckBw ZW5ndXRyb25peC5kZT4iKTsKPj4gICBNT0RVTEVfREVTQ1JJUFRJT04oImkuTVg2IEhETUkgdHJh bnNtaXR0ZXIgZHJpdmVyIik7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaW14LWRy bS9pbXgtaGRtaS5oIGIvZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vaW14LWhkbWkuaAo+PiBpbmRl eCAzOWI2Nzc2Li5lNjdkNjBkIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvaW14LWRy bS9pbXgtaGRtaS5oCj4+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9pbXgtZHJtL2lteC1oZG1pLmgK Pj4gQEAgLTEwMjksNCArMTAyOSw0NyBAQCBlbnVtIHsKPj4gICAJSERNSV9BX1ZJRFBPTENGR19I U1lOQ1BPTF9BQ1RJVkVfSElHSCA9IDB4MiwKPj4gICAJSERNSV9BX1ZJRFBPTENGR19IU1lOQ1BP TF9BQ1RJVkVfTE9XID0gMHgwLAo+PiAgIH07Cj4+ICsKPj4gK2VudW0gewo+PiArCVJFU184LAo+ PiArCVJFU18xMCwKPj4gKwlSRVNfMTIsCj4+ICsJUkVTX01BWCwKPj4gK307Cj4+ICsKPj4gK2Vu dW0gaW14X2hkbWlfZGV2dHlwZSB7Cj4+ICsJSU1YNlFfSERNSSwKPj4gKwlJTVg2RExfSERNSSwK Pj4gK307Cj4+ICsKPj4gK3N0cnVjdCBtcGxsX2NvbmZpZyB7Cj4+ICsJdW5zaWduZWQgbG9uZyBt cGl4ZWxjbG9jazsKPj4gKwlzdHJ1Y3Qgewo+PiArCQl1MTYgY3BjZTsKPj4gKwkJdTE2IGdtcDsK Pj4gKwl9IHJlc1tSRVNfTUFYXTsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBjdXJyX2N0cmwgewo+ PiArCXVuc2lnbmVkIGxvbmcgbXBpeGVsY2xvY2s7Cj4+ICsJdTE2IGN1cnJbUkVTX01BWF07Cj4+ ICt9Owo+PiArCj4+ICtzdHJ1Y3QgaW14X2hkbWlfcGxhdF9kYXRhIHsKPj4gKwl2b2lkICogKCpz ZXR1cCkoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7Cj4+ICsJdm9pZCAoKmV4aXQpKHZv aWQgKnByaXYpOwo+PiArCXZvaWQgKCplbmNvZGVyX2NvbW1pdCkodm9pZCAqcHJpdiwgc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyKTsKPj4gKwl2b2lkICgqZW5jb2Rlcl9wcmVwYXJlKShzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiArCQkJCXN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2Rlcik7Cj4+ICsJZW51bSBkcm1fbW9kZV9zdGF0dXMgKCptb2RlX3ZhbGlkKShzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiArCQkJCQkgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZSk7Cj4+ICsJY29uc3Qgc3RydWN0IG1wbGxfY29uZmlnICptcGxsX2NmZzsKPj4g Kwljb25zdCBzdHJ1Y3QgY3Vycl9jdHJsICpjdXJfY3RyOwo+PiArCWVudW0gaW14X2hkbWlfZGV2 dHlwZSBkZXZfdHlwZTsKPj4gKwo+PiArfTsKPj4gKwo+PiAraW50IGlteF9oZG1pX3BsYXRmb3Jt X3JlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4+ICsJCQkgICAgICAgY29u c3Qgc3RydWN0IGlteF9oZG1pX3BsYXRfZGF0YSAqcGxhdF9kYXRhKTsKPj4gK2ludCBpbXhfaGRt aV9wbGF0Zm9ybV91bnJlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpOwo+PiAg ICNlbmRpZiAvKiBfX0lNWF9IRE1JX0hfXyAqLwo+Pgo+Cj4KCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkZXZlbCBtYWlsaW5nIGxpc3QKZGV2ZWxAbGlu dXhkcml2ZXJwcm9qZWN0Lm9yZwpodHRwOi8vZHJpdmVyZGV2LmxpbnV4ZHJpdmVycHJvamVjdC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcml2ZXJkZXYtZGV2ZWwK