From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hyun Kwon Subject: RE: [PATCH v3 2/8] drm: xlnx: Xilinx DRM KMS driver Date: Fri, 26 Jan 2018 01:36:15 +0000 Message-ID: References: <1516067831-11382-1-git-send-email-hyun.kwon@xilinx.com> <1516067831-11382-2-git-send-email-hyun.kwon@xilinx.com> <20180117082028.GC2759@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180117082028.GC2759-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> Content-Language: en-US Sender: devicetree-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Daniel Vetter Cc: "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , Michal Simek , Rob Herring , Daniel Vetter , Laurent Pinchart List-Id: devicetree@vger.kernel.org SGkgRGFuaWVsLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IERhbmll bCBWZXR0ZXIgW21haWx0bzpkYW5pZWwudmV0dGVyQGZmd2xsLmNoXSBPbiBCZWhhbGYgT2YgRGFu aWVsDQo+IFZldHRlcg0KPiBTZW50OiBXZWRuZXNkYXksIEphbnVhcnkgMTcsIDIwMTggMTI6MjAg QU0NCj4gVG86IEh5dW4gS3dvbiA8aHl1bmtAeGlsaW54LmNvbT4NCj4gQ2M6IGRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmc7IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOyBNaWNoYWwN Cj4gU2ltZWsgPG1pY2hhbC5zaW1la0B4aWxpbnguY29tPjsgUm9iIEhlcnJpbmcgPHJvYmhAa2Vy bmVsLm9yZz47IERhbmllbA0KPiBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+OyBMYXVy ZW50IFBpbmNoYXJ0DQo+IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+DQo+IFN1 YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMi84XSBkcm06IHhsbng6IFhpbGlueCBEUk0gS01TIGRyaXZl cg0KPiANCj4gT24gTW9uLCBKYW4gMTUsIDIwMTggYXQgMDU6NTc6MDVQTSAtMDgwMCwgSHl1biBL d29uIHdyb3RlOg0KPiA+IFhpbGlueCBoYXMgdmFyaW91cyBwbGF0Zm9ybXMgZm9yIGRpc3BsYXks IHdoZXJlIHVzZXJzIGNhbiBjcmVhdGUNCj4gPiB1c2luZyBtdWx0aXBsZSBJUHMgaW4gdGhlIHBy b2dyYW1tYWJsZSBGUEdBIGZhYnJpYywgb3Igd2hlcmUNCj4gPiBzb21lIGhhcmRlbmVkIHBpZXBs aW5lIGlzIGF2YWlsYWJsZSBvbiB0aGUgY2hpcC4gRnVydGhlcm1vcmUsDQo+ID4gaGFyZGVuZWQg cGlwZWxpbmUgY2FuIGFsc28gaW50ZXJhY3Qgd2l0aCBzb2Z0IGxvZ2ljcyBpbiBGUEdBLg0KPiA+ DQo+ID4gVGhlIFhpbGlueCBEUk0gS01TIGlzIHRvIGludGVncmF0ZSBtdWx0aXBsZSBzdWJkZXZp Y2VzIGFuZCB0byByZXByZXNlbnQNCj4gPiB0aGUgZW50aXJlIHBpcGVsaW5lIGFzIGEgc2luZ2xl IERSTSBkZXZpY2UuIFRoZSBkcml2ZXIgaW5jbHVkZXMgaGVscGVycw0KPiA+IChleCwgZnJhbWVi dWZmZXIgYW5kIGdlbSBoZWxwZXJzKSBhbmQgZ2x1ZSBsb2dpY3MgKGV4LCBjcnRjIGludGVyZmFj ZSkuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBIeXVuIEt3b24gPGh5dW4ua3dvbkB4aWxpbngu Y29tPg0KPiA+IC0tLQ0KPiA+IHYzDQo+ID4gLSBBZGQgTGF1cmVudCBhcyBhIG1haW50YWluZXIN Cj4gPiAtIEZpeCBtdWx0aXBsZS1yZWZlcmVuY2Ugb24gZ2VtIG9iamVjdHMNCj4gPiB2Mg0KPiA+ IC0gQ2hhbmdlIHRoZSBTUERYIGlkZW50aWZpZXIgZm9ybWF0DQo+ID4gLSBNZXJnZSBwYXRjaGVz KGNydGMsIGdlbSwgZmIpIGludG8gc2luZ2xlIG9uZQ0KPiA+IHYyIG9mIHhsbnhfZHJ2DQo+ID4g LSBSZW5hbWUga21zIHRvIGRpc3BsYXkgaW4geGxueF9kcnYNCj4gPiAtIFJlcGxhY2Ugc29tZSB4 bG54IHNwZWNpZmljIGZiIGhlbHBlciB3aXRoIGNvbW1vbiBoZWxwZXJzIGluIHhsbnhfZHJ2DQo+ ID4gLSBEb24ndCBzZXQgdGhlIGNvbW1pdCB0YWlsIGNhbGxiYWNrIGluIHhsbnhfZHJ2DQo+ID4g LSBTdXBwb3J0ICdwb3J0cycgZ3JhcGggYmluZGluZyBpbiB4bG54X2Rydg0KPiA+IHYyIG9mIHhs bnhfZmINCj4gPiAtIFJlbW92ZSB3cmFwcGVycyBpbiB4bG54X2ZiDQo+ID4gLSBSZXBsYWNlIHNv bWUgZnVuY3Rpb25zIHdpdGggZHJtIGNvcmUgaGVscGVycyBpbiB4bG54X2ZiDQo+ID4gLS0tDQo+ ID4gLS0tDQo+ID4gIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICsNCj4g PiAgZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgICAgfCAgIDIgKw0KPiA+ICBkcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICB8ICAgMSArDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS94 bG54L0tjb25maWcgICAgIHwgIDEyICsrDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS94bG54L01ha2Vm aWxlICAgIHwgICAyICsNCj4gPiAgZHJpdmVycy9ncHUvZHJtL3hsbngveGxueF9jcnRjLmMgfCAy MDMgKysrKysrKysrKysrKysrKysrDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfY3J0 Yy5oIHwgIDc4ICsrKysrKysNCj4gPiAgZHJpdmVycy9ncHUvZHJtL3hsbngveGxueF9kcnYuYyAg fCA0NDcNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gIGRy aXZlcnMvZ3B1L2RybS94bG54L3hsbnhfZHJ2LmggIHwgIDMwICsrKw0KPiA+ICBkcml2ZXJzL2dw dS9kcm0veGxueC94bG54X2ZiLmMgICB8IDI5OCArKysrKysrKysrKysrKysrKysrKysrKysrKw0K PiA+ICBkcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2ZiLmggICB8ICAzMyArKysNCj4gPiAgZHJp dmVycy9ncHUvZHJtL3hsbngveGxueF9nZW0uYyAgfCAgNDcgKysrKw0KPiA+ICBkcml2ZXJzL2dw dS9kcm0veGxueC94bG54X2dlbS5oICB8ICAyNiArKysNCj4gPiAgMTMgZmlsZXMgY2hhbmdlZCwg MTE4OCBpbnNlcnRpb25zKCspDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0veGxueC9LY29uZmlnDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v eGxueC9NYWtlZmlsZQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hs bngveGxueF9jcnRjLmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94 bG54L3hsbnhfY3J0Yy5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v eGxueC94bG54X2Rydi5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v eGxueC94bG54X2Rydi5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v eGxueC94bG54X2ZiLmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94 bG54L3hsbnhfZmIuaA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hs bngveGxueF9nZW0uYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hs bngveGxueF9nZW0uaA0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRB SU5FUlMNCj4gPiBpbmRleCAyODExYTIxLi5kYzg0MzQ2IDEwMDY0NA0KPiA+IC0tLSBhL01BSU5U QUlORVJTDQo+ID4gKysrIGIvTUFJTlRBSU5FUlMNCj4gPiBAQCAtNDY4Miw2ICs0NjgyLDE1IEBA IEY6ICAgICAgIGRyaXZlcnMvZ3B1L2RybS9ldG5hdml2Lw0KPiA+ICBGOiAgICAgaW5jbHVkZS91 YXBpL2RybS9ldG5hdml2X2RybS5oDQo+ID4gIEY6ICAgICBEb2N1bWVudGF0aW9uL2RldmljZXRy ZWUvYmluZGluZ3MvZGlzcGxheS9ldG5hdml2Lw0KPiA+DQo+ID4gK0RSTSBEUklWRVJTIEZPUiBY SUxJTlgNCj4gPiArTTogICAgIEh5dW4gS3dvbiA8aHl1bi5rd29uQHhpbGlueC5jb20+DQo+ID4g K006ICAgICBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5j b20+DQo+ID4gK0w6ICAgICBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+ID4gK1M6 ICAgICBNYWludGFpbmVkDQo+ID4gK0Y6ICAgICBkcml2ZXJzL2dwdS9kcm0veGxueC8NCj4gPiAr RjogICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3hsbngvDQo+ ID4gK1Q6ICAgICBnaXQgZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZHJtL2RybS1taXNj DQo+IA0KPiBPaywgSSBzY3JvbGxlZCB0aHJvdWdoIHRoZSBwYXRjaGVzIGFnYWluIGFuZCBiZXNp ZGVzIHRoZSBvbmUgbml0IGZvciB0aGUNCj4gZW5hYmxlL2Rpc2FibGVfdmJsYW5rIGNhbGxiYWNr IGl0IGxvb2tzIGFsbCBnb29kLiBPbiBwYXRjaGVzIDIgYW5kIDQtNjoNCj4gDQo+IEFja2VkLWJ5 OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPg0KPiANCj4gVGhlc2UgYXJl IHJlYWR5IGZvciBtZXJnaW5nLiBUaGUgMiBkdCBwYXRjaGVzIG5lZWQgYW4gYWNrIGZyb20gUm9i DQo+IEhlcnJpbmcuIFRoZSBmaW5hbCAyIHBhdGNoZXMgd2l0aCB0aGUgbmV3IHByb3BlcnRpZXMg bmVlZCB0aGUgdXN1YWwgdWFwaQ0KPiB3b3JrIGFuZCB1c2Vyc3BhY2UgZW5hYmxpbmcgcGVyDQo+ IA0KPiBodHRwczovL2RyaS5mcmVlZGVza3RvcC5vcmcvZG9jcy9kcm0vZ3B1L2RybS11YXBpLmh0 bWwjb3Blbi1zb3VyY2UtDQo+IHVzZXJzcGFjZS1yZXF1aXJlbWVudHMNCj4gDQo+IFNpbmNlIExh dXJlbnQgaXMgbGlzdGVkIGFzIGNvLW1haW50YWluZXIsIGFuZCBMYXVyZW50IGlzIGFscmVhZHkg ZHJtLW1pc2MNCj4gY29tbWl0dGVyIEkgdGhpbmsgaXQncyBpbmRlZWQgYmVzdCB0byBtYWludGFp biBpdCBpbiB0aGVyZS4gUGxlYXNlIHJlcXVlc3QNCj4gYSBuZXcgYWNjb3VudCBwZXINCj4gDQo+ IGh0dHBzOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL0FjY291bnRSZXF1ZXN0cy8NCj4gDQo+ IGFuZCBjaGVjayBvdXQgcXVpY2tzdGFydCBpbg0KPiANCj4gaHR0cHM6Ly8wMS5vcmcvbGludXhn cmFwaGljcy9nZngtZG9jcy9tYWludGFpbmVyLQ0KPiB0b29scy9kaW0uaHRtbCNxdWlja3N0YXJ0 DQo+IA0KPiBGb3IgYW55IHF1ZXN0aW9ucyBJIG9yIExhdXJlbnQgc2hvdWxkIGJlIGFibGUgdG8g aGVscCBvdXQuIE15IGV4cGVjdGF0aW9uDQo+IGlzIHRoYXQgb25jZSB5b3UgaGF2ZSB0aGUgYWNr IGZyb20gRFQgbWFpbnRhaW5lcnMgeW91J2xsIG1lcmdlIHBhdGNoZXMgMS02DQo+IHlvdXJzZWxm IGRpcmVjdGx5Lg0KPiANCj4gVGhhbmtzLCBEYW5pZWwNCj4gDQoNClRoYW5rcyBmb3IgdGhlIHBv aW50ZXJzIGFuZCBoZWxwLg0KDQpJJ2xsIGZvbGxvdyB0aGUgcHJvY2VzcyBvbmNlIGJpbmRpbmdz IGFyZSBhY2NlcHRlZC4NCg0KVGhhbmtzLA0KLWh5dW4NCg0KPiA+ICsNCj4gPiAgRFJNIERSSVZF UlMgRk9SIFpURSBaWA0KPiA+ICBNOiAgICAgU2hhd24gR3VvIDxzaGF3bmd1b0BrZXJuZWwub3Jn Pg0KPiA+ICBMOiAgICAgZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmln DQo+ID4gaW5kZXggMjJlZTVhMS4uZjNjNzFlMyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vS2NvbmZpZw0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnDQo+ID4gQEAg LTI4Miw2ICsyODIsOCBAQCBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS90aW55ZHJtL0tjb25maWci DQo+ID4NCj4gPiAgc291cmNlICJkcml2ZXJzL2dwdS9kcm0vcGwxMTEvS2NvbmZpZyINCj4gPg0K PiA+ICtzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS94bG54L0tjb25maWciDQo+ID4gKw0KPiA+ICAj IEtlZXAgbGVnYWN5IGRyaXZlcnMgbGFzdA0KPiA+DQo+ID4gIG1lbnVjb25maWcgRFJNX0xFR0FD WQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dw dS9kcm0vTWFrZWZpbGUNCj4gPiBpbmRleCA5MjU1MGRkLi4yZjQ0Yzc3IDEwMDY0NA0KPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQ0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9N YWtlZmlsZQ0KPiA+IEBAIC0xMDMsMyArMTAzLDQgQEAgb2JqLSQoQ09ORklHX0RSTV9aVEUpICAg ICAgICs9IHp0ZS8NCj4gPiAgb2JqLSQoQ09ORklHX0RSTV9NWFNGQikgICAgICAgICs9IG14c2Zi Lw0KPiA+ICBvYmotJChDT05GSUdfRFJNX1RJTllEUk0pICs9IHRpbnlkcm0vDQo+ID4gIG9iai0k KENPTkZJR19EUk1fUEwxMTEpICs9IHBsMTExLw0KPiA+ICtvYmotJChDT05GSUdfRFJNX1hMTlgp ICs9IHhsbngvDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94bG54L0tjb25maWcg Yi9kcml2ZXJzL2dwdS9kcm0veGxueC9LY29uZmlnDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gPiBpbmRleCAwMDAwMDAwLi4xOWZkN2NkDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS94bG54L0tjb25maWcNCj4gPiBAQCAtMCwwICsxLDEyIEBADQo+ID4g K2NvbmZpZyBEUk1fWExOWA0KPiA+ICsgICAgICAgdHJpc3RhdGUgIlhpbGlueCBEUk0gS01TIERy aXZlciINCj4gPiArICAgICAgIGRlcGVuZHMgb24gRFJNICYmIE9GDQo+ID4gKyAgICAgICBzZWxl Y3QgRFJNX0tNU19IRUxQRVINCj4gPiArICAgICAgIHNlbGVjdCBEUk1fS01TX0NNQV9IRUxQRVIN Cj4gPiArICAgICAgIHNlbGVjdCBEUk1fR0VNX0NNQV9IRUxQRVINCj4gPiArICAgICAgIGhlbHAN Cj4gPiArICAgICAgICAgWGlsaW54IERSTSBLTVMgZHJpdmVyLiBDaG9vc2UgdGhpcyBvcHRpb24g aWYgeW91IGhhdmUNCj4gPiArICAgICAgICAgYSBYaWxpbnggU29DcyB3aXRoIGhhcmRlbmVkIGRp c3BsYXkgcGlwZWxpbmUgb3Igc29mdA0KPiA+ICsgICAgICAgICBkaXNwbGF5IHBpcGVsaW5lIHVz aW5nIFhpbGlueCBJUHMgaW4gRlBHQS4gVGhpcyBtb2R1bGUNCj4gPiArICAgICAgICAgcHJvdmlk ZXMgdGhlIGtlcm5lbCBtb2RlIHNldHRpbmcgZnVuY3Rpb25hbGl0aWVzDQo+ID4gKyAgICAgICAg IGZvciBYaWxpbnggZGlzcGxheSBkcml2ZXJzLg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0veGxueC9NYWtlZmlsZQ0KPiBiL2RyaXZlcnMvZ3B1L2RybS94bG54L01ha2VmaWxlDQo+ ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi5jNjBhMjgxDQo+ID4g LS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94bG54L01ha2VmaWxlDQo+ ID4gQEAgLTAsMCArMSwyIEBADQo+ID4gK3hsbnhfZHJtLW9ianMgKz0geGxueF9jcnRjLm8geGxu eF9kcnYubyB4bG54X2ZiLm8geGxueF9nZW0ubw0KPiA+ICtvYmotJChDT05GSUdfRFJNX1hMTlgp ICs9IHhsbnhfZHJtLm8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hsbngveGxu eF9jcnRjLmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2NydGMuYw0KPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uODliZWI5ZQ0KPiA+IC0tLSAvZGV2 L251bGwNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2NydGMuYw0KPiA+IEBA IC0wLDAgKzEsMjAzIEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w DQo+ID4gKy8qDQo+ID4gKyAqIFhpbGlueCBEUk0gY3J0YyBkcml2ZXINCj4gPiArICoNCj4gPiAr ICogIENvcHlyaWdodCAoQykgMjAxNyAtIDIwMTggWGlsaW54LCBJbmMuDQo+ID4gKyAqDQo+ID4g KyAqICBBdXRob3I6IEh5dW4gV29vIEt3b24gPGh5dW4ua3dvbkB4aWxpbnguY29tPg0KPiA+ICsg Kg0KPiA+ICsgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljDQo+ID4gKyAqIExpY2Vuc2UgdmVyc2lvbiAyLCBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgYW5kDQo+ID4gKyAqIG1heSBi ZSBjb3BpZWQsIGRpc3RyaWJ1dGVkLCBhbmQgbW9kaWZpZWQgdW5kZXIgdGhvc2UgdGVybXMuDQo+ ID4gKyAqDQo+ID4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KPiA+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KPiA+ICsgKiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQo+ID4g KyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQo+ID4gKyAq Lw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVk ZSA8bGludXgvbGlzdC5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgInhsbnhfY3J0Yy5oIg0KPiA+ ICsjaW5jbHVkZSAieGxueF9kcnYuaCINCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIE92ZXJ2aWV3 DQo+ID4gKyAqIC0tLS0tLS0tDQo+ID4gKyAqDQo+ID4gKyAqIFRoZSBYaWxpbnggQ1JUQyBsYXll ciBpcyB0byBlbmFibGUgdGhlIGN1c3RvbSBpbnRlcmZhY2UgdG8gQ1JUQyBkcml2ZXJzLg0KPiA+ ICsgKiBUaGUgaW50ZXJmYWNlIGlzIHVzZWQgYnkgWGlsaW54IERSTSBkcml2ZXIgd2hlcmUgaXQg bmVlZHMgQ1JUQw0KPiA+ICsgKiBmdW5jdGlvbmFpbHR5LiBDUlRDIGRyaXZlcnMgc2hvdWxkIGF0 dGFjaCB0aGUgZGVzaXJlZCBjYWxsYmFja3MNCj4gPiArICogdG8gc3RydWN0IHhsbnhfY3J0YyBh bmQgcmVnaXN0ZXIgdGhlIHhsbnhfY3J0YyB3aXRoIGNvcnJlY3Nwb25kaW5nDQo+ID4gKyAqIGRy bV9kZXZpY2UuIEl0J3MgaGlnaGx5IHJlY29tbWVuZGVkIENSVEMgZHJpdmVycyByZWdpc3RlciBh bGwNCj4gY2FsbGJhY2tzDQo+ID4gKyAqIGV2ZW4gdGhvdWdoIG1hbnkgb2YgdGhlbSBhcmUgb3B0 aW9uYWwuDQo+ID4gKyAqIFRoZSBDUlRDIGhlbHBlciBzaW1wbHkgd2Fsa3MgdGhyb3VnaCB0aGUg cmVnaXN0ZXJlZCBDUlRDIGRldmljZSwNCj4gPiArICogYW5kIGNhbGwgdGhlIGNhbGxiYWNrcy4N Cj4gPiArICovDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IHhsbnhfY3J0Y19oZWxw ZXIgLSBYaWxpbnggQ1JUQyBoZWxwZXINCj4gPiArICogQHhsbnhfY3J0Y3M6IGxpc3Qgb2YgWGls aW54IENSVEMgZGV2aWNlcw0KPiA+ICsgKiBAbG9jazogbG9jayB0byBwcm90ZWN0IEB4bG54X2Ny dGNzDQo+ID4gKyAqIEBkcm06IGJhY2sgcG9pbnRlciB0byBEUk0gY29yZQ0KPiA+ICsgKi8NCj4g PiArc3RydWN0IHhsbnhfY3J0Y19oZWxwZXIgew0KPiA+ICsgICAgICAgc3RydWN0IGxpc3RfaGVh ZCB4bG54X2NydGNzOw0KPiA+ICsgICAgICAgc3RydWN0IG11dGV4IGxvY2s7IC8qIGxvY2sgZm9y IEB4bG54X2NydGNzICovDQo+ID4gKyAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZHJtOw0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBYTE5YX0NSVENfTUFYX0hFSUdIVF9XSURUSCAgICAg VUlOVF9NQVgNCj4gPiArDQo+ID4gK2ludCB4bG54X2NydGNfaGVscGVyX2VuYWJsZV92Ymxhbmso c3RydWN0IHhsbnhfY3J0Y19oZWxwZXIgKmhlbHBlciwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjcnRjX2lkKQ0KPiA+ICt7DQo+ID4gKyAgICAg ICBzdHJ1Y3QgeGxueF9jcnRjICpjcnRjOw0KPiA+ICsNCj4gPiArICAgICAgIGxpc3RfZm9yX2Vh Y2hfZW50cnkoY3J0YywgJmhlbHBlci0+eGxueF9jcnRjcywgbGlzdCkNCj4gPiArICAgICAgICAg ICAgICAgaWYgKGRybV9jcnRjX2luZGV4KCZjcnRjLT5jcnRjKSA9PSBjcnRjX2lkKQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIGlmIChjcnRjLT5lbmFibGVfdmJsYW5rKQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNydGMtPmVuYWJsZV92YmxhbmsoY3J0 Yyk7DQo+ID4gKyAgICAgICByZXR1cm4gLUVOT0RFVjsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdm9p ZCB4bG54X2NydGNfaGVscGVyX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCB4bG54X2NydGNfaGVscGVy ICpoZWxwZXIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBjcnRjX2lkKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgeGxueF9jcnRjICpj cnRjOw0KPiA+ICsNCj4gPiArICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoY3J0YywgJmhlbHBl ci0+eGxueF9jcnRjcywgbGlzdCkgew0KPiA+ICsgICAgICAgICAgICAgICBpZiAoZHJtX2NydGNf aW5kZXgoJmNydGMtPmNydGMpID09IGNydGNfaWQpIHsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBpZiAoY3J0Yy0+ZGlzYWJsZV92YmxhbmspDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjcnRjLT5kaXNhYmxlX3ZibGFuayhjcnRjKTsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm47DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgIH0N Cj4gPiArfQ0KPiA+ICsNCj4gPiArdW5zaWduZWQgaW50IHhsbnhfY3J0Y19oZWxwZXJfZ2V0X2Fs aWduKHN0cnVjdCB4bG54X2NydGNfaGVscGVyICpoZWxwZXIpDQo+ID4gK3sNCj4gPiArICAgICAg IHN0cnVjdCB4bG54X2NydGMgKmNydGM7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgYWxpZ24g PSAxLCB0bXA7DQo+ID4gKw0KPiA+ICsgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShjcnRjLCAm aGVscGVyLT54bG54X2NydGNzLCBsaXN0KSB7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChjcnRj LT5nZXRfYWxpZ24pIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBjcnRjLT5n ZXRfYWxpZ24oY3J0Yyk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBBTElH TihhbGlnbiwgdG1wKTsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ ICsNCj4gPiArICAgICAgIHJldHVybiBhbGlnbjsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdTY0IHhs bnhfY3J0Y19oZWxwZXJfZ2V0X2RtYV9tYXNrKHN0cnVjdCB4bG54X2NydGNfaGVscGVyICpoZWxw ZXIpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCB4bG54X2NydGMgKmNydGM7DQo+ID4gKyAg ICAgICB1NjQgbWFzayA9IERNQV9CSVRfTUFTSyhzaXplb2YoZG1hX2FkZHJfdCkgKiA4KSwgdG1w Ow0KPiA+ICsNCj4gPiArICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoY3J0YywgJmhlbHBlci0+ eGxueF9jcnRjcywgbGlzdCkgew0KPiA+ICsgICAgICAgICAgICAgICBpZiAoY3J0Yy0+Z2V0X2Rt YV9tYXNrKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gY3J0Yy0+Z2V0X2Rt YV9tYXNrKGNydGMpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG1hc2sgPSBtaW4obWFz aywgdG1wKTsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4g PiArICAgICAgIHJldHVybiBtYXNrOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQgeGxueF9jcnRj X2hlbHBlcl9nZXRfbWF4X3dpZHRoKHN0cnVjdCB4bG54X2NydGNfaGVscGVyICpoZWxwZXIpDQo+ ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCB4bG54X2NydGMgKmNydGM7DQo+ID4gKyAgICAgICB1 bnNpZ25lZCBpbnQgd2lkdGggPSBYTE5YX0NSVENfTUFYX0hFSUdIVF9XSURUSCwgdG1wOw0KPiA+ ICsNCj4gPiArICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoY3J0YywgJmhlbHBlci0+eGxueF9j cnRjcywgbGlzdCkgew0KPiA+ICsgICAgICAgICAgICAgICBpZiAoY3J0Yy0+Z2V0X21heF93aWR0 aCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IGNydGMtPmdldF9tYXhfd2lk dGgoY3J0Yyk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBtaW4od2lkdGgs IHRtcCk7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4g KyAgICAgICByZXR1cm4gd2lkdGg7DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludCB4bG54X2NydGNf aGVscGVyX2dldF9tYXhfaGVpZ2h0KHN0cnVjdCB4bG54X2NydGNfaGVscGVyICpoZWxwZXIpDQo+ ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCB4bG54X2NydGMgKmNydGM7DQo+ID4gKyAgICAgICB1 bnNpZ25lZCBpbnQgaGVpZ2h0ID0gWExOWF9DUlRDX01BWF9IRUlHSFRfV0lEVEgsIHRtcDsNCj4g PiArDQo+ID4gKyAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGNydGMsICZoZWxwZXItPnhsbnhf Y3J0Y3MsIGxpc3QpIHsNCj4gPiArICAgICAgICAgICAgICAgaWYgKGNydGMtPmdldF9tYXhfaGVp Z2h0KSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gY3J0Yy0+Z2V0X21heF9o ZWlnaHQoY3J0Yyk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gbWluKGhl aWdodCwgdG1wKTsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ICsN Cj4gPiArICAgICAgIHJldHVybiBoZWlnaHQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3VpbnQzMl90 IHhsbnhfY3J0Y19oZWxwZXJfZ2V0X2Zvcm1hdChzdHJ1Y3QgeGxueF9jcnRjX2hlbHBlciAqaGVs cGVyKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgeGxueF9jcnRjICpjcnRjOw0KPiA+ICsg ICAgICAgdTMyIGZvcm1hdCA9IDAsIHRtcDsNCj4gPiArDQo+ID4gKyAgICAgICBsaXN0X2Zvcl9l YWNoX2VudHJ5KGNydGMsICZoZWxwZXItPnhsbnhfY3J0Y3MsIGxpc3QpIHsNCj4gPiArICAgICAg ICAgICAgICAgaWYgKGNydGMtPmdldF9mb3JtYXQpIHsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICB0bXAgPSBjcnRjLT5nZXRfZm9ybWF0KGNydGMpOw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIGlmIChmb3JtYXQgJiYgZm9ybWF0ICE9IHRtcCkNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGZv cm1hdCA9IHRtcDsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ICsN Cj4gPiArICAgICAgIHJldHVybiBmb3JtYXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0cnVjdCB4 bG54X2NydGNfaGVscGVyICp4bG54X2NydGNfaGVscGVyX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRybSkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IHhsbnhfY3J0Y19oZWxwZXIgKmhlbHBl cjsNCj4gPiArDQo+ID4gKyAgICAgICBoZWxwZXIgPSBkZXZtX2t6YWxsb2MoZHJtLT5kZXYsIHNp emVvZigqaGVscGVyKSwgR0ZQX0tFUk5FTCk7DQo+ID4gKyAgICAgICBpZiAoIWhlbHBlcikNCj4g PiArICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7DQo+ID4gKw0KPiA+ICsg ICAgICAgSU5JVF9MSVNUX0hFQUQoJmhlbHBlci0+eGxueF9jcnRjcyk7DQo+ID4gKyAgICAgICBt dXRleF9pbml0KCZoZWxwZXItPmxvY2spOw0KPiA+ICsgICAgICAgaGVscGVyLT5kcm0gPSBkcm07 DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIGhlbHBlcjsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr dm9pZCB4bG54X2NydGNfaGVscGVyX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRybSwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGxueF9jcnRjX2hlbHBlciAqaGVscGVy KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBpZiAoV0FSTl9PTihoZWxwZXItPmRybSAhPSBkcm0pKQ0K PiA+ICsgICAgICAgICAgICAgICByZXR1cm47DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKFdBUk5f T04oIWxpc3RfZW1wdHkoJmhlbHBlci0+eGxueF9jcnRjcykpKQ0KPiA+ICsgICAgICAgICAgICAg ICByZXR1cm47DQo+ID4gKw0KPiA+ICsgICAgICAgbXV0ZXhfZGVzdHJveSgmaGVscGVyLT5sb2Nr KTsNCj4gPiArICAgICAgIGRldm1fa2ZyZWUoZHJtLT5kZXYsIGhlbHBlcik7DQo+ID4gK30NCj4g PiArDQo+ID4gK3ZvaWQgeGxueF9jcnRjX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0s IHN0cnVjdCB4bG54X2NydGMgKmNydGMpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCB4bG54 X2NydGNfaGVscGVyICpoZWxwZXIgPSB4bG54X2dldF9jcnRjX2hlbHBlcihkcm0pOw0KPiA+ICsN Cj4gPiArICAgICAgIG11dGV4X2xvY2soJmhlbHBlci0+bG9jayk7DQo+ID4gKyAgICAgICBsaXN0 X2FkZF90YWlsKCZjcnRjLT5saXN0LCAmaGVscGVyLT54bG54X2NydGNzKTsNCj4gPiArICAgICAg IG11dGV4X3VubG9jaygmaGVscGVyLT5sb2NrKTsNCj4gPiArfQ0KPiA+ICtFWFBPUlRfU1lNQk9M X0dQTCh4bG54X2NydGNfcmVnaXN0ZXIpOw0KPiA+ICsNCj4gPiArdm9pZCB4bG54X2NydGNfdW5y ZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgeGxueF9jcnRjICpjcnRjKQ0K PiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgeGxueF9jcnRjX2hlbHBlciAqaGVscGVyID0geGxu eF9nZXRfY3J0Y19oZWxwZXIoZHJtKTsNCj4gPiArDQo+ID4gKyAgICAgICBtdXRleF9sb2NrKCZo ZWxwZXItPmxvY2spOw0KPiA+ICsgICAgICAgbGlzdF9kZWwoJmNydGMtPmxpc3QpOw0KPiA+ICsg ICAgICAgbXV0ZXhfdW5sb2NrKCZoZWxwZXItPmxvY2spOw0KPiA+ICt9DQo+ID4gK0VYUE9SVF9T WU1CT0xfR1BMKHhsbnhfY3J0Y191bnJlZ2lzdGVyKTsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3hsbngveGxueF9jcnRjLmgNCj4gYi9kcml2ZXJzL2dwdS9kcm0veGxueC94bG54 X2NydGMuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uMTQ5 OGUxMA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGxueC94 bG54X2NydGMuaA0KPiA+IEBAIC0wLDAgKzEsNzggQEANCj4gPiArLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjANCj4gPiArLyoNCj4gPiArICogWGlsaW54IERSTSBjcnRjIGhlYWRl cg0KPiA+ICsgKg0KPiA+ICsgKiAgQ29weXJpZ2h0IChDKSAyMDE3IC0gMjAxOCBYaWxpbngsIElu Yy4NCj4gPiArICoNCj4gPiArICogIEF1dGhvcjogSHl1biBXb28gS3dvbiA8aHl1bi5rd29uQHhp bGlueC5jb20+DQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCj4gPiArICogTGljZW5zZSB2 ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBh bmQNCj4gPiArICogbWF5IGJlIGNvcGllZCwgZGlzdHJpYnV0ZWQsIGFuZCBtb2RpZmllZCB1bmRl ciB0aG9zZSB0ZXJtcy4NCj4gPiArICoNCj4gPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ID4gKyAqIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+ ID4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUNCj4gPiArICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9YTE5YX0NSVENfSF8NCj4g PiArI2RlZmluZSBfWExOWF9DUlRDX0hfDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0 IHhsbnhfY3J0YyAtIFhpbGlueCBDUlRDIGRldmljZQ0KPiA+ICsgKiBAY3J0YzogRFJNIENSVEMg ZGV2aWNlDQo+ID4gKyAqIEBsaXN0OiBsaXN0IG5vZGUgZm9yIFhpbGlueCBDUlRDIGRldmljZSBs aXN0DQo+ID4gKyAqIEBlbmFibGVfdmJsYW5rOiBFbmFibGUgdmJsYW5rDQo+ID4gKyAqIEBkaXNh YmxlX3ZibGFuazogRGlzYWJsZSB2YmxhbmsNCj4gPiArICogQGdldF9hbGlnbjogR2V0IHRoZSBh bGlnbm1lbnQgcmVxdWlyZW1lbnQgb2YgQ1JUQyBkZXZpY2UNCj4gPiArICogQGdldF9kbWFfbWFz azogR2V0IHRoZSBkbWEgbWFzayBvZiBDUlRDIGRldmljZQ0KPiA+ICsgKiBAZ2V0X21heF93aWR0 aDogR2V0IHRoZSBtYXhpbXVtIHN1cHBvcnRlZCB3aWR0aA0KPiA+ICsgKiBAZ2V0X21heF9oZWln aHQ6IEdldCB0aGUgbWF4aW11bSBzdXBwb3J0ZWQgaGVpZ2h0DQo+ID4gKyAqIEBnZXRfZm9ybWF0 OiBHZXQgdGhlIGN1cnJlbnQgZm9ybWF0IG9mIENSVEMgZGV2aWNlDQo+ID4gKyAqLw0KPiA+ICtz dHJ1Y3QgeGxueF9jcnRjIHsNCj4gPiArICAgICAgIHN0cnVjdCBkcm1fY3J0YyBjcnRjOw0KPiA+ ICsgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0Ow0KPiA+ICsgICAgICAgaW50ICgqZW5hYmxl X3ZibGFuaykoc3RydWN0IHhsbnhfY3J0YyAqY3J0Yyk7DQo+ID4gKyAgICAgICB2b2lkICgqZGlz YWJsZV92YmxhbmspKHN0cnVjdCB4bG54X2NydGMgKmNydGMpOw0KPiA+ICsgICAgICAgdW5zaWdu ZWQgaW50ICgqZ2V0X2FsaWduKShzdHJ1Y3QgeGxueF9jcnRjICpjcnRjKTsNCj4gPiArICAgICAg IHU2NCAoKmdldF9kbWFfbWFzaykoc3RydWN0IHhsbnhfY3J0YyAqY3J0Yyk7DQo+ID4gKyAgICAg ICBpbnQgKCpnZXRfbWF4X3dpZHRoKShzdHJ1Y3QgeGxueF9jcnRjICpjcnRjKTsNCj4gPiArICAg ICAgIGludCAoKmdldF9tYXhfaGVpZ2h0KShzdHJ1Y3QgeGxueF9jcnRjICpjcnRjKTsNCj4gPiAr ICAgICAgIHVpbnQzMl90ICgqZ2V0X2Zvcm1hdCkoc3RydWN0IHhsbnhfY3J0YyAqY3J0Yyk7DQo+ ID4gK307DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBIZWxwZXIgZnVuY3Rpb25zOiB1c2VkIHdp dGhpbiBYbG54IERSTQ0KPiA+ICsgKi8NCj4gPiArDQo+ID4gK3N0cnVjdCB4bG54X2NydGNfaGVs cGVyOw0KPiA+ICsNCj4gPiAraW50IHhsbnhfY3J0Y19oZWxwZXJfZW5hYmxlX3ZibGFuayhzdHJ1 Y3QgeGxueF9jcnRjX2hlbHBlciAqaGVscGVyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IGNydGNfaWQpOw0KPiA+ICt2b2lkIHhsbnhfY3J0Y19o ZWxwZXJfZGlzYWJsZV92Ymxhbmsoc3RydWN0IHhsbnhfY3J0Y19oZWxwZXIgKmhlbHBlciwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNydGNf aWQpOw0KPiA+ICt1bnNpZ25lZCBpbnQgeGxueF9jcnRjX2hlbHBlcl9nZXRfYWxpZ24oc3RydWN0 IHhsbnhfY3J0Y19oZWxwZXIgKmhlbHBlcik7DQo+ID4gK3U2NCB4bG54X2NydGNfaGVscGVyX2dl dF9kbWFfbWFzayhzdHJ1Y3QgeGxueF9jcnRjX2hlbHBlciAqaGVscGVyKTsNCj4gPiAraW50IHhs bnhfY3J0Y19oZWxwZXJfZ2V0X21heF93aWR0aChzdHJ1Y3QgeGxueF9jcnRjX2hlbHBlciAqaGVs cGVyKTsNCj4gPiAraW50IHhsbnhfY3J0Y19oZWxwZXJfZ2V0X21heF9oZWlnaHQoc3RydWN0IHhs bnhfY3J0Y19oZWxwZXIgKmhlbHBlcik7DQo+ID4gK3VpbnQzMl90IHhsbnhfY3J0Y19oZWxwZXJf Z2V0X2Zvcm1hdChzdHJ1Y3QgeGxueF9jcnRjX2hlbHBlciAqaGVscGVyKTsNCj4gPiArDQo+ID4g K3N0cnVjdCB4bG54X2NydGNfaGVscGVyICp4bG54X2NydGNfaGVscGVyX2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRybSk7DQo+ID4gK3ZvaWQgeGxueF9jcnRjX2hlbHBlcl9maW5pKHN0cnVjdCBk cm1fZGV2aWNlICpkcm0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhs bnhfY3J0Y19oZWxwZXIgKmhlbHBlcik7DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBDUlRDIHJl Z2lzdHJhdGlvbjogdXNlZCBieSBvdGhlciBzdWItZHJpdmVyIG1vZHVsZXMNCj4gPiArICovDQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCB4bG54X2NydGMgKnRvX3hsbnhfY3J0Yyhz dHJ1Y3QgZHJtX2NydGMgKmNydGMpDQo+ID4gK3sNCj4gPiArICAgICAgIHJldHVybiBjb250YWlu ZXJfb2YoY3J0Yywgc3RydWN0IHhsbnhfY3J0YywgY3J0Yyk7DQo+ID4gK30NCj4gPiArDQo+ID4g K3ZvaWQgeGxueF9jcnRjX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCB4 bG54X2NydGMgKmNydGMpOw0KPiA+ICt2b2lkIHhsbnhfY3J0Y191bnJlZ2lzdGVyKHN0cnVjdCBk cm1fZGV2aWNlICpkcm0sIHN0cnVjdCB4bG54X2NydGMNCj4gKmNydGMpOw0KPiA+ICsNCj4gPiAr I2VuZGlmIC8qIF9YTE5YX0NSVENfSF8gKi8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3hsbngveGxueF9kcnYuYw0KPiBiL2RyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfZHJ2LmMN Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAuLmEzNTA0OTINCj4g PiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hsbngveGxueF9kcnYu Yw0KPiA+IEBAIC0wLDAgKzEsNDQ3IEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wDQo+ID4gKy8qDQo+ID4gKyAqIFhpbGlueCBEUk0gS01TIERyaXZlcg0KPiA+ICsg Kg0KPiA+ICsgKiAgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCBYaWxpbngsIEluYy4NCj4gPiAr ICoNCj4gPiArICogIEF1dGhvcjogSHl1biBXb28gS3dvbiA8aHl1bi5rd29uQHhpbGlueC5jb20+ DQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCj4gPiArICogTGljZW5zZSB2ZXJzaW9uIDIs IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBhbmQNCj4gPiAr ICogbWF5IGJlIGNvcGllZCwgZGlzdHJpYnV0ZWQsIGFuZCBtb2RpZmllZCB1bmRlciB0aG9zZSB0 ZXJtcy4NCj4gPiArICoNCj4gPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ID4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+ID4gKyAqIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUNCj4gPiArICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4N Cj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4NCj4gPiArI2luY2x1 ZGUgPGRybS9kcm1fYXRvbWljLmg+DQo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxw ZXIuaD4NCj4gPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4NCj4gPiArI2luY2x1 ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+DQo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFf aGVscGVyLmg+DQo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX29mLmg+DQo+ID4gKw0KPiA+ICsjaW5j bHVkZSA8bGludXgvY29tcG9uZW50Lmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4N Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4NCj4gPiArI2luY2x1ZGUg PGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvcmVzZXJ2YXRp b24uaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJ4bG54X2NydGMuaCINCj4gPiArI2luY2x1ZGUg InhsbnhfZmIuaCINCj4gPiArI2luY2x1ZGUgInhsbnhfZ2VtLmgiDQo+ID4gKw0KPiA+ICsjZGVm aW5lIERSSVZFUl9OQU1FICAgICJ4bG54Ig0KPiA+ICsjZGVmaW5lIERSSVZFUl9ERVNDICAgICJY aWxpbnggRFJNIEtNUyBEcml2ZXIiDQo+ID4gKyNkZWZpbmUgRFJJVkVSX0RBVEUgICAgIjIwMTMw NTA5Ig0KPiA+ICsjZGVmaW5lIERSSVZFUl9NQUpPUiAgIDENCj4gPiArI2RlZmluZSBEUklWRVJf TUlOT1IgICAwDQo+ID4gKw0KPiA+ICtzdGF0aWMgdWludCB4bG54X2ZiZGV2X3ZyZXMgPSAyOw0K PiA+ICttb2R1bGVfcGFyYW1fbmFtZWQoZmJkZXZfdnJlcywgeGxueF9mYmRldl92cmVzLCB1aW50 LCAwNDQ0KTsNCj4gPiArTU9EVUxFX1BBUk1fREVTQyhmYmRldl92cmVzLA0KPiA+ICsgICAgICAg ICAgICAgICAgImZiZGV2IHZpcnR1YWwgcmVzb2x1dGlvbiBtdWx0aXBsaWVyIGZvciBmYiAoZGVm YXVsdDogMikiKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgeGxueF9kcm0gLSBY aWxpbnggRFJNIHByaXZhdGUgZGF0YQ0KPiA+ICsgKiBAZHJtOiBEUk0gY29yZQ0KPiA+ICsgKiBA Y3J0YzogWGlsaW54IERSTSBDUlRDIGhlbHBlcg0KPiA+ICsgKiBAZmI6IERSTSBmYiBoZWxwZXIN Cj4gPiArICogQHBkZXY6IHBsYXRmb3JtIGRldmljZQ0KPiA+ICsgKiBAc3VzcGVuZF9zdGF0ZTog YXRvbWljIHN0YXRlIGZvciBzdXNwZW5kIC8gcmVzdW1lDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3Qg eGxueF9kcm0gew0KPiA+ICsgICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRybTsNCj4gPiArICAg ICAgIHN0cnVjdCB4bG54X2NydGNfaGVscGVyICpjcnRjOw0KPiA+ICsgICAgICAgc3RydWN0IGRy bV9mYl9oZWxwZXIgKmZiOw0KPiA+ICsgICAgICAgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl djsNCj4gPiArICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdXNwZW5kX3N0YXRlOw0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHhsbnhfZ2V0X2NydGNfaGVscGVyIC0g UmV0dXJuIHRoZSBjcnRjIGhlbHBlciBpbnN0YW5jZQ0KPiA+ICsgKiBAZHJtOiBEUk0gZGV2aWNl DQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogdGhlIGNydGMgaGVscGVyIGluc3RhbmNlDQo+ID4g KyAqLw0KPiA+ICtzdHJ1Y3QgeGxueF9jcnRjX2hlbHBlciAqeGxueF9nZXRfY3J0Y19oZWxwZXIo c3RydWN0IGRybV9kZXZpY2UgKmRybSkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IHhsbnhf ZHJtICp4bG54X2RybSA9IGRybS0+ZGV2X3ByaXZhdGU7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0 dXJuIHhsbnhfZHJtLT5jcnRjOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogeGxu eF9nZXRfYWxpZ24gLSBSZXR1cm4gdGhlIGFsaWduIHJlcXVpcmVtZW50IHRocm91Z2ggQ1JUQyBo ZWxwZXINCj4gPiArICogQGRybTogRFJNIGRldmljZQ0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46 IHRoZSBhbGlnbm1lbnQgcmVxdWlyZW1lbnQNCj4gPiArICovDQo+ID4gK3Vuc2lnbmVkIGludCB4 bG54X2dldF9hbGlnbihzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQ0KPiA+ICt7DQo+ID4gKyAgICAg ICBzdHJ1Y3QgeGxueF9kcm0gKnhsbnhfZHJtID0gZHJtLT5kZXZfcHJpdmF0ZTsNCj4gPiArDQo+ ID4gKyAgICAgICByZXR1cm4geGxueF9jcnRjX2hlbHBlcl9nZXRfYWxpZ24oeGxueF9kcm0tPmNy dGMpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogeGxueF9nZXRfZm9ybWF0IC0g UmV0dXJuIHRoZSBjdXJyZW50IGZvcm1hdCBvZiBDUlRDDQo+ID4gKyAqIEBkcm06IERSTSBkZXZp Y2UNCj4gPiArICoNCj4gPiArICogUmV0dXJuOiB0aGUgY3VycmVudCBDUlRDIGZvcm1hdA0KPiA+ ICsgKi8NCj4gPiArdWludDMyX3QgeGxueF9nZXRfZm9ybWF0KHN0cnVjdCBkcm1fZGV2aWNlICpk cm0pDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCB4bG54X2RybSAqeGxueF9kcm0gPSBkcm0t PmRldl9wcml2YXRlOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiB4bG54X2NydGNfaGVscGVy X2dldF9mb3JtYXQoeGxueF9kcm0tPmNydGMpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg dm9pZCB4bG54X291dHB1dF9wb2xsX2NoYW5nZWQoc3RydWN0IGRybV9kZXZpY2UgKmRybSkNCj4g PiArew0KPiA+ICsgICAgICAgc3RydWN0IHhsbnhfZHJtICp4bG54X2RybSA9IGRybS0+ZGV2X3By aXZhdGU7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKHhsbnhfZHJtLT5mYikNCj4gPiArICAgICAg ICAgICAgICAgZHJtX2ZiX2hlbHBlcl9ob3RwbHVnX2V2ZW50KHhsbnhfZHJtLT5mYik7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNz IHhsbnhfbW9kZV9jb25maWdfZnVuY3MgPSB7DQo+ID4gKyAgICAgICAuZmJfY3JlYXRlICAgICAg ICAgICAgICA9IHhsbnhfZmJfY3JlYXRlLA0KPiA+ICsgICAgICAgLm91dHB1dF9wb2xsX2NoYW5n ZWQgICAgPSB4bG54X291dHB1dF9wb2xsX2NoYW5nZWQsDQo+ID4gKyAgICAgICAuYXRvbWljX2No ZWNrICAgICAgICAgICA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrLA0KPiA+ICsgICAgICAgLmF0 b21pY19jb21taXQgICAgICAgICAgPSBkcm1fYXRvbWljX2hlbHBlcl9jb21taXQsDQo+ID4gK307 DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHhsbnhfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2Rl dmljZSAqZHJtLCB1bnNpZ25lZCBpbnQgY3J0YykNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0 IHhsbnhfZHJtICp4bG54X2RybSA9IGRybS0+ZGV2X3ByaXZhdGU7DQo+ID4gKw0KPiA+ICsgICAg ICAgcmV0dXJuIHhsbnhfY3J0Y19oZWxwZXJfZW5hYmxlX3ZibGFuayh4bG54X2RybS0+Y3J0Yywg Y3J0Yyk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIHhsbnhfZGlzYWJsZV92Ymxh bmsoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgdW5zaWduZWQgaW50DQo+IGNydGMpDQo+ID4gK3sN Cj4gPiArICAgICAgIHN0cnVjdCB4bG54X2RybSAqeGxueF9kcm0gPSBkcm0tPmRldl9wcml2YXRl Ow0KPiA+ICsNCj4gPiArICAgICAgIHhsbnhfY3J0Y19oZWxwZXJfZGlzYWJsZV92YmxhbmsoeGxu eF9kcm0tPmNydGMsIGNydGMpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCB4bG54 X21vZGVfY29uZmlnX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSkNCj4gPiArew0KPiA+ICsg ICAgICAgc3RydWN0IHhsbnhfZHJtICp4bG54X2RybSA9IGRybS0+ZGV2X3ByaXZhdGU7DQo+ID4g KyAgICAgICBzdHJ1Y3QgeGxueF9jcnRjX2hlbHBlciAqY3J0YyA9IHhsbnhfZHJtLT5jcnRjOw0K PiA+ICsNCj4gPiArICAgICAgIGRybS0+bW9kZV9jb25maWcubWluX3dpZHRoID0gMDsNCj4gPiAr ICAgICAgIGRybS0+bW9kZV9jb25maWcubWluX2hlaWdodCA9IDA7DQo+ID4gKyAgICAgICBkcm0t Pm1vZGVfY29uZmlnLm1heF93aWR0aCA9DQo+IHhsbnhfY3J0Y19oZWxwZXJfZ2V0X21heF93aWR0 aChjcnRjKTsNCj4gPiArICAgICAgIGRybS0+bW9kZV9jb25maWcubWF4X2hlaWdodCA9DQo+IHhs bnhfY3J0Y19oZWxwZXJfZ2V0X21heF9oZWlnaHQoY3J0Yyk7DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyB2b2lkIHhsbnhfbGFzdGNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pDQo+ID4g K3sNCj4gPiArICAgICAgIHN0cnVjdCB4bG54X2RybSAqeGxueF9kcm0gPSBkcm0tPmRldl9wcml2 YXRlOw0KPiA+ICsNCj4gPiArICAgICAgIGlmICh4bG54X2RybS0+ZmIpDQo+ID4gKyAgICAgICAg ICAgICAgIGRybV9mYl9oZWxwZXJfcmVzdG9yZV9mYmRldl9tb2RlX3VubG9ja2VkKHhsbnhfZHJt LT5mYik7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVy YXRpb25zIHhsbnhfZm9wcyA9IHsNCj4gPiArICAgICAgIC5vd25lciAgICAgICAgICA9IFRISVNf TU9EVUxFLA0KPiA+ICsgICAgICAgLm9wZW4gICAgICAgICAgID0gZHJtX29wZW4sDQo+ID4gKyAg ICAgICAucmVsZWFzZSAgICAgICAgPSBkcm1fcmVsZWFzZSwNCj4gPiArICAgICAgIC51bmxvY2tl ZF9pb2N0bCA9IGRybV9pb2N0bCwNCj4gPiArICAgICAgIC5tbWFwICAgICAgICAgICA9IGRybV9n ZW1fY21hX21tYXAsDQo+ID4gKyAgICAgICAucG9sbCAgICAgICAgICAgPSBkcm1fcG9sbCwNCj4g PiArICAgICAgIC5yZWFkICAgICAgICAgICA9IGRybV9yZWFkLA0KPiA+ICsjaWZkZWYgQ09ORklH X0NPTVBBVA0KPiA+ICsgICAgICAgLmNvbXBhdF9pb2N0bCAgID0gZHJtX2NvbXBhdF9pb2N0bCwN Cj4gPiArI2VuZGlmDQo+ID4gKyAgICAgICAubGxzZWVrICAgICAgICAgPSBub29wX2xsc2VlaywN Cj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciB4bG54X2RybV9k cml2ZXIgPSB7DQo+ID4gKyAgICAgICAuZHJpdmVyX2ZlYXR1cmVzICAgICAgICAgICAgICAgID0g RFJJVkVSX01PREVTRVQgfCBEUklWRVJfR0VNIHwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBEUklWRVJfQVRPTUlDIHwgRFJJVkVSX1BSSU1FLA0KPiA+ICsg ICAgICAgLmxhc3RjbG9zZSAgICAgICAgICAgICAgICAgICAgICA9IHhsbnhfbGFzdGNsb3NlLA0K PiA+ICsNCj4gPiArICAgICAgIC5lbmFibGVfdmJsYW5rICAgICAgICAgICAgICAgICAgPSB4bG54 X2VuYWJsZV92YmxhbmssDQo+ID4gKyAgICAgICAuZGlzYWJsZV92YmxhbmsgICAgICAgICAgICAg ICAgID0geGxueF9kaXNhYmxlX3ZibGFuaywNCj4gPiArDQo+ID4gKyAgICAgICAucHJpbWVfaGFu ZGxlX3RvX2ZkICAgICAgICAgICAgID0gZHJtX2dlbV9wcmltZV9oYW5kbGVfdG9fZmQsDQo+ID4g KyAgICAgICAucHJpbWVfZmRfdG9faGFuZGxlICAgICAgICAgICAgID0gZHJtX2dlbV9wcmltZV9m ZF90b19oYW5kbGUsDQo+ID4gKyAgICAgICAuZ2VtX3ByaW1lX2V4cG9ydCAgICAgICAgICAgICAg ID0gZHJtX2dlbV9wcmltZV9leHBvcnQsDQo+ID4gKyAgICAgICAuZ2VtX3ByaW1lX2ltcG9ydCAg ICAgICAgICAgICAgID0gZHJtX2dlbV9wcmltZV9pbXBvcnQsDQo+ID4gKyAgICAgICAuZ2VtX3By aW1lX2dldF9zZ190YWJsZSAgICAgICAgID0NCj4gZHJtX2dlbV9jbWFfcHJpbWVfZ2V0X3NnX3Rh YmxlLA0KPiA+ICsgICAgICAgLmdlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUgICAgICA9DQo+IGRy bV9nZW1fY21hX3ByaW1lX2ltcG9ydF9zZ190YWJsZSwNCj4gPiArICAgICAgIC5nZW1fcHJpbWVf dm1hcCAgICAgICAgICAgICAgICAgPSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLA0KPiA+ICsgICAg ICAgLmdlbV9wcmltZV92dW5tYXAgICAgICAgICAgICAgICA9IGRybV9nZW1fY21hX3ByaW1lX3Z1 bm1hcCwNCj4gPiArICAgICAgIC5nZW1fcHJpbWVfbW1hcCAgICAgICAgICAgICAgICAgPSBkcm1f Z2VtX2NtYV9wcmltZV9tbWFwLA0KPiA+ICsgICAgICAgLmdlbV9mcmVlX29iamVjdCAgICAgICAg ICAgICAgICA9IGRybV9nZW1fY21hX2ZyZWVfb2JqZWN0LA0KPiA+ICsgICAgICAgLmdlbV92bV9v cHMgICAgICAgICAgICAgICAgICAgICA9ICZkcm1fZ2VtX2NtYV92bV9vcHMsDQo+ID4gKyAgICAg ICAuZHVtYl9jcmVhdGUgICAgICAgICAgICAgICAgICAgID0geGxueF9nZW1fY21hX2R1bWJfY3Jl YXRlLA0KPiA+ICsgICAgICAgLmR1bWJfZGVzdHJveSAgICAgICAgICAgICAgICAgICA9IGRybV9n ZW1fZHVtYl9kZXN0cm95LA0KPiA+ICsNCj4gPiArICAgICAgIC5mb3BzICAgICAgICAgICAgICAg ICAgICAgICAgICAgPSAmeGxueF9mb3BzLA0KPiA+ICsNCj4gPiArICAgICAgIC5uYW1lICAgICAg ICAgICAgICAgICAgICAgICAgICAgPSBEUklWRVJfTkFNRSwNCj4gPiArICAgICAgIC5kZXNjICAg ICAgICAgICAgICAgICAgICAgICAgICAgPSBEUklWRVJfREVTQywNCj4gPiArICAgICAgIC5kYXRl ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBEUklWRVJfREFURSwNCj4gPiArICAgICAgIC5t YWpvciAgICAgICAgICAgICAgICAgICAgICAgICAgPSBEUklWRVJfTUFKT1IsDQo+ID4gKyAgICAg ICAubWlub3IgICAgICAgICAgICAgICAgICAgICAgICAgID0gRFJJVkVSX01JTk9SLA0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArc3RhdGljIGludCB4bG54X2JpbmQoc3RydWN0IGRldmljZSAqZGV2KQ0K PiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgeGxueF9kcm0gKnhsbnhfZHJtOw0KPiA+ICsgICAg ICAgc3RydWN0IGRybV9kZXZpY2UgKmRybTsNCj4gPiArICAgICAgIGNvbnN0IHN0cnVjdCBkcm1f Zm9ybWF0X2luZm8gKmluZm87DQo+ID4gKyAgICAgICBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7DQo+ID4gKyAgICAgICBpbnQgcmV0Ow0KPiA+ ICsgICAgICAgdTMyIGZvcm1hdDsNCj4gPiArDQo+ID4gKyAgICAgICBkcm0gPSBkcm1fZGV2X2Fs bG9jKCZ4bG54X2RybV9kcml2ZXIsICZwZGV2LT5kZXYpOw0KPiA+ICsgICAgICAgaWYgKElTX0VS Uihkcm0pKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihkcm0pOw0KPiA+ICsN Cj4gPiArICAgICAgIHhsbnhfZHJtID0gZGV2bV9remFsbG9jKGRybS0+ZGV2LCBzaXplb2YoKnhs bnhfZHJtKSwNCj4gR0ZQX0tFUk5FTCk7DQo+ID4gKyAgICAgICBpZiAoIXhsbnhfZHJtKSB7DQo+ ID4gKyAgICAgICAgICAgICAgIHJldCA9IC1FTk9NRU07DQo+ID4gKyAgICAgICAgICAgICAgIGdv dG8gZXJyX2RybTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBkcm1fbW9kZV9j b25maWdfaW5pdChkcm0pOw0KPiA+ICsgICAgICAgZHJtLT5tb2RlX2NvbmZpZy5mdW5jcyA9ICZ4 bG54X21vZGVfY29uZmlnX2Z1bmNzOw0KPiA+ICsNCj4gPiArICAgICAgIHJldCA9IGRybV92Ymxh bmtfaW5pdChkcm0sIDEpOw0KPiA+ICsgICAgICAgaWYgKHJldCkgew0KPiA+ICsgICAgICAgICAg ICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSB2YmxhbmtcbiIp Ow0KPiA+ICsgICAgICAgICAgICAgICBnb3RvIGVycl94bG54X2RybTsNCj4gPiArICAgICAgIH0N Cj4gPiArDQo+ID4gKyAgICAgICBkcm0tPmlycV9lbmFibGVkID0gMTsNCj4gPiArICAgICAgIGRy bS0+ZGV2X3ByaXZhdGUgPSB4bG54X2RybTsNCj4gPiArICAgICAgIHhsbnhfZHJtLT5kcm0gPSBk cm07DQo+ID4gKyAgICAgICBkcm1fa21zX2hlbHBlcl9wb2xsX2luaXQoZHJtKTsNCj4gPiArICAg ICAgIHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHhsbnhfZHJtKTsNCj4gPiArDQo+ID4gKyAg ICAgICB4bG54X2RybS0+Y3J0YyA9IHhsbnhfY3J0Y19oZWxwZXJfaW5pdChkcm0pOw0KPiA+ICsg ICAgICAgaWYgKElTX0VSUih4bG54X2RybS0+Y3J0YykpIHsNCj4gPiArICAgICAgICAgICAgICAg cmV0ID0gUFRSX0VSUih4bG54X2RybS0+Y3J0Yyk7DQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8g ZXJyX3hsbnhfZHJtOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldCA9IGNv bXBvbmVudF9iaW5kX2FsbChkcm0tPmRldiwgZHJtKTsNCj4gPiArICAgICAgIGlmIChyZXQpDQo+ ID4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyX2NydGM7DQo+ID4gKw0KPiA+ICsgICAgICAgeGxu eF9tb2RlX2NvbmZpZ19pbml0KGRybSk7DQo+ID4gKyAgICAgICBkcm1fbW9kZV9jb25maWdfcmVz ZXQoZHJtKTsNCj4gPiArICAgICAgIGRtYV9zZXRfbWFzayhkcm0tPmRldiwNCj4geGxueF9jcnRj X2hlbHBlcl9nZXRfZG1hX21hc2soeGxueF9kcm0tPmNydGMpKTsNCj4gPiArDQo+ID4gKyAgICAg ICBmb3JtYXQgPSB4bG54X2NydGNfaGVscGVyX2dldF9mb3JtYXQoeGxueF9kcm0tPmNydGMpOw0K PiA+ICsgICAgICAgaW5mbyA9IGRybV9mb3JtYXRfaW5mbyhmb3JtYXQpOw0KPiA+ICsgICAgICAg aWYgKGluZm8gJiYgaW5mby0+ZGVwdGggJiYgaW5mby0+Y3BwWzBdKSB7DQo+ID4gKyAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBhbGlnbjsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIGFs aWduID0geGxueF9jcnRjX2hlbHBlcl9nZXRfYWxpZ24oeGxueF9kcm0tPmNydGMpOw0KPiA+ICsg ICAgICAgICAgICAgICB4bG54X2RybS0+ZmIgPSB4bG54X2ZiX2luaXQoZHJtLCBpbmZvLT5jcHBb MF0gKiA4LCAxLCBhbGlnbiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHhsbnhfZmJkZXZfdnJlcyk7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChJU19F UlIoeGxueF9kcm0tPmZiKSkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIo JnBkZXYtPmRldiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQg dG8gaW5pdGlhbGl6ZSBkcm0gZmJcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHhs bnhfZHJtLT5mYiA9IE5VTEw7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgIH0g ZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgIC8qIGZiZGV2IGVtdWxhdGlvbiBpcyBvcHRpb25h bCAqLw0KPiA+ICsgICAgICAgICAgICAgICBkZXZfaW5mbygmcGRldi0+ZGV2LCAiZmJkZXYgaXMg bm90IGluaXRpYWxpemVkXG4iKTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBy ZXQgPSBkcm1fZGV2X3JlZ2lzdGVyKGRybSwgMCk7DQo+ID4gKyAgICAgICBpZiAocmV0IDwgMCkN Cj4gPiArICAgICAgICAgICAgICAgZ290byBlcnJfZmI7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0 dXJuIDA7DQo+ID4gKw0KPiA+ICtlcnJfZmI6DQo+ID4gKyAgICAgICBpZiAoeGxueF9kcm0tPmZi KQ0KPiA+ICsgICAgICAgICAgICAgICB4bG54X2ZiX2ZpbmkoeGxueF9kcm0tPmZiKTsNCj4gPiAr ICAgICAgIGNvbXBvbmVudF91bmJpbmRfYWxsKGRybS0+ZGV2LCBkcm0pOw0KPiA+ICtlcnJfY3J0 YzoNCj4gPiArICAgICAgIHhsbnhfY3J0Y19oZWxwZXJfZmluaShkcm0sIHhsbnhfZHJtLT5jcnRj KTsNCj4gPiArZXJyX3hsbnhfZHJtOg0KPiA+ICsgICAgICAgZHJtX21vZGVfY29uZmlnX2NsZWFu dXAoZHJtKTsNCj4gPiArZXJyX2RybToNCj4gPiArICAgICAgIGRybV9kZXZfdW5yZWYoZHJtKTsN Cj4gPiArICAgICAgIHJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lk IHhsbnhfdW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gPiArew0KPiA+ICsgICAgICAgc3Ry dWN0IHhsbnhfZHJtICp4bG54X2RybSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+ICsgICAg ICAgc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IHhsbnhfZHJtLT5kcm07DQo+ID4gKw0KPiA+ICsg ICAgICAgZHJtX2Rldl91bnJlZ2lzdGVyKGRybSk7DQo+ID4gKyAgICAgICBpZiAoeGxueF9kcm0t PmZiKQ0KPiA+ICsgICAgICAgICAgICAgICB4bG54X2ZiX2ZpbmkoeGxueF9kcm0tPmZiKTsNCj4g PiArICAgICAgIGNvbXBvbmVudF91bmJpbmRfYWxsKGRybS0+ZGV2LCBkcm0pOw0KPiA+ICsgICAg ICAgeGxueF9jcnRjX2hlbHBlcl9maW5pKGRybSwgeGxueF9kcm0tPmNydGMpOw0KPiA+ICsgICAg ICAgZHJtX2ttc19oZWxwZXJfcG9sbF9maW5pKGRybSk7DQo+ID4gKyAgICAgICBkcm1fbW9kZV9j b25maWdfY2xlYW51cChkcm0pOw0KPiA+ICsgICAgICAgZHJtX2Rldl91bnJlZihkcm0pOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9tYXN0ZXJfb3Bz IHhsbnhfbWFzdGVyX29wcyA9IHsNCj4gPiArICAgICAgIC5iaW5kICAgPSB4bG54X2JpbmQsDQo+ ID4gKyAgICAgICAudW5iaW5kID0geGxueF91bmJpbmQsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtz dGF0aWMgaW50IHhsbnhfb2ZfY29tcG9uZW50X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKmNvbXBhcmVfb2YpKHN0 cnVjdCBkZXZpY2UgKiwgdm9pZCAqKSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCBjb21wb25lbnRfbWFzdGVyX29wcyAqbV9vcHMpDQo+ID4gK3sN Cj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqZXAsICpwb3J0LCAqcmVtb3RlLCAqcGFy ZW50Ow0KPiA+ICsgICAgICAgc3RydWN0IGNvbXBvbmVudF9tYXRjaCAqbWF0Y2ggPSBOVUxMOw0K PiA+ICsgICAgICAgaW50IGk7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKCFkZXYtPm9mX25vZGUp DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArICAgICAg IGZvciAoaSA9IDA7IDsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHBvcnQgPSBvZl9wYXJz ZV9waGFuZGxlKGRldi0+b2Zfbm9kZSwgInBvcnRzIiwgaSk7DQo+ID4gKyAgICAgICAgICAgICAg IGlmICghcG9ydCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiArDQo+ ID4gKyAgICAgICAgICAgICAgIHBhcmVudCA9IG9mX2dyYXBoX2dldF9wb3J0X3BhcmVudChwb3J0 KTsNCj4gPiArICAgICAgICAgICAgICAgaWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKHBhcmVu dCkpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBvZl9ub2RlX3B1dChwb3J0KTsNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4gPiArICAgICAgICAgICAgICAg fQ0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgY29tcG9uZW50X21hdGNoX2FkZChkZXYsICZt YXRjaCwgY29tcGFyZV9vZiwgcGFyZW50KTsNCj4gPiArICAgICAgICAgICAgICAgb2Zfbm9kZV9w dXQocGFyZW50KTsNCj4gPiArICAgICAgICAgICAgICAgb2Zfbm9kZV9wdXQocG9ydCk7DQo+ID4g KyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGkgPT0gMCkgew0KPiA+ICsgICAgICAg ICAgICAgICBkZXZfZXJyKGRldiwgIm1pc3NpbmcgJ3BvcnRzJyBwcm9wZXJ0eVxuIik7DQo+ID4g KyAgICAgICAgICAgICAgIHJldHVybiAtRU5PREVWOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4g PiArICAgICAgIGlmICghbWF0Y2gpIHsNCj4gPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYs ICJubyBhdmFpbGFibGUgcG9ydFxuIik7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5P REVWOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGZvciAoaSA9IDA7IDsgaSsr KSB7DQo+ID4gKyAgICAgICAgICAgICAgIHBvcnQgPSBvZl9wYXJzZV9waGFuZGxlKGRldi0+b2Zf bm9kZSwgInBvcnRzIiwgaSk7DQo+ID4gKyAgICAgICAgICAgICAgIGlmICghcG9ydCkNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAg IHBhcmVudCA9IG9mX2dyYXBoX2dldF9wb3J0X3BhcmVudChwb3J0KTsNCj4gPiArICAgICAgICAg ICAgICAgaWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKHBhcmVudCkpIHsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBvZl9ub2RlX3B1dChwb3J0KTsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBjb250aW51ZTsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAg ICAgICAgICAgICAgZm9yX2VhY2hfY2hpbGRfb2Zfbm9kZShwb3J0LCBlcCkgew0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIHJlbW90ZSA9IG9mX2dyYXBoX2dldF9yZW1vdGVfcG9ydF9wYXJl bnQoZXApOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVtb3RlIHx8ICFvZl9k ZXZpY2VfaXNfYXZhaWxhYmxlKHJlbW90ZSkpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9mX25vZGVfcHV0KHJlbW90ZSk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb250aW51ZTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug aWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKHJlbW90ZS0+cGFyZW50KSkgew0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X3dhcm4oZGV2LCAicGFyZW50IGRldiBvZiAl cyB1bmF2YWlsYWJsZVxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlbW90ZS0+ZnVsbF9uYW1lKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9mX25vZGVfcHV0KHJlbW90ZSk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb250aW51ZTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB9DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50X21hdGNoX2FkZChkZXYsICZtYXRjaCwgY29t cGFyZV9vZiwNCj4gcmVtb3RlKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBvZl9ub2Rl X3B1dChyZW1vdGUpOw0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICAg IG9mX25vZGVfcHV0KHBvcnQpOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJl dHVybiBjb21wb25lbnRfbWFzdGVyX2FkZF93aXRoX21hdGNoKGRldiwgbV9vcHMsIG1hdGNoKTsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCB4bG54X2NvbXBhcmVfb2Yoc3RydWN0IGRl dmljZSAqZGV2LCB2b2lkICpkYXRhKQ0KPiA+ICt7DQo+ID4gKyAgICAgICByZXR1cm4gZGV2LT5v Zl9ub2RlID09IGRhdGE7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgeGxueF9wbGF0 Zm9ybV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICt7DQo+ID4gKyAg ICAgICByZXR1cm4geGxueF9vZl9jb21wb25lbnRfcHJvYmUoJnBkZXYtPmRldiwgeGxueF9jb21w YXJlX29mLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ4bG54 X21hc3Rlcl9vcHMpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHhsbnhfcGxhdGZv cm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4gK3sNCj4gPiArICAg ICAgIGNvbXBvbmVudF9tYXN0ZXJfZGVsKCZwZGV2LT5kZXYsICZ4bG54X21hc3Rlcl9vcHMpOw0K PiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIHhs bnhfcGxhdGZvcm1fc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPiAr ew0KPiA+ICsgICAgICAgc3RydWN0IHhsbnhfZHJtICp4bG54X2RybSA9IHBsYXRmb3JtX2dldF9k cnZkYXRhKHBkZXYpOw0KPiA+ICsNCj4gPiArICAgICAgIGRybV9wdXRfZGV2KHhsbnhfZHJtLT5k cm0pOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHhsbnhf cG1fc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVj dCB4bG54X2RybSAqeGxueF9kcm0gPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiArICAgICAg IHN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSB4bG54X2RybS0+ZHJtOw0KPiA+ICsNCj4gPiArICAg ICAgIGRybV9rbXNfaGVscGVyX3BvbGxfZGlzYWJsZShkcm0pOw0KPiA+ICsNCj4gPiArICAgICAg IHhsbnhfZHJtLT5zdXNwZW5kX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfc3VzcGVuZChkcm0p Ow0KPiA+ICsgICAgICAgaWYgKElTX0VSUih4bG54X2RybS0+c3VzcGVuZF9zdGF0ZSkpIHsNCj4g PiArICAgICAgICAgICAgICAgZHJtX2ttc19oZWxwZXJfcG9sbF9lbmFibGUoZHJtKTsNCj4gPiAr ICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoeGxueF9kcm0tPnN1c3BlbmRfc3RhdGUpOw0K PiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHhsbnhfcG1fcmVzdW1lKHN0cnVjdCBk ZXZpY2UgKmRldikNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IHhsbnhfZHJtICp4bG54X2Ry bSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+ICsgICAgICAgc3RydWN0IGRybV9kZXZpY2Ug KmRybSA9IHhsbnhfZHJtLT5kcm07DQo+ID4gKw0KPiA+ICsgICAgICAgZHJtX2F0b21pY19oZWxw ZXJfcmVzdW1lKGRybSwgeGxueF9kcm0tPnN1c3BlbmRfc3RhdGUpOw0KPiA+ICsgICAgICAgZHJt X2ttc19oZWxwZXJfcG9sbF9lbmFibGUoZHJtKTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4g MDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIHhs bnhfcG1fb3BzID0gew0KPiA+ICsgICAgICAgU0VUX1NZU1RFTV9TTEVFUF9QTV9PUFMoeGxueF9w bV9zdXNwZW5kLCB4bG54X3BtX3Jlc3VtZSkNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHhsbnhfb2ZfbWF0Y2hbXSA9IHsNCj4gPiArICAgICAg IHsgLmNvbXBhdGlibGUgPSAieGxueCxkaXNwbGF5IiwgfSwNCj4gPiArICAgICAgIHsgLyogZW5k IG9mIHRhYmxlICovIH0sDQo+ID4gK307DQo+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHhs bnhfb2ZfbWF0Y2gpOw0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIg eGxueF9kcml2ZXIgPSB7DQo+ID4gKyAgICAgICAucHJvYmUgICAgICAgICAgICAgICAgICA9IHhs bnhfcGxhdGZvcm1fcHJvYmUsDQo+ID4gKyAgICAgICAucmVtb3ZlICAgICAgICAgICAgICAgICA9 IHhsbnhfcGxhdGZvcm1fcmVtb3ZlLA0KPiA+ICsgICAgICAgLnNodXRkb3duICAgICAgICAgICAg ICAgPSB4bG54X3BsYXRmb3JtX3NodXRkb3duLA0KPiA+ICsgICAgICAgLmRyaXZlciAgICAgICAg ICAgICAgICAgPSB7DQo+ID4gKyAgICAgICAgICAgICAgIC5uYW1lICAgICAgICAgICA9ICJ4bG54 LWRybSIsDQo+ID4gKyAgICAgICAgICAgICAgIC5wbSAgICAgICAgICAgICA9ICZ4bG54X3BtX29w cywNCj4gPiArICAgICAgICAgICAgICAgLm9mX21hdGNoX3RhYmxlID0geGxueF9vZl9tYXRjaCwN Cj4gPiArICAgICAgIH0sDQo+ID4gK307DQo+ID4gKw0KPiA+ICttb2R1bGVfcGxhdGZvcm1fZHJp dmVyKHhsbnhfZHJpdmVyKTsNCj4gPiArDQo+ID4gK01PRFVMRV9BVVRIT1IoIlhpbGlueCwgSW5j LiIpOw0KPiA+ICtNT0RVTEVfREVTQ1JJUFRJT04oIlhpbGlueCBEUk0gS01TIERyaXZlciIpOw0K PiA+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS94bG54L3hsbnhfZHJ2LmgNCj4gYi9kcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2Ry di5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi44YzMyMGZk DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhf ZHJ2LmgNCj4gPiBAQCAtMCwwICsxLDMwIEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wDQo+ID4gKy8qDQo+ID4gKyAqIFhpbGlueCBEUk0gS01TIEhlYWRlciBmb3Ig WGlsaW54DQo+ID4gKyAqDQo+ID4gKyAqICBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4IFhpbGlu eCwgSW5jLg0KPiA+ICsgKg0KPiA+ICsgKiAgQXV0aG9yOiBIeXVuIFdvbyBLd29uIDxoeXVua0B4 aWxpbnguY29tPg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQo+ID4gKyAqIExpY2Vuc2Ug dmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg YW5kDQo+ID4gKyAqIG1heSBiZSBjb3BpZWQsIGRpc3RyaWJ1dGVkLCBhbmQgbW9kaWZpZWQgdW5k ZXIgdGhvc2UgdGVybXMuDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KPiA+ICsgKiBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0K PiA+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlDQo+ID4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBfWExOWF9EUlZfSF8NCj4g PiArI2RlZmluZSBfWExOWF9EUlZfSF8NCj4gPiArDQo+ID4gK3N0cnVjdCBkcm1fZGV2aWNlOw0K PiA+ICtzdHJ1Y3QgeGxueF9jcnRjX2hlbHBlcjsNCj4gPiArDQo+ID4gK3VpbnQzMl90IHhsbnhf Z2V0X2Zvcm1hdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKTsNCj4gPiArdW5zaWduZWQgaW50IHhs bnhfZ2V0X2FsaWduKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pOw0KPiA+ICtzdHJ1Y3QgeGxueF9j cnRjX2hlbHBlciAqeGxueF9nZXRfY3J0Y19oZWxwZXIoc3RydWN0IGRybV9kZXZpY2UgKmRybSk7 DQo+ID4gK3N0cnVjdCB4bG54X2JyaWRnZV9oZWxwZXIgKnhsbnhfZ2V0X2JyaWRnZV9oZWxwZXIo c3RydWN0IGRybV9kZXZpY2UNCj4gKmRybSk7DQo+ID4gKw0KPiA+ICsjZW5kaWYgLyogX1hMTlhf RFJWX0hfICovDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfZmIu Yw0KPiBiL2RyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfZmIuYw0KPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uZTcyMDg3ZA0KPiA+IC0tLSAvZGV2L251bGwNCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2ZiLmMNCj4gPiBAQCAtMCwwICsxLDI5 OCBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ICsvKg0K PiA+ICsgKiBYaWxpbnggRFJNIEtNUyBGcmFtZWJ1ZmZlciBoZWxwZXINCj4gPiArICoNCj4gPiAr ICogIENvcHlyaWdodCAoQykgMjAxNSAtIDIwMTggWGlsaW54LCBJbmMuDQo+ID4gKyAqDQo+ID4g KyAqICBBdXRob3I6IEh5dW4gV29vIEt3b24gPGh5dW4ua3dvbkB4aWxpbnguY29tPg0KPiA+ICsg Kg0KPiA+ICsgKiBCYXNlZCBvbiBkcm1fZmJfY21hX2hlbHBlci5jDQo+ID4gKyAqDQo+ID4gKyAq ICBDb3B5cmlnaHQgKEMpIDIwMTIgQW5hbG9nIERldmljZSBJbmMuDQo+ID4gKyAqDQo+ID4gKyAq IFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMNCj4gPiArICogTGljZW5zZSB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBhbmQNCj4gPiArICogbWF5IGJlIGNvcGllZCwg ZGlzdHJpYnV0ZWQsIGFuZCBtb2RpZmllZCB1bmRlciB0aG9zZSB0ZXJtcy4NCj4gPiArICoNCj4g PiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsDQo+ID4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+ID4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCj4gPiArICogR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCj4gPiArICovDQo+ID4gKw0K PiA+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4NCj4gPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5o Pg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPg0KPiA+ICsjaW5jbHVkZSA8 ZHJtL2RybV9mYl9oZWxwZXIuaD4NCj4gPiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxw ZXIuaD4NCj4gPiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5oPg0K PiA+ICsNCj4gPiArI2luY2x1ZGUgInhsbnhfZHJ2LmgiDQo+ID4gKyNpbmNsdWRlICJ4bG54X2Zi LmgiDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFhMTlhfTUFYX1BMQU5FUyAgICAgICAgNA0KPiA+ICsN Cj4gPiArc3RydWN0IHhsbnhfZmJkZXYgew0KPiA+ICsgICAgICAgc3RydWN0IGRybV9mYl9oZWxw ZXIgZmJfaGVscGVyOw0KPiA+ICsgICAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7DQo+ ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgYWxpZ247DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQg dnJlc19tdWx0Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgeGxu eF9mYmRldiAqdG9fZmJkZXYoc3RydWN0IGRybV9mYl9oZWxwZXINCj4gKmZiX2hlbHBlcikNCj4g PiArew0KPiA+ICsgICAgICAgcmV0dXJuIGNvbnRhaW5lcl9vZihmYl9oZWxwZXIsIHN0cnVjdCB4 bG54X2ZiZGV2LCBmYl9oZWxwZXIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0 IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyB4bG54X2ZiX2Z1bmNzID0gew0KPiA+ICsgICAgICAgLmRl c3Ryb3kgICAgICAgID0gZHJtX2dlbV9mYl9kZXN0cm95LA0KPiA+ICsgICAgICAgLmNyZWF0ZV9o YW5kbGUgID0gZHJtX2dlbV9mYl9jcmVhdGVfaGFuZGxlLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr c3RhdGljIGludA0KPiA+ICt4bG54X2ZiX2lvY3RsKHN0cnVjdCBmYl9pbmZvICppbmZvLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykNCj4gPiArew0KPiA+ICsgICAgICAgc3Ry dWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciA9IGluZm8tPnBhcjsNCj4gPiArICAgICAgIHVu c2lnbmVkIGludCBpOw0KPiA+ICsgICAgICAgaW50IHJldCA9IDA7DQo+ID4gKw0KPiA+ICsgICAg ICAgc3dpdGNoIChjbWQpIHsNCj4gPiArICAgICAgIGNhc2UgRkJJT19XQUlURk9SVlNZTkM6DQo+ ID4gKyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmYl9oZWxwZXItPmNydGNfY291bnQ7 IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fbW9kZV9zZXQg Km1vZGVfc2V0Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fY3J0YyAq Y3J0YzsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbW9kZV9zZXQgPSAmZmJf aGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQ7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgY3J0YyA9IG1vZGVfc2V0LT5jcnRjOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJl dCA9IGRybV9jcnRjX3ZibGFua19nZXQoY3J0Yyk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgaWYgKCFyZXQpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRybV9j cnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRybV9jcnRjX3ZibGFua19wdXQoY3J0Yyk7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVy biByZXQ7DQo+ID4gKyAgICAgICBkZWZhdWx0Og0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4g LUVOT1RUWTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBmYl9vcHMgeGxueF9mYmRldl9vcHMgPSB7 DQo+ID4gKyAgICAgICAub3duZXIgICAgICAgICAgPSBUSElTX01PRFVMRSwNCj4gPiArICAgICAg IC5mYl9maWxscmVjdCAgICA9IHN5c19maWxscmVjdCwNCj4gPiArICAgICAgIC5mYl9jb3B5YXJl YSAgICA9IHN5c19jb3B5YXJlYSwNCj4gPiArICAgICAgIC5mYl9pbWFnZWJsaXQgICA9IHN5c19p bWFnZWJsaXQsDQo+ID4gKyAgICAgICAuZmJfY2hlY2tfdmFyICAgPSBkcm1fZmJfaGVscGVyX2No ZWNrX3ZhciwNCj4gPiArICAgICAgIC5mYl9zZXRfcGFyICAgICA9IGRybV9mYl9oZWxwZXJfc2V0 X3BhciwNCj4gPiArICAgICAgIC5mYl9ibGFuayAgICAgICA9IGRybV9mYl9oZWxwZXJfYmxhbmss DQo+ID4gKyAgICAgICAuZmJfcGFuX2Rpc3BsYXkgPSBkcm1fZmJfaGVscGVyX3Bhbl9kaXNwbGF5 LA0KPiA+ICsgICAgICAgLmZiX3NldGNtYXAgICAgID0gZHJtX2ZiX2hlbHBlcl9zZXRjbWFwLA0K PiA+ICsgICAgICAgLmZiX2lvY3RsICAgICAgID0geGxueF9mYl9pb2N0bCwNCj4gPiArfTsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgKiB4bG54X2ZiZGV2X2NyZWF0ZSAtIENyZWF0ZSB0aGUgZmJk ZXYgd2l0aCBhIGZyYW1lYnVmZmVyDQo+ID4gKyAqIEBmYl9oZWxwZXI6IGZiIGhlbHBlciBzdHJ1 Y3R1cmUNCj4gPiArICogQHNpemU6IGZyYW1lYnVmZmVyIHNpemUgaW5mbw0KPiA+ICsgKg0KPiA+ ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGJhc2VkIG9uIGRybV9mYmRldl9jbWFfY3JlYXRlKCkuDQo+ ID4gKyAqDQo+ID4gKyAqIFJldHVybjogMCBpZiBzdWNjZXNzZnVsLCBvciB0aGUgZXJyb3IgY29k ZS4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgeGxueF9mYmRldl9jcmVhdGUoc3RydWN0IGRy bV9mYl9oZWxwZXIgKmZiX2hlbHBlciwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBkcm1fZmJfaGVscGVyX3N1cmZhY2Vfc2l6ZSAqc2l6ZSkNCj4gPiArew0KPiA+ICsg ICAgICAgc3RydWN0IHhsbnhfZmJkZXYgKmZiZGV2ID0gdG9fZmJkZXYoZmJfaGVscGVyKTsNCj4g PiArICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBmYl9oZWxwZXItPmRldjsNCj4gPiAr ICAgICAgIHN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKm9iajsNCj4gPiArICAgICAgIHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiOw0KPiA+ICsgICAgICAgdW5zaWduZWQgaW50IGJ5dGVzX3Bl cl9waXhlbDsNCj4gPiArICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0Ow0KPiA+ICsgICAgICAg c3RydWN0IGZiX2luZm8gKmZiaTsNCj4gPiArICAgICAgIHNpemVfdCBieXRlczsNCj4gPiArICAg ICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ICsgICAgICAgZGV2X2RiZyhkcm0tPmRldiwgInN1cmZh Y2Ugd2lkdGgoJWQpLCBoZWlnaHQoJWQpIGFuZCBicHAoJWQpXG4iLA0KPiA+ICsgICAgICAgICAg ICAgICBzaXplLT5zdXJmYWNlX3dpZHRoLCBzaXplLT5zdXJmYWNlX2hlaWdodCwgc2l6ZS0+c3Vy ZmFjZV9icHApOw0KPiA+ICsNCj4gPiArICAgICAgIHNpemUtPnN1cmZhY2VfaGVpZ2h0ICo9IGZi ZGV2LT52cmVzX211bHQ7DQo+ID4gKyAgICAgICBieXRlc19wZXJfcGl4ZWwgPSBESVZfUk9VTkRf VVAoc2l6ZS0+c3VyZmFjZV9icHAsIDgpOw0KPiA+ICsgICAgICAgYnl0ZXMgPSBBTElHTihzaXpl LT5zdXJmYWNlX3dpZHRoICogYnl0ZXNfcGVyX3BpeGVsLCBmYmRldi0+YWxpZ24pOw0KPiA+ICsg ICAgICAgYnl0ZXMgKj0gc2l6ZS0+c3VyZmFjZV9oZWlnaHQ7DQo+ID4gKw0KPiA+ICsgICAgICAg b2JqID0gZHJtX2dlbV9jbWFfY3JlYXRlKGRybSwgYnl0ZXMpOw0KPiA+ICsgICAgICAgaWYgKElT X0VSUihvYmopKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihvYmopOw0KPiA+ ICsNCj4gPiArICAgICAgIGZiaSA9IGZyYW1lYnVmZmVyX2FsbG9jKDAsIGRybS0+ZGV2KTsNCj4g PiArICAgICAgIGlmICghZmJpKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZHJtLT5k ZXYsICJGYWlsZWQgdG8gYWxsb2NhdGUgZnJhbWVidWZmZXIgaW5mby5cbiIpOw0KPiA+ICsgICAg ICAgICAgICAgICByZXQgPSAtRU5PTUVNOw0KPiA+ICsgICAgICAgICAgICAgICBnb3RvIGVycl9k cm1fZ2VtX2NtYV9mcmVlX29iamVjdDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAg ICBmYmRldi0+ZmIgPSBkcm1fZ2VtX2ZiZGV2X2ZiX2NyZWF0ZShkcm0sIHNpemUsIGZiZGV2LT5h bGlnbiwNCj4gJm9iai0+YmFzZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZ4bG54X2ZiX2Z1bmNzKTsNCj4gPiArICAgICAgIGlmIChJU19FUlIoZmJk ZXYtPmZiKSkgew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRybS0+ZGV2LCAiRmFpbGVk IHRvIGFsbG9jYXRlIERSTSBmcmFtZWJ1ZmZlci5cbiIpOw0KPiA+ICsgICAgICAgICAgICAgICBy ZXQgPSBQVFJfRVJSKGZiZGV2LT5mYik7DQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyX2Zy YW1lYnVmZmVyX3JlbGVhc2U7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgZmIg PSBmYmRldi0+ZmI7DQo+ID4gKyAgICAgICBmYl9oZWxwZXItPmZiID0gZmI7DQo+ID4gKyAgICAg ICBmYl9oZWxwZXItPmZiZGV2ID0gZmJpOw0KPiA+ICsgICAgICAgZmJpLT5wYXIgPSBmYl9oZWxw ZXI7DQo+ID4gKyAgICAgICBmYmktPmZsYWdzID0gRkJJTkZPX0ZMQUdfREVGQVVMVDsNCj4gPiAr ICAgICAgIGZiaS0+ZmJvcHMgPSAmeGxueF9mYmRldl9vcHM7DQo+ID4gKw0KPiA+ICsgICAgICAg cmV0ID0gZmJfYWxsb2NfY21hcCgmZmJpLT5jbWFwLCAyNTYsIDApOw0KPiA+ICsgICAgICAgaWYg KHJldCkgew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRybS0+ZGV2LCAiRmFpbGVkIHRv IGFsbG9jYXRlIGNvbG9yIG1hcC5cbiIpOw0KPiA+ICsgICAgICAgICAgICAgICBnb3RvIGVycl9m Yl9kZXN0cm95Ow0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGRybV9mYl9oZWxw ZXJfZmlsbF9maXgoZmJpLCBmYi0+cGl0Y2hlc1swXSwgZmItPmZvcm1hdC0+ZGVwdGgpOw0KPiA+ ICsgICAgICAgZHJtX2ZiX2hlbHBlcl9maWxsX3ZhcihmYmksIGZiX2hlbHBlciwgZmItPndpZHRo LCBmYi0+aGVpZ2h0KTsNCj4gPiArICAgICAgIGZiaS0+dmFyLnlyZXMgPSBmYi0+aGVpZ2h0IC8g ZmJkZXYtPnZyZXNfbXVsdDsNCj4gPiArDQo+ID4gKyAgICAgICBvZmZzZXQgPSBmYmktPnZhci54 b2Zmc2V0ICogYnl0ZXNfcGVyX3BpeGVsOw0KPiA+ICsgICAgICAgb2Zmc2V0ICs9IGZiaS0+dmFy LnlvZmZzZXQgKiBmYi0+cGl0Y2hlc1swXTsNCj4gPiArDQo+ID4gKyAgICAgICBkcm0tPm1vZGVf Y29uZmlnLmZiX2Jhc2UgPSAocmVzb3VyY2Vfc2l6ZV90KW9iai0+cGFkZHI7DQo+ID4gKyAgICAg ICBmYmktPnNjcmVlbl9iYXNlID0gKGNoYXIgX19pb21lbSAqKShvYmotPnZhZGRyICsgb2Zmc2V0 KTsNCj4gPiArICAgICAgIGZiaS0+Zml4LnNtZW1fc3RhcnQgPSAodW5zaWduZWQgbG9uZykob2Jq LT5wYWRkciArIG9mZnNldCk7DQo+ID4gKyAgICAgICBmYmktPnNjcmVlbl9zaXplID0gYnl0ZXM7 DQo+ID4gKyAgICAgICBmYmktPmZpeC5zbWVtX2xlbiA9IGJ5dGVzOw0KPiA+ICsNCj4gPiArICAg ICAgIHJldHVybiAwOw0KPiA+ICsNCj4gPiArZXJyX2ZiX2Rlc3Ryb3k6DQo+ID4gKyAgICAgICBk cm1fZnJhbWVidWZmZXJfdW5yZWdpc3Rlcl9wcml2YXRlKGZiKTsNCj4gPiArICAgICAgIGRybV9n ZW1fZmJfZGVzdHJveShmYik7DQo+ID4gK2Vycl9mcmFtZWJ1ZmZlcl9yZWxlYXNlOg0KPiA+ICsg ICAgICAgZnJhbWVidWZmZXJfcmVsZWFzZShmYmkpOw0KPiA+ICtlcnJfZHJtX2dlbV9jbWFfZnJl ZV9vYmplY3Q6DQo+ID4gKyAgICAgICBkcm1fZ2VtX2NtYV9mcmVlX29iamVjdCgmb2JqLT5iYXNl KTsNCj4gPiArICAgICAgIHJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBz dHJ1Y3QgZHJtX2ZiX2hlbHBlcl9mdW5jcyB4bG54X2ZiX2hlbHBlcl9mdW5jcyA9IHsNCj4gPiAr ICAgICAgIC5mYl9wcm9iZSA9IHhsbnhfZmJkZXZfY3JlYXRlLA0KPiA+ICt9Ow0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAqIHhsbnhfZmJfaW5pdCAtIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplcyB0 aGUgWGlsaW54IGZyYW1lYnVmZmVyDQo+ID4gKyAqIEBkcm06IERSTSBkZXZpY2UNCj4gPiArICog QHByZWZlcnJlZF9icHA6IHByZWZlcnJlZCBiaXRzIHBlciBwaXhlbCBmb3IgdGhlIGRldmljZQ0K PiA+ICsgKiBAbWF4X2Nvbm5fY291bnQ6IG1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3RvcnMNCj4g PiArICogQGFsaWduOiBhbGlnbm1lbnQgdmFsdWUgZm9yIHBpdGNoDQo+ID4gKyAqIEB2cmVzX211 bHQ6IG11bHRpcGxpZXIgZm9yIHZpcnR1YWwgcmVzb2x1dGlvbg0KPiA+ICsgKg0KPiA+ICsgKiBU aGlzIGZ1bmN0aW9uIGlzIGJhc2VkIG9uIGRybV9mYmRldl9jbWFfaW5pdCgpLg0KPiA+ICsgKg0K PiA+ICsgKiBSZXR1cm46IGEgbmV3bHkgYWxsb2NhdGVkIGRybV9mYl9oZWxwZXIgc3RydWN0IG9y IGEgRVJSX1BUUi4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBkcm1fZmJfaGVscGVyICoNCj4gPiAr eGxueF9mYl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIGludCBwcmVmZXJyZWRfYnBwLA0K PiA+ICsgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWF4X2Nvbm5fY291bnQsIHVuc2lnbmVkIGlu dCBhbGlnbiwNCj4gPiArICAgICAgICAgICAgdW5zaWduZWQgaW50IHZyZXNfbXVsdCkNCj4gPiAr ew0KPiA+ICsgICAgICAgc3RydWN0IHhsbnhfZmJkZXYgKmZiZGV2Ow0KPiA+ICsgICAgICAgc3Ry dWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcjsNCj4gPiArICAgICAgIGludCByZXQ7DQo+ID4g Kw0KPiA+ICsgICAgICAgZmJkZXYgPSBremFsbG9jKHNpemVvZigqZmJkZXYpLCBHRlBfS0VSTkVM KTsNCj4gPiArICAgICAgIGlmICghZmJkZXYpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBF UlJfUFRSKC1FTk9NRU0pOw0KPiA+ICsNCj4gPiArICAgICAgIGZiZGV2LT52cmVzX211bHQgPSB2 cmVzX211bHQ7DQo+ID4gKyAgICAgICBmYmRldi0+YWxpZ24gPSBhbGlnbjsNCj4gPiArICAgICAg IGZiX2hlbHBlciA9ICZmYmRldi0+ZmJfaGVscGVyOw0KPiA+ICsgICAgICAgZHJtX2ZiX2hlbHBl cl9wcmVwYXJlKGRybSwgZmJfaGVscGVyLCAmeGxueF9mYl9oZWxwZXJfZnVuY3MpOw0KPiA+ICsN Cj4gPiArICAgICAgIHJldCA9IGRybV9mYl9oZWxwZXJfaW5pdChkcm0sIGZiX2hlbHBlciwgbWF4 X2Nvbm5fY291bnQpOw0KPiA+ICsgICAgICAgaWYgKHJldCA8IDApIHsNCj4gPiArICAgICAgICAg ICAgICAgZGV2X2Vycihkcm0tPmRldiwgIkZhaWxlZCB0byBpbml0aWFsaXplIGRybSBmYiBoZWxw ZXIuXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgZ290byBlcnJfZnJlZTsNCj4gPiArICAgICAg IH0NCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSBkcm1fZmJfaGVscGVyX3NpbmdsZV9hZGRfYWxs X2Nvbm5lY3RvcnMoZmJfaGVscGVyKTsNCj4gPiArICAgICAgIGlmIChyZXQgPCAwKSB7DQo+ID4g KyAgICAgICAgICAgICAgIGRldl9lcnIoZHJtLT5kZXYsICJGYWlsZWQgdG8gYWRkIGNvbm5lY3Rv cnMuXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgZ290byBlcnJfZHJtX2ZiX2hlbHBlcl9maW5p Ow0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJldCA9IGRybV9mYl9oZWxwZXJf aW5pdGlhbF9jb25maWcoZmJfaGVscGVyLCBwcmVmZXJyZWRfYnBwKTsNCj4gPiArICAgICAgIGlm IChyZXQgPCAwKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZHJtLT5kZXYsICJGYWls ZWQgdG8gc2V0IGluaXRpYWwgaHcgY29uZmlndXJhdGlvbi5cbiIpOw0KPiA+ICsgICAgICAgICAg ICAgICBnb3RvIGVycl9kcm1fZmJfaGVscGVyX2Zpbmk7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0K PiA+ICsgICAgICAgcmV0dXJuIGZiX2hlbHBlcjsNCj4gPiArDQo+ID4gK2Vycl9kcm1fZmJfaGVs cGVyX2Zpbmk6DQo+ID4gKyAgICAgICBkcm1fZmJfaGVscGVyX2ZpbmkoZmJfaGVscGVyKTsNCj4g PiArZXJyX2ZyZWU6DQo+ID4gKyAgICAgICBrZnJlZShmYmRldik7DQo+ID4gKyAgICAgICByZXR1 cm4gRVJSX1BUUihyZXQpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogeGxueF9m YmRldl9kZWZpb19maW5pIC0gRnJlZSB0aGUgZGVmaW8gZmINCj4gPiArICogQGZiaTogZmJfaW5m byBzdHJ1Y3QNCj4gPiArICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiBpcyBiYXNlZCBvbiBkcm1f ZmJkZXZfY21hX2RlZmlvX2ZpbmkoKS4NCj4gPiArICovDQo+ID4gK3N0YXRpYyB2b2lkIHhsbnhf ZmJkZXZfZGVmaW9fZmluaShzdHJ1Y3QgZmJfaW5mbyAqZmJpKQ0KPiA+ICt7DQo+ID4gKyAgICAg ICBpZiAoIWZiaS0+ZmJkZWZpbykNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPiA+ICsN Cj4gPiArICAgICAgIGZiX2RlZmVycmVkX2lvX2NsZWFudXAoZmJpKTsNCj4gPiArICAgICAgIGtm cmVlKGZiaS0+ZmJkZWZpbyk7DQo+ID4gKyAgICAgICBrZnJlZShmYmktPmZib3BzKTsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHhsbnhfZmJkZXZfZmluaSAtIEZyZWUgdGhlIFhp bGlueCBmcmFtZWJ1ZmZlcg0KPiA+ICsgKiBAZmJfaGVscGVyOiBkcm1fZmJfaGVscGVyIHN0cnVj dA0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGJhc2VkIG9uIGRybV9mYmRldl9j bWFfZmluaSgpLg0KPiA+ICsgKi8NCj4gPiArdm9pZCB4bG54X2ZiX2Zpbmkoc3RydWN0IGRybV9m Yl9oZWxwZXIgKmZiX2hlbHBlcikNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IHhsbnhfZmJk ZXYgKmZiZGV2ID0gdG9fZmJkZXYoZmJfaGVscGVyKTsNCj4gPiArDQo+ID4gKyAgICAgICBkcm1f ZmJfaGVscGVyX3VucmVnaXN0ZXJfZmJpKCZmYmRldi0+ZmJfaGVscGVyKTsNCj4gPiArICAgICAg IGlmIChmYmRldi0+ZmJfaGVscGVyLmZiZGV2KQ0KPiA+ICsgICAgICAgICAgICAgICB4bG54X2Zi ZGV2X2RlZmlvX2ZpbmkoZmJkZXYtPmZiX2hlbHBlci5mYmRldik7DQo+ID4gKw0KPiA+ICsgICAg ICAgaWYgKGZiZGV2LT5mYl9oZWxwZXIuZmIpDQo+ID4gKyAgICAgICAgICAgICAgIGRybV9mcmFt ZWJ1ZmZlcl9yZW1vdmUoZmJkZXYtPmZiX2hlbHBlci5mYik7DQo+ID4gKw0KPiA+ICsgICAgICAg ZHJtX2ZiX2hlbHBlcl9maW5pKCZmYmRldi0+ZmJfaGVscGVyKTsNCj4gPiArICAgICAgIGtmcmVl KGZiZGV2KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHhsbnhfZmJfY3JlYXRl IC0gKHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MgKiktPmZiX2NyZWF0ZQ0KPiBjYWxsYmFj aw0KPiA+ICsgKiBAZHJtOiBEUk0gZGV2aWNlDQo+ID4gKyAqIEBmaWxlX3ByaXY6IGRybSBmaWxl IHByaXZhdGUgZGF0YQ0KPiA+ICsgKiBAbW9kZV9jbWQ6IG1vZGUgY29tbWFuZCBmb3IgZmIgY3Jl YXRpb24NCj4gPiArICoNCj4gPiArICogVGhpcyBmdW5jdGlvbnMgY3JlYXRlcyBhIGRybV9mcmFt ZWJ1ZmZlciB3aXRoIHhsbnhfZmJfZnVuY3MgZm9yIGdpdmVuDQo+IG1vZGUNCj4gPiArICogQG1v ZGVfY21kLiBUaGlzIGZ1bmN0aW9ucyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0aGUgZmJf Y3JlYXRlDQo+IGNhbGxiYWNrDQo+ID4gKyAqIGZ1bmN0aW9uIG9mIGRybV9tb2RlX2NvbmZpZ19m dW5jcy4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOiBhIGRybV9mcmFtZWJ1ZmZlciBvYmplY3Qg aWYgc3VjY2Vzc2Z1bCwgb3INCj4gPiArICogRVJSX1BUUiBmcm9tIGRybV9nZW1fZmJfY3JlYXRl X3dpdGhfZnVuY3MoKS4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBkcm1fZnJhbWVidWZmZXIgKg0K PiA+ICt4bG54X2ZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGVfcHJpdiwNCj4gPiArICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX21vZGVf ZmJfY21kMiAqbW9kZV9jbWQpDQo+ID4gK3sNCj4gPiArICAgICAgIHJldHVybiBkcm1fZ2VtX2Zi X2NyZWF0ZV93aXRoX2Z1bmNzKGRybSwgZmlsZV9wcml2LCBtb2RlX2NtZCwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ4bG54X2ZiX2Z1bmNzKTsNCj4g PiArfQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2ZiLmgNCj4g Yi9kcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2ZiLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+IGluZGV4IDAwMDAwMDAuLjZlZmM5ODUNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3hsbngveGxueF9mYi5oDQo+ID4gQEAgLTAsMCArMSwzMyBAQA0K PiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ICsvKg0KPiA+ICsg KiBYaWxpbnggRFJNIEtNUyBGcmFtZWJ1ZmZlciBoZWxwZXIgaGVhZGVyDQo+ID4gKyAqDQo+ID4g KyAqICBDb3B5cmlnaHQgKEMpIDIwMTUgLSAyMDE4IFhpbGlueCwgSW5jLg0KPiA+ICsgKg0KPiA+ ICsgKiAgQXV0aG9yOiBIeXVuIFdvbyBLd29uIDxoeXVuLmt3b25AeGlsaW54LmNvbT4NCj4gPiAr ICoNCj4gPiArICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KPiA+ICsgKiBMaWNlbnNlIHZlcnNpb24gMiwgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGFuZA0KPiA+ICsgKiBtYXkg YmUgY29waWVkLCBkaXN0cmlidXRlZCwgYW5kIG1vZGlmaWVkIHVuZGVyIHRob3NlIHRlcm1zLg0K PiA+ICsgKg0KPiA+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCj4gPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCj4gPiArICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KPiA+ ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KPiA+ICsg Ki8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX1hMTlhfRkJfSF8NCj4gPiArI2RlZmluZSBfWExOWF9G Ql9IXw0KPiA+ICsNCj4gPiArc3RydWN0IGRybV9mYl9oZWxwZXI7DQo+ID4gKw0KPiA+ICtzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICoNCj4gPiAreGxueF9mYl9jcmVhdGUoc3RydWN0IGRybV9kZXZp Y2UgKmRybSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsDQo+ID4gKyAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kKTsNCj4gPiArc3RydWN0IGRy bV9mYl9oZWxwZXIgKg0KPiA+ICt4bG54X2ZiX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwg aW50IHByZWZlcnJlZF9icHAsDQo+ID4gKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXhfY29u bl9jb3VudCwgdW5zaWduZWQgaW50IGFsaWduLA0KPiA+ICsgICAgICAgICAgICB1bnNpZ25lZCBp bnQgdnJlc19tdWx0KTsNCj4gPiArdm9pZCB4bG54X2ZiX2Zpbmkoc3RydWN0IGRybV9mYl9oZWxw ZXIgKmZiX2hlbHBlcik7DQo+ID4gKw0KPiA+ICsjZW5kaWYgLyogX1hMTlhfRkJfSF8gKi8NCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hsbngveGxueF9nZW0uYw0KPiBiL2RyaXZl cnMvZ3B1L2RybS94bG54L3hsbnhfZ2VtLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ IGluZGV4IDAwMDAwMDAuLjRhNWQ1MzMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL3hsbngveGxueF9nZW0uYw0KPiA+IEBAIC0wLDAgKzEsNDcgQEANCj4gPiAr Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gPiArLyoNCj4gPiArICogWGls aW54IERSTSBLTVMgR0VNIGhlbHBlcg0KPiA+ICsgKg0KPiA+ICsgKiAgQ29weXJpZ2h0IChDKSAy MDE1IC0gMjAxOCBYaWxpbngsIEluYy4NCj4gPiArICoNCj4gPiArICogIEF1dGhvcjogSHl1biBX b28gS3dvbiA8aHl1bi5rd29uQHhpbGlueC5jb20+DQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgc29m dHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMNCj4gPiArICogTGljZW5zZSB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBhbmQNCj4gPiArICogbWF5IGJlIGNvcGllZCwgZGlzdHJpYnV0 ZWQsIGFuZCBtb2RpZmllZCB1bmRlciB0aG9zZSB0ZXJtcy4NCj4gPiArICoNCj4gPiArICogVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsDQo+ID4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mDQo+ID4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCj4gPiArICogR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5j bHVkZSA8ZHJtL2RybVAuaD4NCj4gPiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIu aD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJ4bG54X2Rydi5oIg0KPiA+ICsjaW5jbHVkZSAieGxu eF9nZW0uaCINCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIHhsbnhfZ2VtX2NtYV9kdW1iX2NyZWF0 ZSAtIChzdHJ1Y3QgZHJtX2RyaXZlciktPmR1bWJfY3JlYXRlDQo+IGNhbGxiYWNrDQo+ID4gKyAq IEBmaWxlX3ByaXY6IGRybV9maWxlIG9iamVjdA0KPiA+ICsgKiBAZHJtOiBEUk0gb2JqZWN0DQo+ ID4gKyAqIEBhcmdzOiBpbmZvIGZvciBkdW1iIHNjYW5vdXQgYnVmZmVyIGNyZWF0aW9uDQo+ID4g KyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gaXMgZm9yIGR1bWJfY3JlYXRlIGNhbGxiYWNrIG9m IGRybV9kcml2ZXIgc3RydWN0LiBTaW1wbHkNCj4gPiArICogaXQgd3JhcHMgYXJvdW5kIGRybV9n ZW1fY21hX2R1bWJfY3JlYXRlKCkgYW5kIHNldHMgdGhlIHBpdGNoDQo+IHZhbHVlDQo+ID4gKyAq IGJ5IHJldHJpZXZpbmcgdGhlIHZhbHVlIGZyb20gdGhlIGRldmljZS4NCj4gPiArICoNCj4gPiAr ICogUmV0dXJuOiBUaGUgcmV0dXJuIHZhbHVlIGZyb20gZHJtX2dlbV9jbWFfZHVtYl9jcmVhdGUo KQ0KPiA+ICsgKi8NCj4gPiAraW50IHhsbnhfZ2VtX2NtYV9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGVfcHJpdiwgc3RydWN0DQo+IGRybV9kZXZpY2UgKmRybSwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncykN Cj4gPiArew0KPiA+ICsgICAgICAgaW50IHBpdGNoID0gRElWX1JPVU5EX1VQKGFyZ3MtPndpZHRo ICogYXJncy0+YnBwLCA4KTsNCj4gPiArICAgICAgIHVuc2lnbmVkIGludCBhbGlnbiA9IHhsbnhf Z2V0X2FsaWduKGRybSk7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKCFhcmdzLT5waXRjaCB8fCAh SVNfQUxJR05FRChhcmdzLT5waXRjaCwgYWxpZ24pKQ0KPiA+ICsgICAgICAgICAgICAgICBhcmdz LT5waXRjaCA9IEFMSUdOKHBpdGNoLCBhbGlnbik7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJu IGRybV9nZW1fY21hX2R1bWJfY3JlYXRlX2ludGVybmFsKGZpbGVfcHJpdiwgZHJtLCBhcmdzKTsN Cj4gPiArfQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2dlbS5o DQo+IGIvZHJpdmVycy9ncHUvZHJtL3hsbngveGxueF9nZW0uaA0KPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uZjM4MGRlOQ0KPiA+IC0tLSAvZGV2L251bGwNCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2dlbS5oDQo+ID4gQEAgLTAsMCArMSwy NiBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ICsvKg0K PiA+ICsgKiBYaWxpbnggRFJNIEtNUyBHRU0gaGVscGVyIGhlYWRlcg0KPiA+ICsgKg0KPiA+ICsg KiAgQ29weXJpZ2h0IChDKSAyMDE1IC0gMjAxOCBYaWxpbngsIEluYy4NCj4gPiArICoNCj4gPiAr ICogIEF1dGhvcjogSHl1biBXb28gS3dvbiA8aHl1bi5rd29uQHhpbGlueC5jb20+DQo+ID4gKyAq DQo+ID4gKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMNCj4gPiArICogTGljZW5zZSB2ZXJzaW9uIDIsIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBhbmQNCj4gPiArICogbWF5IGJl IGNvcGllZCwgZGlzdHJpYnV0ZWQsIGFuZCBtb2RpZmllZCB1bmRlciB0aG9zZSB0ZXJtcy4NCj4g PiArICoNCj4gPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ID4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+ID4gKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCj4gPiAr ICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCj4gPiArICov DQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9YTE5YX0dFTV9IXw0KPiA+ICsjZGVmaW5lIF9YTE5YX0dF TV9IXw0KPiA+ICsNCj4gPiAraW50IHhsbnhfZ2VtX2NtYV9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGVfcHJpdiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBkcm1fZGV2aWNlICpkcm0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIgKmFyZ3MpOw0KPiA+ICsNCj4gPiArI2VuZGlmIC8qIF9Y TE5YX0dFTV9IXyAqLw0KPiA+IC0tDQo+ID4gMi43LjQNCj4gPg0KPiA+IFRoaXMgZW1haWwgYW5k IGFueSBhdHRhY2htZW50cyBhcmUgaW50ZW5kZWQgZm9yIHRoZSBzb2xlIHVzZSBvZiB0aGUNCj4g bmFtZWQgcmVjaXBpZW50KHMpIGFuZCBjb250YWluKHMpIGNvbmZpZGVudGlhbCBpbmZvcm1hdGlv biB0aGF0IG1heSBiZQ0KPiBwcm9wcmlldGFyeSwgcHJpdmlsZWdlZCBvciBjb3B5cmlnaHRlZCB1 bmRlciBhcHBsaWNhYmxlIGxhdy4gSWYgeW91IGFyZSBub3QNCj4gdGhlIGludGVuZGVkIHJlY2lw aWVudCwgZG8gbm90IHJlYWQsIGNvcHksIG9yIGZvcndhcmQgdGhpcyBlbWFpbCBtZXNzYWdlIG9y DQo+IGFueSBhdHRhY2htZW50cy4gRGVsZXRlIHRoaXMgZW1haWwgbWVzc2FnZSBhbmQgYW55IGF0 dGFjaG1lbnRzDQo+IGltbWVkaWF0ZWx5Lg0KPiANCj4gLS0NCj4gRGFuaWVsIFZldHRlcg0KPiBT b2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24NCj4gaHR0cDovL2Jsb2cuZmZ3bGwu Y2gNCg== -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html