From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/3] drm/layerscape: Add fsl dcu DRM driver Date: Thu, 19 Mar 2015 15:30:55 +0100 Message-ID: <20150319143055.GP31422@phenom.ffwll.local> References: <1426239859-29254-1-git-send-email-b52261@freescale.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-we0-f177.google.com (mail-we0-f177.google.com [74.125.82.177]) by gabe.freedesktop.org (Postfix) with ESMTP id 3EE2A89F5B for ; Thu, 19 Mar 2015 07:29:14 -0700 (PDT) Received: by webcq43 with SMTP id cq43so58790656web.2 for ; Thu, 19 Mar 2015 07:29:13 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1426239859-29254-1-git-send-email-b52261@freescale.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jianwei Wang Cc: Xiubo Li , Alison Wang , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Jason.Jin@freescale.com, scottwood@freescale.com, linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBNYXIgMTMsIDIwMTUgYXQgMDU6NDQ6MTdQTSArMDgwMCwgSmlhbndlaSBXYW5nIHdy b3RlOgo+IFRoaXMgcGF0Y2ggYWRkIHN1cHBvcnQgZm9yIFR3byBEaW1lbnNpb25hbCBBbmltYXRp b24gYW5kIENvbXBvc2l0aW5nCj4gRW5naW5lICgyRC1BQ0UpIG9uIEZyZWVzY2FsZSBTb0NzLgo+ IAo+IDJELUFDRSBpcyBhIEZyZWVzY2FsZSBkaXNwbGF5IGNvbnRyb2xsZXIuIEl0IHByb3ZpZGUg YW4gaGFyZHdhcmUKPiBjdXJzb3IuCj4gCj4gVGhpcyBpcyBhIHNpbXBsaWZpZWQgdmVyc2lvbiwg b25seSBhIHByaW1hcnkgcGxhbmUsIGEgZmIgY3JlYXRlZCBmb3IKPiBmYmRldiwgYSBjcnRjLCBh IGNvbm5lY3RvciBmb3IgVEZUIExDRCBwYW5lbCwgYW4gZW5jb2RlciwgYW5kIHRoZQo+IGVuY29k ZXIgaXMgbm90IGluIHVzZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbGlzb24gV2FuZyA8YjE4OTY1 QGZyZWVzY2FsZS5jb20+Cj4gU2lnbmVkLW9mZi1ieTogWGl1Ym8gTGkgPGxpeGl1Ym9AY21zcy5j aGluYW1vYmlsZS5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSmlhbndlaSBXYW5nIDxiNTIyNjFAZnJl ZXNjYWxlLmNvbT4KCkkndmUgc3BvdHRlZCB0d28gbW9yZSBwbGFjZXMgd2hlcmUgeW91IG5lZWQg dG8gdXBncmFkZSB0byBhdG9taWMgZnVuY3Rpb25zCmZvciBsZWdhY3kgZW50cnkgcG9pbnRzLiBP dGhlcndpc2UgaXQgbG9va3MgZ29vZCBmcm9tIHRoYXQgcG92LiBTZWUKY29tbWVudHMgYmVsb3cu CgpUaGFua3MsIERhbmllbAoKPiAtLS0KPiAKPiBDaGFuZ2VkIGluIHYyOsKgCj4gLSBBZGQgYXRv bWljIHN1cHBvcnQKPiAtIE1vZGlmeSBiaW5kaW5ncyBmaWxlCj4gLSBSZW5hbWUgbm9kZSBmb3Ig Y29tcGF0aWJpbGl0eQo+IC0gTW92ZSBwbGF0Zm9ybSByZWxhdGVkIGNvZGUgb3V0IGZvciBjb21w YXRpYmlsaXR5Cj4gCj4gQWRkZWQgaW4gdjE6wqAKPiAtwqBBZGQgc3VwcG9ydCBmb3IgRENVIGRp c3BsYXkgY29udHJvbGxlciBvbiB0aGUgRnJlZXNjYWxlIExTMTAyeCBTb0NzLgo+IC0gQ3JlYXRl IGEgcHJpbWFyeSBwbGFuZSwgYSBmYiBjcmVhdGVkIGZvciBmYmRldiwgYSBjcnRjLCBhIGNvbm5l Y3Rvcgo+IGZvciBURlQgTENEIHBhbmVsLCBhbiBlbmNvZGVyLgo+IAo+ICBhcmNoL2FybS9tYWNo LWlteC9tYWNoLWxzMTAyMWEuYyAgICAgICAgICAgIHwgIDM2ICsrKysKPiAgZHJpdmVycy9ncHUv ZHJtL0tjb25maWcgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1L2Ry bS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0v ZnNsL0tjb25maWcgICAgICAgICAgICAgICAgIHwgIDE3ICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9m c2wvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDggKwo+ICBkcml2ZXJzL2dwdS9kcm0vZnNs L2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5jIHwgMjAzICsrKysrKysrKysrKysrKysrKysrCj4gIGRy aXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fY29ubmVjdG9yLmggfCAgMjggKysrCj4gIGRy aXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fY3J0Yy5jICAgICAgfCAxNjQgKysrKysrKysr KysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2NydGMuaCAgICAgIHwg IDI2ICsrKwo+ICBkcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2Rydi5jICAgICAgIHwg Mjg4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2ZzbC9m c2xfZGN1X2RybV9kcnYuaCAgICAgICB8IDE2OCArKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMv Z3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fZmJkZXYuYyAgICAgfCAgMjYgKysrCj4gIGRyaXZlcnMv Z3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fa21zLmMgICAgICAgfCAgNDIgKysrKwo+ICBkcml2ZXJz L2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2ttcy5oICAgICAgIHwgIDE3ICsrCj4gIGRyaXZlcnMv Z3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fcGxhbmUuYyAgICAgfCAxODcgKysrKysrKysrKysrKysr KysrCj4gIGRyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fcGxhbmUuaCAgICAgfCAgMjMg KysrCj4gIGluY2x1ZGUvbGludXgvZnNsL2RjdS5oICAgICAgICAgICAgICAgICAgICAgfCAgMjIg KysrCj4gIDE3IGZpbGVzIGNoYW5nZWQsIDEyNTggaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC9LY29uZmlnCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vZnNsL01ha2VmaWxlCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5jCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5oCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2NydGMuYwo+ICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9jcnRjLmgK PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fZHJ2 LmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1f ZHJ2LmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9k cm1fZmJkZXYuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xf ZGN1X2RybV9rbXMuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC9m c2xfZGN1X2RybV9rbXMuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2Zz bC9mc2xfZGN1X2RybV9wbGFuZS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vZnNsL2ZzbF9kY3VfZHJtX3BsYW5lLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUv bGludXgvZnNsL2RjdS5oCj4gCj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaW14L21hY2gt bHMxMDIxYS5jIGIvYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1sczEwMjFhLmMKPiBpbmRleCBiODlj ODU4Li40ZmIzNDZkIDEwMDY0NAo+IC0tLSBhL2FyY2gvYXJtL21hY2gtaW14L21hY2gtbHMxMDIx YS5jCj4gKysrIGIvYXJjaC9hcm0vbWFjaC1pbXgvbWFjaC1sczEwMjFhLmMKPiBAQCAtOCw5ICs4 LDQ0IEBACj4gICAqLwo+ICAKPiAgI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KPiArI2luY2x1 ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29uLmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2ZzbC9kY3Uu aD4KPiAgCj4gICNpbmNsdWRlICJjb21tb24uaCIKPiAgCj4gK3ZvaWQgZGN1X3BpeGNsa19kaXNh YmxlKHZvaWQpCj4gK3sKPiArCXN0cnVjdCByZWdtYXAgKnNjZmdfcmVnbWFwOwo+ICsKPiArCXNj ZmdfcmVnbWFwID0gc3lzY29uX3JlZ21hcF9sb29rdXBfYnlfY29tcGF0aWJsZSgiZnNsLGxzMTAy MWEtc2NmZyIpOwo+ICsJaWYgKElTX0VSUihzY2ZnX3JlZ21hcCkpIHsKPiArCQlwcl9lcnIoIk5v IHN5c2NmZyBwaGFuZGxlIHNwZWNpZmllZFxuIik7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiAr CXJlZ21hcF93cml0ZShzY2ZnX3JlZ21hcCwgU0NGR19QSVhDTEtDUiwgUFhDS19ESVNBQkxFKTsK PiArfQo+ICsKPiArdm9pZCBkY3VfcGl4Y2xrX2VuYWJsZSh2b2lkKQo+ICt7Cj4gKwlzdHJ1Y3Qg cmVnbWFwICpzY2ZnX3JlZ21hcDsKPiArCj4gKwlzY2ZnX3JlZ21hcCA9IHN5c2Nvbl9yZWdtYXBf bG9va3VwX2J5X2NvbXBhdGlibGUoImZzbCxsczEwMjFhLXNjZmciKTsKPiArCWlmIChJU19FUlIo c2NmZ19yZWdtYXApKSB7Cj4gKwkJcHJfZXJyKCJObyBzeXNjZmcgcGhhbmRsZSBzcGVjaWZpZWRc biIpOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwlyZWdtYXBfd3JpdGUoc2NmZ19yZWdtYXAs IFNDRkdfUElYQ0xLQ1IsIFBYQ0tfRU5BQkxFKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgX19p bml0IGxzMTAyMWFfaW5pdF9tYWNoaW5lKHZvaWQpCj4gK3sKPiArCW9mX3BsYXRmb3JtX3BvcHVs YXRlKE5VTEwsIG9mX2RlZmF1bHRfYnVzX21hdGNoX3RhYmxlLCBOVUxMLCBOVUxMKTsKPiArCWRj dV9waXhjbGtfZW5hYmxlKCk7Cj4gK30KPiAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBsczEw MjFhX2R0X2NvbXBhdFtdIF9faW5pdGNvbnN0ID0gewo+ICAJImZzbCxsczEwMjFhIiwKPiAgCU5V TEwsCj4gQEAgLTE4LDUgKzUzLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBsczEwMjFh X2R0X2NvbXBhdFtdIF9faW5pdGNvbnN0ID0gewo+ICAKPiAgRFRfTUFDSElORV9TVEFSVChMUzEw MjFBLCAiRnJlZXNjYWxlIExTMTAyMUEiKQo+ICAJLnNtcAkJPSBzbXBfb3BzKGxzMTAyMWFfc21w X29wcyksCj4gKwkuaW5pdF9tYWNoaW5lCT0gbHMxMDIxYV9pbml0X21hY2hpbmUsCj4gIAkuZHRf Y29tcGF0CT0gbHMxMDIxYV9kdF9jb21wYXQsCj4gIE1BQ0hJTkVfRU5ECj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiBpbmRl eCAxNTFhMDUwLi5hNjk1N2FhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmln Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiBAQCAtMTk5LDYgKzE5OSw4IEBAIHNv dXJjZSAiZHJpdmVycy9ncHUvZHJtL2JvY2hzL0tjb25maWciCj4gIAo+ICBzb3VyY2UgImRyaXZl cnMvZ3B1L2RybS9tc20vS2NvbmZpZyIKPiAgCj4gK3NvdXJjZSAiZHJpdmVycy9ncHUvZHJtL2Zz bC9LY29uZmlnIgo+ICsKPiAgc291cmNlICJkcml2ZXJzL2dwdS9kcm0vdGVncmEvS2NvbmZpZyIK PiAgCj4gIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWciCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ IGluZGV4IDJjMjM5YjkuLmFiNWI5ZWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL01h a2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gQEAgLTU2LDYgKzU2LDcg QEAgb2JqLSQoQ09ORklHX0RSTV9VREwpICs9IHVkbC8KPiAgb2JqLSQoQ09ORklHX0RSTV9BU1Qp ICs9IGFzdC8KPiAgb2JqLSQoQ09ORklHX0RSTV9BUk1BREEpICs9IGFybWFkYS8KPiAgb2JqLSQo Q09ORklHX0RSTV9BVE1FTF9ITENEQykJKz0gYXRtZWwtaGxjZGMvCj4gK29iai0kKENPTkZJR19E Uk1fRlNMX0RDVSkgKz0gZnNsLwo+ICBvYmotJChDT05GSUdfRFJNX1JDQVJfRFUpICs9IHJjYXIt ZHUvCj4gIG9iai0kKENPTkZJR19EUk1fU0hNT0JJTEUpICs9c2htb2JpbGUvCj4gIG9iai0kKENP TkZJR19EUk1fT01BUCkJKz0gb21hcGRybS8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2ZzbC9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9LY29uZmlnCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5lNGY4ZGYwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9mc2wvS2NvbmZpZwo+IEBAIC0wLDAgKzEsMTcgQEAKPiArY29uZmln IERSTV9GU0xfRENVCj4gKwl0cmlzdGF0ZSAiRFJNIFN1cHBvcnQgZm9yIEZyZWVzY2FsZSBEQ1Ui Cj4gKwlkZXBlbmRzIG9uIERSTSAmJiBPRiAmJiBBUk0KPiArCXNlbGVjdCBEUk1fS01TX0hFTFBF Ugo+ICsJc2VsZWN0IERSTV9LTVNfQ01BX0hFTFBFUgo+ICsJc2VsZWN0IFZJREVPTU9ERV9IRUxQ RVJTCj4gKwlzZWxlY3QgQkFDS0xJR0hUX0NMQVNTX0RFVklDRQo+ICsJc2VsZWN0IEJBQ0tMSUdI VF9MQ0RfU1VQUE9SVAo+ICsJc2VsZWN0IFJFR01BUF9NTUlPCj4gKwlzZWxlY3QgRFJNX0tNU19G Ql9IRUxQRVIKPiArCXNlbGVjdCBGQl9TWVNfRklMTFJFQ1QKPiArCXNlbGVjdCBGQl9TWVNfQ09Q WUFSRUEKPiArCXNlbGVjdCBGQl9TWVNfSU1BR0VCTElUCj4gKwlzZWxlY3QgRkJfU1lTX0ZPUFMK PiArCWhlbHAKPiArCSAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGFuIEZyZWVzY2Fs ZSBEQ1UgY2hpcHNldC4KPiArCSAgSWYgTSBpcyBzZWxlY3RlZCB0aGUgbW9kdWxlIHdpbGwgYmUg Y2FsbGVkIGZzbC1kY3UtZHJtLgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsL01h a2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9NYWtlZmlsZQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gaW5kZXggMDAwMDAwMC4uNWY3NGFlZQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZnNsL01ha2VmaWxlCj4gQEAgLTAsMCArMSw4IEBACj4gK2ZzbC1kY3UtZHJt LXkgOj0gZnNsX2RjdV9kcm1fZHJ2Lm8gXAo+ICsJICAgICAgIGZzbF9kY3VfZHJtX2ttcy5vIFwK PiArCSAgICAgICBmc2xfZGN1X2RybV9jb25uZWN0b3IubyBcCj4gKwkgICAgICAgZnNsX2RjdV9k cm1fcGxhbmUubyBcCj4gKwkgICAgICAgZnNsX2RjdV9kcm1fY3J0Yy5vIFwKPiArCSAgICAgICBm c2xfZGN1X2RybV9mYmRldi5vIFwKPiArCj4gK29iai0kKENPTkZJR19EUk1fRlNMX0RDVSkJKz0g ZnNsLWRjdS1kcm0ubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3Vf ZHJtX2Nvbm5lY3Rvci5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9jb25uZWN0 b3IuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMTc4ZDY0Nwo+IC0t LSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2Nvbm5l Y3Rvci5jCj4gQEAgLTAsMCArMSwyMDMgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IDIwMTUgRnJl ZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KPiArICoKPiArICogRnJlZXNjYWxlIERDVSBkcm0g ZGV2aWNlIGRyaXZlcgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvcgo+ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4KPiArCj4gKyNpbmNsdWRl IDxkcm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gKyNp bmNsdWRlIDx2aWRlby9vZl9kaXNwbGF5X3RpbWluZy5oPgo+ICsKPiArI2luY2x1ZGUgImZzbF9k Y3VfZHJtX2Rydi5oIgo+ICsjaW5jbHVkZSAiZnNsX2RjdV9kcm1fY29ubmVjdG9yLmgiCj4gKwo+ ICtzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9lbmNvZGVyX2RwbXMoc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyLCBpbnQgbW9kZSkKPiArewo+ICt9Cj4gKwo+ICsvKiBEaXNhYmxlIHRoZSBlbmNv ZGVycyBhcyB0aGUgZmlyc3QgdGhpbmcgd2UgZG8uICovCj4gK3N0YXRpYyB2b2lkIGZzbF9kY3Vf ZHJtX2VuY29kZXJfbW9kZV9wcmVwYXJlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiAr ewo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9lbmNvZGVyX21vZGVfc2V0KHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiArCQkJCQkgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGUsCj4gKwkJCQkJIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2Rl KQo+ICt7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2VuY29kZXJfbW9kZV9j b21taXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQo+ICt7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIGZzbF9kY3VfZHJtX2VuY29kZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIpCj4gK3sKPiArfQo+ICsKPiArc3RhdGljIGludAo+ICtmc2xfZGN1X2RybV9lbmNvZGVy X2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCQkgc3RydWN0 IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpjb25uX3N0YXRlKQo+ICt7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj IGJvb2wKPiArZnNsX2RjdV9kcm1fZW5jb2Rlcl9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlciwKPiArCQkJICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpt b2RlLAo+ICsJCQkgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUp Cj4gK3sKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBmc2xfZGN1X2Ry bV9lbmNvZGVyX2Rlc3Ryb3koc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQo+ICt7Cj4gKwlk cm1fZW5jb2Rlcl9jbGVhbnVwKGVuY29kZXIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyBlbmNvZGVyX2hlbHBlcl9mdW5jcyA9IHsKPiAr CS5kcG1zID0gZnNsX2RjdV9kcm1fZW5jb2Rlcl9kcG1zLAo+ICsJLnByZXBhcmUgPSBmc2xfZGN1 X2RybV9lbmNvZGVyX21vZGVfcHJlcGFyZSwKPiArCS5jb21taXQgPSBmc2xfZGN1X2RybV9lbmNv ZGVyX21vZGVfY29tbWl0LAo+ICsJLm1vZGVfc2V0ID0gZnNsX2RjdV9kcm1fZW5jb2Rlcl9tb2Rl X3NldCwKPiArCS5kaXNhYmxlID0gZnNsX2RjdV9kcm1fZW5jb2Rlcl9kaXNhYmxlLAo+ICsJLmF0 b21pY19jaGVjayA9IGZzbF9kY3VfZHJtX2VuY29kZXJfYXRvbWljX2NoZWNrLAo+ICsJLm1vZGVf Zml4dXAgPSBmc2xfZGN1X2RybV9lbmNvZGVyX21vZGVfZml4dXAsCj4gK307Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGVuY29kZXJfZnVuY3MgPSB7Cj4gKwku ZGVzdHJveSA9IGZzbF9kY3VfZHJtX2VuY29kZXJfZGVzdHJveSwKPiArfTsKPiArCj4gK2ludCBm c2xfZGN1X2RybV9lbmNvZGVyX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xf ZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmZnNsX2Rldi0+ZW5j b2RlcjsKPiArCWludCByZXQ7Cj4gKwo+ICsJZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgPSAxOwo+ ICsKPiArCXJldCA9IGRybV9lbmNvZGVyX2luaXQoZnNsX2Rldi0+ZGRldiwgZW5jb2RlciwgJmVu Y29kZXJfZnVuY3MsCj4gKwkJCSAgICAgICBEUk1fTU9ERV9FTkNPREVSX0xWRFMpOwo+ICsJaWYg KHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlkcm1fZW5jb2Rlcl9oZWxwZXJfYWRk KGVuY29kZXIsICZlbmNvZGVyX2hlbHBlcl9mdW5jcyk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gKyNkZWZpbmUgdG9fZnNsX2RjdV9jb25uZWN0b3IoY29ubmVjdG9yKSBcCj4gKwljb250 YWluZXJfb2YoY29ubmVjdG9yLCBzdHJ1Y3QgZnNsX2RjdV9kcm1fY29ubmVjdG9yLCBjb25uZWN0 b3IpCj4gKwo+ICtzdGF0aWMgaW50IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9nZXRfbW9kZXMoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNvbm5lY3Rvci0+ZGV2Owo+ICsJc3RydWN0IGRldmljZV9ub2RlICpkaXNwbGF5X25w LCAqbnAgPSBkZXYtPmRldi0+b2Zfbm9kZTsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpt b2RlID0gZHJtX21vZGVfY3JlYXRlKGNvbm5lY3Rvci0+ZGV2KTsKPiArCWludCBudW1fbW9kZXMg PSAwOwo+ICsKPiArCWlmIChucCkgewo+ICsJCWRpc3BsYXlfbnAgPSBvZl9wYXJzZV9waGFuZGxl KG5wLCAiZGlzcGxheSIsIDApOwo+ICsJCWlmICghZGlzcGxheV9ucCkgewo+ICsJCQlkZXZfZXJy KGRldi0+ZGV2LCAiZmFpbGVkIHRvIGZpbmQgZGlzcGxheSBwaGFuZGxlXG4iKTsKPiArCQkJcmV0 dXJuIG51bV9tb2RlczsKPiArCQl9Cj4gKwkJb2ZfZ2V0X2RybV9kaXNwbGF5X21vZGUoZGlzcGxh eV9ucCwgbW9kZSwgT0ZfVVNFX05BVElWRV9NT0RFKTsKPiArCQltb2RlLT50eXBlIHw9IERSTV9N T0RFX1RZUEVfRFJJVkVSIHwgRFJNX01PREVfVFlQRV9QUkVGRVJSRUQsCj4gKwkJZHJtX21vZGVf cHJvYmVkX2FkZChjb25uZWN0b3IsIG1vZGUpOwo+ICsJCW51bV9tb2RlcysrOwo+ICsJfQo+ICsK PiArCXJldHVybiBudW1fbW9kZXM7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1f Y29ubmVjdG9yX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAr CQkJCQkgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4gK3sKPiArCXJldHVybiBN T0RFX09LOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICoKPiArZnNsX2Rj dV9kcm1fY29ubmVjdG9yX2Jlc3RfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yKQo+ICt7Cj4gKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fY29ubmVjdG9yICpmc2xfY29uID0gdG9f ZnNsX2RjdV9jb25uZWN0b3IoY29ubmVjdG9yKTsKPiArCj4gKwlyZXR1cm4gZnNsX2Nvbi0+ZW5j b2RlcjsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Rlc3Ry b3koc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJZHJtX2Nvbm5lY3Rv cl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7Cj4gKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoY29ubmVj dG9yKTsKPiArfQo+ICsKPiArc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMKPiArZnNs X2RjdV9kcm1fY29ubmVjdG9yX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LCBib29sIGZvcmNlKQo+ICt7Cj4gKwlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7 Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBmc2xf ZGN1X2RybV9jb25uZWN0b3JfZnVuY3MgPSB7Cj4gKwkuZHBtcyA9IGRybV9hdG9taWNfaGVscGVy X2Nvbm5lY3Rvcl9kcG1zLAo+ICsJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9y X3Jlc2V0LAo+ICsJLmRldGVjdCA9IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9kZXRlY3QsCj4gKwku ZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKPiAr CS5kZXN0cm95ID0gZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Rlc3Ryb3ksCj4gKwkuYXRvbWljX2R1 cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3Rh dGUsCj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0 b3JfZGVzdHJveV9zdGF0ZSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nv bm5lY3Rvcl9oZWxwZXJfZnVuY3MgY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKPiArCS5nZXRf bW9kZXMgPSBmc2xfZGN1X2RybV9jb25uZWN0b3JfZ2V0X21vZGVzLAo+ICsJLm1vZGVfdmFsaWQg PSBmc2xfZGN1X2RybV9jb25uZWN0b3JfbW9kZV92YWxpZCwKPiArCS5iZXN0X2VuY29kZXIgPSBm c2xfZGN1X2RybV9jb25uZWN0b3JfYmVzdF9lbmNvZGVyLAo+ICt9Owo+ICsKPiAraW50IGZzbF9k Y3VfZHJtX2Nvbm5lY3Rvcl9jcmVhdGUoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2Rl diwKPiArCQkJCSBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gK3sKPiArCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmZnNsX2Rldi0+Y29ubmVjdG9yLmNvbm5lY3RvcjsK PiArCWludCByZXQ7Cj4gKwo+ICsJZnNsX2Rldi0+Y29ubmVjdG9yLmVuY29kZXIgPSBlbmNvZGVy Owo+ICsKPiArCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLndpZHRoX21tID0gMDsKPiArCWNvbm5l Y3Rvci0+ZGlzcGxheV9pbmZvLmhlaWdodF9tbSA9IDA7Cj4gKwo+ICsJcmV0ID0gZHJtX2Nvbm5l Y3Rvcl9pbml0KGZzbF9kZXYtPmRkZXYsIGNvbm5lY3RvciwKPiArCQkJCSAmZnNsX2RjdV9kcm1f Y29ubmVjdG9yX2Z1bmNzLAo+ICsJCQkJIERSTV9NT0RFX0NPTk5FQ1RPUl9MVkRTKTsKPiArCWlm IChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJY29ubmVjdG9yLT5kcG1zID0gRFJN X01PREVfRFBNU19PRkY7Cj4gKwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAm Y29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7Cj4gKwlyZXQgPSBkcm1fY29ubmVjdG9yX3JlZ2lzdGVy KGNvbm5lY3Rvcik7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlnb3RvIGVycl9jbGVhbnVwOwo+ICsK PiArCXJldCA9IGRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2Rlcihjb25uZWN0b3IsIGVu Y29kZXIpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJZ290byBlcnJfc3lzZnM7Cj4gKwo+ICsJY29u bmVjdG9yLT5lbmNvZGVyID0gZW5jb2RlcjsKPiArCj4gKwlkcm1fb2JqZWN0X3Byb3BlcnR5X3Nl dF92YWx1ZQo+ICsJCSgmY29ubmVjdG9yLT5iYXNlLCBmc2xfZGV2LT5kZGV2LT5tb2RlX2NvbmZp Zy5kcG1zX3Byb3BlcnR5LAo+ICsJCURSTV9NT0RFX0RQTVNfT0ZGKTsKPiArCj4gKwlyZXR1cm4g MDsKPiArCj4gK2Vycl9zeXNmczoKPiArCWRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0 b3IpOwo+ICtlcnJfY2xlYW51cDoKPiArCWRybV9jb25uZWN0b3JfY2xlYW51cChjb25uZWN0b3Ip Owo+ICsJcmV0dXJuIHJldDsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNs L2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5oIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2Ry bV9jb25uZWN0b3IuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYWZl NDRhYgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3Vf ZHJtX2Nvbm5lY3Rvci5oCj4gQEAgLTAsMCArMSwyOCBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQg MjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgo+ICsgKgo+ICsgKiBGcmVlc2NhbGUg RENVIGRybSBkZXZpY2UgZHJpdmVyCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Cj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX0ZTTF9EQ1VfRFJNX0NPTk5FQ1RPUl9IX18K PiArI2RlZmluZSBfX0ZTTF9EQ1VfRFJNX0NPTk5FQ1RPUl9IX18KPiArCj4gKyNpbmNsdWRlIDxk cm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4gKwo+ICtzdHJ1Y3QgZnNs X2RjdV9kcm1fZGV2aWNlOwo+ICtzdHJ1Y3QgZnNsX2RjdV9kcm1fY29ubmVjdG9yIHsKPiArCXN0 cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsKPiArCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlcjsKPiArfTsKPiArCj4gK2ludCBmc2xfZGN1X2RybV9lbmNvZGVyX2NyZWF0ZShzdHJ1Y3Qg ZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2KTsKPiAraW50IGZzbF9kY3VfZHJtX2Nvbm5lY3Rv cl9jcmVhdGUoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiwKPiArCQkJCSBzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOwo+ICsKPiArI2VuZGlmIC8qIF9fRlNMX0RDVV9EUk1f Q09OTkVDVE9SX0hfXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9k Y3VfZHJtX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fY3J0Yy5jCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5hNDNlN2NlCj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fY3J0Yy5jCj4gQEAg LTAsMCArMSwxNjQgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWlj b25kdWN0b3IsIEluYy4KPiArICoKPiArICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZl cgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv cgo+ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKi8KPiArCj4g KyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsK PiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+ ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJt X2NydGMuaD4KPiArCj4gKyNpbmNsdWRlICJmc2xfZGN1X2RybV9jcnRjLmgiCj4gKyNpbmNsdWRl ICJmc2xfZGN1X2RybV9kcnYuaCIKPiArI2luY2x1ZGUgImZzbF9kY3VfZHJtX3BsYW5lLmgiCj4g Kwo+ICsjZGVmaW5lIHRvX2ZzbF9kY3VfY3J0YyhjKQljb250YWluZXJfb2YoYywgc3RydWN0IGZz bF9kY3VfZHJtX2NydGMsIGNydGMpCj4gKwo+ICt2b2lkIGZzbF9kY3VfZHJtX2NydGNfc3VzcGVu ZChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gK3sKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnNs X2RjdV9kcm1fY3J0Y19tb2RlX3NldF9ub2ZiKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArewo+ ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiArCXN0cnVjdCBmc2xfZGN1 X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGUgPSAmY3J0Yy0+c3RhdGUtPm1vZGU7Cj4gKwl1aW50MzJfdCBoYnAs IGhmcCwgaHN3LCB2YnAsIHZmcCwgdnN3LCBkaXYsIGluZGV4Owo+ICsKPiArCURCRygiOiBzZXQg bW9kZTogJWQ6XCIlc1wiICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkIDB4JXggMHgleCIs Cj4gKwkgICAgbW9kZS0+YmFzZS5pZCwgbW9kZS0+bmFtZSwKPiArCSAgICBtb2RlLT52cmVmcmVz aCwgbW9kZS0+Y2xvY2ssCj4gKwkgICAgbW9kZS0+aGRpc3BsYXksIG1vZGUtPmhzeW5jX3N0YXJ0 LAo+ICsJICAgIG1vZGUtPmhzeW5jX2VuZCwgbW9kZS0+aHRvdGFsLAo+ICsJICAgIG1vZGUtPnZk aXNwbGF5LCBtb2RlLT52c3luY19zdGFydCwKPiArCSAgICBtb2RlLT52c3luY19lbmQsIG1vZGUt PnZ0b3RhbCwKPiArCSAgICBtb2RlLT50eXBlLCBtb2RlLT5mbGFncyk7Cj4gKwo+ICsJaW5kZXgg PSBkcm1fY3J0Y19pbmRleChjcnRjKTsKPiArCWRpdiA9ICh1aW50MzJfdCljbGtfZ2V0X3JhdGUo ZnNsX2Rldi0+Y2xrKSAvIG1vZGUtPmNsb2NrIC8gMTAwMDsKPiArCj4gKwkvKiBDb25maWd1cmUg dGltaW5nczogKi8KPiArCWhicCA9IG1vZGUtPmh0b3RhbCAtIG1vZGUtPmhzeW5jX2VuZDsKPiAr CWhmcCA9IG1vZGUtPmhzeW5jX3N0YXJ0IC0gbW9kZS0+aGRpc3BsYXk7Cj4gKwloc3cgPSBtb2Rl LT5oc3luY19lbmQgLSBtb2RlLT5oc3luY19zdGFydDsKPiArCXZicCA9IG1vZGUtPnZ0b3RhbCAt IG1vZGUtPnZzeW5jX2VuZDsKPiArCXZmcCA9IG1vZGUtPnZzeW5jX3N0YXJ0IC0gbW9kZS0+dmRp c3BsYXk7Cj4gKwl2c3cgPSBtb2RlLT52c3luY19lbmQgLSBtb2RlLT52c3luY19zdGFydDsKPiAr Cj4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfSFNZTl9QQVJBLAo+ICsJCSAg ICAgRENVX0hTWU5fUEFSQV9CUChoYnApIHwKPiArCQkgICAgIERDVV9IU1lOX1BBUkFfUFcoaHN3 KSB8Cj4gKwkJICAgICBEQ1VfSFNZTl9QQVJBX0ZQKGhmcCkpOwo+ICsJcmVnbWFwX3dyaXRlKGZz bF9kZXYtPnJlZ21hcCwgRENVX1ZTWU5fUEFSQSwKPiArCQkgICAgIERDVV9WU1lOX1BBUkFfQlAo dmJwKSB8Cj4gKwkJICAgICBEQ1VfVlNZTl9QQVJBX1BXKHZzdykgfAo+ICsJCSAgICAgRENVX1ZT WU5fUEFSQV9GUCh2ZnApKTsKPiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9E SVNQX1NJWkUsCj4gKwkJICAgICBEQ1VfRElTUF9TSVpFX0RFTFRBX1kobW9kZS0+dmRpc3BsYXkp IHwKPiArCQkgICAgIERDVV9ESVNQX1NJWkVfREVMVEFfWChtb2RlLT5oZGlzcGxheSkpOwo+ICsJ cmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0RJVl9SQVRJTywgZGl2KTsKPiArCXJl Z21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9VUERBVEVfTU9ERSwgRENVX1VQREFURV9N T0RFX1JFQURSRUcpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBmc2xfZGN1X2RybV9jcnRjX21v ZGVfZml4dXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCQkJCWNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptb2RlLAo+ICsJCQkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1 c3RlZF9tb2RlKQo+ICt7Cj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQg ZnNsX2RjdV9kcm1fY3J0Y19wcmVwYXJlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArewo+ICt9 Cj4gKwo+ICsvKiBOb3cgZW5hYmxlIHRoZSBjbG9ja3MsIHBsYW5lLCBwaXBlLCBhbmQgY29ubmVj dG9ycyB0aGF0IHdlIHNldCB1cC4gKi8KPiArc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fY3J0Y19t b2RlX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gK3sKPiArfQo+ICsKPiArc3RhdGlj IGludCBmc2xfZGN1X2RybV9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Cj4gKwkJCQkJIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCXJldHVybiAw Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9jcnRjX2F0b21pY19iZWdpbihz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gK3sKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnNsX2Rj dV9kcm1fY3J0Y19hdG9taWNfZmx1c2goc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICt7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2Rpc2FibGVfY3J0YyhzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCj4gK3sKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19m dW5jcyBmc2xfZGN1X2RybV9jcnRjX2Z1bmNzID0gewo+ICsJLnBhZ2VfZmxpcCA9IGRybV9hdG9t aWNfaGVscGVyX3BhZ2VfZmxpcCwKPiArCS5zZXRfY29uZmlnID0gZHJtX2NydGNfaGVscGVyX3Nl dF9jb25maWcsCgpUaGlzIGlzIHRoZSBsZWdhY3kgZnVuY3Rpb24sIHBsZWFzZSB1c2UgdGhlIGF0 b21pYyBvbmUgaW5zdGVhZCBmcm9tCmRybV9hdG9taWNfaGVscGVyLmMgZm9yIC0+c2V0X2NvbmZp Zy4KCj4gKwkuZGVzdHJveSA9IGRybV9jcnRjX2NsZWFudXAsCj4gKwkucmVzZXQgPSBkcm1fYXRv bWljX2hlbHBlcl9jcnRjX3Jlc2V0LAo+ICsJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1f YXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZSwKPiArCS5hdG9taWNfZGVzdHJveV9z dGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0ZSwKPiArfTsKPiArCj4g K3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2NydGNfZHBtcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMs IGludCBtb2RlKQo+ICt7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNf aGVscGVyX2Z1bmNzIGZzbF9kY3VfZHJtX2NydGNfaGVscGVyX2Z1bmNzID0gewo+ICsJLmRpc2Fi bGUgPSBmc2xfZGN1X2RybV9kaXNhYmxlX2NydGMsCj4gKwkubW9kZV9maXh1cCA9IGZzbF9kY3Vf ZHJtX2NydGNfbW9kZV9maXh1cCwKPiArCS5tb2RlX3NldCA9IGRybV9oZWxwZXJfY3J0Y19tb2Rl X3NldCwKPiArCS5tb2RlX3NldF9ub2ZiID0gZnNsX2RjdV9kcm1fY3J0Y19tb2RlX3NldF9ub2Zi LAo+ICsJLm1vZGVfc2V0X2Jhc2UgPSBkcm1faGVscGVyX2NydGNfbW9kZV9zZXRfYmFzZSwKPiAr CS5wcmVwYXJlID0gZnNsX2RjdV9kcm1fY3J0Y19wcmVwYXJlLAo+ICsJLmNvbW1pdCA9IGZzbF9k Y3VfZHJtX2NydGNfbW9kZV9jb21taXQsCj4gKwkuYXRvbWljX2NoZWNrID0gZnNsX2RjdV9kcm1f Y3J0Y19hdG9taWNfY2hlY2ssCj4gKwkuYXRvbWljX2JlZ2luID0gZnNsX2RjdV9kcm1fY3J0Y19h dG9taWNfYmVnaW4sCj4gKwkuYXRvbWljX2ZsdXNoID0gZnNsX2RjdV9kcm1fY3J0Y19hdG9taWNf Zmx1c2gsCj4gKwkuZHBtcyA9IGZzbF9kY3VfZHJtX2NydGNfZHBtcywKPiArfTsKPiArCj4gK2lu dCBmc2xfZGN1X2RybV9jcnRjX2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xf ZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5Owo+ICsJc3RydWN0IGRybV9j cnRjICpjcnRjID0gJmZzbF9kZXYtPmNydGMuY3J0YzsKPiArCWludCByZXQ7Cj4gKwo+ICsJZnNs X2Rldi0+Y3J0Yy5kcG1zID0gRFJNX01PREVfRFBNU19PRkY7Cj4gKwo+ICsJcHJpbWFyeSA9IGZz bF9kY3VfZHJtX3ByaW1hcnlfY3JlYXRlX3BsYW5lKGZzbF9kZXYtPmRkZXYpOwo+ICsJcmV0ID0g ZHJtX2NydGNfaW5pdF93aXRoX3BsYW5lcyhmc2xfZGV2LT5kZGV2LCBjcnRjLCBwcmltYXJ5LCBO VUxMLAo+ICsJCQkJCSZmc2xfZGN1X2RybV9jcnRjX2Z1bmNzKTsKPiArCWlmIChyZXQgPCAwKQo+ ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJZHJtX2NydGNfaGVscGVyX2FkZChjcnRjLCAmZnNsX2Rj dV9kcm1fY3J0Y19oZWxwZXJfZnVuY3MpOwo+ICsKPiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5y ZWdtYXAsIERDVV9TWU5fUE9MLAo+ICsJCSAgICAgRENVX1NZTl9QT0xfSU5WX1ZTX0xPVyB8IERD VV9TWU5fUE9MX0lOVl9IU19MT1cpOwo+ICsJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwg RENVX0JHTkQsIERDVV9CR05EX1IoMCkgfAo+ICsJCSAgICAgRENVX0JHTkRfRygwKSB8IERDVV9C R05EX0IoMCkpOwo+ICsJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0RDVV9NT0RF LAo+ICsJCSAgICAgRENVX01PREVfQkxFTkRfSVRFUigxKSB8IERDVV9NT0RFX1JBU1RFUl9FTik7 Cj4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVEhSRVNIT0xELAo+ICsJCSAg ICAgRENVX1RIUkVTSE9MRF9MU19CRl9WUyhCRl9WU19WQUwpIHwKPiArCQkgICAgIERDVV9USFJF U0hPTERfT1VUX0JVRl9ISUdIKEJVRl9NQVhfVkFMKSB8Cj4gKwkJICAgICBEQ1VfVEhSRVNIT0xE X09VVF9CVUZfTE9XKEJVRl9NSU5fVkFMKSk7Cj4gKwlyZWdtYXBfdXBkYXRlX2JpdHMoZnNsX2Rl di0+cmVnbWFwLCBEQ1VfRENVX01PREUsCj4gKwkJCSAgIERDVV9NT0RFX0RDVV9NT0RFX01BU0ss Cj4gKwkJCSAgIERDVV9NT0RFX0RDVV9NT0RFKERDVV9NT0RFX05PUk1BTCkpOwo+ICsJcmVnbWFw X3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX1VQREFURV9NT0RFLCBEQ1VfVVBEQVRFX01PREVf UkVBRFJFRyk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZnNsL2ZzbF9kY3VfZHJtX2NydGMuaCBiL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9k cm1fY3J0Yy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5kNDRiNTY0 Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1f Y3J0Yy5oCj4gQEAgLTAsMCArMSwyNiBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgMjAxNSBGcmVl c2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgo+ICsgKgo+ICsgKiBGcmVlc2NhbGUgRENVIGRybSBk ZXZpY2UgZHJpdmVyCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cj4g KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yCj4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4g KyAqLwo+ICsKPiArI2lmbmRlZiBfX0ZTTF9EQ1VfRFJNX0NSVENfSF9fCj4gKyNkZWZpbmUgX19G U0xfRENVX0RSTV9DUlRDX0hfXwo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNpbmNs dWRlIDxkcm0vZHJtX2NydGMuaD4KPiArCj4gK3N0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2U7Cj4g K3N0cnVjdCBmc2xfZGN1X2RybV9jcnRjIHsKPiArCXN0cnVjdCBkcm1fY3J0YyBjcnRjOwo+ICsJ aW50IGRwbXM7Cj4gK307Cj4gKwo+ICtpbnQgZnNsX2RjdV9kcm1fY3J0Y19jcmVhdGUoc3RydWN0 IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2Rldik7Cj4gKwo+ICsjZW5kaWYgLyogX19GU0xfRENV X0RSTV9DUlRDX0hfXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9k Y3VfZHJtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9kcnYuYwo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMTA5NzVlZQo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2Rydi5jCj4gQEAgLTAs MCArMSwyODggQEAKPiArLyoKPiArICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25k dWN0b3IsIEluYy4KPiArICoKPiArICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZlcgo+ ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+ ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKi8KPiArCj4gKyNp bmNsdWRlIDxsaW51eC9jbGsuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9tbS5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxs aW51eC9vZl9wbGF0Zm9ybS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9wbS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5o Pgo+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybVAu aD4KPiArI2luY2x1ZGUgPGxpbnV4L2ZzbC9kY3UuaD4KPiArCj4gKyNpbmNsdWRlICJmc2xfZGN1 X2RybV9kcnYuaCIKPiArI2luY2x1ZGUgImZzbF9kY3VfZHJtX2ttcy5oIgo+ICsKPiArc3RhdGlj IGludCBmc2xfZGN1X3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlkcm1f bW9kZV9jb25maWdfY2xlYW51cChkZXYpOwo+ICsJZHJtX3ZibGFua19jbGVhbnVwKGRldik7Cj4g Kwlkcm1faXJxX3VuaW5zdGFsbChkZXYpOwo+ICsKPiArCWRldi0+ZGV2X3ByaXZhdGUgPSBOVUxM Owo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHJlZ21hcF9jb25m aWcgZnNsX2RjdV9yZWdtYXBfY29uZmlnID0gewo+ICsJLnJlZ19iaXRzID0gMzIsCj4gKwkucmVn X3N0cmlkZSA9IDQsCj4gKwkudmFsX2JpdHMgPSAzMiwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQg ZnNsX2RjdV9ieXBhc3NfdGNvbihzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2LAo+ ICsJCQkgICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucCkKPiArewo+ICsJc3RydWN0IGRldmlj ZV9ub2RlICp0Y29uX25wOwo+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKPiArCXN0 cnVjdCBjbGsgKnRjb25fY2xrOwo+ICsJc3RydWN0IHJlc291cmNlICpyZXM7Cj4gKwl2b2lkIF9f aW9tZW0gKmJhc2U7Cj4gKwo+ICsJdGNvbl9ucCA9IG9mX3BhcnNlX3BoYW5kbGUobnAsICJ0Y29u LWNvbnRyb2xsZXIiLCAwKTsKPiArCWlmICghdGNvbl9ucCkKPiArCQlyZXR1cm4gLUVJTlZBTDsK PiArCj4gKwlwZGV2ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZSh0Y29uX25wKTsKPiArCWlmICgh cGRldikKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwl0Y29uX2NsayA9IGRldm1fY2xrX2dl dCgmcGRldi0+ZGV2LCAidGNvbiIpOwo+ICsJaWYgKElTX0VSUih0Y29uX2NsaykpCj4gKwkJcmV0 dXJuIFBUUl9FUlIodGNvbl9jbGspOwo+ICsJY2xrX3ByZXBhcmVfZW5hYmxlKHRjb25fY2xrKTsK PiArCj4gKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0s IDApOwo+ICsJaWYgKCFyZXMpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJYmFzZSA9IGRl dm1faW9yZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2LCByZXMpOwo+ICsJaWYgKElTX0VSUihiYXNl KSkKPiArCQlyZXR1cm4gUFRSX0VSUihiYXNlKTsKPiArCj4gKwlmc2xfZGV2LT50Y29uX3JlZ21h cCA9IGRldm1fcmVnbWFwX2luaXRfbW1pb19jbGsoJnBkZXYtPmRldiwKPiArCQkJInRjb24iLCBi YXNlLCAmZnNsX2RjdV9yZWdtYXBfY29uZmlnKTsKPiArCWlmIChJU19FUlIoZnNsX2Rldi0+dGNv bl9yZWdtYXApKSB7Cj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAicmVnbWFwIGluaXQgZmFpbGVk XG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUihmc2xfZGV2LT50Y29uX3JlZ21hcCk7Cj4gKwl9Cj4g Kwo+ICsJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnRjb25fcmVnbWFwLCBUQ09OX0NUUkwxLCBUQ09O X0JZUEFTU19FTkFCTEUpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZnNs X2RjdV9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4g K3sKPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBkZXYtPnBsYXRmb3JtZGV2Owo+ ICsJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldjsKPiArCXN0cnVjdCByZXNvdXJj ZSAqcmVzOwo+ICsJdm9pZCBfX2lvbWVtICpiYXNlOwo+ICsJaW50IHJldDsKPiArCj4gKwlmc2xf ZGV2ID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigqZnNsX2RldiksIEdGUF9LRVJO RUwpOwo+ICsJaWYgKCFmc2xfZGV2KQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCWZzbF9k ZXYtPmRldiA9ICZwZGV2LT5kZXY7Cj4gKwlmc2xfZGV2LT5kZGV2ID0gZGV2Owo+ICsJZGV2LT5k ZXZfcHJpdmF0ZSA9IGZzbF9kZXY7Cj4gKwo+ICsJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNl KHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPiArCWJhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3Vy Y2UoJnBkZXYtPmRldiwgcmVzKTsKPiArCWlmIChJU19FUlIoYmFzZSkpIHsKPiArCQlyZXQgPSBQ VFJfRVJSKGJhc2UpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJZnNsX2Rldi0+cmVn bWFwID0gZGV2bV9yZWdtYXBfaW5pdF9tbWlvKCZwZGV2LT5kZXYsCj4gKwkJCWJhc2UsICZmc2xf ZGN1X3JlZ21hcF9jb25maWcpOwo+ICsJaWYgKElTX0VSUihmc2xfZGV2LT5yZWdtYXApKSB7Cj4g KwkJZGV2X2VycigmcGRldi0+ZGV2LCAicmVnbWFwIGluaXQgZmFpbGVkXG4iKTsKPiArCQlyZXR1 cm4gUFRSX0VSUihmc2xfZGV2LT5yZWdtYXApOwo+ICsJfQo+ICsKPiArCXJldCA9IGZzbF9kY3Vf ZHJtX21vZGVzZXRfaW5pdChmc2xfZGV2KTsKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJZGV2X2Vy cigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgbW9kZSBzZXR0aW5nXG4iKTsKPiAr CQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJldCA9IGRybV92YmxhbmtfaW5pdChkZXYsIDEp Owo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8g aW5pdGlhbGl6ZSB2YmxhbmtcbiIpOwo+ICsJCWdvdG8gZG9uZTsKPiArCX0KPiArCj4gKwlyZXQg PSBkcm1faXJxX2luc3RhbGwoZGV2LCBwbGF0Zm9ybV9nZXRfaXJxKGRldi0+cGxhdGZvcm1kZXYs IDApKTsKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVk IHRvIGluc3RhbGwgSVJRIGhhbmRsZXJcbiIpOwo+ICsJCWdvdG8gZG9uZTsKPiArCX0KPiArCj4g KwkvKiBQdXQgVENPTiBpbiBieXBhc3MgbW9kZSwgc28gdGhlIGlucHV0IHNpZ25hbHMgZnJvbSBE Q1UgYXJlIHBhc3NlZAo+ICsJICogdGhyb3VnaCBUQ09OIHVuY2hhbmdlZCAqLwo+ICsJZnNsX2Rj dV9ieXBhc3NfdGNvbihmc2xfZGV2LCBwZGV2LT5kZXYub2Zfbm9kZSk7Cj4gKwo+ICsJZnNsX2Rl di0+Y2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJkY3UiKTsKPiArCWlmIChJU19FUlIo ZnNsX2Rldi0+Y2xrKSkgewo+ICsJCXJldCA9IFBUUl9FUlIoZnNsX2Rldi0+Y2xrKTsKPiArCQlk ZXZfZXJyKCZwZGV2LT5kZXYsICJjb3VsZCBub3QgZ2V0IGNsb2NrXG4iKTsKPiArCQlyZXR1cm4g cmV0Owo+ICsJfQo+ICsJY2xrX3ByZXBhcmVfZW5hYmxlKGZzbF9kZXYtPmNsayk7Cj4gKwo+ICsJ ZGV2X3NldF9kcnZkYXRhKGRldi0+ZGV2LCBmc2xfZGV2KTsKPiArCj4gKwlmc2xfZGN1X2ZiZGV2 X2luaXQoZGV2KTsKPiArCj4gKwlyZXR1cm4gMDsKPiArZG9uZToKPiArCWlmIChyZXQpCj4gKwkJ ZnNsX2RjdV91bmxvYWQoZGV2KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBmc2xfZGN1X2RybV9wcmVjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gK3sKPiArCTsKPiArfQo+ICsKPiArc3RhdGljIGlycXJldHVy bl90IGZzbF9kY3VfZHJtX2lycShpbnQgaXJxLCB2b2lkICphcmcpCj4gK3sKPiArCXJldHVybiBJ UlFfSEFORExFRDsKPiArfQo+ICsKPiArc3RhdGljIGludCBmc2xfZGN1X2RybV9lbmFibGVfdmJs YW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQo+ICt7Cj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fZGlzYWJsZV92Ymxhbmsoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCj4gK3sKPiArCTsKPiArfQo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnNsX2RjdV9kcm1fZm9wcyA9IHsKPiArCS5v d25lcgkJPSBUSElTX01PRFVMRSwKPiArCS5vcGVuCQk9IGRybV9vcGVuLAo+ICsJLnJlbGVhc2UJ PSBkcm1fcmVsZWFzZSwKPiArCS51bmxvY2tlZF9pb2N0bAk9IGRybV9pb2N0bCwKPiArI2lmZGVm IENPTkZJR19DT01QQVQKPiArCS5jb21wYXRfaW9jdGwJPSBkcm1fY29tcGF0X2lvY3RsLAo+ICsj ZW5kaWYKPiArCS5wb2xsCQk9IGRybV9wb2xsLAo+ICsJLnJlYWQJCT0gZHJtX3JlYWQsCj4gKwku bGxzZWVrCQk9IG5vX2xsc2VlaywKPiArCS5tbWFwCQk9IGRybV9nZW1fY21hX21tYXAsCj4gK307 Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgZnNsX2RjdV9kcm1fZHJpdmVyID0gewo+ ICsJLmRyaXZlcl9mZWF0dXJlcwk9IERSSVZFUl9IQVZFX0lSUSB8IERSSVZFUl9HRU0gfCBEUklW RVJfTU9ERVNFVAo+ICsJCQkJfCBEUklWRVJfUFJJTUUsCj4gKwkubG9hZAkJCT0gZnNsX2RjdV9s b2FkLAo+ICsJLnVubG9hZAkJCT0gZnNsX2RjdV91bmxvYWQsCj4gKwkucHJlY2xvc2UJCT0gZnNs X2RjdV9kcm1fcHJlY2xvc2UsCj4gKwkuaXJxX2hhbmRsZXIJCT0gZnNsX2RjdV9kcm1faXJxLAo+ ICsJLmdldF92YmxhbmtfY291bnRlcgk9IGRybV92YmxhbmtfY291bnQsCj4gKwkuZW5hYmxlX3Zi bGFuawkJPSBmc2xfZGN1X2RybV9lbmFibGVfdmJsYW5rLAo+ICsJLmRpc2FibGVfdmJsYW5rCQk9 IGZzbF9kY3VfZHJtX2Rpc2FibGVfdmJsYW5rLAo+ICsJLmdlbV9mcmVlX29iamVjdAk9IGRybV9n ZW1fY21hX2ZyZWVfb2JqZWN0LAo+ICsJLmdlbV92bV9vcHMJCT0gJmRybV9nZW1fY21hX3ZtX29w cywKPiArCS5wcmltZV9oYW5kbGVfdG9fZmQJPSBkcm1fZ2VtX3ByaW1lX2hhbmRsZV90b19mZCwK PiArCS5wcmltZV9mZF90b19oYW5kbGUJPSBkcm1fZ2VtX3ByaW1lX2ZkX3RvX2hhbmRsZSwKPiAr CS5nZW1fcHJpbWVfaW1wb3J0CT0gZHJtX2dlbV9wcmltZV9pbXBvcnQsCj4gKwkuZ2VtX3ByaW1l X2V4cG9ydAk9IGRybV9nZW1fcHJpbWVfZXhwb3J0LAo+ICsJLmdlbV9wcmltZV9nZXRfc2dfdGFi bGUJPSBkcm1fZ2VtX2NtYV9wcmltZV9nZXRfc2dfdGFibGUsCj4gKwkuZ2VtX3ByaW1lX2ltcG9y dF9zZ190YWJsZSA9IGRybV9nZW1fY21hX3ByaW1lX2ltcG9ydF9zZ190YWJsZSwKPiArCS5nZW1f cHJpbWVfdm1hcAkJPSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLAo+ICsJLmdlbV9wcmltZV92dW5t YXAJPSBkcm1fZ2VtX2NtYV9wcmltZV92dW5tYXAsCj4gKwkuZ2VtX3ByaW1lX21tYXAJCT0gZHJt X2dlbV9jbWFfcHJpbWVfbW1hcCwKPiArCS5kdW1iX2NyZWF0ZQkJPSBkcm1fZ2VtX2NtYV9kdW1i X2NyZWF0ZSwKPiArCS5kdW1iX21hcF9vZmZzZXQJPSBkcm1fZ2VtX2NtYV9kdW1iX21hcF9vZmZz ZXQsCj4gKwkuZHVtYl9kZXN0cm95CQk9IGRybV9nZW1fZHVtYl9kZXN0cm95LAo+ICsJLmZvcHMJ CQk9ICZmc2xfZGN1X2RybV9mb3BzLAo+ICsJLm5hbWUJCQk9ICJmc2wtZGN1LWRybSIsCj4gKwku ZGVzYwkJCT0gIkZyZWVzY2FsZSBEQ1UgRFJNIiwKPiArCS5kYXRlCQkJPSAiMjAxNTAyMTMiLAo+ ICsJLm1ham9yCQkJPSAxLAo+ICsJLm1pbm9yCQkJPSAwLAo+ICt9Owo+ICsKPiArI2lmZGVmIENP TkZJR19QTV9TTEVFUAo+ICtzdGF0aWMgaW50IGZzbF9kY3VfZHJtX3BtX3N1c3BlbmQoc3RydWN0 IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2 ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsJZGN1X3BpeGNsa19kaXNhYmxlKCk7Cj4g Kwlkcm1fa21zX2hlbHBlcl9wb2xsX2Rpc2FibGUoZnNsX2Rldi0+ZGRldik7Cj4gKwlmc2xfZGN1 X2RybV9jcnRjX3N1c3BlbmQoJmZzbF9kZXYtPmNydGMpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IGZzbF9kY3VfZHJtX3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpk ZXYpCj4gK3sKPiArCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsKPiArCj4gKwlkcm1fbW9kZXNldF9sb2NrX2FsbChmc2xfZGV2LT5kZGV2 KTsKPiArCWZzbF9kY3VfZHJtX2NydGNfcmVzdW1lKCZmc2xfZGV2LT5jcnRjKTsKPiArCWRybV9t b2Rlc2V0X3VubG9ja19hbGwoZnNsX2Rldi0+ZGRldik7Cj4gKwlkcm1fa21zX2hlbHBlcl9wb2xs X2VuYWJsZShmc2xfZGV2LT5kZGV2KTsKPiArCWRjdV9waXhjbGtfZW5hYmxlKCk7Cj4gKwlyZXR1 cm4gMDsKPiArfQo+ICsjZW5kaWYKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29w cyBmc2xfZGN1X2RybV9wbV9vcHMgPSB7Cj4gKwlTRVRfU1lTVEVNX1NMRUVQX1BNX09QUyhmc2xf ZGN1X2RybV9wbV9zdXNwZW5kLCBmc2xfZGN1X2RybV9wbV9yZXN1bWUpCj4gK307Cj4gKwo+ICtz dGF0aWMgaW50IGZzbF9kY3VfZHJtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp Cj4gK3sKPiArCXJldHVybiBkcm1fcGxhdGZvcm1faW5pdCgmZnNsX2RjdV9kcm1fZHJpdmVyLCBw ZGV2KTsKPiArfQo+ICsKPiArc3RhdGljIGludCBmc2xfZGN1X2RybV9yZW1vdmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAq ZnNsX2RldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+ICsKPiArCWRybV9wdXRfZGV2 KGZzbF9kZXYtPmRkZXYpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IG9mX2RldmljZV9pZCBmc2xfZGN1X29mX21hdGNoW10gPSB7Cj4gKwkJeyAuY29t cGF0aWJsZSA9ICJmc2wsZGN1IiwgfSwKPiArCQl7IH0sCj4gK307Cj4gK01PRFVMRV9ERVZJQ0Vf VEFCTEUob2YsIGZzbF9kY3Vfb2ZfbWF0Y2gpOwo+ICsKPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9y bV9kcml2ZXIgZnNsX2RjdV9kcm1fcGxhdGZvcm1fZHJpdmVyID0gewo+ICsJLnByb2JlCQk9IGZz bF9kY3VfZHJtX3Byb2JlLAo+ICsJLnJlbW92ZQkJPSBmc2xfZGN1X2RybV9yZW1vdmUsCj4gKwku ZHJpdmVyCQk9IHsKPiArCQkub3duZXIJPSBUSElTX01PRFVMRSwKPiArCQkubmFtZQk9ICJmc2ws ZGN1IiwKPiArCQkucG0JPSAmZnNsX2RjdV9kcm1fcG1fb3BzLAo+ICsJCS5vZl9tYXRjaF90YWJs ZSA9IGZzbF9kY3Vfb2ZfbWF0Y2gsCj4gKwl9LAo+ICt9Owo+ICsKPiArbW9kdWxlX3BsYXRmb3Jt X2RyaXZlcihmc2xfZGN1X2RybV9wbGF0Zm9ybV9kcml2ZXIpOwo+ICsKPiArTU9EVUxFX0FMSUFT KCJwbGF0Zm9ybTpmc2wtZGN1LWRybSIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkZyZWVzY2Fs ZSBEQ1UgRFJNIERyaXZlciIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vZnNsL2ZzbF9kY3VfZHJtX2Rydi5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw MDAwMDAwLi5jYmRmZWZjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9m c2wvZnNsX2RjdV9kcm1fZHJ2LmgKPiBAQCAtMCwwICsxLDE2OCBAQAo+ICsvKgo+ICsgKiBDb3B5 cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgo+ICsgKgo+ICsgKiBGcmVl c2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAq IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Cj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX0ZTTF9EQ1VfRFJNX0RSVl9IX18K PiArI2RlZmluZSBfX0ZTTF9EQ1VfRFJNX0RSVl9IX18KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9r ZXJuZWwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+Cj4gKyNpbmNsdWRlIDxzdGRk ZWYuaD4KPiArI2luY2x1ZGUgPGRybS9kcm0uaD4KPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4g KyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRj X2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5oPgo+ICsjaW5j bHVkZSA8ZHJtL2RybV9mYl9jbWFfaGVscGVyLmg+Cj4gKwo+ICsjaW5jbHVkZSAiZnNsX2RjdV9k cm1fY3J0Yy5oIgo+ICsjaW5jbHVkZSAiZnNsX2RjdV9kcm1fcGxhbmUuaCIKPiArI2luY2x1ZGUg ImZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5oIgo+ICsjZGVmaW5lIERSSVZFUl9OQU1FCQkJImZzbC1k Y3UtZmIiCj4gKwo+ICsjZGVmaW5lIERDVV9EQ1VfTU9ERQkJCTB4MDAxMAo+ICsjZGVmaW5lIERD VV9NT0RFX0JMRU5EX0lURVIoeCkJCSgoeCkgPDwgMjApCj4gKyNkZWZpbmUgRENVX01PREVfUkFT VEVSX0VOCQlCSVQoMTQpCj4gKyNkZWZpbmUgRENVX01PREVfRENVX01PREUoeCkJCSh4KQo+ICsj ZGVmaW5lIERDVV9NT0RFX0RDVV9NT0RFX01BU0sJCTB4MDMKPiArI2RlZmluZSBEQ1VfTU9ERV9P RkYJCQkwCj4gKyNkZWZpbmUgRENVX01PREVfTk9STUFMCQkJMQo+ICsjZGVmaW5lIERDVV9NT0RF X1RFU1QJCQkyCj4gKyNkZWZpbmUgRENVX01PREVfQ09MT1JCQVIJCTMKPiArCj4gKyNkZWZpbmUg RENVX0JHTkQJCQkweDAwMTQKPiArI2RlZmluZSBEQ1VfQkdORF9SKHgpCQkJKCh4KSA8PCAxNikK PiArI2RlZmluZSBEQ1VfQkdORF9HKHgpCQkJKCh4KSA8PCA4KQo+ICsjZGVmaW5lIERDVV9CR05E X0IoeCkJCQkoeCkKPiArCj4gKyNkZWZpbmUgRENVX0RJU1BfU0laRQkJCTB4MDAxOAo+ICsjZGVm aW5lIERDVV9ESVNQX1NJWkVfREVMVEFfWSh4KQkoKHgpIDw8IDE2KQo+ICsvKlJlZ2lzaXRlciB2 YWx1ZSAxLzE2IG9mIGhvcml6b250YWwgcmVzb2x1dGlvbiovCj4gKyNkZWZpbmUgRENVX0RJU1Bf U0laRV9ERUxUQV9YKHgpCSgoeCkgPj4gNCkKPiArCj4gKyNkZWZpbmUgRENVX0hTWU5fUEFSQQkJ CTB4MDAxYwo+ICsjZGVmaW5lIERDVV9IU1lOX1BBUkFfQlAoeCkJCSgoeCkgPDwgMjIpCj4gKyNk ZWZpbmUgRENVX0hTWU5fUEFSQV9QVyh4KQkJKCh4KSA8PCAxMSkKPiArI2RlZmluZSBEQ1VfSFNZ Tl9QQVJBX0ZQKHgpCQkoeCkKPiArCj4gKyNkZWZpbmUgRENVX1ZTWU5fUEFSQQkJCTB4MDAyMAo+ ICsjZGVmaW5lIERDVV9WU1lOX1BBUkFfQlAoeCkJCSgoeCkgPDwgMjIpCj4gKyNkZWZpbmUgRENV X1ZTWU5fUEFSQV9QVyh4KQkJKCh4KSA8PCAxMSkKPiArI2RlZmluZSBEQ1VfVlNZTl9QQVJBX0ZQ KHgpCQkoeCkKPiArCj4gKyNkZWZpbmUgRENVX1NZTl9QT0wJCQkweDAwMjQKPiArI2RlZmluZSBE Q1VfU1lOX1BPTF9JTlZfUFhDS19GQUxMCSgwIDw8IDYpCj4gKyNkZWZpbmUgRENVX1NZTl9QT0xf TkVHX1JFTUFJTgkJKDAgPDwgNSkKPiArI2RlZmluZSBEQ1VfU1lOX1BPTF9JTlZfVlNfTE9XCQlC SVQoMSkKPiArI2RlZmluZSBEQ1VfU1lOX1BPTF9JTlZfSFNfTE9XCQkoMSkKPiArCj4gKyNkZWZp bmUgRENVX1RIUkVTSE9MRAkJCTB4MDAyOAo+ICsjZGVmaW5lIERDVV9USFJFU0hPTERfTFNfQkZf VlMoeCkJKCh4KSA8PCAxNikKPiArI2RlZmluZSBEQ1VfVEhSRVNIT0xEX09VVF9CVUZfSElHSCh4 KQkoKHgpIDw8IDgpCj4gKyNkZWZpbmUgRENVX1RIUkVTSE9MRF9PVVRfQlVGX0xPVyh4KQkoeCkK PiArI2RlZmluZSBCRl9WU19WQUwJCQkweDAzCj4gKyNkZWZpbmUgQlVGX01BWF9WQUwJCQkweDc4 Cj4gKyNkZWZpbmUgQlVGX01JTl9WQUwJCQkweDBhCj4gKwo+ICsjZGVmaW5lIERDVV9JTlRfU1RB VFVTCQkJMHgwMDJDCj4gKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfVU5EUlVOCQlCSVQoMSkKPiAr Cj4gKyNkZWZpbmUgRENVX0lOVF9NQVNLCQkJMHgwMDMwCj4gKyNkZWZpbmUgRENVX0lOVF9NQVNL X1VORFJVTgkJQklUKDEpCj4gKyNkZWZpbmUgRENVX0lOVF9NQVNLX1ZCTEFOSwkJQklUKDMpCj4g Kwo+ICsjZGVmaW5lIERDVV9ESVZfUkFUSU8JCQkweDAwNTQKPiArCj4gKyNkZWZpbmUgRENVX1VQ REFURV9NT0RFCQkJMHgwMGNjCj4gKyNkZWZpbmUgRENVX1VQREFURV9NT0RFX01PREUJCUJJVCgz MSkKPiArI2RlZmluZSBEQ1VfVVBEQVRFX01PREVfUkVBRFJFRwkJQklUKDMwKQo+ICsKPiArI2Rl ZmluZSBEQ1VfRENGQl9NQVgJCQkweDMwMAo+ICsKPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl8x KHgpCQkoMHgyMDAgKyAoeCkgKiAweDQwKQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzFfSEVJ R0hUKHgpCSgoeCkgPDwgMTYpCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMV9XSURUSCh4KQko eCkKPiArCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMih4KQkJKDB4MjA0ICsgKHgpICogMHg0 MCkKPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl8yX1BPU1koeCkJKCh4KSA8PCAxNikKPiArI2Rl ZmluZSBEQ1VfQ1RSTERFU0NMTl8yX1BPU1goeCkJKHgpCj4gKwo+ICsjZGVmaW5lIERDVV9DVFJM REVTQ0xOXzMoeCkJCSgweDIwOCArICh4KSAqIDB4NDApCj4gKwo+ICsjZGVmaW5lIERDVV9DVFJM REVTQ0xOXzQoeCkJCSgweDIwYyArICh4KSAqIDB4NDApCj4gKyNkZWZpbmUgRENVX0NUUkxERVND TE5fNF9FTgkJQklUKDMxKQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzRfVElMRV9FTglCSVQo MzApCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9EQVRBX1NFTF9DTFVUCUJJVCgyOSkKPiAr I2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80X1NBRkVUWV9FTglCSVQoMjgpCj4gKyNkZWZpbmUgRENV X0NUUkxERVNDTE5fNF9UUkFOUyh4KQkoKHgpIDw8IDIwKQo+ICsjZGVmaW5lIERDVV9DVFJMREVT Q0xOXzRfQlBQKHgpCQkoKHgpIDw8IDE2KQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzRfUkxF X0VOCQlCSVQoMTUpCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9MVU9GRlMoeCkJKCh4KSA8 PCA0KQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzRfQkJfT04JCUJJVCgyKQo+ICsjZGVmaW5l IERDVV9DVFJMREVTQ0xOXzRfQUIoeCkJCSh4KQo+ICsKPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NM Tl81KHgpCQkoMHgyMTAgKyAoeCkgKiAweDQwKQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzVf Q0tNQVhfUih4KQkoKHgpIDw8IDE2KQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzVfQ0tNQVhf Ryh4KQkoKHgpIDw8IDgpCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNV9DS01BWF9CKHgpCSh4 KQo+ICsKPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl82KHgpCQkoMHgyMTQgKyAoeCkgKiAweDQw KQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzZfQ0tNSU5fUih4KQkoKHgpIDw8IDE2KQo+ICsj ZGVmaW5lIERDVV9DVFJMREVTQ0xOXzZfQ0tNSU5fRyh4KQkoKHgpIDw8IDgpCj4gKyNkZWZpbmUg RENVX0NUUkxERVNDTE5fNl9DS01JTl9CKHgpCSh4KQo+ICsKPiArI2RlZmluZSBEQ1VfQ1RSTERF U0NMTl83KHgpCQkoMHgyMTggKyAoeCkgKiAweDQwKQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xO XzdfVElMRV9WRVIoeCkJKCh4KSA8PCAxNikKPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl83X1RJ TEVfSE9SKHgpCSh4KQo+ICsKPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl84KHgpCQkoMHgyMWMg KyAoeCkgKiAweDQwKQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzhfRkdfRkNPTE9SKHgpCSh4 KQo+ICsKPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl85KHgpCQkoMHgyMjAgKyAoeCkgKiAweDQw KQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzlfQkdfQkNPTE9SKHgpCSh4KQo+ICsKPiArI2Rl ZmluZSBEQ1VfQ1RSTERFU0NMTl8xMCh4KQkJKDB4MjI0ICsgKHgpICogMHg0MCkKPiArI2RlZmlu ZSBEQ1VfQ1RSTERFU0NMTl8xMF9QT1NUX1NLSVAoeCkJKCh4KSA8PCAxNikKPiArI2RlZmluZSBE Q1VfQ1RSTERFU0NMTl8xMF9QUkVfU0tJUCh4KQkoeCkKPiArCj4gKyNkZWZpbmUgRlNMX0RDVV9S R0I1NjUJCQk0Cj4gKyNkZWZpbmUgRlNMX0RDVV9SR0I4ODgJCQk1Cj4gKyNkZWZpbmUgRlNMX0RD VV9BUkdCODg4OAkJNgo+ICsjZGVmaW5lIEZTTF9EQ1VfQVJHQjE1NTUJCTExCj4gKyNkZWZpbmUg RlNMX0RDVV9BUkdCNDQ0NAkJMTIKPiArI2RlZmluZSBGU0xfRENVX1lVVjQyMgkJCTE0Cj4gKwo+ ICsjZGVmaW5lIFRDT05fQ1RSTDEJCQkweDAwMDAKPiArI2RlZmluZSBUQ09OX0JZUEFTU19FTkFC TEUJCUJJVCgyOSkKPiArCj4gKyNkZWZpbmUgREJHKGZtdCwgLi4uKSBEUk1fREVCVUcoZm10Ilxu IiwgIyNfX1ZBX0FSR1NfXykKPiArCj4gK3N0cnVjdCBjbGs7Cj4gK3N0cnVjdCBkZXZpY2U7Cj4g K3N0cnVjdCBkcm1fZGV2aWNlOwo+ICsKPiArc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSB7Cj4g KwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7Cj4gKwlzdHJ1 Y3QgcmVnbWFwICp0Y29uX3JlZ21hcDsKPiArCXVuc2lnbmVkIGludCBpcnE7Cj4gKwlzdHJ1Y3Qg Y2xrICpjbGs7Cj4gKwkvKnByb3RlY3RzIGhhcmR3YXJlIHJlZ2lzdGVyKi8KPiArCXNwaW5sb2Nr X3QgaXJxX2xvY2s7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGRldjsKPiArCXN0cnVjdCBkcm1f ZmJkZXZfY21hICpmYmRldjsKPiArCXN0cnVjdCBmc2xfZGN1X2RybV9jcnRjIGNydGM7Cj4gKwlz dHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsKPiArCXN0cnVjdCBmc2xfZGN1X2RybV9jb25uZWN0 b3IgY29ubmVjdG9yOwo+ICt9Owo+ICsKPiArdm9pZCBmc2xfZGN1X2ZiZGV2X2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7Cj4gKwo+ICsjZW5kaWYgLyogX19GU0xfRENVX0RSTV9EUlZfSF9f ICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fZmJkZXYu YyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fZmJkZXYuYwo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uZjhlZjBlMQo+IC0tLSAvZGV2L251bGwKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2ZiZGV2LmMKPiBAQCAtMCwwICsxLDI2 IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJ bmMuCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cj4gKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieQo+ ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0 IFdJVEhPVVQKPiArICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKPiArICog bW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9jbWFfaGVscGVyLmg+Cj4gKwo+ICsjaW5jbHVkZSAiZnNs X2RjdV9kcm1fZHJ2LmgiCj4gKwo+ICsvKiBpbml0aWFsaXplIGZiZGV2IGhlbHBlciAqLwo+ICt2 b2lkIGZzbF9kY3VfZmJkZXZfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlz dHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldi0+ ZGV2KTsKPiArCj4gKwlmc2xfZGV2LT5mYmRldiA9IGRybV9mYmRldl9jbWFfaW5pdChkZXYsIDI0 LCAxLCAxKTsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3Vf ZHJtX2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9rbXMuYwo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNGE4NDBmYgo+IC0tLSAvZGV2L251bGwK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2ttcy5jCj4gQEAgLTAsMCAr MSw0MiBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3Rv ciwgSW5jLgo+ICsgKgo+ICsgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCj4gKyAq Cj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cj4gKyAqIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAq IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAqLwo+ICsKPiArI2luY2x1 ZGUgPGRybS9kcm1QLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiAr Cj4gKyNpbmNsdWRlICJmc2xfZGN1X2RybV9jcnRjLmgiCj4gKyNpbmNsdWRlICJmc2xfZGN1X2Ry bV9jb25uZWN0b3IuaCIKPiArI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgo+ICsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MgZnNsX2RjdV9kcm1fbW9kZV9j b25maWdfZnVuY3MgPSB7Cj4gKwkuZmJfY3JlYXRlID0gZHJtX2ZiX2NtYV9jcmVhdGUsCj4gKwku YXRvbWljX2NoZWNrID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2ssCj4gKwkuYXRvbWljX2NvbW1p dCA9IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdCwKPiArfTsKPiArCj4gK2ludCBmc2xfZGN1X2Ry bV9tb2Rlc2V0X2luaXQoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldikKPiArewo+ ICsJZHJtX21vZGVfY29uZmlnX2luaXQoZnNsX2Rldi0+ZGRldik7Cj4gKwo+ICsJZnNsX2Rldi0+ ZGRldi0+bW9kZV9jb25maWcubWluX3dpZHRoID0gMDsKPiArCWZzbF9kZXYtPmRkZXYtPm1vZGVf Y29uZmlnLm1pbl9oZWlnaHQgPSAwOwo+ICsJZnNsX2Rldi0+ZGRldi0+bW9kZV9jb25maWcubWF4 X3dpZHRoID0gMjAzMTsKPiArCWZzbF9kZXYtPmRkZXYtPm1vZGVfY29uZmlnLm1heF9oZWlnaHQg PSAyMDQ3Owo+ICsJZnNsX2Rldi0+ZGRldi0+bW9kZV9jb25maWcuZnVuY3MgPSAmZnNsX2RjdV9k cm1fbW9kZV9jb25maWdfZnVuY3M7Cj4gKwo+ICsJZHJtX2ttc19oZWxwZXJfcG9sbF9pbml0KGZz bF9kZXYtPmRkZXYpOwo+ICsJZnNsX2RjdV9kcm1fY3J0Y19jcmVhdGUoZnNsX2Rldik7Cj4gKwlm c2xfZGN1X2RybV9lbmNvZGVyX2NyZWF0ZShmc2xfZGV2KTsKPiArCWZzbF9kY3VfZHJtX2Nvbm5l Y3Rvcl9jcmVhdGUoZnNsX2RldiwgJmZzbF9kZXYtPmVuY29kZXIpOwo+ICsJZHJtX21vZGVfY29u ZmlnX3Jlc2V0KGZzbF9kZXYtPmRkZXYpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fa21zLmggYi9kcml2ZXJzL2dw dS9kcm0vZnNsL2ZzbF9kY3VfZHJtX2ttcy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwLi5iOWJkMjk5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9mc2wvZnNsX2RjdV9kcm1fa21zLmgKPiBAQCAtMCwwICsxLDE3IEBACj4gKy8qCj4gKyAqIENv cHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCj4gKyAqCj4gKyAqIEZy ZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiAr ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9fRlNMX0RDVV9EUk1fS01TX0hf Xwo+ICsjZGVmaW5lIF9fRlNMX0RDVV9EUk1fS01TX0hfXwo+ICsKPiAraW50IGZzbF9kY3VfZHJt X21vZGVzZXRfaW5pdChzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2KTsKPiArCj4g KyNlbmRpZiAvKiBfX0ZTTF9EQ1VfRFJNX0tNU19IX18gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9m c2xfZGN1X2RybV9wbGFuZS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw Li5iN2I0NDA1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNs X2RjdV9kcm1fcGxhbmUuYwo+IEBAIC0wLDAgKzEsMTg3IEBACj4gKy8qCj4gKyAqIENvcHlyaWdo dCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCj4gKyAqCj4gKyAqIEZyZWVzY2Fs ZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUg PGRybS9kcm1fY3J0Yy5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ICsj aW5jbHVkZSA8ZHJtL2RybV9mYl9jbWFfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dl bV9jbWFfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPiArI2luY2x1ZGUg PGRybS9kcm1fcGxhbmVfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxw ZXIuaD4KPiArCj4gKyNpbmNsdWRlICJmc2xfZGN1X2RybV9kcnYuaCIKPiArI2luY2x1ZGUgImZz bF9kY3VfZHJtX2ttcy5oIgo+ICsjaW5jbHVkZSAiZnNsX2RjdV9kcm1fcGxhbmUuaCIKPiArCj4g KyNkZWZpbmUgdG9fZnNsX2RjdV9wbGFuZShwbGFuZSkgXAo+ICsJY29udGFpbmVyX29mKHBsYW5l LCBzdHJ1Y3QgZnNsX2RjdV9kcm1fcGxhbmUsIHBsYW5lKQo+ICsKPiArc3RhdGljIGludAo+ICtm c2xfZGN1X2RybV9wbGFuZV9wcmVwYXJlX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICsJ CQkgICAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ICsJCQkgICAgIGNvbnN0IHN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKm5ld19zdGF0ZSkKPiArewo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkCj4gK2ZzbF9kY3VfZHJtX3BsYW5lX2NsZWFudXBfZmIoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCj4gKwkJCSAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4g KwkJCSAgICAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3N0YXRlKQo+ICt7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLAo+ICsJCQkJCSAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3Rh dGUpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBmc2xfZGN1X2Ry bV9wbGFuZV9hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJCQkg ICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKPiArewo+ICt9Cj4gKwo+ICt2 b2lkIGZzbF9kY3VfZHJtX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCj4gKwkJCQkgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKPiArewo+ ICsJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IHBsYW5lLT5kZXYtPmRldl9w cml2YXRlOwo+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUgPSBwbGFuZS0+c3RhdGU7 Cj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lLT5zdGF0ZS0+ZmI7Cj4gKwl1 MzIgaW5kZXgsIGFscGhhLCBicHA7Cj4gKwlzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpnZW07 Cj4gKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fcGxhbmUgKmZzbF9wbGFuZSA9IHRvX2ZzbF9kY3VfcGxh bmUocGxhbmUpOwo+ICsKPiArCWluZGV4ID0gZnNsX3BsYW5lLT5pbmRleDsKPiArCWdlbSA9IGRy bV9mYl9jbWFfZ2V0X2dlbV9vYmooZmIsIDApOwo+ICsKPiArCXN3aXRjaCAoZmItPnBpeGVsX2Zv cm1hdCkgewo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToKPiArCQlicHAgPSBGU0xfRENVX1JH QjU2NTsKPiArCQlhbHBoYSA9IDB4ZmY7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERSTV9GT1JNQVRf UkdCODg4Ogo+ICsJCWJwcCA9IEZTTF9EQ1VfUkdCODg4Owo+ICsJCWFscGhhID0gMHhmZjsKPiAr CQlicmVhazsKPiArCWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKPiArCQlicHAgPSBGU0xfRENV X0FSR0I4ODg4Owo+ICsJCWFscGhhID0gMHhmZjsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX0ZP Uk1BVF9CR1JBNDQ0NDoKPiArCQlicHAgPSBGU0xfRENVX0FSR0I0NDQ0Owo+ICsJCWFscGhhID0g MHhmZjsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX0ZPUk1BVF9BUkdCMTU1NToKPiArCQlicHAg PSBGU0xfRENVX0FSR0IxNTU1Owo+ICsJCWFscGhhID0gMHhmZjsKPiArCQlicmVhazsKPiArCWNh c2UgRFJNX0ZPUk1BVF9ZVVY0MjI6Cj4gKwkJYnBwID0gRlNMX0RDVV9ZVVY0MjI7Cj4gKwkJYWxw aGEgPSAweGZmOwo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlyZXR1cm47Cj4gKwl9Cj4g Kwo+ICsJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fMShpbmRl eCksCj4gKwkJICAgICBEQ1VfQ1RSTERFU0NMTl8xX0hFSUdIVChzdGF0ZS0+Y3J0Y19oKSB8Cj4g KwkJICAgICBEQ1VfQ1RSTERFU0NMTl8xX1dJRFRIKHN0YXRlLT5jcnRjX3cpKTsKPiArCXJlZ21h cF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzIoaW5kZXgpLAo+ICsJCSAg ICAgRENVX0NUUkxERVNDTE5fMl9QT1NZKHN0YXRlLT5jcnRjX3kpIHwKPiArCQkgICAgIERDVV9D VFJMREVTQ0xOXzJfUE9TWChzdGF0ZS0+Y3J0Y194KSk7Cj4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rl di0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl8zKGluZGV4KSwgZ2VtLT5wYWRkcik7Cj4gKwlyZWdt YXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl80KGluZGV4KSwKPiArCQkg ICAgIERDVV9DVFJMREVTQ0xOXzRfRU4gfAo+ICsJCSAgICAgRENVX0NUUkxERVNDTE5fNF9UUkFO UyhhbHBoYSkgfAo+ICsJCSAgICAgRENVX0NUUkxERVNDTE5fNF9CUFAoYnBwKSB8Cj4gKwkJICAg ICBEQ1VfQ1RSTERFU0NMTl80X0FCKDIpKTsKPiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdt YXAsIERDVV9DVFJMREVTQ0xOXzUoaW5kZXgpLAo+ICsJCSAgICAgRENVX0NUUkxERVNDTE5fNV9D S01BWF9SKDB4RkYpIHwKPiArCQkgICAgIERDVV9DVFJMREVTQ0xOXzVfQ0tNQVhfRygweEZGKSB8 Cj4gKwkJICAgICBEQ1VfQ1RSTERFU0NMTl81X0NLTUFYX0IoMHhGRikpOwo+ICsJcmVnbWFwX3dy aXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fNihpbmRleCksCj4gKwkJICAgICBE Q1VfQ1RSTERFU0NMTl82X0NLTUlOX1IoMCkgfAo+ICsJCSAgICAgRENVX0NUUkxERVNDTE5fNl9D S01JTl9HKDApIHwKPiArCQkgICAgIERDVV9DVFJMREVTQ0xOXzZfQ0tNSU5fQigwKSk7Cj4gKwly ZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl84KGluZGV4KSwKPiAr CQkgICAgIERDVV9DVFJMREVTQ0xOXzhfRkdfRkNPTE9SKDApKTsKPiArCXJlZ21hcF93cml0ZShm c2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzkoaW5kZXgpLAo+ICsJCSAgICAgRENVX0NU UkxERVNDTE5fOV9CR19CQ09MT1IoMCkpOwo+ICsJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21h cCwgRENVX0NUUkxERVNDTE5fMTAoaW5kZXgpLAo+ICsJCSAgICAgRENVX0NUUkxERVNDTE5fMTBf UE9TVF9TS0lQKDApIHwKPiArCQkgICAgIERDVV9DVFJMREVTQ0xOXzEwX1BSRV9TS0lQKDApKTsK PiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9VUERBVEVfTU9ERSwgRENVX1VQ REFURV9NT0RFX1JFQURSRUcpOwo+ICt9Cj4gKwo+ICtpbnQgZnNsX2RjdV9kcm1fcGxhbmVfZGlz YWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPiArewo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr Cj4gK3ZvaWQgZnNsX2RjdV9kcm1fcGxhbmVfZGVzdHJveShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSkKPiArewo+ICsJZnNsX2RjdV9kcm1fcGxhbmVfZGlzYWJsZShwbGFuZSk7Cj4gKwlkcm1fcGxh bmVfY2xlYW51cChwbGFuZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCB1aW50MzJfdCBmc2xf ZGN1X2RybV9wbGFuZV9mb3JtYXRzW10gPSB7Cj4gKwlEUk1fRk9STUFUX1JHQjU2NSwKPiArCURS TV9GT1JNQVRfUkdCODg4LAo+ICsJRFJNX0ZPUk1BVF9BUkdCODg4OCwKPiArCURSTV9GT1JNQVRf QVJHQjQ0NDQsCj4gKwlEUk1fRk9STUFUX0FSR0IxNTU1LAo+ICsJRFJNX0ZPUk1BVF9ZVVY0MjIs Cj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBmc2xfZGN1 X2RybV9wbGFuZV9mdW5jcyA9IHsKPiArCS51cGRhdGVfcGxhbmUgPSBkcm1fcGxhbmVfaGVscGVy X3VwZGF0ZSwKPiArCS5kaXNhYmxlX3BsYW5lID0gZHJtX3BsYW5lX2hlbHBlcl9kaXNhYmxlLAoK VGhlc2UgYXJlIHRoZSB0cmFuc2l0aW9uYWwgaGVscGVycyB1c2VkIGZvciBjb252ZXJ0aW5nIGRy aXZlcnMsIHBsZWFzZQpzd2l0Y2ggdG8gdGhlIGF0b21pYyBoZWxwZXJzIGluIGRybV9hdG9taWNf aGVscGVyLmMuCgo+ICsJLmRlc3Ryb3kgPSBmc2xfZGN1X2RybV9wbGFuZV9kZXN0cm95LAo+ICsJ LmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNh dGVfc3RhdGUsCj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9w bGFuZV9kZXN0cm95X3N0YXRlLAo+ICsJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVf cmVzZXQsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJf ZnVuY3MgZnNsX2RjdV9kcm1fcGxhbmVfaGVscGVyX2Z1bmNzID0gewo+ICsJLnByZXBhcmVfZmIg PSBmc2xfZGN1X2RybV9wbGFuZV9wcmVwYXJlX2ZiLAo+ICsJLmNsZWFudXBfZmIgPSBmc2xfZGN1 X2RybV9wbGFuZV9jbGVhbnVwX2ZiLAo+ICsJLmF0b21pY19jaGVjayA9IGZzbF9kY3VfZHJtX3Bs YW5lX2F0b21pY19jaGVjaywKPiArCS5hdG9taWNfdXBkYXRlID0gZnNsX2RjdV9kcm1fcGxhbmVf YXRvbWljX3VwZGF0ZSwKPiArCS5hdG9taWNfZGlzYWJsZSA9IGZzbF9kY3VfZHJtX3BsYW5lX2F0 b21pY19kaXNhYmxlLAo+ICt9Owo+ICsKPiArc3RydWN0IGRybV9wbGFuZSAqZnNsX2RjdV9kcm1f cHJpbWFyeV9jcmVhdGVfcGxhbmUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJc3Ry dWN0IGRybV9wbGFuZSAqcHJpbWFyeTsKPiArCWludCByZXQ7Cj4gKwo+ICsJcHJpbWFyeSA9IGt6 YWxsb2Moc2l6ZW9mKCpwcmltYXJ5KSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXByaW1hcnkpIHsK PiArCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gYWxsb2NhdGUgcHJpbWFyeSBwbGFuZVxuIik7 Cj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwl9Cj4gKwo+ICsJLyogcG9zc2libGVfY3J0YydzIHdpbGwg YmUgZmlsbGVkIGluIGxhdGVyIGJ5IGNydGNfaW5pdCAqLwo+ICsJcmV0ID0gZHJtX3VuaXZlcnNh bF9wbGFuZV9pbml0KGRldiwgcHJpbWFyeSwgMCwKPiArCQkJCSAgICAgICAmZnNsX2RjdV9kcm1f cGxhbmVfZnVuY3MsCj4gKwkJCQkgICAgICAgZnNsX2RjdV9kcm1fcGxhbmVfZm9ybWF0cywKPiAr CQkJCSAgICAgICBBUlJBWV9TSVpFKGZzbF9kY3VfZHJtX3BsYW5lX2Zvcm1hdHMpLAo+ICsJCQkJ ICAgICAgIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOwo+ICsJaWYgKHJldCkgewo+ICsJCWtmcmVl KHByaW1hcnkpOwo+ICsJCXByaW1hcnkgPSBOVUxMOwo+ICsJfQo+ICsJZHJtX3BsYW5lX2hlbHBl cl9hZGQocHJpbWFyeSwgJmZzbF9kY3VfZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyk7Cj4gKwo+ICsJ cmV0dXJuIHByaW1hcnk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC9m c2xfZGN1X2RybV9wbGFuZS5oIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC9mc2xfZGN1X2RybV9wbGFu ZS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5jY2JmYTYxCj4gLS0t IC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wvZnNsX2RjdV9kcm1fcGxhbmUu aAo+IEBAIC0wLDAgKzEsMjMgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxl IFNlbWljb25kdWN0b3IsIEluYy4KPiArICoKPiArICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNl IGRyaXZlcgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgo+ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKi8K PiArCj4gKyNpZm5kZWYgX19GU0xfRENVX0RSTV9QTEFORV9IX18KPiArI2RlZmluZSBfX0ZTTF9E Q1VfRFJNX1BMQU5FX0hfXwo+ICsKPiArc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZTsKPiArc3Ry dWN0IGZzbF9kY3VfZHJtX3BsYW5lIHsKPiArCXN0cnVjdCBkcm1fcGxhbmUgcGxhbmU7Cj4gKwl1 bnNpZ25lZCBpbnQgaW5kZXg7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgZHJtX3BsYW5lICpmc2xfZGN1 X2RybV9wcmltYXJ5X2NyZWF0ZV9wbGFuZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiArCj4g KyNlbmRpZiAvKiBfX0ZTTF9EQ1VfRFJNX1BMQU5FX0hfXyAqLwo+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2xpbnV4L2ZzbC9kY3UuaCBiL2luY2x1ZGUvbGludXgvZnNsL2RjdS5oCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4xODczMDU3Cj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2luY2x1ZGUvbGludXgvZnNsL2RjdS5oCj4gQEAgLTAsMCArMSwyMiBAQAo+ICsvKgo+ICsg KiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgo+ICsgKgo+ICsg KiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Cj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Cj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAqIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX0ZTTF9EQ1VfSF9fCj4g KyNkZWZpbmUgX19GU0xfRENVX0hfXwo+ICsKPiArI2RlZmluZSBTQ0ZHX1BJWENMS0NSCQkJMHgy OAo+ICsjZGVmaW5lIFBYQ0tfRU5BQkxFCQkJQklUKDMxKQo+ICsjZGVmaW5lIFBYQ0tfRElTQUJM RQkJCTAKPiArCj4gK3ZvaWQgZGN1X3BpeGNsa19lbmFibGUodm9pZCk7Cj4gK3ZvaWQgZGN1X3Bp eGNsa19kaXNhYmxlKHZvaWQpOwo+ICsKPiArI2VuZGlmIC8qIF9fRlNMX0RDVV9IX18gKi8KPiAt LSAKPiAyLjEuMC4yNy5nOTZkYjMyNAo+IAoKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2lu ZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=