From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v6 1/4] drm/layerscape: Add Freescale DCU DRM driver Date: Fri, 10 Jul 2015 09:59:41 +0200 Message-ID: <20150710075941.GB3736@phenom.ffwll.local> References: <1436513215-43423-1-git-send-email-jianwei.wang@freescale.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1436513215-43423-1-git-send-email-jianwei.wang@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: devicetree@vger.kernel.org, Xiubo Li , daniel.vetter@ffwll.ch, Alison Wang , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, scottwood@freescale.com, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org T24gRnJpLCBKdWwgMTAsIDIwMTUgYXQgMDM6MjY6NTJQTSArMDgwMCwgSmlhbndlaSBXYW5nIHdy b3RlOgo+IFRoaXMgcGF0Y2ggYWRkIHN1cHBvcnQgZm9yIFR3byBEaW1lbnNpb25hbCBBbmltYXRp b24gYW5kIENvbXBvc2l0aW5nCj4gRW5naW5lICgyRC1BQ0UpIG9uIHRoZSBGcmVlc2NhbGUgU29D cy4KPiAKPiAyRC1BQ0UgaXMgYSBGcmVlc2NhbGUgZGlzcGxheSBjb250cm9sbGVyLiAyRC1BQ0Ug ZGVzY3JpYmVzCj4gdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIG1vZHVsZSBleHRyZW1lbHkgd2Vs bCBpdHMgbmFtZSBpcyBhIHZhbHVlCj4gdGhhdCBjYW5ub3QgYmUgdXNlZCBhcyBhIHRva2VuIGlu IHByb2dyYW1taW5nIGxhbmd1YWdlcy4KPiBJbnN0ZWFkIHRoZSB2YWxpZCB0b2tlbiAiRENVIiBp cyB1c2VkIHRvIHRhZyB0aGUgcmVnaXN0ZXIgbmFtZXMgYW5kCj4gZnVuY3Rpb24gbmFtZXMuCj4g Cj4gVGhlIERpc3BsYXkgQ29udHJvbGxlciBVbml0IChEQ1UpIG1vZHVsZSBpcyBhIHN5c3RlbSBt YXN0ZXIgdGhhdAo+IGZldGNoZXMgZ3JhcGhpY3Mgc3RvcmVkIGluIGludGVybmFsIG9yIGV4dGVy bmFsIG1lbW9yeSBhbmQgZGlzcGxheXMKPiB0aGVtIG9uIGEgVEZUIExDRCBwYW5lbC4gQSB3aWRl IHJhbmdlIG9mIHBhbmVsIHNpemVzIGlzIHN1cHBvcnRlZAo+IGFuZCB0aGUgdGltaW5nIG9mIHRo ZSBpbnRlcmZhY2Ugc2lnbmFscyBpcyBoaWdobHkgY29uZmlndXJhYmxlLgo+IEdyYXBoaWNzIGFy ZSByZWFkIGRpcmVjdGx5IGZyb20gbWVtb3J5IGFuZCB0aGVuIGJsZW5kZWQgaW4gcmVhbC10aW1l LAo+IHdoaWNoIGFsbG93cyBmb3IgZHluYW1pYyBjb250ZW50IGNyZWF0aW9uIHdpdGggbWluaW1h bCBDUFUKPiBpbnRlcnZlbnRpb24uCj4gCj4gVGhlIGZlYXR1cmVzOgo+ICgxKSBGdWxsIFJHQjg4 OCBvdXRwdXQgdG8gVEZUIExDRCBwYW5lbC4KPiAoMikgRm9yIHRoZSBjdXJyZW50IExDRCBwYW5l bCwgV1FWR0EgIjQ4MHgyNzIiIGlzIHN1cHBvcnRlZC4KPiAoMykgQmxlbmRpbmcgb2YgZWFjaCBw aXhlbCB1c2luZyB1cCB0byA0IHNvdXJjZSBsYXllcnMKPiBkZXBlbmRlbnQgb24gc2l6ZSBvZiBw YW5lbC4KPiAoNCkgRWFjaCBncmFwaGljIGxheWVyIGNhbiBiZSBwbGFjZWQgd2l0aCBvbmUgcGl4 ZWwgcmVzb2x1dGlvbgo+IGluIGVpdGhlciBheGlzLgo+ICg1KSBFYWNoIGdyYXBoaWMgbGF5ZXIg c3VwcG9ydCBSR0I1NjUgYW5kIFJHQjg4OCBkaXJlY3QgY29sb3JzCj4gd2l0aG91dCBhbHBoYQo+ IGNoYW5uZWwgYW5kIEJHUkE4ODg4IEJHUkE0NDQ0IEFSR0IxNTU1IGRpcmVjdCBjb2xvcnMgd2l0 aCBhbgo+IGFscGhhIGNoYW5uZWwgYW5kCj4gWVVWNDIyIGZvcm1hdC4KPiAoNikgRWFjaCBncmFw aGljIGxheWVyIHN1cHBvcnQgYWxwaGEgYmxlbmRpbmcgd2l0aCA4LWJpdAo+IHJlc29sdXRpb24u Cj4gCj4gVGhpcyBpcyBhIHNpbXBsaWZpZWQgdmVyc2lvbiwgb25seSBvbmUgcHJpbWFyeSBwbGFu ZSwgb25lCj4gZnJhbWVidWZmZXIgY3JlYXRlZCBmb3IKPiBmYmRldiwgb25lIGNydGMsIG9uZSBj b25uZWN0b3IgZm9yIFRGVCBMQ0QgcGFuZWwsIGFuIGVuY29kZXIuCj4gCj4gU2lnbmVkLW9mZi1i eTogQWxpc29uIFdhbmcgPGIxODk2NUBmcmVlc2NhbGUuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFhp dWJvIExpIDxsaXhpdWJvQGNtc3MuY2hpbmFtb2JpbGUuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEpp YW53ZWkgV2FuZyA8amlhbndlaS53YW5nQGZyZWVzY2FsZS5jb20+CgpBIGZldyBzbWFsbCB0aGlu Z3MgdG8gcG9saXNoIHRoYXQgSSBzcG90dGVkLgotRGFuaWVsCgo+IC0tLQo+IAo+IAo+IENoYW5n ZWQgaW4gVjYKPiAKPiAtIEFkZCBORUMgbmw0ODI3aGMxOV8wNWIgcGFuZWwgdG8gcGFuZWwtc2lt cGxlLmMKPiBBZHZpY2VkIGJ5IE1hcmsgWWFvCj4gLSBBZGQgRFJJVkVSX0FUT01JQyBmb3IgZHJp dmVyX2ZlYXR1cmVzCj4gQWR2aWNlZCBieSBNYXJrIFlhbwo+IC0gY2hlY2sgZnNsX2RldiBpZiBp dCdzIE5VTEwgYXQgUE0gc3VzcGVuZC9yZXN1bWUKPiBBZHZpY2VkIGJ5IE1hcmsgWWFvCj4gCj4g Q2hhbmdlZCBpbiBWNQo+IAo+IC0gVXBkYXRlIGNvbW1pdCBtZXNzYWdlCj4gLSBBZGQgbGF5ZXIg cmVnaXN0ZXJzIGluaXRpYWxpemF0aW9uCj4gLSBSZW1vdmUgdW51c2VkIGZ1bmN0aW9ucwo+IC0g UmVuYW1lIGRyaXZlciBmb2xkZXIKPiBBZHZpY2VkIGJ5IFN0ZWZhbiBBZ25lcgo+IC0gTW92ZSBw aXhlbCBjbG9jayBjb250cm9sIGZ1bmN0aW9ucyB0byBmc2xfZGN1X2RybV9kcnYuYwo+IC0gcmVt b3ZlIHJlZHVuZGFudCBlbmFibGUgdGhlIGNsb2NrIGltcGxpY2l0bHkgdXNpbmcgcmVnbWFwCj4g LSBBZGQgbWFpbnRhaW5lciBtZXNzYWdlCj4gCj4gQ2hhbmdlZCBpbiBWNDoKPiAKPiAtVGhpcyB2 ZXJzaW9uIGRvZXNuJ3QgaGF2ZSBmdW5jdGlvbmFsaXR5IGNoYW5nZWQKPiBKdXN0IGEgbWlub3Ig YWRqdXN0bWVudC4KPiAKPiBDaGFuZ2VkIGluIFYzOgo+IAo+IC0gVGVzdCBkcml2ZXIgb24gVnli cmlkIGJvYXJkIGFuZCBhZGQgY29tcGF0aWJsZSBzdHJpbmcKPiAtIFJlbW92ZSB1bnVzZWQgZnVu Y3Rpb25zCj4gLSBzZXQgZGVmYXVsdCBjcnRjIGZvciBlbmNvZGVyCj4gLSByZXBsYWNlIGxlZ2Fj eSBmdW5jdGlvbnMgd2l0aCBhdG9taWMgaGVscCBmdW5jdGlvbnMKPiBBZHZpY2VkIGJ5IERhbmll bCBWZXR0ZXIKPiAtIFNldCB0aGUgdW5pcXVlIG5hbWUgb2YgdGhlIERSTSBkZXZpY2UKPiAtIElt cGxlbWVudCBpcnEgaGFuZGxlIGZ1bmN0aW9uIGZvciB2YmxhbmsgaW50ZXJydXB0Cj4gCj4gQ2hh bmdlZCBpbiB2MjogCj4gLSBBZGQgYXRvbWljIHN1cHBvcnQKPiBBZHZpY2VkIGJ5IERhbmllbCBW ZXR0ZXIKPiAtIE1vZGlmeSBiaW5kaW5ncyBmaWxlCj4gLSBSZW5hbWUgbm9kZSBmb3IgY29tcGF0 aWJpbGl0eQo+IC0gTW92ZSBwbGF0Zm9ybSByZWxhdGVkIGNvZGUgb3V0IGZvciBjb21wYXRpYmls aXR5Cj4gQWR2aWNlZCBieSBTdGVmYW4gQWduZXIKPiAKPiAKPiAgTUFJTlRBSU5FUlMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKwo+ICBkcml2ZXJzL2dwdS9kcm0v S2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1L2Ry bS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUv ZHJtL2ZzbC1kY3UvS2NvbmZpZyAgICAgICAgICAgICAgICAgfCAgMTggKysKPiAgZHJpdmVycy9n cHUvZHJtL2ZzbC1kY3UvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDcgKwo+ICBkcml2ZXJz L2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jb25uZWN0b3IuYyB8IDIwMCArKysrKysrKysr KysrCj4gIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5oIHwg IDMxICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuYyAgICAg IHwgMTcyICsrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJt X2NydGMuaCAgICAgIHwgIDIyICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3Vf ZHJtX2Rydi5jICAgICAgIHwgMzc5ICsrKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJz L2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYuaCAgICAgICB8IDIyMyArKysrKysrKysr KysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9mYmRldi5jICAgICB8 ICAyNiArKwo+ICBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9rbXMuYyAgICAg ICB8ICA0MiArKysKPiAgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fa21zLmgg ICAgICAgfCAgMTcgKysKPiAgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxh bmUuYyAgICAgfCAxOTUgKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2Zz bF9kY3VfZHJtX3BsYW5lLmggICAgIHwgIDIzICsrCj4gIDE2IGZpbGVzIGNoYW5nZWQsIDEzNjUg aW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1k Y3UvS2NvbmZpZwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3Uv TWFrZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2Zz bF9kY3VfZHJtX2Nvbm5lY3Rvci5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jb25uZWN0b3IuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY3J0Yy5jCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jcnRjLmgKPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5j Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2Ry bV9kcnYuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNs X2RjdV9kcm1fZmJkZXYuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2Zz bC1kY3UvZnNsX2RjdV9kcm1fa21zLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5jCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5oCj4gCj4gZGlm ZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKPiBpbmRleCA2NzYxMzE4Li5iMjVi OTQ4IDEwMDY0NAo+IC0tLSBhL01BSU5UQUlORVJTCj4gKysrIGIvTUFJTlRBSU5FUlMKPiBAQCAt MzQwNCw2ICszNDA0LDEzIEBAIFM6CU1haW50YWluZWQKPiAgRjoJZHJpdmVycy9ncHUvZHJtL2lt eC8KPiAgRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RybS9pbXgvCj4gIAo+ ICtEUk0gRFJJVkVSUyBGT1IgRlJFRVNDQUxFIERDVQo+ICtNOglKaWFud2VpIFdhbmcgPGppYW53 ZWkud2FuZ0BmcmVlc2NhbGUuY29tPgo+ICtNOglBbGlzb24gV2FuZyA8YWxpc29uLndhbmdAZnJl ZXNjYWxlLmNvbT4KPiArTDoJZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ICtTOglT dXBwb3J0ZWQKPiArRjoJZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvCj4gKwo+ICBEUk0gRFJJVkVS UyBGT1IgTlZJRElBIFRFR1JBCj4gIE06CVRoaWVycnkgUmVkaW5nIDx0aGllcnJ5LnJlZGluZ0Bn bWFpbC5jb20+Cj4gIE06CVRlcmplIEJlcmdzdHLDtm0gPHRiZXJnc3Ryb21AbnZpZGlhLmNvbT4K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0v S2NvbmZpZwo+IGluZGV4IGM0NmNhMzEuLjljZmQxNGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL0tjb25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+IEBAIC0yMzEs NiArMjMxLDggQEAgc291cmNlICJkcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWciCj4gIAo+ ICBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9tc20vS2NvbmZpZyIKPiAgCj4gK3NvdXJjZSAiZHJp dmVycy9ncHUvZHJtL2ZzbC1kY3UvS2NvbmZpZyIKPiArCj4gIHNvdXJjZSAiZHJpdmVycy9ncHUv ZHJtL3RlZ3JhL0tjb25maWciCj4gIAo+ICBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9wYW5lbC9L Y29uZmlnIgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUKPiBpbmRleCA1NzEzZDA1Li4xMWNiODFlIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmls ZQo+IEBAIC03MCwzICs3MCw0IEBAIG9iai0kKENPTkZJR19EUk1fSU1YKSArPSBpbXgvCj4gIG9i ai15CQkJKz0gaTJjLwo+ICBvYmoteQkJCSs9IHBhbmVsLwo+ICBvYmoteQkJCSs9IGJyaWRnZS8K PiArb2JqLSQoQ09ORklHX0RSTV9GU0xfRENVKSArPSBmc2wtZGN1Lwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3Uv S2NvbmZpZwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYmZkNDg0Ygo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9LY29uZmlnCj4g QEAgLTAsMCArMSwxOCBAQAo+ICtjb25maWcgRFJNX0ZTTF9EQ1UKPiArCXRyaXN0YXRlICJEUk0g U3VwcG9ydCBmb3IgRnJlZXNjYWxlIERDVSIKPiArCWRlcGVuZHMgb24gRFJNICYmIE9GICYmIEFS TQo+ICsJc2VsZWN0IERSTV9LTVNfSEVMUEVSCj4gKwlzZWxlY3QgRFJNX0tNU19DTUFfSEVMUEVS Cj4gKwlzZWxlY3QgVklERU9NT0RFX0hFTFBFUlMKPiArCXNlbGVjdCBCQUNLTElHSFRfQ0xBU1Nf REVWSUNFCj4gKwlzZWxlY3QgQkFDS0xJR0hUX0xDRF9TVVBQT1JUCj4gKwlzZWxlY3QgUkVHTUFQ X01NSU8KPiArCXNlbGVjdCBEUk1fS01TX0ZCX0hFTFBFUgo+ICsJc2VsZWN0IEZCX1NZU19GSUxM UkVDVAo+ICsJc2VsZWN0IEZCX1NZU19DT1BZQVJFQQo+ICsJc2VsZWN0IEZCX1NZU19JTUFHRUJM SVQKPiArCXNlbGVjdCBGQl9TWVNfRk9QUwo+ICsJc2VsZWN0IERSTV9QQU5FTAo+ICsJaGVscAo+ ICsJICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYW4gRnJlZXNjYWxlIERDVSBjaGlw c2V0Lgo+ICsJICBJZiBNIGlzIHNlbGVjdGVkIHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZnNs LWRjdS1kcm0uCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L01ha2VmaWxl IGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvTWFrZWZpbGUKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAuLjMzNmI0YTYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2ZzbC1kY3UvTWFrZWZpbGUKPiBAQCAtMCwwICsxLDcgQEAKPiArZnNsLWRjdS1k cm0teSA6PSBmc2xfZGN1X2RybV9kcnYubyBcCj4gKwkgICAgICAgZnNsX2RjdV9kcm1fa21zLm8g XAo+ICsJICAgICAgIGZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5vIFwKPiArCSAgICAgICBmc2xfZGN1 X2RybV9wbGFuZS5vIFwKPiArCSAgICAgICBmc2xfZGN1X2RybV9jcnRjLm8gXAo+ICsJICAgICAg IGZzbF9kY3VfZHJtX2ZiZGV2Lm8KPiArb2JqLSQoQ09ORklHX0RSTV9GU0xfRENVKQkrPSBmc2wt ZGN1LWRybS5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3Vf ZHJtX2Nvbm5lY3Rvci5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY29u bmVjdG9yLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjljZmUwZTAK PiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9k cm1fY29ubmVjdG9yLmMKPiBAQCAtMCwwICsxLDIwMCBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQg MjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgo+ICsgKgo+ICsgKiBGcmVlc2NhbGUg RENVIGRybSBkZXZpY2UgZHJpdmVyCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Cj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2JhY2tsaWdodC5oPgo+ICsKPiAr I2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIu aD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KPiArCj4gKyNpbmNsdWRlICJmc2xfZGN1 X2RybV9kcnYuaCIKPiArI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5oIgo+ICsKPiAr c3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fZW5jb2Rlcl9kcG1zKHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlciwgaW50IG1vZGUpCj4gK3sKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnNsX2RjdV9k cm1fZW5jb2Rlcl9tb2RlX3ByZXBhcmUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQo+ICt7 Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2VuY29kZXJfbW9kZV9zZXQoc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkJCSBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqbW9kZSwKPiArCQkJCQkgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUp Cj4gK3sKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fZW5jb2Rlcl9tb2RlX2Nv bW1pdChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gK3sKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgZnNsX2RjdV9kcm1fZW5jb2Rlcl9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlcikKPiArewo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK2ZzbF9kY3VfZHJtX2VuY29kZXJf YXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiArCQkJCSBzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCQkgc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKmNvbm5fc3RhdGUpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZCBmc2xfZGN1X2RybV9lbmNvZGVyX2Rlc3Ryb3koc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyKQo+ICt7Cj4gKwlkcm1fZW5jb2Rlcl9jbGVhbnVwKGVuY29kZXIpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyBlbmNvZGVyX2hlbHBl cl9mdW5jcyA9IHsKPiArCS5kcG1zID0gZnNsX2RjdV9kcm1fZW5jb2Rlcl9kcG1zLAoKV2l0aCBh dG9taWMgdGhpcyBpc24ndCBuZWVkZWQgYW55IG1vcmUuCgo+ICsJLnByZXBhcmUgPSBmc2xfZGN1 X2RybV9lbmNvZGVyX21vZGVfcHJlcGFyZSwKPiArCS5jb21taXQgPSBmc2xfZGN1X2RybV9lbmNv ZGVyX21vZGVfY29tbWl0LAoKVGhlc2UgbmFtZXMgYXJlIGRlcHJlY2F0ZWQsIG5ldyBzdWdnZXN0 ZWQgbmFtZXMgYXJlIGVuYWJsZSBhbmQgZGlzYWJsZS4KU2luY2UgeW91IGhhdmUgYSBkaXNhYmxl IGhvb2sgLmNvbW1pdCBpcyB1bnVzZWQuCgo+ICsJLm1vZGVfc2V0ID0gZnNsX2RjdV9kcm1fZW5j b2Rlcl9tb2RlX3NldCwKCi5tb2RlX3NldCBpcyBvcHRpb25hbAoKPiArCS5kaXNhYmxlID0gZnNs X2RjdV9kcm1fZW5jb2Rlcl9kaXNhYmxlLAo+ICsJLmF0b21pY19jaGVjayA9IGZzbF9kY3VfZHJt X2VuY29kZXJfYXRvbWljX2NoZWNrLAoKLmF0b21pY19jaGVjayBpcyBvcHRpb25hbAoKPiArfTsK PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgZW5jb2Rlcl9mdW5j cyA9IHsKPiArCS5kZXN0cm95ID0gZnNsX2RjdV9kcm1fZW5jb2Rlcl9kZXN0cm95LAo+ICt9Owo+ ICsKPiAraW50IGZzbF9kY3VfZHJtX2VuY29kZXJfY3JlYXRlKHN0cnVjdCBmc2xfZGN1X2RybV9k ZXZpY2UgKmZzbF9kZXYsCj4gKwkJCSAgICAgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gK3sK PiArCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZmc2xfZGV2LT5lbmNvZGVyOwo+ICsJ aW50IHJldDsKPiArCj4gKwllbmNvZGVyLT5wb3NzaWJsZV9jcnRjcyA9IDE7Cj4gKwlyZXQgPSBk cm1fZW5jb2Rlcl9pbml0KGZzbF9kZXYtPmRkZXYsIGVuY29kZXIsICZlbmNvZGVyX2Z1bmNzLAo+ ICsJCQkgICAgICAgRFJNX01PREVfRU5DT0RFUl9MVkRTKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJ CXJldHVybiByZXQ7Cj4gKwo+ICsJZHJtX2VuY29kZXJfaGVscGVyX2FkZChlbmNvZGVyLCAmZW5j b2Rlcl9oZWxwZXJfZnVuY3MpOwo+ICsJZW5jb2Rlci0+Y3J0YyA9IGNydGM7Cj4gKwo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArCj4gKyNkZWZpbmUgdG9fZnNsX2RjdV9jb25uZWN0b3IoY29ubmVjdG9y KSBcCj4gKwljb250YWluZXJfb2YoY29ubmVjdG9yLCBzdHJ1Y3QgZnNsX2RjdV9kcm1fY29ubmVj dG9yLCBjb25uZWN0b3IpCj4gKwo+ICtzdGF0aWMgaW50IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9n ZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3RydWN0 IGZzbF9kY3VfZHJtX2Nvbm5lY3RvciAqZnNsX2Nvbm5lY3RvcjsKPiArCWludCBudW1fbW9kZXMg PSAwOwo+ICsKPiArCWZzbF9jb25uZWN0b3IgPSB0b19mc2xfZGN1X2Nvbm5lY3Rvcihjb25uZWN0 b3IpOwo+ICsJaWYgKGZzbF9jb25uZWN0b3ItPnBhbmVsICYmIGZzbF9jb25uZWN0b3ItPnBhbmVs LT5mdW5jcyAmJgo+ICsJICAgIGZzbF9jb25uZWN0b3ItPnBhbmVsLT5mdW5jcy0+Z2V0X21vZGVz KQo+ICsJCW51bV9tb2RlcyA9IGZzbF9jb25uZWN0b3ItPnBhbmVsLT5mdW5jcy0+Z2V0X21vZGVz Cj4gKwkJCQkoZnNsX2Nvbm5lY3Rvci0+cGFuZWwpOwo+ICsKPiArCXJldHVybiBudW1fbW9kZXM7 Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fY29ubmVjdG9yX21vZGVfdmFsaWQo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkJCQkgICAgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGUpCj4gK3sKPiArCXJldHVybiBNT0RFX09LOwo+ICt9Cj4gKwo+ICtz dGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICoKPiArZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Jlc3Rf ZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZnNsX2RjdV9kcm1fY29ubmVjdG9yICpmc2xfY29uID0gdG9fZnNsX2RjdV9jb25uZWN0b3IoY29u bmVjdG9yKTsKPiArCj4gKwlyZXR1cm4gZnNsX2Nvbi0+ZW5jb2RlcjsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcikKPiArewo+ICsJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rv cik7Cj4gKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsKPiArfQo+ICsKPiArc3Rh dGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMKPiArZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Rl dGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQo+ICt7Cj4g KwlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Cj4gK30KPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBmc2xfZGN1X2RybV9jb25uZWN0b3JfZnVu Y3MgPSB7Cj4gKwkuZHBtcyA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kcG1zLAo+ICsJ LnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAo+ICsJLmRldGVjdCA9 IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9kZXRlY3QsCj4gKwkuZmlsbF9tb2RlcyA9IGRybV9oZWxw ZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKPiArCS5kZXN0cm95ID0gZnNsX2RjdV9k cm1fY29ubmVjdG9yX2Rlc3Ryb3ksCj4gKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9h dG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUsCj4gKwkuYXRvbWljX2Rlc3Ry b3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKPiAr fTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3Mg Y29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKPiArCS5nZXRfbW9kZXMgPSBmc2xfZGN1X2RybV9j b25uZWN0b3JfZ2V0X21vZGVzLAo+ICsJLm1vZGVfdmFsaWQgPSBmc2xfZGN1X2RybV9jb25uZWN0 b3JfbW9kZV92YWxpZCwKPiArCS5iZXN0X2VuY29kZXIgPSBmc2xfZGN1X2RybV9jb25uZWN0b3Jf YmVzdF9lbmNvZGVyLAo+ICt9Owo+ICsKPiAraW50IGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9jcmVh dGUoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiwKPiArCQkJCSBzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuY29kZXIpCj4gK3sKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IgPSAmZnNsX2Rldi0+Y29ubmVjdG9yLmNvbm5lY3RvcjsKPiArCXN0cnVjdCBkZXZpY2Vfbm9k ZSAqcGFuZWxfbm9kZTsKPiArCWludCByZXQ7Cj4gKwo+ICsJZnNsX2Rldi0+Y29ubmVjdG9yLmVu Y29kZXIgPSBlbmNvZGVyOwo+ICsKPiArCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLndpZHRoX21t ID0gMDsKPiArCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhlaWdodF9tbSA9IDA7Cj4gKwo+ICsJ cmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0KGZzbF9kZXYtPmRkZXYsIGNvbm5lY3RvciwKPiArCQkJ CSAmZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Z1bmNzLAo+ICsJCQkJIERSTV9NT0RFX0NPTk5FQ1RP Ul9MVkRTKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJY29ubmVj dG9yLT5kcG1zID0gRFJNX01PREVfRFBNU19PRkY7Cj4gKwlkcm1fY29ubmVjdG9yX2hlbHBlcl9h ZGQoY29ubmVjdG9yLCAmY29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7Cj4gKwlyZXQgPSBkcm1fY29u bmVjdG9yX3JlZ2lzdGVyKGNvbm5lY3Rvcik7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlnb3RvIGVy cl9jbGVhbnVwOwo+ICsKPiArCXJldCA9IGRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2Rl cihjb25uZWN0b3IsIGVuY29kZXIpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJZ290byBlcnJfc3lz ZnM7Cj4gKwo+ICsJY29ubmVjdG9yLT5lbmNvZGVyID0gZW5jb2RlcjsKPiArCj4gKwlkcm1fb2Jq ZWN0X3Byb3BlcnR5X3NldF92YWx1ZQo+ICsJCSgmY29ubmVjdG9yLT5iYXNlLCBmc2xfZGV2LT5k ZGV2LT5tb2RlX2NvbmZpZy5kcG1zX3Byb3BlcnR5LAo+ICsJCURSTV9NT0RFX0RQTVNfT0ZGKTsK PiArCj4gKwlwYW5lbF9ub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShmc2xfZGV2LT5ucCwgInBhbmVs IiwgMCk7Cj4gKwlpZiAocGFuZWxfbm9kZSkgewo+ICsJCWZzbF9kZXYtPmNvbm5lY3Rvci5wYW5l bCA9IG9mX2RybV9maW5kX3BhbmVsKHBhbmVsX25vZGUpOwo+ICsJCWlmICghZnNsX2Rldi0+Y29u bmVjdG9yLnBhbmVsKQo+ICsJCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsKPiArCX0KPiArCj4gKwly ZXQgPSBkcm1fcGFuZWxfYXR0YWNoKGZzbF9kZXYtPmNvbm5lY3Rvci5wYW5lbCwgY29ubmVjdG9y KTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKGZzbF9kZXYtPmRldiwgImZhaWxlZCB0byBh dHRhY2ggcGFuZWxcbiIpOwo+ICsJCWdvdG8gZXJyX3N5c2ZzOwo+ICsJfQo+ICsKPiArCXJldHVy biAwOwo+ICsKPiArZXJyX3N5c2ZzOgo+ICsJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5l Y3Rvcik7Cj4gK2Vycl9jbGVhbnVwOgo+ICsJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5lY3Rv cik7Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9m c2wtZGN1L2ZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5oIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3Uv ZnNsX2RjdV9kcm1fY29ubmVjdG9yLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAw MDAwMDAuLjFjM2RiYjIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Zz bC1kY3UvZnNsX2RjdV9kcm1fY29ubmVjdG9yLmgKPiBAQCAtMCwwICsxLDMxIEBACj4gKy8qCj4g KyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCj4gKyAqCj4g KyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKPiArICoKPiArICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiArICogKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9fRlNMX0RDVV9EUk1f Q09OTkVDVE9SX0hfXwo+ICsjZGVmaW5lIF9fRlNMX0RDVV9EUk1fQ09OTkVDVE9SX0hfXwo+ICsK PiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiAr I2luY2x1ZGUgImZzbF9kY3VfZHJtX2NydGMuaCIKPiArCj4gK3N0cnVjdCBmc2xfZGN1X2RybV9k ZXZpY2U7Cj4gK3N0cnVjdCBmc2xfZGN1X2RybV9jb25uZWN0b3Igewo+ICsJc3RydWN0IGRybV9j b25uZWN0b3IgY29ubmVjdG9yOwo+ICsJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwo+ICsJ c3RydWN0IGRybV9wYW5lbCAqcGFuZWw7Cj4gK307Cj4gKwo+ICtpbnQgZnNsX2RjdV9kcm1fZW5j b2Rlcl9jcmVhdGUoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiwKPiArCQkJICAg ICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gK2ludCBmc2xfZGN1X2RybV9jb25uZWN0b3Jf Y3JlYXRlKHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYsCj4gKwkJCQkgc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyKTsKPiArCj4gKyNlbmRpZiAvKiBfX0ZTTF9EQ1VfRFJNX0NP Tk5FQ1RPUl9IX18gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNs X2RjdV9kcm1fY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fY3J0 Yy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi40MDY1YTdjCj4gLS0t IC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Ny dGMuYwo+IEBAIC0wLDAgKzEsMTcyIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAyMDE1IEZyZWVz Y2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCj4gKyAqCj4gKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRl dmljZSBkcml2ZXIKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiAr ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiAr ICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9j bGsuaD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9h dG9taWMuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ICsjaW5jbHVk ZSA8ZHJtL2RybV9jcnRjLmg+Cj4gKwo+ICsjaW5jbHVkZSAiZnNsX2RjdV9kcm1fY3J0Yy5oIgo+ ICsjaW5jbHVkZSAiZnNsX2RjdV9kcm1fZHJ2LmgiCj4gKyNpbmNsdWRlICJmc2xfZGN1X2RybV9w bGFuZS5oIgo+ICsKPiArI2RlZmluZSB0b19mc2xfZGN1X2NydGMoYykJY29udGFpbmVyX29mKGMs IHN0cnVjdCBmc2xfZGN1X2RybV9jcnRjLCBjcnRjKQo+ICsKPiArc3RhdGljIHZvaWQgZnNsX2Rj dV9kcm1fY3J0Y19tb2RlX3NldF9ub2ZiKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArewo+ICsJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiArCXN0cnVjdCBmc2xfZGN1X2Ry bV9kZXZpY2UgKmZzbF9kZXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUgPSAmY3J0Yy0+c3RhdGUtPm1vZGU7Cj4gKwl1aW50MzJfdCBoYnAsIGhm cCwgaHN3LCB2YnAsIHZmcCwgdnN3LCBkaXYsIGluZGV4Owo+ICsKPiArCURCRygiOiBzZXQgbW9k ZTogJWQ6XCIlc1wiICVkICVkICVkICVkICVkICVkICVkICVkICVkICVkIDB4JXggMHgleCIsCj4g KwkgICAgbW9kZS0+YmFzZS5pZCwgbW9kZS0+bmFtZSwKPiArCSAgICBtb2RlLT52cmVmcmVzaCwg bW9kZS0+Y2xvY2ssCj4gKwkgICAgbW9kZS0+aGRpc3BsYXksIG1vZGUtPmhzeW5jX3N0YXJ0LAo+ ICsJICAgIG1vZGUtPmhzeW5jX2VuZCwgbW9kZS0+aHRvdGFsLAo+ICsJICAgIG1vZGUtPnZkaXNw bGF5LCBtb2RlLT52c3luY19zdGFydCwKPiArCSAgICBtb2RlLT52c3luY19lbmQsIG1vZGUtPnZ0 b3RhbCwKPiArCSAgICBtb2RlLT50eXBlLCBtb2RlLT5mbGFncyk7Cj4gKwo+ICsJaW5kZXggPSBk cm1fY3J0Y19pbmRleChjcnRjKTsKPiArCWRpdiA9ICh1aW50MzJfdCljbGtfZ2V0X3JhdGUoZnNs X2Rldi0+Y2xrKSAvIG1vZGUtPmNsb2NrIC8gMTAwMDsKPiArCj4gKwkvKiBDb25maWd1cmUgdGlt aW5nczogKi8KPiArCWhicCA9IG1vZGUtPmh0b3RhbCAtIG1vZGUtPmhzeW5jX2VuZDsKPiArCWhm cCA9IG1vZGUtPmhzeW5jX3N0YXJ0IC0gbW9kZS0+aGRpc3BsYXk7Cj4gKwloc3cgPSBtb2RlLT5o c3luY19lbmQgLSBtb2RlLT5oc3luY19zdGFydDsKPiArCXZicCA9IG1vZGUtPnZ0b3RhbCAtIG1v ZGUtPnZzeW5jX2VuZDsKPiArCXZmcCA9IG1vZGUtPnZzeW5jX3N0YXJ0IC0gbW9kZS0+dmRpc3Bs YXk7Cj4gKwl2c3cgPSBtb2RlLT52c3luY19lbmQgLSBtb2RlLT52c3luY19zdGFydDsKPiArCj4g KwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfSFNZTl9QQVJBLAo+ICsJCSAgICAg RENVX0hTWU5fUEFSQV9CUChoYnApIHwKPiArCQkgICAgIERDVV9IU1lOX1BBUkFfUFcoaHN3KSB8 Cj4gKwkJICAgICBEQ1VfSFNZTl9QQVJBX0ZQKGhmcCkpOwo+ICsJcmVnbWFwX3dyaXRlKGZzbF9k ZXYtPnJlZ21hcCwgRENVX1ZTWU5fUEFSQSwKPiArCQkgICAgIERDVV9WU1lOX1BBUkFfQlAodmJw KSB8Cj4gKwkJICAgICBEQ1VfVlNZTl9QQVJBX1BXKHZzdykgfAo+ICsJCSAgICAgRENVX1ZTWU5f UEFSQV9GUCh2ZnApKTsKPiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9ESVNQ X1NJWkUsCj4gKwkJICAgICBEQ1VfRElTUF9TSVpFX0RFTFRBX1kobW9kZS0+dmRpc3BsYXkpIHwK PiArCQkgICAgIERDVV9ESVNQX1NJWkVfREVMVEFfWChtb2RlLT5oZGlzcGxheSkpOwo+ICsJcmVn bWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0RJVl9SQVRJTywgZGl2KTsKPiArCXJlZ21h cF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9VUERBVEVfTU9ERSwgRENVX1VQREFURV9NT0RF X1JFQURSRUcpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBmc2xfZGN1X2RybV9jcnRjX21vZGVf Zml4dXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCQkJCWNvbnN0IHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptb2RlLAo+ICsJCQkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3Rl ZF9tb2RlKQo+ICt7Cj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnNs X2RjdV9kcm1fY3J0Y19wcmVwYXJlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArewo+ICt9Cj4g Kwo+ICsvKiBOb3cgZW5hYmxlIHRoZSBjbG9ja3MsIHBsYW5lLCBwaXBlLCBhbmQgY29ubmVjdG9y cyB0aGF0IHdlIHNldCB1cC4gKi8KPiArc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fY3J0Y19tb2Rl X2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gK3sKPiArfQo+ICsKPiArc3RhdGljIGlu dCBmc2xfZGN1X2RybV9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4g KwkJCQkJIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9jcnRjX2F0b21pY19iZWdpbihzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCj4gK3sKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnNsX2RjdV9k cm1fY3J0Y19hdG9taWNfZmx1c2goc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICt7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2Rpc2FibGVfY3J0YyhzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCj4gK3sKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1fY3J0Y19kcG1z KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgaW50IG1vZGUpCj4gK3sKPiArfQo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBmc2xfZGN1X2RybV9jcnRjX2Z1bmNzID0gewo+ ICsJLnBhZ2VfZmxpcCA9IGRybV9hdG9taWNfaGVscGVyX3BhZ2VfZmxpcCwKPiArCS5zZXRfY29u ZmlnID0gZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZywKPiArCS5kZXN0cm95ID0gZHJtX2Ny dGNfY2xlYW51cCwKPiArCS5yZXNldCA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfcmVzZXQsCj4g KwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGlj YXRlX3N0YXRlLAo+ICsJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJf Y3J0Y19kZXN0cm95X3N0YXRlLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f Y3J0Y19oZWxwZXJfZnVuY3MgZnNsX2RjdV9kcm1fY3J0Y19oZWxwZXJfZnVuY3MgPSB7Cj4gKwku ZGlzYWJsZSA9IGZzbF9kY3VfZHJtX2Rpc2FibGVfY3J0YywKPiArCS5tb2RlX2ZpeHVwID0gZnNs X2RjdV9kcm1fY3J0Y19tb2RlX2ZpeHVwLAo+ICsJLm1vZGVfc2V0ID0gZHJtX2hlbHBlcl9jcnRj X21vZGVfc2V0LAoKTm90IG5lZWRlZCB3aXRoIGF0b21pYy4KCj4gKwkubW9kZV9zZXRfbm9mYiA9 IGZzbF9kY3VfZHJtX2NydGNfbW9kZV9zZXRfbm9mYiwKPiArCS5tb2RlX3NldF9iYXNlID0gZHJt X2hlbHBlcl9jcnRjX21vZGVfc2V0X2Jhc2UsCgpTYW1lLCBub3QgbmVlZGVkLgoKPiArCS5wcmVw YXJlID0gZnNsX2RjdV9kcm1fY3J0Y19wcmVwYXJlLAoKTmV3IHN1Z2dlc3RlZCBuYW1lIGlzIC0+ ZW5hYmxlCgo+ICsJLmNvbW1pdCA9IGZzbF9kY3VfZHJtX2NydGNfbW9kZV9jb21taXQsCgpOb3Qg bmVlZGVkIHdoZW4geW91IGhhdmUgZGlzYWJsZSBob29rLgoKPiArCS5hdG9taWNfY2hlY2sgPSBm c2xfZGN1X2RybV9jcnRjX2F0b21pY19jaGVjaywKPiArCS5hdG9taWNfYmVnaW4gPSBmc2xfZGN1 X2RybV9jcnRjX2F0b21pY19iZWdpbiwKPiArCS5hdG9taWNfZmx1c2ggPSBmc2xfZGN1X2RybV9j cnRjX2F0b21pY19mbHVzaCwKPiArCS5kcG1zID0gZnNsX2RjdV9kcm1fY3J0Y19kcG1zLAoKQWdh aW4gbm90IG5lZWRlZC4KCj4gK307Cj4gKwo+ICtpbnQgZnNsX2RjdV9kcm1fY3J0Y19jcmVhdGUo c3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldikKPiArewo+ICsJc3RydWN0IGRybV9w bGFuZSAqcHJpbWFyeTsKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZmc2xfZGV2LT5jcnRj Owo+ICsJaW50IGksIHJldDsKPiArCj4gKwlwcmltYXJ5ID0gZnNsX2RjdV9kcm1fcHJpbWFyeV9j cmVhdGVfcGxhbmUoZnNsX2Rldi0+ZGRldik7Cj4gKwlyZXQgPSBkcm1fY3J0Y19pbml0X3dpdGhf cGxhbmVzKGZzbF9kZXYtPmRkZXYsIGNydGMsIHByaW1hcnksIE5VTEwsCj4gKwkJCQkJJmZzbF9k Y3VfZHJtX2NydGNfZnVuY3MpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiAr Cj4gKwlkcm1fY3J0Y19oZWxwZXJfYWRkKGNydGMsICZmc2xfZGN1X2RybV9jcnRjX2hlbHBlcl9m dW5jcyk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IERDVV9UT1RBTF9MQVlFUl9OVU07IGkrKykg ewo+ICsJCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzEoaSks IDApOwo+ICsJCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzIo aSksIDApOwo+ICsJCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xO XzMoaSksIDApOwo+ICsJCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVT Q0xOXzQoaSksIDApOwo+ICsJCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJM REVTQ0xOXzUoaSksIDApOwo+ICsJCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9D VFJMREVTQ0xOXzYoaSksIDApOwo+ICsJCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERD VV9DVFJMREVTQ0xOXzcoaSksIDApOwo+ICsJCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAs IERDVV9DVFJMREVTQ0xOXzgoaSksIDApOwo+ICsJCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdt YXAsIERDVV9DVFJMREVTQ0xOXzkoaSksIDApOwo+ICsJCWlmIChvZl9kZXZpY2VfaXNfY29tcGF0 aWJsZShmc2xfZGV2LT5ucCwgImZzbCxsczEwMjFhLWRjdSIpKQo+ICsJCQlyZWdtYXBfd3JpdGUo ZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl8xMChpKSwgMCk7Cj4gKwl9Cj4gKwlyZWdt YXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfU1lOX1BPTCwKPiArCQkgICAgIERDVV9TWU5f UE9MX0lOVl9WU19MT1cgfCBEQ1VfU1lOX1BPTF9JTlZfSFNfTE9XKTsKPiArCXJlZ21hcF93cml0 ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9CR05ELCBEQ1VfQkdORF9SKDApIHwKPiArCQkgICAgIERD VV9CR05EX0coMCkgfCBEQ1VfQkdORF9CKDApKTsKPiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5y ZWdtYXAsIERDVV9EQ1VfTU9ERSwKPiArCQkgICAgIERDVV9NT0RFX0JMRU5EX0lURVIoMSkgfCBE Q1VfTU9ERV9SQVNURVJfRU4pOwo+ICsJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENV X1RIUkVTSE9MRCwKPiArCQkgICAgIERDVV9USFJFU0hPTERfTFNfQkZfVlMoQkZfVlNfVkFMKSB8 Cj4gKwkJICAgICBEQ1VfVEhSRVNIT0xEX09VVF9CVUZfSElHSChCVUZfTUFYX1ZBTCkgfAo+ICsJ CSAgICAgRENVX1RIUkVTSE9MRF9PVVRfQlVGX0xPVyhCVUZfTUlOX1ZBTCkpOwo+ICsJcmVnbWFw X3VwZGF0ZV9iaXRzKGZzbF9kZXYtPnJlZ21hcCwgRENVX0RDVV9NT0RFLAo+ICsJCQkgICBEQ1Vf TU9ERV9EQ1VfTU9ERV9NQVNLLAo+ICsJCQkgICBEQ1VfTU9ERV9EQ1VfTU9ERShEQ1VfTU9ERV9P RkYpKTsKPiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9VUERBVEVfTU9ERSwg RENVX1VQREFURV9NT0RFX1JFQURSRUcpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuaCBiL2RyaXZl cnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2NydGMuaAo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gaW5kZXggMDAwMDAwMC4uMTkzNzg1Zgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9jcnRjLmgKPiBAQCAtMCwwICsxLDIyIEBA Cj4gKy8qCj4gKyAqIENvcHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMu Cj4gKyAqCj4gKyAqIEZyZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKPiArICoKPiArICog VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiArICogKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9fRlNM X0RDVV9EUk1fQ1JUQ19IX18KPiArI2RlZmluZSBfX0ZTTF9EQ1VfRFJNX0NSVENfSF9fCj4gKwo+ ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+ICsK PiArc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZTsKPiArCj4gK2ludCBmc2xfZGN1X2RybV9jcnRj X2NyZWF0ZShzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2KTsKPiArCj4gKyNlbmRp ZiAvKiBfX0ZTTF9EQ1VfRFJNX0NSVENfSF9fICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3Uv ZnNsX2RjdV9kcm1fZHJ2LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAu LmEwNmU0ZWUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3Uv ZnNsX2RjdV9kcm1fZHJ2LmMKPiBAQCAtMCwwICsxLDM3OSBAQAo+ICsvKgo+ICsgKiBDb3B5cmln aHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgo+ICsgKgo+ICsgKiBGcmVlc2Nh bGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Cj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5jbHVk ZSA8bGludXgvaW8uaD4KPiArI2luY2x1ZGUgPGxpbnV4L21tLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BtLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4K PiArI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJt UC5oPgo+ICsKPiArI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Rydi5oIgo+ICsjaW5jbHVkZSAiZnNs X2RjdV9kcm1fY3J0Yy5oIgo+ICsjaW5jbHVkZSAiZnNsX2RjdV9kcm1fa21zLmgiCj4gKwo+ICtz dGF0aWMgaW50IGZzbF9kY3VfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sKPiAr CWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRldik7Cj4gKwlkcm1fdmJsYW5rX2NsZWFudXAoZGV2 KTsKPiArCWRybV9pcnFfdW5pbnN0YWxsKGRldik7Cj4gKwo+ICsJZGV2LT5kZXZfcHJpdmF0ZSA9 IE5VTEw7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgcmVnbWFw X2NvbmZpZyBmc2xfZGN1X3JlZ21hcF9jb25maWcgPSB7Cj4gKwkucmVnX2JpdHMgPSAzMiwKPiAr CS5yZWdfc3RyaWRlID0gNCwKPiArCS52YWxfYml0cyA9IDMyLAo+ICt9Owo+ICsKPiArc3RhdGlj IGludCBmc2xfZGN1X2J5cGFzc190Y29uKHN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9k ZXYsCj4gKwkJCSAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZGV2aWNlX25vZGUgKnRjb25fbnA7Cj4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2Owo+ ICsJc3RydWN0IGNsayAqdGNvbl9jbGs7Cj4gKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKPiArCXZv aWQgX19pb21lbSAqYmFzZTsKPiArCj4gKwl0Y29uX25wID0gb2ZfcGFyc2VfcGhhbmRsZShucCwg InRjb24tY29udHJvbGxlciIsIDApOwo+ICsJaWYgKCF0Y29uX25wKQo+ICsJCXJldHVybiAtRUlO VkFMOwo+ICsKPiArCXBkZXYgPSBvZl9maW5kX2RldmljZV9ieV9ub2RlKHRjb25fbnApOwo+ICsJ aWYgKCFwZGV2KQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCXRjb25fY2xrID0gZGV2bV9j bGtfZ2V0KCZwZGV2LT5kZXYsICJ0Y29uIik7Cj4gKwlpZiAoSVNfRVJSKHRjb25fY2xrKSkKPiAr CQlyZXR1cm4gUFRSX0VSUih0Y29uX2Nsayk7Cj4gKwljbGtfcHJlcGFyZV9lbmFibGUodGNvbl9j bGspOwo+ICsKPiArCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNF X01FTSwgMCk7Cj4gKwlpZiAoIXJlcykKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwliYXNl ID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlcyk7Cj4gKwlpZiAoSVNfRVJS KGJhc2UpKQo+ICsJCXJldHVybiBQVFJfRVJSKGJhc2UpOwo+ICsKPiArCWZzbF9kZXYtPnRjb25f cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9tbWlvKCZwZGV2LT5kZXYsCj4gKwkJCWJhc2UsICZm c2xfZGN1X3JlZ21hcF9jb25maWcpOwo+ICsJaWYgKElTX0VSUihmc2xfZGV2LT50Y29uX3JlZ21h cCkpIHsKPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJyZWdtYXAgaW5pdCBmYWlsZWRcbiIpOwo+ ICsJCXJldHVybiBQVFJfRVJSKGZzbF9kZXYtPnRjb25fcmVnbWFwKTsKPiArCX0KPiArCj4gKwly ZWdtYXBfd3JpdGUoZnNsX2Rldi0+dGNvbl9yZWdtYXAsIFRDT05fQ1RSTDEsIFRDT05fQllQQVNT X0VOQUJMRSk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZGN1X3BpeGNs a19lbmFibGUodm9pZCkKPiArewo+ICsJc3RydWN0IHJlZ21hcCAqc2NmZ19yZWdtYXA7Cj4gKwo+ ICsJc2NmZ19yZWdtYXAgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9jb21wYXRpYmxlKCJmc2ws bHMxMDIxYS1zY2ZnIik7Cj4gKwlpZiAoSVNfRVJSKHNjZmdfcmVnbWFwKSkgewo+ICsJCXByX2Vy cigiTm8gc3lzY2ZnIHBoYW5kbGUgc3BlY2lmaWVkXG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4g Kwo+ICsJcmVnbWFwX3dyaXRlKHNjZmdfcmVnbWFwLCBTQ0ZHX1BJWENMS0NSLCBQWENLX0VOQUJM RSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1faXJxX2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IGRl di0+cGxhdGZvcm1kZXY7Cj4gKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXVuc2lnbmVkIGludCBpbnRfbWFzazsKPiArCWludCByZXQ7 Cj4gKwo+ICsJcmV0ID0gZHJtX2lycV9pbnN0YWxsKGRldiwgcGxhdGZvcm1fZ2V0X2lycShkZXYt PnBsYXRmb3JtZGV2LCAwKSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlkZXZfZXJyKCZwZGV2LT5k ZXYsICJmYWlsZWQgdG8gaW5zdGFsbCBJUlEgaGFuZGxlclxuIik7Cj4gKwo+ICsJZGV2LT5pcnFf ZW5hYmxlZCA9IHRydWU7Cj4gKwlkZXYtPnZibGFua19kaXNhYmxlX2FsbG93ZWQgPSB0cnVlOwo+ ICsKPiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9JTlRfU1RBVFVTLCAwKTsK PiArCXJlZ21hcF9yZWFkKGZzbF9kZXYtPnJlZ21hcCwgRENVX0lOVF9NQVNLLCAmaW50X21hc2sp Owo+ICsJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENVX0lOVF9NQVNLLCBpbnRfbWFz ayAmCj4gKwkJICAgICB+RENVX0lOVF9NQVNLX1ZCTEFOSyk7Cj4gKwlyZWdtYXBfd3JpdGUoZnNs X2Rldi0+cmVnbWFwLCBEQ1VfVVBEQVRFX01PREUsIERDVV9VUERBVEVfTU9ERV9SRUFEUkVHKTsK PiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBmc2xfZGN1X2xvYWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBmbGFncykKPiArewo+ICsJc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IGRldi0+cGxhdGZvcm1kZXY7Cj4gKwlzdHJ1Y3QgZnNs X2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2Owo+ICsJc3RydWN0IHJlc291cmNlICpyZXM7Cj4gKwl2 b2lkIF9faW9tZW0gKmJhc2U7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWZzbF9kZXYgPSBkZXZtX2t6 YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpmc2xfZGV2KSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAo IWZzbF9kZXYpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJZnNsX2Rldi0+ZGV2ID0gJnBk ZXYtPmRldjsKPiArCWZzbF9kZXYtPmRkZXYgPSBkZXY7Cj4gKwlmc2xfZGV2LT5ucCA9IHBkZXYt PmRldi5vZl9ub2RlOwo+ICsJZGV2LT5kZXZfcHJpdmF0ZSA9IGZzbF9kZXY7Cj4gKwlkZXZfc2V0 X2RydmRhdGEoZGV2LT5kZXYsIGZzbF9kZXYpOwo+ICsJZHJtX2Rldl9zZXRfdW5pcXVlKGRldiwg ZGV2X25hbWUoZGV2LT5kZXYpKTsKPiArCj4gKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2Uo cGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwo+ICsJaWYgKCFyZXMpIHsKPiArCQlkZXZfZXJyKCZw ZGV2LT5kZXYsICJjb3VsZCBub3QgZ2V0IG1lbW9yeSBJTyByZXNvdXJjZVxuIik7Cj4gKwkJcmV0 dXJuIC1FTk9ERVY7Cj4gKwl9Cj4gKwo+ICsJYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgm cGRldi0+ZGV2LCByZXMpOwo+ICsJaWYgKElTX0VSUihiYXNlKSkgewo+ICsJCXJldCA9IFBUUl9F UlIoYmFzZSk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlmc2xfZGV2LT5jbGsgPSBk ZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgImRjdSIpOwo+ICsJaWYgKElTX0VSUihmc2xfZGV2LT5j bGspKSB7Cj4gKwkJcmV0ID0gUFRSX0VSUihmc2xfZGV2LT5jbGspOwo+ICsJCWRldl9lcnIoJnBk ZXYtPmRldiwgImNvdWxkIG5vdCBnZXQgY2xvY2tcbiIpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9 Cj4gKwljbGtfcHJlcGFyZV9lbmFibGUoZnNsX2Rldi0+Y2xrKTsKPiArCWZzbF9kZXYtPnJlZ21h cCA9IGRldm1fcmVnbWFwX2luaXRfbW1pbygmcGRldi0+ZGV2LCBiYXNlLAo+ICsJCQkmZnNsX2Rj dV9yZWdtYXBfY29uZmlnKTsKPiArCWlmIChJU19FUlIoZnNsX2Rldi0+cmVnbWFwKSkgewo+ICsJ CWRldl9lcnIoJnBkZXYtPmRldiwgInJlZ21hcCBpbml0IGZhaWxlZFxuIik7Cj4gKwkJcmV0dXJu IFBUUl9FUlIoZnNsX2Rldi0+cmVnbWFwKTsKPiArCX0KPiArCj4gKwkvKiBQdXQgVENPTiBpbiBi eXBhc3MgbW9kZSwgc28gdGhlIGlucHV0IHNpZ25hbHMgZnJvbSBEQ1UgYXJlIHBhc3NlZAo+ICsJ ICogdGhyb3VnaCBUQ09OIHVuY2hhbmdlZCAqLwo+ICsJZnNsX2RjdV9ieXBhc3NfdGNvbihmc2xf ZGV2LCBmc2xfZGV2LT5ucCk7Cj4gKwo+ICsJaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGZz bF9kZXYtPm5wLCAiZnNsLGxzMTAyMWEtZGN1IikpCj4gKwkJZGN1X3BpeGNsa19lbmFibGUoKTsK PiArCXJldCA9IGZzbF9kY3VfZHJtX21vZGVzZXRfaW5pdChmc2xfZGV2KTsKPiArCWlmIChyZXQg PCAwKSB7Cj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgbW9k ZSBzZXR0aW5nXG4iKTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJldCA9IGRybV92 YmxhbmtfaW5pdChkZXYsIGRldi0+bW9kZV9jb25maWcubnVtX2NydGMpOwo+ICsJaWYgKHJldCA8 IDApIHsKPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSB2Ymxh bmtcbiIpOwo+ICsJCWdvdG8gZG9uZTsKPiArCX0KPiArCj4gKwlyZXQgPSBmc2xfZGN1X2RybV9p cnFfaW5pdChkZXYpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJZ290byBkb25lOwo+ICsKPiArCWZz bF9kY3VfZmJkZXZfaW5pdChkZXYpOwo+ICsKPiArCXJldHVybiAwOwo+ICtkb25lOgo+ICsJaWYg KHJldCkKPiArCQlmc2xfZGN1X3VubG9hZChkZXYpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX3ByZWNsb3NlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiArewo+ICt9Cj4gKwo+ICtzdGF0aWMgaXJx cmV0dXJuX3QgZnNsX2RjdV9kcm1faXJxKGludCBpcnEsIHZvaWQgKmFyZykKPiArewo+ICsJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGFyZzsKPiArCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2Ug KmZzbF9kZXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJdW5zaWduZWQgaW50IGludF9zdGF0dXM7 Cj4gKwo+ICsJcmVnbWFwX3JlYWQoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfSU5UX1NUQVRVUywgJmlu dF9zdGF0dXMpOwo+ICsJaWYgKGludF9zdGF0dXMgJiBEQ1VfSU5UX1NUQVRVU19WQkxBTkspCj4g KwkJZHJtX2hhbmRsZV92YmxhbmsoZGV2LCAwKTsKPiArCj4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rl di0+cmVnbWFwLCBEQ1VfSU5UX1NUQVRVUywgMHhmZmZmZmZmZik7Cj4gKwlyZWdtYXBfd3JpdGUo ZnNsX2Rldi0+cmVnbWFwLCBEQ1VfVVBEQVRFX01PREUsIERDVV9VUERBVEVfTU9ERV9SRUFEUkVH KTsKPiArCj4gKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZnNs X2RjdV9kcm1fZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykK PiArewo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGZzbF9kY3VfZHJtX2Rp c2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQo+ICt7Cj4gK30K PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZzbF9kY3VfZHJtX2Zv cHMgPSB7Cj4gKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCj4gKwkub3BlbgkJPSBkcm1fb3BlbiwK PiArCS5yZWxlYXNlCT0gZHJtX3JlbGVhc2UsCj4gKwkudW5sb2NrZWRfaW9jdGwJPSBkcm1faW9j dGwsCj4gKyNpZmRlZiBDT05GSUdfQ09NUEFUCj4gKwkuY29tcGF0X2lvY3RsCT0gZHJtX2NvbXBh dF9pb2N0bCwKPiArI2VuZGlmCj4gKwkucG9sbAkJPSBkcm1fcG9sbCwKPiArCS5yZWFkCQk9IGRy bV9yZWFkLAo+ICsJLmxsc2VlawkJPSBub19sbHNlZWssCj4gKwkubW1hcAkJPSBkcm1fZ2VtX2Nt YV9tbWFwLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGZzbF9kY3VfZHJt X2RyaXZlciA9IHsKPiArCS5kcml2ZXJfZmVhdHVyZXMJPSBEUklWRVJfSEFWRV9JUlEgfCBEUklW RVJfR0VNIHwgRFJJVkVSX01PREVTRVQKPiArCQkJCXwgRFJJVkVSX1BSSU1FIHwgRFJJVkVSX0FU T01JQywKPiArCS5sb2FkCQkJPSBmc2xfZGN1X2xvYWQsCj4gKwkudW5sb2FkCQkJPSBmc2xfZGN1 X3VubG9hZCwKPiArCS5wcmVjbG9zZQkJPSBmc2xfZGN1X2RybV9wcmVjbG9zZSwKPiArCS5pcnFf aGFuZGxlcgkJPSBmc2xfZGN1X2RybV9pcnEsCj4gKwkuZ2V0X3ZibGFua19jb3VudGVyCT0gZHJt X3ZibGFua19jb3VudCwKPiArCS5lbmFibGVfdmJsYW5rCQk9IGZzbF9kY3VfZHJtX2VuYWJsZV92 YmxhbmssCj4gKwkuZGlzYWJsZV92YmxhbmsJCT0gZnNsX2RjdV9kcm1fZGlzYWJsZV92Ymxhbmss Cj4gKwkuZ2VtX2ZyZWVfb2JqZWN0CT0gZHJtX2dlbV9jbWFfZnJlZV9vYmplY3QsCj4gKwkuZ2Vt X3ZtX29wcwkJPSAmZHJtX2dlbV9jbWFfdm1fb3BzLAo+ICsJLnByaW1lX2hhbmRsZV90b19mZAk9 IGRybV9nZW1fcHJpbWVfaGFuZGxlX3RvX2ZkLAo+ICsJLnByaW1lX2ZkX3RvX2hhbmRsZQk9IGRy bV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlLAo+ICsJLmdlbV9wcmltZV9pbXBvcnQJPSBkcm1fZ2Vt X3ByaW1lX2ltcG9ydCwKPiArCS5nZW1fcHJpbWVfZXhwb3J0CT0gZHJtX2dlbV9wcmltZV9leHBv cnQsCj4gKwkuZ2VtX3ByaW1lX2dldF9zZ190YWJsZQk9IGRybV9nZW1fY21hX3ByaW1lX2dldF9z Z190YWJsZSwKPiArCS5nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlID0gZHJtX2dlbV9jbWFfcHJp bWVfaW1wb3J0X3NnX3RhYmxlLAo+ICsJLmdlbV9wcmltZV92bWFwCQk9IGRybV9nZW1fY21hX3By aW1lX3ZtYXAsCj4gKwkuZ2VtX3ByaW1lX3Z1bm1hcAk9IGRybV9nZW1fY21hX3ByaW1lX3Z1bm1h cCwKPiArCS5nZW1fcHJpbWVfbW1hcAkJPSBkcm1fZ2VtX2NtYV9wcmltZV9tbWFwLAo+ICsJLmR1 bWJfY3JlYXRlCQk9IGRybV9nZW1fY21hX2R1bWJfY3JlYXRlLAo+ICsJLmR1bWJfbWFwX29mZnNl dAk9IGRybV9nZW1fY21hX2R1bWJfbWFwX29mZnNldCwKPiArCS5kdW1iX2Rlc3Ryb3kJCT0gZHJt X2dlbV9kdW1iX2Rlc3Ryb3ksCj4gKwkuZm9wcwkJCT0gJmZzbF9kY3VfZHJtX2ZvcHMsCj4gKwku bmFtZQkJCT0gImZzbC1kY3UtZHJtIiwKPiArCS5kZXNjCQkJPSAiRnJlZXNjYWxlIERDVSBEUk0i LAo+ICsJLmRhdGUJCQk9ICIyMDE1MDIxMyIsCj4gKwkubWFqb3IJCQk9IDEsCj4gKwkubWlub3IJ CQk9IDAsCj4gK307Cj4gKwo+ICsjaWZkZWYgQ09ORklHX1BNX1NMRUVQCj4gK3N0YXRpYyB2b2lk IGRjdV9waXhjbGtfZGlzYWJsZSh2b2lkKQo+ICt7Cj4gKwlzdHJ1Y3QgcmVnbWFwICpzY2ZnX3Jl Z21hcDsKPiArCj4gKwlzY2ZnX3JlZ21hcCA9IHN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5X2NvbXBh dGlibGUoImZzbCxsczEwMjFhLXNjZmciKTsKPiArCWlmIChJU19FUlIoc2NmZ19yZWdtYXApKSB7 Cj4gKwkJcHJfZXJyKCJObyBzeXNjZmcgcGhhbmRsZSBzcGVjaWZpZWRcbiIpOwo+ICsJCXJldHVy bjsKPiArCX0KPiArCj4gKwlyZWdtYXBfd3JpdGUoc2NmZ19yZWdtYXAsIFNDRkdfUElYQ0xLQ1Is IFBYQ0tfRElTQUJMRSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fcG1fc3Vz cGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZp Y2UgKmZzbF9kZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiArCj4gKwlpZiAoIWZzbF9kZXYp Cj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGZzbF9k ZXYtPm5wLCAiZnNsLGxzMTAyMWEtZGN1IikpCj4gKwkJZGN1X3BpeGNsa19kaXNhYmxlKCk7Cj4g Kwo+ICsJZHJtX2ttc19oZWxwZXJfcG9sbF9kaXNhYmxlKGZzbF9kZXYtPmRkZXYpOwo+ICsJcmVn Y2FjaGVfY2FjaGVfb25seShmc2xfZGV2LT5yZWdtYXAsIHRydWUpOwo+ICsJcmVnY2FjaGVfbWFy a19kaXJ0eShmc2xfZGV2LT5yZWdtYXApOwo+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGZzbF9k ZXYtPmNsayk7Cj4gKwo+ICsJaWYgKGZzbF9kZXYtPnRjb25fcmVnbWFwKSB7Cj4gKwkJcmVnY2Fj aGVfY2FjaGVfb25seShmc2xfZGV2LT50Y29uX3JlZ21hcCwgdHJ1ZSk7Cj4gKwkJcmVnY2FjaGVf bWFya19kaXJ0eShmc2xfZGV2LT50Y29uX3JlZ21hcCk7Cj4gKwkJY2xrX2Rpc2FibGVfdW5wcmVw YXJlKGZzbF9kZXYtPnRjb25fY2xrKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK PiArc3RhdGljIGludCBmc2xfZGN1X2RybV9wbV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQo+ ICt7Cj4gKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2ID0gZGV2X2dldF9kcnZk YXRhKGRldik7Cj4gKwo+ICsJaWYgKCFmc2xfZGV2KQo+ICsJCXJldHVybiAwOwo+ICsKPiArCS8q IEVuYWJsZSBjbG9ja3MgYW5kIHJlc3RvcmUgYWxsIHJlZ2lzdGVycyAqLwo+ICsJaWYgKGZzbF9k ZXYtPnRjb25fcmVnbWFwKSB7Cj4gKwkJY2xrX3ByZXBhcmVfZW5hYmxlKGZzbF9kZXYtPnRjb25f Y2xrKTsKPiArCQlyZWdjYWNoZV9jYWNoZV9vbmx5KGZzbF9kZXYtPnRjb25fcmVnbWFwLCBmYWxz ZSk7Cj4gKwkJcmVnY2FjaGVfc3luYyhmc2xfZGV2LT50Y29uX3JlZ21hcCk7Cj4gKwl9Cj4gKwo+ ICsJY2xrX3ByZXBhcmVfZW5hYmxlKGZzbF9kZXYtPmNsayk7Cj4gKwlkcm1fa21zX2hlbHBlcl9w b2xsX2VuYWJsZShmc2xfZGV2LT5kZGV2KTsKPiArCXJlZ2NhY2hlX2NhY2hlX29ubHkoZnNsX2Rl di0+cmVnbWFwLCBmYWxzZSk7Cj4gKwlyZWdjYWNoZV9zeW5jKGZzbF9kZXYtPnJlZ21hcCk7Cj4g Kwo+ICsJaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGZzbF9kZXYtPm5wLCAiZnNsLGxzMTAy MWEtZGN1IikpCj4gKwkJZGN1X3BpeGNsa19lbmFibGUoKTsKPiArCj4gKwlyZXR1cm4gMDsKPiAr fQo+ICsjZW5kaWYKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBmc2xfZGN1 X2RybV9wbV9vcHMgPSB7Cj4gKwlTRVRfU1lTVEVNX1NMRUVQX1BNX09QUyhmc2xfZGN1X2RybV9w bV9zdXNwZW5kLCBmc2xfZGN1X2RybV9wbV9yZXN1bWUpCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50 IGZzbF9kY3VfZHJtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiAr CXJldHVybiBkcm1fcGxhdGZvcm1faW5pdCgmZnNsX2RjdV9kcm1fZHJpdmVyLCBwZGV2KTsKClBs ZWFzZSB1c2UgZHJtX2Rldl9hbGxvYy9yZWdpc3RlciBkaXJlY3RseSBhbmQgcmVtb3ZlIHRoZSAt PmxvYWQgY2FsbGJhY2suClVzaW5nIHRoZSBkcm1fcGxhdGZvcm0uYyBjb2RlIGlzIGRlcHJlY2F0 ZWQuIFRoZXJlJ3MgYSBwaWxlIG9mIGRldmljZXMgdG8KdXNlIGFzIGV4YW1wbGVzLgotRGFuaWVs Cgo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGZzbF9kY3VfZHJtX3JlbW92ZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xf ZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4gKwo+ICsJZHJtX3B1dF9kZXYoZnNs X2Rldi0+ZGRldik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgb2ZfZGV2aWNlX2lkIGZzbF9kY3Vfb2ZfbWF0Y2hbXSA9IHsKPiArCQl7IC5jb21wYXRp YmxlID0gImZzbCxsczEwMjFhLWRjdSIsIH0sCj4gKwkJeyAuY29tcGF0aWJsZSA9ICJmc2wsdmY2 MTAtZGN1IiwgfSwKPiArCQl7IH0sCj4gK307Cj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGZz bF9kY3Vfb2ZfbWF0Y2gpOwo+ICsKPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZnNs X2RjdV9kcm1fcGxhdGZvcm1fZHJpdmVyID0gewo+ICsJLnByb2JlCQk9IGZzbF9kY3VfZHJtX3By b2JlLAo+ICsJLnJlbW92ZQkJPSBmc2xfZGN1X2RybV9yZW1vdmUsCj4gKwkuZHJpdmVyCQk9IHsK PiArCQkub3duZXIJPSBUSElTX01PRFVMRSwKPiArCQkubmFtZQk9ICJmc2wsZGN1IiwKPiArCQku cG0JPSAmZnNsX2RjdV9kcm1fcG1fb3BzLAo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IGZzbF9kY3Vf b2ZfbWF0Y2gsCj4gKwl9LAo+ICt9Owo+ICsKPiArbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihmc2xf ZGN1X2RybV9wbGF0Zm9ybV9kcml2ZXIpOwo+ICsKPiArTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpm c2wtZGN1LWRybSIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkZyZWVzY2FsZSBEQ1UgRFJNIERy aXZlciIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1k Y3UvZnNsX2RjdV9kcm1fZHJ2LmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw MDAuLjQwZGYxYzUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1k Y3UvZnNsX2RjdV9kcm1fZHJ2LmgKPiBAQCAtMCwwICsxLDIyMyBAQAo+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 Y3UtZHJtIgo+ICsKPiArI2RlZmluZSBEQ1VfRENVX01PREUJCQkweDAwMTAKPiArI2RlZmluZSBE Q1VfTU9ERV9CTEVORF9JVEVSKHgpCQkoKHgpIDw8IDIwKQo+ICsjZGVmaW5lIERDVV9NT0RFX1JB U1RFUl9FTgkJQklUKDE0KQo+ICsjZGVmaW5lIERDVV9NT0RFX0RDVV9NT0RFKHgpCQkoeCkKPiAr I2RlZmluZSBEQ1VfTU9ERV9EQ1VfTU9ERV9NQVNLCQkweDAzCj4gKyNkZWZpbmUgRENVX01PREVf T0ZGCQkJMAo+ICsjZGVmaW5lIERDVV9NT0RFX05PUk1BTAkJCTEKPiArI2RlZmluZSBEQ1VfTU9E RV9URVNUCQkJMgo+ICsjZGVmaW5lIERDVV9NT0RFX0NPTE9SQkFSCQkzCj4gKwo+ICsjZGVmaW5l IERDVV9CR05ECQkJMHgwMDE0Cj4gKyNkZWZpbmUgRENVX0JHTkRfUih4KQkJCSgoeCkgPDwgMTYp Cj4gKyNkZWZpbmUgRENVX0JHTkRfRyh4KQkJCSgoeCkgPDwgOCkKPiArI2RlZmluZSBEQ1VfQkdO RF9CKHgpCQkJKHgpCj4gKwo+ICsjZGVmaW5lIERDVV9ESVNQX1NJWkUJCQkweDAwMTgKPiArI2Rl ZmluZSBEQ1VfRElTUF9TSVpFX0RFTFRBX1koeCkJKCh4KSA8PCAxNikKPiArLypSZWdpc2l0ZXIg dmFsdWUgMS8xNiBvZiBob3Jpem9udGFsIHJlc29sdXRpb24qLwo+ICsjZGVmaW5lIERDVV9ESVNQ X1NJWkVfREVMVEFfWCh4KQkoKHgpID4+IDQpCj4gKwo+ICsjZGVmaW5lIERDVV9IU1lOX1BBUkEJ CQkweDAwMWMKPiArI2RlZmluZSBEQ1VfSFNZTl9QQVJBX0JQKHgpCQkoKHgpIDw8IDIyKQo+ICsj ZGVmaW5lIERDVV9IU1lOX1BBUkFfUFcoeCkJCSgoeCkgPDwgMTEpCj4gKyNkZWZpbmUgRENVX0hT WU5fUEFSQV9GUCh4KQkJKHgpCj4gKwo+ICsjZGVmaW5lIERDVV9WU1lOX1BBUkEJCQkweDAwMjAK PiArI2RlZmluZSBEQ1VfVlNZTl9QQVJBX0JQKHgpCQkoKHgpIDw8IDIyKQo+ICsjZGVmaW5lIERD VV9WU1lOX1BBUkFfUFcoeCkJCSgoeCkgPDwgMTEpCj4gKyNkZWZpbmUgRENVX1ZTWU5fUEFSQV9G UCh4KQkJKHgpCj4gKwo+ICsjZGVmaW5lIERDVV9TWU5fUE9MCQkJMHgwMDI0Cj4gKyNkZWZpbmUg RENVX1NZTl9QT0xfSU5WX1BYQ0tfRkFMTAkoMCA8PCA2KQo+ICsjZGVmaW5lIERDVV9TWU5fUE9M X05FR19SRU1BSU4JCSgwIDw8IDUpCj4gKyNkZWZpbmUgRENVX1NZTl9QT0xfSU5WX1ZTX0xPVwkJ QklUKDEpCj4gKyNkZWZpbmUgRENVX1NZTl9QT0xfSU5WX0hTX0xPVwkJQklUKDApCj4gKwo+ICsj ZGVmaW5lIERDVV9USFJFU0hPTEQJCQkweDAwMjgKPiArI2RlZmluZSBEQ1VfVEhSRVNIT0xEX0xT X0JGX1ZTKHgpCSgoeCkgPDwgMTYpCj4gKyNkZWZpbmUgRENVX1RIUkVTSE9MRF9PVVRfQlVGX0hJ R0goeCkJKCh4KSA8PCA4KQo+ICsjZGVmaW5lIERDVV9USFJFU0hPTERfT1VUX0JVRl9MT1coeCkJ KHgpCj4gKyNkZWZpbmUgQkZfVlNfVkFMCQkJMHgwMwo+ICsjZGVmaW5lIEJVRl9NQVhfVkFMCQkJ MHg3OAo+ICsjZGVmaW5lIEJVRl9NSU5fVkFMCQkJMHgwYQo+ICsKPiArI2RlZmluZSBEQ1VfSU5U X1NUQVRVUwkJCTB4MDAyQwo+ICsjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1ZTWU5DCQlCSVQoMCkK PiArI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19VTkRSVU4JCUJJVCgxKQo+ICsjZGVmaW5lIERDVV9J TlRfU1RBVFVTX0xTQkZWUwkJQklUKDIpCj4gKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfVkJMQU5L CQlCSVQoMykKPiArI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19DUkNSRUFEWQkJQklUKDQpCj4gKyNk ZWZpbmUgRENVX0lOVF9TVEFUVVNfQ1JDT1ZFUkZMT1cJQklUKDUpCj4gKyNkZWZpbmUgRENVX0lO VF9TVEFUVVNfUDFGSUZPTE8JCUJJVCg2KQo+ICsjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1AxRklG T0hJCQlCSVQoNykKPiArI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QMkZJRk9MTwkJQklUKDgpCj4g KyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfUDJGSUZPSEkJCUJJVCg5KQo+ICsjZGVmaW5lIERDVV9J TlRfU1RBVFVTX1BST0dFTkQJCUJJVCgxMCkKPiArI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19JUE1F UlJPUgkJQklUKDExKQo+ICsjZGVmaW5lIERDVV9JTlRfU1RBVFVTX0xZUlRSQU5TCQlCSVQoMTIp Cj4gKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfRE1BVFJBTlMJCUJJVCgxNCkKPiArI2RlZmluZSBE Q1VfSU5UX1NUQVRVU19QM0ZJRk9MTwkJQklUKDE2KQo+ICsjZGVmaW5lIERDVV9JTlRfU1RBVFVT X1AzRklGT0hJCQlCSVQoMTcpCj4gKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfUDRGSUZPTE8JCUJJ VCgxOCkKPiArI2RlZmluZSBEQ1VfSU5UX1NUQVRVU19QNEZJRk9ISQkJQklUKDE5KQo+ICsjZGVm aW5lIERDVV9JTlRfU1RBVFVTX1AxRU1QVFkJCUJJVCgyNikKPiArI2RlZmluZSBEQ1VfSU5UX1NU QVRVU19QMkVNUFRZCQlCSVQoMjcpCj4gKyNkZWZpbmUgRENVX0lOVF9TVEFUVVNfUDNFTVBUWQkJ QklUKDI4KQo+ICsjZGVmaW5lIERDVV9JTlRfU1RBVFVTX1A0RU1QVFkJCUJJVCgyOSkKPiArCj4g KyNkZWZpbmUgRENVX0lOVF9NQVNLCQkJMHgwMDMwCj4gKyNkZWZpbmUgRENVX0lOVF9NQVNLX1ZT WU5DCQlCSVQoMCkKPiArI2RlZmluZSBEQ1VfSU5UX01BU0tfVU5EUlVOCQlCSVQoMSkKPiArI2Rl ZmluZSBEQ1VfSU5UX01BU0tfTFNCRlZTCQlCSVQoMikKPiArI2RlZmluZSBEQ1VfSU5UX01BU0tf VkJMQU5LCQlCSVQoMykKPiArI2RlZmluZSBEQ1VfSU5UX01BU0tfQ1JDUkVBRFkJCUJJVCg0KQo+ ICsjZGVmaW5lIERDVV9JTlRfTUFTS19DUkNPVkVSRkxPVwlCSVQoNSkKPiArI2RlZmluZSBEQ1Vf SU5UX01BU0tfUDFGSUZPTE8JCUJJVCg2KQo+ICsjZGVmaW5lIERDVV9JTlRfTUFTS19QMUZJRk9I SQkJQklUKDcpCj4gKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AyRklGT0xPCQlCSVQoOCkKPiArI2Rl ZmluZSBEQ1VfSU5UX01BU0tfUDJGSUZPSEkJCUJJVCg5KQo+ICsjZGVmaW5lIERDVV9JTlRfTUFT S19QUk9HRU5ECQlCSVQoMTApCj4gKyNkZWZpbmUgRENVX0lOVF9NQVNLX0lQTUVSUk9SCQlCSVQo MTEpCj4gKyNkZWZpbmUgRENVX0lOVF9NQVNLX0xZUlRSQU5TCQlCSVQoMTIpCj4gKyNkZWZpbmUg RENVX0lOVF9NQVNLX0RNQVRSQU5TCQlCSVQoMTQpCj4gKyNkZWZpbmUgRENVX0lOVF9NQVNLX1Az RklGT0xPCQlCSVQoMTYpCj4gKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AzRklGT0hJCQlCSVQoMTcp Cj4gKyNkZWZpbmUgRENVX0lOVF9NQVNLX1A0RklGT0xPCQlCSVQoMTgpCj4gKyNkZWZpbmUgRENV X0lOVF9NQVNLX1A0RklGT0hJCQlCSVQoMTkpCj4gKyNkZWZpbmUgRENVX0lOVF9NQVNLX1AxRU1Q VFkJCUJJVCgyNikKPiArI2RlZmluZSBEQ1VfSU5UX01BU0tfUDJFTVBUWQkJQklUKDI3KQo+ICsj ZGVmaW5lIERDVV9JTlRfTUFTS19QM0VNUFRZCQlCSVQoMjgpCj4gKyNkZWZpbmUgRENVX0lOVF9N QVNLX1A0RU1QVFkJCUJJVCgyOSkKPiArCj4gKyNkZWZpbmUgRENVX0RJVl9SQVRJTwkJCTB4MDA1 NAo+ICsKPiArI2RlZmluZSBEQ1VfVVBEQVRFX01PREUJCQkweDAwY2MKPiArI2RlZmluZSBEQ1Vf VVBEQVRFX01PREVfTU9ERQkJQklUKDMxKQo+ICsjZGVmaW5lIERDVV9VUERBVEVfTU9ERV9SRUFE UkVHCQlCSVQoMzApCj4gKwo+ICsjZGVmaW5lIERDVV9EQ0ZCX01BWAkJCTB4MzAwCj4gKwo+ICsj ZGVmaW5lIERDVV9DVFJMREVTQ0xOXzEoeCkJCSgweDIwMCArICh4KSAqIDB4NDApCj4gKyNkZWZp bmUgRENVX0NUUkxERVNDTE5fMV9IRUlHSFQoeCkJKCh4KSA8PCAxNikKPiArI2RlZmluZSBEQ1Vf Q1RSTERFU0NMTl8xX1dJRFRIKHgpCSh4KQo+ICsKPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl8y KHgpCQkoMHgyMDQgKyAoeCkgKiAweDQwKQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzJfUE9T WSh4KQkoKHgpIDw8IDE2KQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzJfUE9TWCh4KQkoeCkK PiArCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fMyh4KQkJKDB4MjA4ICsgKHgpICogMHg0MCkK PiArCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNCh4KQkJKDB4MjBjICsgKHgpICogMHg0MCkK PiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80X0VOCQlCSVQoMzEpCj4gKyNkZWZpbmUgRENVX0NU UkxERVNDTE5fNF9USUxFX0VOCUJJVCgzMCkKPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80X0RB VEFfU0VMX0NMVVQJQklUKDI5KQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzRfU0FGRVRZX0VO CUJJVCgyOCkKPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl80X1RSQU5TKHgpCSgoeCkgPDwgMjAp Cj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9CUFAoeCkJCSgoeCkgPDwgMTYpCj4gKyNkZWZp bmUgRENVX0NUUkxERVNDTE5fNF9STEVfRU4JCUJJVCgxNSkKPiArI2RlZmluZSBEQ1VfQ1RSTERF U0NMTl80X0xVT0ZGUyh4KQkoKHgpIDw8IDQpCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9C Ql9PTgkJQklUKDIpCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNF9BQih4KQkJKHgpCj4gKwo+ ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzUoeCkJCSgweDIxMCArICh4KSAqIDB4NDApCj4gKyNk ZWZpbmUgRENVX0NUUkxERVNDTE5fNV9DS01BWF9SKHgpCSgoeCkgPDwgMTYpCj4gKyNkZWZpbmUg RENVX0NUUkxERVNDTE5fNV9DS01BWF9HKHgpCSgoeCkgPDwgOCkKPiArI2RlZmluZSBEQ1VfQ1RS TERFU0NMTl81X0NLTUFYX0IoeCkJKHgpCj4gKwo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzYo eCkJCSgweDIxNCArICh4KSAqIDB4NDApCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNl9DS01J Tl9SKHgpCSgoeCkgPDwgMTYpCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fNl9DS01JTl9HKHgp CSgoeCkgPDwgOCkKPiArI2RlZmluZSBEQ1VfQ1RSTERFU0NMTl82X0NLTUlOX0IoeCkJKHgpCj4g Kwo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzcoeCkJCSgweDIxOCArICh4KSAqIDB4NDApCj4g KyNkZWZpbmUgRENVX0NUUkxERVNDTE5fN19USUxFX1ZFUih4KQkoKHgpIDw8IDE2KQo+ICsjZGVm aW5lIERDVV9DVFJMREVTQ0xOXzdfVElMRV9IT1IoeCkJKHgpCj4gKwo+ICsjZGVmaW5lIERDVV9D VFJMREVTQ0xOXzgoeCkJCSgweDIxYyArICh4KSAqIDB4NDApCj4gKyNkZWZpbmUgRENVX0NUUkxE RVNDTE5fOF9GR19GQ09MT1IoeCkJKHgpCj4gKwo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzko eCkJCSgweDIyMCArICh4KSAqIDB4NDApCj4gKyNkZWZpbmUgRENVX0NUUkxERVNDTE5fOV9CR19C Q09MT1IoeCkJKHgpCj4gKwo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzEwKHgpCQkoMHgyMjQg KyAoeCkgKiAweDQwKQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzEwX1BPU1RfU0tJUCh4KQko KHgpIDw8IDE2KQo+ICsjZGVmaW5lIERDVV9DVFJMREVTQ0xOXzEwX1BSRV9TS0lQKHgpCSh4KQo+ ICsKPiArI2lmZGVmIENPTkZJR19TT0NfVkY2MTAKPiArI2RlZmluZSBEQ1VfVE9UQUxfTEFZRVJf TlVNICAgICAgICAgICAgIDY0Cj4gKyNkZWZpbmUgRENVX0xBWUVSX05VTV9NQVggICAgICAgICAg ICAgICA2Cj4gKyNlbHNlCj4gKyNkZWZpbmUgRENVX1RPVEFMX0xBWUVSX05VTSAgICAgICAgICAg ICAxNgo+ICsjZGVmaW5lIERDVV9MQVlFUl9OVU1fTUFYICAgICAgICAgICAgICAgNAo+ICsjZW5k aWYKPiArCj4gKyNkZWZpbmUgRlNMX0RDVV9SR0I1NjUJCQk0Cj4gKyNkZWZpbmUgRlNMX0RDVV9S R0I4ODgJCQk1Cj4gKyNkZWZpbmUgRlNMX0RDVV9BUkdCODg4OAkJNgo+ICsjZGVmaW5lIEZTTF9E Q1VfQVJHQjE1NTUJCTExCj4gKyNkZWZpbmUgRlNMX0RDVV9BUkdCNDQ0NAkJMTIKPiArI2RlZmlu ZSBGU0xfRENVX1lVVjQyMgkJCTE0Cj4gKwo+ICsjZGVmaW5lIFRDT05fQ1RSTDEJCQkweDAwMDAK PiArI2RlZmluZSBUQ09OX0JZUEFTU19FTkFCTEUJCUJJVCgyOSkKPiArCj4gKyNkZWZpbmUgU0NG R19QSVhDTEtDUgkJCTB4MjgKPiArI2RlZmluZSBQWENLX0VOQUJMRQkJCUJJVCgzMSkKPiArI2Rl ZmluZSBQWENLX0RJU0FCTEUJCQkwCj4gKwo+ICsjZGVmaW5lIERCRyhmbXQsIC4uLikgRFJNX0RF QlVHKGZtdCJcbiIsICMjX19WQV9BUkdTX18pCj4gKwo+ICtzdHJ1Y3QgY2xrOwo+ICtzdHJ1Y3Qg ZGV2aWNlOwo+ICtzdHJ1Y3QgZHJtX2RldmljZTsKPiArCj4gK3N0cnVjdCBmc2xfZGN1X2RybV9k ZXZpY2Ugewo+ICsJc3RydWN0IGRldmljZSAqZGV2Owo+ICsJc3RydWN0IGRldmljZV9ub2RlICpu cDsKPiArCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKPiArCXN0cnVjdCByZWdtYXAgKnRjb25fcmVn bWFwOwo+ICsJdW5zaWduZWQgaW50IGlycTsKPiArCXN0cnVjdCBjbGsgKmNsazsKPiArCXN0cnVj dCBjbGsgKnRjb25fY2xrOwo+ICsJLypwcm90ZWN0cyBoYXJkd2FyZSByZWdpc3RlciovCj4gKwlz cGlubG9ja190IGlycV9sb2NrOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRkZXY7Cj4gKwlzdHJ1 Y3QgZHJtX2ZiZGV2X2NtYSAqZmJkZXY7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgY3J0YzsKPiArCXN0 cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOwo+ICsJc3RydWN0IGZzbF9kY3VfZHJtX2Nvbm5lY3Rv ciBjb25uZWN0b3I7Cj4gK307Cj4gKwo+ICt2b2lkIGZzbF9kY3VfZmJkZXZfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKPiArCj4gKyNlbmRpZiAvKiBfX0ZTTF9EQ1VfRFJNX0RSVl9IX18g Ki8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZmJk ZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ZiZGV2LmMKPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmY4ZWYwZTEKPiAtLS0gL2Rldi9udWxs Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZmJkZXYuYwo+IEBA IC0wLDAgKzEsMjYgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWlj b25kdWN0b3IsIEluYy4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKPiArICogdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVi bGlzaGVkIGJ5Cj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAqCj4gKyAq IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLCBidXQgV0lUSE9VVAo+ICsgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKPiArICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvcgo+ICsgKiBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGRy bS9kcm1QLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KPiArCj4gKyNp bmNsdWRlICJmc2xfZGN1X2RybV9kcnYuaCIKPiArCj4gKy8qIGluaXRpYWxpemUgZmJkZXYgaGVs cGVyICovCj4gK3ZvaWQgZnNsX2RjdV9mYmRldl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gK3sKPiArCXN0cnVjdCBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2LT5kZXYpOwo+ICsKPiArCWZzbF9kZXYtPmZiZGV2ID0gZHJtX2ZiZGV2X2NtYV9p bml0KGRldiwgMjQsIDEsIDEpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9m c2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2Rj dV9kcm1fa21zLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjBkZTIx YzYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2Rj dV9kcm1fa21zLmMKPiBAQCAtMCwwICsxLDQyIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAyMDE1 IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCj4gKyAqCj4gKyAqIEZyZWVzY2FsZSBEQ1Ug ZHJtIGRldmljZSBkcml2ZXIKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZSwgb3IKPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9k cm1fYXRvbWljX2hlbHBlci5oPgo+ICsKPiArI2luY2x1ZGUgImZzbF9kY3VfZHJtX2NydGMuaCIK PiArI2luY2x1ZGUgImZzbF9kY3VfZHJtX2Nvbm5lY3Rvci5oIgo+ICsjaW5jbHVkZSAiZnNsX2Rj dV9kcm1fZHJ2LmgiCj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19m dW5jcyBmc2xfZGN1X2RybV9tb2RlX2NvbmZpZ19mdW5jcyA9IHsKPiArCS5mYl9jcmVhdGUgPSBk cm1fZmJfY21hX2NyZWF0ZSwKPiArCS5hdG9taWNfY2hlY2sgPSBkcm1fYXRvbWljX2hlbHBlcl9j aGVjaywKPiArCS5hdG9taWNfY29tbWl0ID0gZHJtX2F0b21pY19oZWxwZXJfY29tbWl0LAo+ICt9 Owo+ICsKPiAraW50IGZzbF9kY3VfZHJtX21vZGVzZXRfaW5pdChzdHJ1Y3QgZnNsX2RjdV9kcm1f ZGV2aWNlICpmc2xfZGV2KQo+ICt7Cj4gKwlkcm1fbW9kZV9jb25maWdfaW5pdChmc2xfZGV2LT5k ZGV2KTsKPiArCj4gKwlmc2xfZGV2LT5kZGV2LT5tb2RlX2NvbmZpZy5taW5fd2lkdGggPSAwOwo+ ICsJZnNsX2Rldi0+ZGRldi0+bW9kZV9jb25maWcubWluX2hlaWdodCA9IDA7Cj4gKwlmc2xfZGV2 LT5kZGV2LT5tb2RlX2NvbmZpZy5tYXhfd2lkdGggPSAyMDMxOwo+ICsJZnNsX2Rldi0+ZGRldi0+ bW9kZV9jb25maWcubWF4X2hlaWdodCA9IDIwNDc7Cj4gKwlmc2xfZGV2LT5kZGV2LT5tb2RlX2Nv bmZpZy5mdW5jcyA9ICZmc2xfZGN1X2RybV9tb2RlX2NvbmZpZ19mdW5jczsKPiArCj4gKwlkcm1f a21zX2hlbHBlcl9wb2xsX2luaXQoZnNsX2Rldi0+ZGRldik7Cj4gKwlmc2xfZGN1X2RybV9jcnRj X2NyZWF0ZShmc2xfZGV2KTsKPiArCWZzbF9kY3VfZHJtX2VuY29kZXJfY3JlYXRlKGZzbF9kZXYs ICZmc2xfZGV2LT5jcnRjKTsKPiArCWZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9jcmVhdGUoZnNsX2Rl diwgJmZzbF9kZXYtPmVuY29kZXIpOwo+ICsJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGZzbF9kZXYt PmRkZXYpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2ttcy5oIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3Uv ZnNsX2RjdV9kcm1fa21zLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAu LmI5YmQyOTkKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3Uv ZnNsX2RjdV9kcm1fa21zLmgKPiBAQCAtMCwwICsxLDE3IEBACj4gKy8qCj4gKyAqIENvcHlyaWdo dCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCj4gKyAqCj4gKyAqIEZyZWVzY2Fs ZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9fRlNMX0RDVV9EUk1fS01TX0hfXwo+ICsj ZGVmaW5lIF9fRlNMX0RDVV9EUk1fS01TX0hfXwo+ICsKPiAraW50IGZzbF9kY3VfZHJtX21vZGVz ZXRfaW5pdChzdHJ1Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2KTsKPiArCj4gKyNlbmRp ZiAvKiBfX0ZTTF9EQ1VfRFJNX0tNU19IX18gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1 L2ZzbF9kY3VfZHJtX3BsYW5lLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw MDAuLmU3Zjg3OWMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1k Y3UvZnNsX2RjdV9kcm1fcGxhbmUuYwo+IEBAIC0wLDAgKzEsMTk1IEBACj4gKy8qCj4gKyAqIENv cHlyaWdodCAyMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCj4gKyAqCj4gKyAqIEZy ZWVzY2FsZSBEQ1UgZHJtIGRldmljZSBkcml2ZXIKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiAr ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiArI2lu Y2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5o Pgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9jbWFfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0v ZHJtX2dlbV9jbWFfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPiArI2lu Y2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21p Y19oZWxwZXIuaD4KPiArCj4gKyNpbmNsdWRlICJmc2xfZGN1X2RybV9kcnYuaCIKPiArI2luY2x1 ZGUgImZzbF9kY3VfZHJtX2ttcy5oIgo+ICsjaW5jbHVkZSAiZnNsX2RjdV9kcm1fcGxhbmUuaCIK PiArCj4gKyNkZWZpbmUgdG9fZnNsX2RjdV9wbGFuZShwbGFuZSkgXAo+ICsJY29udGFpbmVyX29m KHBsYW5lLCBzdHJ1Y3QgZnNsX2RjdV9kcm1fcGxhbmUsIHBsYW5lKQo+ICsKPiArc3RhdGljIGlu dAo+ICtmc2xfZGN1X2RybV9wbGFuZV9wcmVwYXJlX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LAo+ICsJCQkgICAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ICsJCQkgICAgIGNvbnN0 IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19zdGF0ZSkKPiArewo+ICsJcmV0dXJuIDA7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK2ZzbF9kY3VfZHJtX3BsYW5lX2NsZWFudXBfZmIoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gKwkJCSAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIsCj4gKwkJCSAgICAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3N0YXRlKQo+ ICt7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZnNsX2RjdV9kcm1fcGxhbmVfYXRvbWljX2NoZWNr KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICsJCQkJCSAgc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSAqc3RhdGUpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBmc2xf ZGN1X2RybV9wbGFuZV9hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAr CQkJCQkgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKPiArewo+ICt9Cj4g Kwo+ICt2b2lkIGZzbF9kY3VfZHJtX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCj4gKwkJCQkgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkK PiArewo+ICsJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IHBsYW5lLT5kZXYt PmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUgPSBwbGFuZS0+ c3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lLT5zdGF0ZS0+ZmI7 Cj4gKwlzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpnZW07Cj4gKwlzdHJ1Y3QgZnNsX2RjdV9k cm1fcGxhbmUgKmZzbF9wbGFuZSA9IHRvX2ZzbF9kY3VfcGxhbmUocGxhbmUpOwo+ICsJdTMyIGlu ZGV4LCBhbHBoYSwgYnBwOwo+ICsKPiArCWlmICghZmIpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWlu ZGV4ID0gZnNsX3BsYW5lLT5pbmRleDsKPiArCWdlbSA9IGRybV9mYl9jbWFfZ2V0X2dlbV9vYmoo ZmIsIDApOwo+ICsKPiArCXN3aXRjaCAoZmItPnBpeGVsX2Zvcm1hdCkgewo+ICsJY2FzZSBEUk1f Rk9STUFUX1JHQjU2NToKPiArCQlicHAgPSBGU0xfRENVX1JHQjU2NTsKPiArCQlhbHBoYSA9IDB4 ZmY7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERSTV9GT1JNQVRfUkdCODg4Ogo+ICsJCWJwcCA9IEZT TF9EQ1VfUkdCODg4Owo+ICsJCWFscGhhID0gMHhmZjsKPiArCQlicmVhazsKPiArCWNhc2UgRFJN X0ZPUk1BVF9BUkdCODg4ODoKPiArCQlicHAgPSBGU0xfRENVX0FSR0I4ODg4Owo+ICsJCWFscGhh ID0gMHhmZjsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1JBNDQ0NDoKPiArCQli cHAgPSBGU0xfRENVX0FSR0I0NDQ0Owo+ICsJCWFscGhhID0gMHhmZjsKPiArCQlicmVhazsKPiAr CWNhc2UgRFJNX0ZPUk1BVF9BUkdCMTU1NToKPiArCQlicHAgPSBGU0xfRENVX0FSR0IxNTU1Owo+ ICsJCWFscGhhID0gMHhmZjsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX0ZPUk1BVF9ZVVY0MjI6 Cj4gKwkJYnBwID0gRlNMX0RDVV9ZVVY0MjI7Cj4gKwkJYWxwaGEgPSAweGZmOwo+ICsJCWJyZWFr Owo+ICsJZGVmYXVsdDoKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJcmVnbWFwX3dyaXRlKGZz bF9kZXYtPnJlZ21hcCwgRENVX0NUUkxERVNDTE5fMShpbmRleCksCj4gKwkJICAgICBEQ1VfQ1RS TERFU0NMTl8xX0hFSUdIVChzdGF0ZS0+Y3J0Y19oKSB8Cj4gKwkJICAgICBEQ1VfQ1RSTERFU0NM Tl8xX1dJRFRIKHN0YXRlLT5jcnRjX3cpKTsKPiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdt YXAsIERDVV9DVFJMREVTQ0xOXzIoaW5kZXgpLAo+ICsJCSAgICAgRENVX0NUUkxERVNDTE5fMl9Q T1NZKHN0YXRlLT5jcnRjX3kpIHwKPiArCQkgICAgIERDVV9DVFJMREVTQ0xOXzJfUE9TWChzdGF0 ZS0+Y3J0Y194KSk7Cj4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERF U0NMTl8zKGluZGV4KSwgZ2VtLT5wYWRkcik7Cj4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+cmVn bWFwLCBEQ1VfQ1RSTERFU0NMTl80KGluZGV4KSwKPiArCQkgICAgIERDVV9DVFJMREVTQ0xOXzRf RU4gfAo+ICsJCSAgICAgRENVX0NUUkxERVNDTE5fNF9UUkFOUyhhbHBoYSkgfAo+ICsJCSAgICAg RENVX0NUUkxERVNDTE5fNF9CUFAoYnBwKSB8Cj4gKwkJICAgICBEQ1VfQ1RSTERFU0NMTl80X0FC KDApKTsKPiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9DVFJMREVTQ0xOXzUo aW5kZXgpLAo+ICsJCSAgICAgRENVX0NUUkxERVNDTE5fNV9DS01BWF9SKDB4RkYpIHwKPiArCQkg ICAgIERDVV9DVFJMREVTQ0xOXzVfQ0tNQVhfRygweEZGKSB8Cj4gKwkJICAgICBEQ1VfQ1RSTERF U0NMTl81X0NLTUFYX0IoMHhGRikpOwo+ICsJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwg RENVX0NUUkxERVNDTE5fNihpbmRleCksCj4gKwkJICAgICBEQ1VfQ1RSTERFU0NMTl82X0NLTUlO X1IoMCkgfAo+ICsJCSAgICAgRENVX0NUUkxERVNDTE5fNl9DS01JTl9HKDApIHwKPiArCQkgICAg IERDVV9DVFJMREVTQ0xOXzZfQ0tNSU5fQigwKSk7Cj4gKwlyZWdtYXBfd3JpdGUoZnNsX2Rldi0+ cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl83KGluZGV4KSwgMCk7Cj4gKwlyZWdtYXBfd3JpdGUoZnNs X2Rldi0+cmVnbWFwLCBEQ1VfQ1RSTERFU0NMTl84KGluZGV4KSwKPiArCQkgICAgIERDVV9DVFJM REVTQ0xOXzhfRkdfRkNPTE9SKDApKTsKPiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAs IERDVV9DVFJMREVTQ0xOXzkoaW5kZXgpLAo+ICsJCSAgICAgRENVX0NUUkxERVNDTE5fOV9CR19C Q09MT1IoMCkpOwo+ICsJaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKGZzbF9kZXYtPm5wLCAi ZnNsLGxzMTAyMWEtZGN1IikpCj4gKwkJcmVnbWFwX3dyaXRlKGZzbF9kZXYtPnJlZ21hcCwgRENV X0NUUkxERVNDTE5fMTAoaW5kZXgpLAo+ICsJCQkgICAgIERDVV9DVFJMREVTQ0xOXzEwX1BPU1Rf U0tJUCgwKSB8Cj4gKwkJCSAgICAgRENVX0NUUkxERVNDTE5fMTBfUFJFX1NLSVAoMCkpOwo+ICsJ cmVnbWFwX3VwZGF0ZV9iaXRzKGZzbF9kZXYtPnJlZ21hcCwgRENVX0RDVV9NT0RFLAo+ICsJCQkg ICBEQ1VfTU9ERV9EQ1VfTU9ERV9NQVNLLAo+ICsJCQkgICBEQ1VfTU9ERV9EQ1VfTU9ERShEQ1Vf TU9ERV9OT1JNQUwpKTsKPiArCXJlZ21hcF93cml0ZShmc2xfZGV2LT5yZWdtYXAsIERDVV9VUERB VEVfTU9ERSwgRENVX1VQREFURV9NT0RFX1JFQURSRUcpOwo+ICt9Cj4gKwo+ICtpbnQgZnNsX2Rj dV9kcm1fcGxhbmVfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPiArewo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArCj4gK3ZvaWQgZnNsX2RjdV9kcm1fcGxhbmVfZGVzdHJveShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSkKPiArewo+ICsJZnNsX2RjdV9kcm1fcGxhbmVfZGlzYWJsZShwbGFu ZSk7Cj4gKwlkcm1fcGxhbmVfY2xlYW51cChwbGFuZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25z dCB1aW50MzJfdCBmc2xfZGN1X2RybV9wbGFuZV9mb3JtYXRzW10gPSB7Cj4gKwlEUk1fRk9STUFU X1JHQjU2NSwKPiArCURSTV9GT1JNQVRfUkdCODg4LAo+ICsJRFJNX0ZPUk1BVF9BUkdCODg4OCwK PiArCURSTV9GT1JNQVRfQVJHQjQ0NDQsCj4gKwlEUk1fRk9STUFUX0FSR0IxNTU1LAo+ICsJRFJN X0ZPUk1BVF9ZVVY0MjIsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFu ZV9mdW5jcyBmc2xfZGN1X2RybV9wbGFuZV9mdW5jcyA9IHsKPiArCS51cGRhdGVfcGxhbmUgPSBk cm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUsCj4gKwkuZGlzYWJsZV9wbGFuZSA9IGRybV9h dG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsCj4gKwkuZGVzdHJveSA9IGZzbF9kY3VfZHJtX3Bs YW5lX2Rlc3Ryb3ksCj4gKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVs cGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwKPiArCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRy bV9hdG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3RhdGUsCj4gKwkucmVzZXQgPSBkcm1fYXRv bWljX2hlbHBlcl9wbGFuZV9yZXNldCwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyBmc2xfZGN1X2RybV9wbGFuZV9oZWxwZXJfZnVuY3MgPSB7 Cj4gKwkucHJlcGFyZV9mYiA9IGZzbF9kY3VfZHJtX3BsYW5lX3ByZXBhcmVfZmIsCj4gKwkuY2xl YW51cF9mYiA9IGZzbF9kY3VfZHJtX3BsYW5lX2NsZWFudXBfZmIsCj4gKwkuYXRvbWljX2NoZWNr ID0gZnNsX2RjdV9kcm1fcGxhbmVfYXRvbWljX2NoZWNrLAo+ICsJLmF0b21pY191cGRhdGUgPSBm c2xfZGN1X2RybV9wbGFuZV9hdG9taWNfdXBkYXRlLAo+ICsJLmF0b21pY19kaXNhYmxlID0gZnNs X2RjdV9kcm1fcGxhbmVfYXRvbWljX2Rpc2FibGUsCj4gK307Cj4gKwo+ICtzdHJ1Y3QgZHJtX3Bs YW5lICpmc2xfZGN1X2RybV9wcmltYXJ5X2NyZWF0ZV9wbGFuZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5Owo+ICsJaW50IHJldDsKPiAr Cj4gKwlwcmltYXJ5ID0ga3phbGxvYyhzaXplb2YoKnByaW1hcnkpLCBHRlBfS0VSTkVMKTsKPiAr CWlmICghcHJpbWFyeSkgewo+ICsJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byBhbGxvY2F0ZSBw cmltYXJ5IHBsYW5lXG4iKTsKPiArCQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCj4gKwkvKiBwb3Nz aWJsZV9jcnRjJ3Mgd2lsbCBiZSBmaWxsZWQgaW4gbGF0ZXIgYnkgY3J0Y19pbml0ICovCj4gKwly ZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoZGV2LCBwcmltYXJ5LCAwLAo+ICsJCQkJICAg ICAgICZmc2xfZGN1X2RybV9wbGFuZV9mdW5jcywKPiArCQkJCSAgICAgICBmc2xfZGN1X2RybV9w bGFuZV9mb3JtYXRzLAo+ICsJCQkJICAgICAgIEFSUkFZX1NJWkUoZnNsX2RjdV9kcm1fcGxhbmVf Zm9ybWF0cyksCj4gKwkJCQkgICAgICAgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7Cj4gKwlpZiAo cmV0KSB7Cj4gKwkJa2ZyZWUocHJpbWFyeSk7Cj4gKwkJcHJpbWFyeSA9IE5VTEw7Cj4gKwl9Cj4g Kwlkcm1fcGxhbmVfaGVscGVyX2FkZChwcmltYXJ5LCAmZnNsX2RjdV9kcm1fcGxhbmVfaGVscGVy X2Z1bmNzKTsKPiArCj4gKwlyZXR1cm4gcHJpbWFyeTsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5oIGIvZHJpdmVycy9ncHUvZHJt L2ZzbC1kY3UvZnNsX2RjdV9kcm1fcGxhbmUuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMC4uY2NiZmE2MQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vZnNsLWRjdS9mc2xfZGN1X2RybV9wbGFuZS5oCj4gQEAgLTAsMCArMSwyMyBAQAo+ICsvKgo+ ICsgKiBDb3B5cmlnaHQgMjAxNSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgo+ICsgKgo+ ICsgKiBGcmVlc2NhbGUgRENVIGRybSBkZXZpY2UgZHJpdmVyCj4gKyAqCj4gKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Cj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAqIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX0ZTTF9EQ1VfRFJN X1BMQU5FX0hfXwo+ICsjZGVmaW5lIF9fRlNMX0RDVV9EUk1fUExBTkVfSF9fCj4gKwo+ICtzdHJ1 Y3QgZnNsX2RjdV9kcm1fZGV2aWNlOwo+ICtzdHJ1Y3QgZnNsX2RjdV9kcm1fcGxhbmUgewo+ICsJ c3RydWN0IGRybV9wbGFuZSBwbGFuZTsKPiArCXVuc2lnbmVkIGludCBpbmRleDsKPiArfTsKPiAr Cj4gK3N0cnVjdCBkcm1fcGxhbmUgKmZzbF9kY3VfZHJtX3ByaW1hcnlfY3JlYXRlX3BsYW5lKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICsKPiArI2VuZGlmIC8qIF9fRlNMX0RDVV9EUk1fUExB TkVfSF9fICovCj4gLS0gCj4gMi4xLjAuMjcuZzk2ZGIzMjQKPiAKCi0tIApEYW5pZWwgVmV0dGVy ClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5j aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=