From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Shevchenko, Andriy" Subject: Re: [PATCH] dma: Add Keystone Packet DMA Engine driver Date: Mon, 3 Mar 2014 09:34:08 +0000 Message-ID: <1393839248.28803.116.camel@smile.fi.intel.com> References: <1393628200-12317-1-git-send-email-santosh.shilimkar@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1393628200-12317-1-git-send-email-santosh.shilimkar-l0cyMroinI0@public.gmane.org> Content-Language: en-US Content-ID: <2887EF369C538B49A9AAA17760825066-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> Sender: devicetree-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Santosh Shilimkar Cc: "dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "Koul, Vinod" , "linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org" , "linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , Sandeep Nair , Russell King , Grant Likely , Rob Herring , Mark Rutland List-Id: devicetree@vger.kernel.org T24gRnJpLCAyMDE0LTAyLTI4IGF0IDE3OjU2IC0wNTAwLCBTYW50b3NoIFNoaWxpbWthciB3cm90 ZToNCj4gRnJvbTogU2FuZGVlcCBOYWlyIDxzYW5kZWVwX25AdGkuY29tPg0KPiANCj4gVGhlIFBh Y2tldCBETUEgZHJpdmVyIHNldHMgdXAgdGhlIGRtYSBjaGFubmVscyBhbmQgZmxvd3MgZm9yIHRo ZQ0KPiBRTVNTKFF1ZXVlIE1hbmFnZXIgU3ViU3lzdGVtKSB3aG8gdHJpZ2dlcnMgdGhlIGFjdHVh bCBkYXRhIG1vdmVtZW50cw0KPiBhY3Jvc3MgY2xpZW50cyB1c2luZyBkZXN0aW5hdGlvbiBxdWV1 ZXMuIEV2ZXJ5IGNsaWVudCBtb2R1bGVzIGxpa2UNCj4gTkVUQ1AoTmV0d29yayBDb3Byb2Nlc3Nv ciksIFNSSU8oU2VyaWFsIFJhcGlkIElPKSBhbmQgQ1JZUFRPDQo+IEVuZ2luZXMgaGFzIGl0cyBv d24gaW5zdGFuY2Ugb2YgcGFja2V0IGRtYSBoYXJkd2FyZS4gUU1TUyBoYXMgYWxzbw0KPiBhbiBp bnRlcm5hbCBwYWNrZXQgRE1BIG1vZHVsZSB3aGljaCBpcyB1c2VkIGFzIGFuIGluZnJhc3RydWN0 dXJlDQo+IERNQSB3aXRoIHplcm8gY29weS4NCj4gDQo+IFBhdGNoIGFkZHMgRE1BRW5naW5lIGRy aXZlciBmb3IgS2V5c3RvbmUgUGFja2V0IERNQSBoYXJkd2FyZS4NCj4gVGhlIHNwZWNpZmljcyBv biB0aGUgZGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIFBhY2tldCBETUEgY2FuIGJlDQo+IGZvdW5k IGluOg0KPiAJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9rZXlzdG9uZS1w a3RkbWEudHh0DQo+IA0KPiBUaGUgZHJpdmVyIGltcGxlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24g ZnVuY3Rpb25zIHVzaW5nIHN0YW5kYXJkIERNQUVuZ2luZQ0KPiBhcGlzLiBUaGUgZGF0YSBtb3Zl bWVudCBpcyBtYW5hZ2VkIGJ5IFFNU1MgZGV2aWNlIGRyaXZlci4NCj4gDQoNCkZldyBjb21tZW50 cyBiZWxvdy4NCg0KPiBDYzogVmlub2QgS291bCA8dmlub2Qua291bEBpbnRlbC5jb20+DQo+IENj OiBSdXNzZWxsIEtpbmcgPGxpbnV4QGFybS5saW51eC5vcmcudWs+DQo+IENjOiBHcmFudCBMaWtl bHkgPGdyYW50Lmxpa2VseUBsaW5hcm8ub3JnPg0KPiBDYzogUm9iIEhlcnJpbmcgPHJvYmgrZHRA a2VybmVsLm9yZz4NCj4gQ2M6IE1hcmsgUnV0bGFuZCA8bWFyay5ydXRsYW5kQGFybS5jb20+DQo+ IFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgTmFpciA8c2FuZGVlcF9uQHRpLmNvbT4NCj4gU2lnbmVk LW9mZi1ieTogU2FudG9zaCBTaGlsaW1rYXIgPHNhbnRvc2guc2hpbGlta2FyQHRpLmNvbT4NCj4g LS0tDQo+ICAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEva2V5c3RvbmUtcGt0ZG1hLnR4dCAg ICB8ICAgNzIgKysNCj4gIGRyaXZlcnMvZG1hL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgOCArDQo+ICBkcml2ZXJzL2RtYS9NYWtlZmlsZSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDEgKw0KPiAgZHJpdmVycy9kbWEva2V5c3RvbmUtcGt0ZG1h LmMgICAgICAgICAgICAgICAgICAgICAgfCAgNzk1ICsrKysrKysrKysrKysrKysrKysrDQo+ICBp bmNsdWRlL2R0LWJpbmRpbmdzL2RtYS9rZXlzdG9uZS5oICAgICAgICAgICAgICAgICB8ICAgMzMg Kw0KPiAgaW5jbHVkZS9saW51eC9rZXlzdG9uZS1wa3RkbWEuaCAgICAgICAgICAgICAgICAgICAg fCAgMTY4ICsrKysrDQo+ICA2IGZpbGVzIGNoYW5nZWQsIDEwNzcgaW5zZXJ0aW9ucygrKQ0KPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEv a2V5c3RvbmUtcGt0ZG1hLnR4dA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZG1hL2tl eXN0b25lLXBrdGRtYS5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kdC1iaW5kaW5n cy9kbWEva2V5c3RvbmUuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgva2V5 c3RvbmUtcGt0ZG1hLmgNCj4gDQo+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRy ZWUvYmluZGluZ3MvZG1hL2tleXN0b25lLXBrdGRtYS50eHQgYi9Eb2N1bWVudGF0aW9uL2Rldmlj ZXRyZWUvYmluZGluZ3MvZG1hL2tleXN0b25lLXBrdGRtYS50eHQNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uZWEwNjFkNQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEva2V5c3RvbmUtcGt0ZG1hLnR4 dA0KPiBAQCAtMCwwICsxLDcyIEBADQo+ICtLZXlzdG9uZSBQYWNrZXQgRE1BIENvbnRyb2xsZXIN Cj4gKw0KPiArVGhpcyBkb2N1bWVudCBleHBsYWlucyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZ3Mg Zm9yIHRoZSBwYWNrZXQgZG1hDQo+ICtvbiBrZXlzdG9uZSBkZXZpY2VzLiBUaGUgdGhlIE5ldHdv cmsgY29wcm9jZXNzb3IsIEN5cHRvIGVuZ2luZXMNCj4gK2FuZCB0aGUgU1JJTyBvbiBLZXlzdG9u ZSBkZXZpY2VzIGFsbCBoYXZlIHRoZWlyIG93biBwYWNrZXQgZG1hIG1vZHVsZXMuDQo+ICtFYWNo IGluZGl2aWR1YWwgcGFja2V0IGRtYSBoYXMgYSBjZXJ0YWluIG51bWJlciBvZiBSWCBjaGFubmVs cywNCj4gK1JYIGZsb3dzIGFuZCBUWCBjaGFubmVscy4gRWFjaCBpbnN0YW5jZSBvZiB0aGUgcGFj a2V0IERNQSBpcyBiZWluZw0KPiAraW5pdGlhbGl6ZWQgdGhyb3VnaCBkZXZpY2Ugc3BlY2lmaWMg YmluZGluZ3MuDQo+ICsNCj4gKyogRE1BIGNvbnRyb2xsZXINCj4gKw0KPiArUmVxdWlyZWQgcHJv cGVydGllczoNCj4gKyAtIGNvbXBhdGlibGU6IFNob3VsZCBiZSAidGksa2V5c3RvbmUtcGt0ZG1h Ig0KPiArIC0gcmVnOiBTaG91bGQgY29udGFpbiByZWdpc3RlciBsb2NhdGlvbiBhbmQgbGVuZ3Ro IG9mIHRoZSBmb2xsb3dpbmcgcGt0ZG1hDQo+ICsJcmVnaXN0ZXIgcmVnaW9ucy4gVGhlIHZhbHVl IGZvciAicmVnLW5hbWVzIiBwcm9wZXJ0eSBvZiB0aGUgcmVzcGVjdGl2ZQ0KPiArCXJlZ2lvbiBp cyBzcGVjaWZpZWQgaW4gcGFyZW50aGVzaXMuDQo+ICsJLSBHbG9iYWwgY29udHJvbCByZWdpc3Rl ciByZWdpb24gKGdsb2JhbCkuDQo+ICsJLSBUeCBETUEgY2hhbm5lbCBjb25maWd1cmF0aW9uIHJl Z2lzdGVyIHJlZ2lvbiAodHhjaGFuKS4NCj4gKwktIFJ4IERNQSBjaGFubmVsIGNvbmZpZ3VyYXRp b24gcmVnaXN0ZXIgcmVnaW9uIChyeGNoYW4pLg0KPiArCS0gVHggRE1BIGNoYW5uZWwgU2NoZWR1 bGVyIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgcmVnaW9uICh0eHNjaGVkKS4NCj4gKwktIFJ4IERN QSBmbG93IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgcmVnaW9uIChyeGZsb3cpLg0KPiArIC0gcmVn LW5hbWVzOiBOYW1lcyBmb3IgdGhlIGFib3ZlIHJlZ2lvbnMuIFRoZSBuYW1lIHRvIGJlIHVzZWQg aXMgc3BlY2lmaWVkIGluDQo+ICsJICAgICAgdGhlIGFib3ZlIGRlc2NyaXB0aW9uIG9mICJyZWci IHByb3BlcnR5Lg0KPiArIC0gcW0tYmFzZS1hZGRyZXNzOiBCYXNlIGFkZHJlc3Mgb2YgdGhlIGxv Z2ljYWwgcXVldWUgbWFuYWdlcnMgZm9yIHBrdGRtYS4NCj4gKyAtICNkbWEtY2VsbHM6IEhhcyB0 byBiZSAxLiBLZXlzdG9uZS1wa3RkbWEgZG9lc24ndCBzdXBwb3J0IGFueXRoaW5nIGVsc2UuDQo+ ICsNCj4gK09wdGlvbmFsIHByb3BlcnRpZXM6DQo+ICsgLSBlbmFibGUtYWxsOiBFbmFibGUgYWxs IERNQSBjaGFubmVscy4NCj4gKyAtIGxvb3AtYmFjazogVG8gbG9vcGJhY2sgVHggc3RyZWFtaW5n IEkvRiB0byBSeCBzdHJlYW1pbmcgSS9GLiBVc2VkIGZvcg0KPiArCSAgICAgIGluZnJhc3RydWN0 dXJlIHRyYW5zZmVycy4NCj4gKyAtIHJ4LXJldHJ5LXRpbWVvdXQ6IE51bWJlciBvZiBwa3RkbWEg Y3ljbGVzIHRvIHdhaXQgYmVmb3JlIHJldHJ5IG9uIGJ1ZmZlcg0KPiArCQkgICAgIHN0YXJ2YXRp b24uDQo+ICsNCj4gK0V4YW1wbGU6DQo+ICsJbmV0Y3AtZG1hOiBwa3RkbWFAMjAwNDAwMCB7DQo+ ICsJCWNvbXBhdGlibGUgPSAidGksa2V5c3RvbmUtcGt0ZG1hIjsNCj4gKwkJcmVnID0JPDB4MjAw NDAwMCAweDEwMD4sDQo+ICsJCQk8MHgyMDA0NDAwIDB4MTIwPiwNCj4gKwkJCTwweDIwMDQ4MDAg MHgzMDA+LA0KPiArCQkJPDB4MjAwNGMwMCAweDEyMD4sDQo+ICsJCQk8MHgyMDA1MDAwIDB4NDAw PjsNCj4gKwkJcmVnLW5hbWVzID0gImdsb2JhbCIsICJ0eGNoYW4iLCAicnhjaGFuIiwgInR4c2No ZWQiLA0KPiArCQkJICAgICAicnhmbG93IjsNCj4gKwkJcW0tYmFzZS1hZGRyZXNzID0gPDB4MjNh ODAwMDAgMHgyM2E5MDAwMA0KPiArCQkJCSAgIDB4MjNhYTAwMDAgMHgyM2FiMDAwMD47DQo+ICsJ CSNkbWEtY2VsbHMgPSA8MT47DQo+ICsJCS8qIGVuYWJsZS1hbGw7ICovDQo+ICsJCXJ4LXJldHJ5 LXRpbWVvdXQgPSA8MzUwMD47DQo+ICsJCS8qIGxvb3AtYmFjazsgKi8NCj4gKwl9Ow0KPiArDQo+ ICsNCj4gKyogRE1BIGNsaWVudA0KPiArDQo+ICtSZXF1aXJlZCBwcm9wZXJ0aWVzOg0KPiArLSBk bWFzOiBPbmUgRE1BIHJlcXVlc3Qgc3BlY2lmaWVyIGNvbnNpc3Rpbmcgb2YgYSBwaGFuZGxlIHRv IHRoZSBETUEgY29udHJvbGxlcg0KPiArCWZvbGxvd2VkIGJ5IHRoZSBpbnRlZ2VyIHNwZWNpZnlp bmcgdGhlIGNoYW5uZWwgaWRlbnRpZmllci4gVGhlIGNoYW5uZWwNCj4gKwlpZGVudGlmaWVyIGlz IGVuY29kZWQgYXMgZm9sbG93czoNCj4gKwktIGJpdHMgNy0wOiBUeCBETUEgY2hhbm5lbCBudW1i ZXIgb3IgdGhlIFJ4IGZsb3cgbnVtYmVyLg0KPiArCS0gYml0cyAzMS0yNDogQ2hhbm5lbCB0eXBl LiAweGZmIGZvciBUeCBETUEgY2hhbm5lbCAmIDB4ZmUgZm9yIFJ4IGZsb3cuDQo+ICstIGRtYS1u YW1lczogTGlzdCBvZiBzdHJpbmcgaWRlbnRpZmllcnMgZm9yIHRoZSBETUEgcmVxdWVzdHMuDQo+ ICsNCj4gK0V4YW1wbGU6DQo+ICsNCj4gKwluZXRjcDogbmV0Y3BAMjA5MDAwMCB7DQo+ICsJCS4u Lg0KPiArCQlkbWFzID0JPCZuZXRjcGRtYSBLRVlTVE9ORV9ETUFfUlhfRkxPVygyMik+LA0KPiAr CQkJPCZuZXRjcGRtYSBLRVlTVE9ORV9ETUFfUlhfRkxPVygyMyk+LA0KPiArCQkJPCZuZXRjcGRt YSBLRVlTVE9ORV9ETUFfVFhfQ0hBTig4KT47DQo+ICsJCQlkbWEtbmFtZXMgPSAibmV0cngwIiwg Im5ldHJ4MSIsICJuZXR0eCI7DQo+ICsJCS4uLg0KPiArCX07DQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2RtYS9LY29uZmlnIGIvZHJpdmVycy9kbWEvS2NvbmZpZw0KPiBpbmRleCA5YmVkMWEyLi43 MjJiOTlhIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2RtYS9LY29uZmlnDQo+ICsrKyBiL2RyaXZl cnMvZG1hL0tjb25maWcNCj4gQEAgLTM1MCw2ICszNTAsMTQgQEAgY29uZmlnIE1PWEFSVF9ETUEN Cj4gIAloZWxwDQo+ICAJICBFbmFibGUgc3VwcG9ydCBmb3IgdGhlIE1PWEEgQVJUIFNvQyBETUEg Y29udHJvbGxlci4NCj4gIA0KPiArY29uZmlnIEtFWVNUT05FX1BLVERNQQ0KPiArCXRyaXN0YXRl ICJUSSBLZXlzdG9uZSBQYWNrZXQgRE1BIHN1cHBvcnQiDQo+ICsJZGVwZW5kcyBvbiBBUkNIX0tF WVNUT05FDQo+ICsJc2VsZWN0IERNQV9FTkdJTkUNCj4gKwloZWxwDQo+ICsJICBFbmFibGUgc3Vw cG9ydCBmb3IgdGhlIFBhY2tldCBETUEgZW5naW5lIG9uIFRleGFzIEluc3RydW1lbnRzJw0KPiAr CSAgS2V5c3RvbmUgZmFtaWx5IG9mIGRldmljZXMuDQo+ICsNCj4gIGNvbmZpZyBETUFfRU5HSU5F DQo+ICAJYm9vbA0KPiAgDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9NYWtlZmlsZSBiL2Ry aXZlcnMvZG1hL01ha2VmaWxlDQo+IGluZGV4IGEwMjlkMGY0Li42ZDY5YzZkIDEwMDY0NA0KPiAt LS0gYS9kcml2ZXJzL2RtYS9NYWtlZmlsZQ0KPiArKysgYi9kcml2ZXJzL2RtYS9NYWtlZmlsZQ0K PiBAQCAtNDQsMyArNDQsNCBAQCBvYmotJChDT05GSUdfRE1BX0paNDc0MCkgKz0gZG1hLWp6NDc0 MC5vDQo+ICBvYmotJChDT05GSUdfVElfQ1BQSTQxKSArPSBjcHBpNDEubw0KPiAgb2JqLSQoQ09O RklHX0szX0RNQSkgKz0gazNkbWEubw0KPiAgb2JqLSQoQ09ORklHX01PWEFSVF9ETUEpICs9IG1v eGFydC1kbWEubw0KPiArb2JqLSQoQ09ORklHX0tFWVNUT05FX1BLVERNQSkgKz0ga2V5c3RvbmUt cGt0ZG1hLm8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2tleXN0b25lLXBrdGRtYS5jIGIv ZHJpdmVycy9kbWEva2V5c3RvbmUtcGt0ZG1hLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g aW5kZXggMDAwMDAwMC4uYjNmNzdlNQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMv ZG1hL2tleXN0b25lLXBrdGRtYS5jDQo+IEBAIC0wLDAgKzEsNzk1IEBADQo+ICsvKg0KPiArICog Q29weXJpZ2h0IChDKSAyMDE0IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZA0KPiArICog QXV0aG9yczoJU2FuZGVlcCBOYWlyIDxzYW5kZWVwX25AdGkuY29tPg0KPiArICoJCUN5cmlsIENo ZW1wYXJhdGh5IDxjeXJpbEB0aS5jb20+DQo+ICsgKgkJU2FudG9zaCBTaGlsaW1rYXIgPHNhbnRv c2guc2hpbGlta2FyQHRpLmNvbT4NCj4gKyAqDQo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQo+ICsgKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcw0KPiAr ICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gdmVyc2lvbiAyLg0K PiArICoNCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCAiYXMgaXMiIFdJVEhPVVQg QU5ZIFdBUlJBTlRZIG9mIGFueQ0KPiArICoga2luZCwgd2hldGhlciBleHByZXNzIG9yIGltcGxp ZWQ7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQ0KPiArICogb2YgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KPiAr ICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCj4gKyAqLw0K PiArDQo+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5o Pg0KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1k aXJlY3Rpb24uaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9kbWFlbmdpbmUuaD4NCj4gKyNpbmNsdWRl IDxsaW51eC9pbnRlcnJ1cHQuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9vZl9kbWEuaD4NCj4gKyNp bmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1f ZGV2aWNlLmg+DQo+ICsjaW5jbHVkZSA8bGludXgva2V5c3RvbmUtcGt0ZG1hLmg+DQo+ICsjaW5j bHVkZSA8bGludXgvcG1fcnVudGltZS5oPg0KPiArI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2RtYS9r ZXlzdG9uZS5oPg0KPiArDQo+ICsjZGVmaW5lIEJJVFMoeCkJCQkoQklUKHgpIC0gMSkNCj4gKyNk ZWZpbmUgUkVHX01BU0sJCTB4ZmZmZmZmZmYNCj4gKw0KPiArI2RlZmluZSBETUFfTE9PUEJBQ0sJ CUJJVCgzMSkNCj4gKyNkZWZpbmUgRE1BX0VOQUJMRQkJQklUKDMxKQ0KPiArI2RlZmluZSBETUFf VEVBUkRPV04JCUJJVCgzMCkNCj4gKw0KPiArI2RlZmluZSBETUFfVFhfRklMVF9QU1dPUkRTCUJJ VCgyOSkNCj4gKyNkZWZpbmUgRE1BX1RYX0ZJTFRfRUlORk8JQklUKDMwKQ0KPiArI2RlZmluZSBE TUFfVFhfUFJJT19TSElGVAkwDQo+ICsjZGVmaW5lIERNQV9SWF9QUklPX1NISUZUCTE2DQo+ICsj ZGVmaW5lIERNQV9QUklPX01BU0sJCUJJVFMoMykNCj4gKyNkZWZpbmUgRE1BX1BSSU9fREVGQVVM VAkwDQo+ICsjZGVmaW5lIERNQV9SWF9USU1FT1VUX0RFRkFVTFQJMTc1MDAgLyogY3ljbGVzICov DQo+ICsjZGVmaW5lIERNQV9SWF9USU1FT1VUX01BU0sJQklUUygxNikNCj4gKyNkZWZpbmUgRE1B X1JYX1RJTUVPVVRfU0hJRlQJMA0KPiArDQo+ICsjZGVmaW5lIENIQU5fSEFTX0VQSUIJCUJJVCgz MCkNCj4gKyNkZWZpbmUgQ0hBTl9IQVNfUFNJTkZPCQlCSVQoMjkpDQo+ICsjZGVmaW5lIENIQU5f RVJSX1JFVFJZCQlCSVQoMjgpDQo+ICsjZGVmaW5lIENIQU5fUFNJTkZPX0FUX1NPUAlCSVQoMjUp DQo+ICsjZGVmaW5lIENIQU5fU09QX09GRl9TSElGVAkxNg0KPiArI2RlZmluZSBDSEFOX1NPUF9P RkZfTUFTSwlCSVRTKDkpDQo+ICsjZGVmaW5lIERFU0NfVFlQRV9TSElGVAkJMjYNCj4gKyNkZWZp bmUgREVTQ19UWVBFX01BU0sJCUJJVFMoMikNCj4gKw0KPiArLyoNCj4gKyAqIFFNR1IgJiBRTlVN IHRvZ2V0aGVyIG1ha2UgdXAgMTQgYml0cyB3aXRoIFFNR1IgYXMgdGhlIDIgTVNiJ3MgaW4gdGhl IGxvZ2ljYWwNCj4gKyAqIG5hdmlnYXRvciBjbG91ZCBtYXBwaW5nIHNjaGVtZS4NCj4gKyAqIHVz aW5nIHRoZSAxNGJpdCBwaHlzaWNhbCBxdWV1ZSBudW1iZXJzIGRpcmVjdGx5IG1hcHMgaW50byB0 aGlzIHNjaGVtZS4NCj4gKyAqLw0KPiArI2RlZmluZSBDSEFOX1FOVU1fTUFTSwkJQklUUygxNCkN Cj4gKyNkZWZpbmUgRE1BX01BWF9RTVMJCTQNCj4gKyNkZWZpbmUgRE1BX1RJTUVPVVQJCTEwMDAJ LyogbXNlY3MgKi8NCj4gKw0KPiArc3RydWN0IHJlZ19nbG9iYWwgew0KPiArCXUzMglyZXZpc2lv bjsNCj4gKwl1MzIJcGVyZl9jb250cm9sOw0KPiArCXUzMgllbXVsYXRpb25fY29udHJvbDsNCj4g Kwl1MzIJcHJpb3JpdHlfY29udHJvbDsNCj4gKwl1MzIJcW1fYmFzZV9hZGRyZXNzWzRdOw0KPiAr fTsNCj4gKw0KPiArc3RydWN0IHJlZ19jaGFuIHsNCj4gKwl1MzIJY29udHJvbDsNCj4gKwl1MzIJ bW9kZTsNCj4gKwl1MzIJX19yc3ZkWzZdOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IHJlZ190eF9z Y2hlZCB7DQo+ICsJdTMyCXByaW87DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgcmVnX3J4X2Zsb3cg ew0KPiArCXUzMgljb250cm9sOw0KPiArCXUzMgl0YWdzOw0KPiArCXUzMgl0YWdfc2VsOw0KPiAr CXUzMglmZHFfc2VsWzJdOw0KPiArCXUzMgl0aHJlc2hbM107DQo+ICt9Ow0KPiArDQo+ICsjZGVm aW5lIEJVSUxEX0NIRUNLX1JFR1MoKQkJCQkJCVwNCj4gKwlkbyB7CQkJCQkJCQlcDQo+ICsJCUJV SUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHJlZ19nbG9iYWwpICAgIT0gMzIpOwlcDQo+ICsJCUJV SUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHJlZ19jaGFuKSAgICAgIT0gMzIpOwlcDQo+ICsJCUJV SUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHJlZ19yeF9mbG93KSAgIT0gMzIpOwlcDQo+ICsJCUJV SUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHJlZ190eF9zY2hlZCkgIT0gIDQpOwlcDQo+ICsJfSB3 aGlsZSAoMCkNCj4gKw0KPiArZW51bSBrZXlzdG9uZV9jaGFuX3N0YXRlIHsNCj4gKwkvKiBzdGFi bGUgc3RhdGVzICovDQo+ICsJQ0hBTl9TVEFURV9PUEVORUQsDQo+ICsJQ0hBTl9TVEFURV9DTE9T RUQsDQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3Qga2V5c3RvbmVfZG1hX2RldmljZSB7DQo+ICsJc3Ry dWN0IGRtYV9kZXZpY2UJCWVuZ2luZTsNCj4gKwlib29sCQkJCWxvb3BiYWNrLCBlbmFibGVfYWxs Ow0KPiArCXVuc2lnbmVkCQkJdHhfcHJpb3JpdHksIHJ4X3ByaW9yaXR5LCByeF90aW1lb3V0Ow0K PiArCXVuc2lnbmVkCQkJbG9naWNhbF9xdWV1ZV9tYW5hZ2VyczsNCj4gKwl1bnNpZ25lZAkJCXFt X2Jhc2VfYWRkcmVzc1tETUFfTUFYX1FNU107DQo+ICsJc3RydWN0IHJlZ19nbG9iYWwgX19pb21l bQkqcmVnX2dsb2JhbDsNCj4gKwlzdHJ1Y3QgcmVnX2NoYW4gX19pb21lbQkJKnJlZ190eF9jaGFu Ow0KPiArCXN0cnVjdCByZWdfcnhfZmxvdyBfX2lvbWVtCSpyZWdfcnhfZmxvdzsNCj4gKwlzdHJ1 Y3QgcmVnX2NoYW4gX19pb21lbQkJKnJlZ19yeF9jaGFuOw0KPiArCXN0cnVjdCByZWdfdHhfc2No ZWQgX19pb21lbQkqcmVnX3R4X3NjaGVkOw0KPiArCXVuc2lnbmVkCQkJbWF4X3J4X2NoYW4sIG1h eF90eF9jaGFuOw0KPiArCXVuc2lnbmVkCQkJbWF4X3J4X2Zsb3c7DQo+ICsJYXRvbWljX3QJCQlp bl91c2U7DQo+ICt9Ow0KPiArI2RlZmluZSB0b19kbWEoZG1hKQkoJihkbWEpLT5lbmdpbmUpDQo+ ICsjZGVmaW5lIGRtYV9kZXYoZG1hKQkoKGRtYSktPmVuZ2luZS5kZXYpDQo+ICsNCj4gK3N0cnVj dCBrZXlzdG9uZV9kbWFfY2hhbiB7DQo+ICsJc3RydWN0IGRtYV9jaGFuCQkJYWNoYW47DQo+ICsJ ZW51bSBkbWFfdHJhbnNmZXJfZGlyZWN0aW9uCWRpcmVjdGlvbjsNCj4gKwlhdG9taWNfdAkJCXN0 YXRlOw0KPiArCXN0cnVjdCBrZXlzdG9uZV9kbWFfZGV2aWNlCSpkbWE7DQo+ICsNCj4gKwkvKiBy ZWdpc3RlcnMgKi8NCj4gKwlzdHJ1Y3QgcmVnX2NoYW4gX19pb21lbQkJKnJlZ19jaGFuOw0KPiAr CXN0cnVjdCByZWdfdHhfc2NoZWQgX19pb21lbQkqcmVnX3R4X3NjaGVkOw0KPiArCXN0cnVjdCBy ZWdfcnhfZmxvdyBfX2lvbWVtCSpyZWdfcnhfZmxvdzsNCj4gKw0KPiArCS8qIGNvbmZpZ3VyYXRp b24gc3R1ZmYgKi8NCj4gKwl1bnNpZ25lZAkJCWNoYW5uZWwsIGZsb3c7DQo+ICt9Ow0KPiArI2Rl ZmluZSBmcm9tX2FjaGFuKGNoKQljb250YWluZXJfb2YoY2gsIHN0cnVjdCBrZXlzdG9uZV9kbWFf Y2hhbiwgYWNoYW4pDQo+ICsjZGVmaW5lIHRvX2FjaGFuKGNoKQkoJihjaCktPmFjaGFuKQ0KPiAr I2RlZmluZSBjaGFuX2RldihjaCkJKCZ0b19hY2hhbihjaCktPmRldi0+ZGV2aWNlKQ0KPiArI2Rl ZmluZSBjaGFuX251bShjaCkJKChjaC0+ZGlyZWN0aW9uID09IERNQV9NRU1fVE9fREVWKSA/IFwN Cj4gKwkJCWNoLT5jaGFubmVsIDogY2gtPmZsb3cpDQo+ICsjZGVmaW5lIGNoYW5fdmRiZyhjaCwg Zm9ybWF0LCBhcmcuLi4pCQkJCVwNCj4gKwkJCWRldl92ZGJnKGNoYW5fZGV2KGNoKSwgZm9ybWF0 LCAjI2FyZyk7DQo+ICsNCj4gKy8qKg0KPiArICogZGV2X3RvX2RtYV9jaGFuIC0gY29udmVydCBh IGRldmljZSBwb2ludGVyIHRvIHRoZSBpdHMgc3lzZnMgY29udGFpbmVyIG9iamVjdA0KPiArICog QGRldiAtIGRldmljZSBub2RlDQo+ICsgKi8NCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRtYV9j aGFuICpkZXZfdG9fZG1hX2NoYW4oc3RydWN0IGRldmljZSAqZGV2KQ0KPiArew0KPiArCXN0cnVj dCBkbWFfY2hhbl9kZXYgKmNoYW5fZGV2Ow0KPiArDQo+ICsJY2hhbl9kZXYgPSBjb250YWluZXJf b2YoZGV2LCB0eXBlb2YoKmNoYW5fZGV2KSwgZGV2aWNlKTsNCj4gKwlyZXR1cm4gY2hhbl9kZXYt PmNoYW47DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgZW51bSBrZXlzdG9uZV9jaGFuX3N0 YXRlDQo+ICtjaGFuX2dldF9zdGF0ZShzdHJ1Y3Qga2V5c3RvbmVfZG1hX2NoYW4gKmNoYW4pDQo+ ICt7DQo+ICsJcmV0dXJuIGF0b21pY19yZWFkKCZjaGFuLT5zdGF0ZSk7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyBpbnQgY2hhbl9zdGFydChzdHJ1Y3Qga2V5c3RvbmVfZG1hX2NoYW4gKmNoYW4sDQo+ ICsJCQlzdHJ1Y3QgZG1hX2tleXN0b25lX2NmZyAqY2ZnKQ0KPiArew0KPiArCXUzMiB2ID0gMDsN Cj4gKw0KPiArCWlmICgoY2hhbi0+ZGlyZWN0aW9uID09IERNQV9NRU1fVE9fREVWKSAmJiBjaGFu LT5yZWdfY2hhbikgew0KPiArCQlpZiAoY2ZnLT51LnR4LmZpbHRfcHN3b3JkcykNCj4gKwkJCXYg fD0gRE1BX1RYX0ZJTFRfUFNXT1JEUzsNCj4gKwkJaWYgKGNmZy0+dS50eC5maWx0X2VpbmZvKQ0K PiArCQkJdiB8PSBETUFfVFhfRklMVF9FSU5GTzsNCj4gKwkJd3JpdGVsX3JlbGF4ZWQodiwgJmNo YW4tPnJlZ19jaGFuLT5tb2RlKTsNCj4gKwkJd3JpdGVsX3JlbGF4ZWQoRE1BX0VOQUJMRSwgJmNo YW4tPnJlZ19jaGFuLT5jb250cm9sKTsNCj4gKwl9DQo+ICsNCj4gKwlpZiAoY2hhbi0+cmVnX3R4 X3NjaGVkKQ0KPiArCQl3cml0ZWxfcmVsYXhlZChjZmctPnUudHgucHJpb3JpdHksICZjaGFuLT5y ZWdfdHhfc2NoZWQtPnByaW8pOw0KPiArDQo+ICsJaWYgKGNoYW4tPnJlZ19yeF9mbG93KSB7DQo+ ICsJCXYgPSAwOw0KPiArDQo+ICsJCWlmIChjZmctPnUucnguZWluZm9fcHJlc2VudCkNCj4gKwkJ CXYgfD0gQ0hBTl9IQVNfRVBJQjsNCj4gKwkJaWYgKGNmZy0+dS5yeC5wc2luZm9fcHJlc2VudCkN Cj4gKwkJCXYgfD0gQ0hBTl9IQVNfUFNJTkZPOw0KPiArCQlpZiAoY2ZnLT51LnJ4LmVycl9tb2Rl ID09IERNQV9SRVRSWSkNCj4gKwkJCXYgfD0gQ0hBTl9FUlJfUkVUUlk7DQo+ICsJCXYgfD0gKGNm Zy0+dS5yeC5kZXNjX3R5cGUgJiBERVNDX1RZUEVfTUFTSykgPDwgREVTQ19UWVBFX1NISUZUOw0K PiArCQlpZiAoY2ZnLT51LnJ4LnBzaW5mb19hdF9zb3ApDQo+ICsJCQl2IHw9IENIQU5fUFNJTkZP X0FUX1NPUDsNCj4gKwkJdiB8PSAoY2ZnLT51LnJ4LnNvcF9vZmZzZXQgJiBDSEFOX1NPUF9PRkZf TUFTSykNCj4gKwkJCTw8IENIQU5fU09QX09GRl9TSElGVDsNCj4gKwkJdiB8PSBjZmctPnUucngu ZHN0X3EgJiBDSEFOX1FOVU1fTUFTSzsNCj4gKw0KPiArCQl3cml0ZWxfcmVsYXhlZCh2LCAmY2hh bi0+cmVnX3J4X2Zsb3ctPmNvbnRyb2wpOw0KPiArCQl3cml0ZWxfcmVsYXhlZCgwLCAmY2hhbi0+ cmVnX3J4X2Zsb3ctPnRhZ3MpOw0KPiArCQl3cml0ZWxfcmVsYXhlZCgwLCAmY2hhbi0+cmVnX3J4 X2Zsb3ctPnRhZ19zZWwpOw0KPiArDQo+ICsJCXYgPSAgY2ZnLT51LnJ4LmZkcVswXSA8PCAxNjsN Cj4gKwkJdiB8PSAgY2ZnLT51LnJ4LmZkcVsxXSAmIENIQU5fUU5VTV9NQVNLOw0KPiArCQl3cml0 ZWxfcmVsYXhlZCh2LCAmY2hhbi0+cmVnX3J4X2Zsb3ctPmZkcV9zZWxbMF0pOw0KPiArDQo+ICsJ CXYgPSAgY2ZnLT51LnJ4LmZkcVsyXSA8PCAxNjsNCj4gKwkJdiB8PSAgY2ZnLT51LnJ4LmZkcVsz XSAmIENIQU5fUU5VTV9NQVNLOw0KPiArCQl3cml0ZWxfcmVsYXhlZCh2LCAmY2hhbi0+cmVnX3J4 X2Zsb3ctPmZkcV9zZWxbMV0pOw0KPiArDQo+ICsJCXdyaXRlbF9yZWxheGVkKDAsICZjaGFuLT5y ZWdfcnhfZmxvdy0+dGhyZXNoWzBdKTsNCj4gKwkJd3JpdGVsX3JlbGF4ZWQoMCwgJmNoYW4tPnJl Z19yeF9mbG93LT50aHJlc2hbMV0pOw0KPiArCQl3cml0ZWxfcmVsYXhlZCgwLCAmY2hhbi0+cmVn X3J4X2Zsb3ctPnRocmVzaFsyXSk7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbnQgY2hhbl90ZWFyZG93bihzdHJ1Y3Qga2V5c3RvbmVfZG1hX2NoYW4g KmNoYW4pDQo+ICt7DQo+ICsJdW5zaWduZWQgbG9uZyBlbmQsIHZhbHVlOw0KPiArDQo+ICsJaWYg KCFjaGFuLT5yZWdfY2hhbikNCj4gKwkJcmV0dXJuIDA7DQo+ICsNCj4gKwkvKiBpbmRpY2F0ZSB0 ZWFyZG93biAqLw0KPiArCXdyaXRlbF9yZWxheGVkKERNQV9URUFSRE9XTiwgJmNoYW4tPnJlZ19j aGFuLT5jb250cm9sKTsNCj4gKw0KPiArCS8qIHdhaXQgZm9yIHRoZSBkbWEgdG8gc2h1dCBpdHNl bGYgZG93biAqLw0KPiArCWVuZCA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKERNQV9USU1F T1VUKTsNCj4gKwlkbyB7DQo+ICsJCXZhbHVlID0gcmVhZGxfcmVsYXhlZCgmY2hhbi0+cmVnX2No YW4tPmNvbnRyb2wpOw0KPiArCQlpZiAoKHZhbHVlICYgRE1BX0VOQUJMRSkgPT0gMCkNCj4gKwkJ CWJyZWFrOw0KPiArCX0gd2hpbGUgKHRpbWVfYWZ0ZXIoZW5kLCBqaWZmaWVzKSk7DQo+ICsNCj4g KwlpZiAocmVhZGxfcmVsYXhlZCgmY2hhbi0+cmVnX2NoYW4tPmNvbnRyb2wpICYgRE1BX0VOQUJM RSkgew0KPiArCQlkZXZfZXJyKGNoYW5fZGV2KGNoYW4pLCAidGltZW91dCB3YWl0aW5nIGZvciB0 ZWFyZG93blxuIik7DQo+ICsJCXJldHVybiAtRVRJTUVET1VUOw0KPiArCX0NCj4gKw0KPiArCXJl dHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBjaGFuX3N0b3Aoc3RydWN0IGtleXN0 b25lX2RtYV9jaGFuICpjaGFuKQ0KPiArew0KPiArCWlmIChjaGFuLT5yZWdfcnhfZmxvdykgew0K PiArCQkvKiBmaXJzdCBkZXRhY2ggZmRxcywgc3RhcnZlIG91dCB0aGUgZmxvdyAqLw0KPiArCQl3 cml0ZWxfcmVsYXhlZCgwLCAmY2hhbi0+cmVnX3J4X2Zsb3ctPmZkcV9zZWxbMF0pOw0KPiArCQl3 cml0ZWxfcmVsYXhlZCgwLCAmY2hhbi0+cmVnX3J4X2Zsb3ctPmZkcV9zZWxbMV0pOw0KPiArCQl3 cml0ZWxfcmVsYXhlZCgwLCAmY2hhbi0+cmVnX3J4X2Zsb3ctPnRocmVzaFswXSk7DQo+ICsJCXdy aXRlbF9yZWxheGVkKDAsICZjaGFuLT5yZWdfcnhfZmxvdy0+dGhyZXNoWzFdKTsNCj4gKwkJd3Jp dGVsX3JlbGF4ZWQoMCwgJmNoYW4tPnJlZ19yeF9mbG93LT50aHJlc2hbMl0pOw0KPiArCX0NCj4g Kw0KPiArCS8qIHRlYXJkb3duIHRoZSBkbWEgY2hhbm5lbCAqLw0KPiArCWNoYW5fdGVhcmRvd24o Y2hhbik7DQo+ICsNCj4gKwkvKiB0aGVuIGRpc2Nvbm5lY3QgdGhlIGNvbXBsZXRpb24gc2lkZSAq Lw0KPiArCWlmIChjaGFuLT5yZWdfcnhfZmxvdykgew0KPiArCQl3cml0ZWxfcmVsYXhlZCgwLCAm Y2hhbi0+cmVnX3J4X2Zsb3ctPmNvbnRyb2wpOw0KPiArCQl3cml0ZWxfcmVsYXhlZCgwLCAmY2hh bi0+cmVnX3J4X2Zsb3ctPnRhZ3MpOw0KPiArCQl3cml0ZWxfcmVsYXhlZCgwLCAmY2hhbi0+cmVn X3J4X2Zsb3ctPnRhZ19zZWwpOw0KPiArCX0NCj4gKwljaGFuX3ZkYmcoY2hhbiwgImNoYW5uZWwg c3RvcHBlZFxuIik7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGtleXN0b25lX2RtYV9od19p bml0KHN0cnVjdCBrZXlzdG9uZV9kbWFfZGV2aWNlICpkbWEpDQo+ICt7DQo+ICsJdW5zaWduZWQg djsNCj4gKwlpbnQgaTsNCj4gKw0KPiArCXYgID0gZG1hLT5sb29wYmFjayA/IERNQV9MT09QQkFD SyA6IDA7DQo+ICsJd3JpdGVsX3JlbGF4ZWQodiwgJmRtYS0+cmVnX2dsb2JhbC0+ZW11bGF0aW9u X2NvbnRyb2wpOw0KPiArDQo+ICsJdiA9IHJlYWRsX3JlbGF4ZWQoJmRtYS0+cmVnX2dsb2JhbC0+ cGVyZl9jb250cm9sKTsNCj4gKwl2IHw9ICgoZG1hLT5yeF90aW1lb3V0ICYgRE1BX1JYX1RJTUVP VVRfTUFTSykgPDwgRE1BX1JYX1RJTUVPVVRfU0hJRlQpOw0KPiArCXdyaXRlbF9yZWxheGVkKHYs ICZkbWEtPnJlZ19nbG9iYWwtPnBlcmZfY29udHJvbCk7DQo+ICsNCj4gKwl2ID0gKChkbWEtPnR4 X3ByaW9yaXR5IDw8IERNQV9UWF9QUklPX1NISUZUKSB8DQo+ICsJICAgICAoZG1hLT5yeF9wcmlv cml0eSA8PCBETUFfUlhfUFJJT19TSElGVCkpOw0KPiArDQo+ICsJd3JpdGVsX3JlbGF4ZWQodiwg JmRtYS0+cmVnX2dsb2JhbC0+cHJpb3JpdHlfY29udHJvbCk7DQo+ICsNCj4gKwlpZiAoZG1hLT5l bmFibGVfYWxsKSB7DQo+ICsJCWZvciAoaSA9IDA7IGkgPCBkbWEtPm1heF90eF9jaGFuOyBpKysp IHsNCj4gKwkJCXdyaXRlbF9yZWxheGVkKDAsICZkbWEtPnJlZ190eF9jaGFuW2ldLm1vZGUpOw0K PiArCQkJd3JpdGVsX3JlbGF4ZWQoRE1BX0VOQUJMRSwNCj4gKwkJCQkgICAgICAgJmRtYS0+cmVn X3R4X2NoYW5baV0uY29udHJvbCk7DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4gKwkvKiBBbHdheXMg ZW5hYmxlIGFsbCBSeCBjaGFubmVscy4gUnggcGF0aHMgYXJlIG1hbmFnZWQgdXNpbmcgZmxvd3Mg Ki8NCj4gKwlmb3IgKGkgPSAwOyBpIDwgZG1hLT5tYXhfcnhfY2hhbjsgaSsrKQ0KPiArCQl3cml0 ZWxfcmVsYXhlZChETUFfRU5BQkxFLCAmZG1hLT5yZWdfcnhfY2hhbltpXS5jb250cm9sKTsNCj4g Kw0KPiArCWZvciAoaSA9IDA7IGkgPCBkbWEtPmxvZ2ljYWxfcXVldWVfbWFuYWdlcnM7IGkrKykN Cj4gKwkJd3JpdGVsX3JlbGF4ZWQoZG1hLT5xbV9iYXNlX2FkZHJlc3NbaV0sDQo+ICsJCQkgICAg ICAgJmRtYS0+cmVnX2dsb2JhbC0+cW1fYmFzZV9hZGRyZXNzW2ldKTsNCj4gK30NCj4gKw0KPiAr c3RhdGljIHZvaWQga2V5c3RvbmVfZG1hX2h3X2Rlc3Ryb3koc3RydWN0IGtleXN0b25lX2RtYV9k ZXZpY2UgKmRtYSkNCj4gK3sNCj4gKwlpbnQgaTsNCj4gKwl1bnNpZ25lZCB2Ow0KPiArDQo+ICsJ diA9IH5ETUFfRU5BQkxFICYgUkVHX01BU0s7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgZG1h LT5tYXhfcnhfY2hhbjsgaSsrKQ0KPiArCQl3cml0ZWxfcmVsYXhlZCh2LCAmZG1hLT5yZWdfcnhf Y2hhbltpXS5jb250cm9sKTsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkgPCBkbWEtPm1heF90eF9j aGFuOyBpKyspDQo+ICsJCXdyaXRlbF9yZWxheGVkKHYsICZkbWEtPnJlZ190eF9jaGFuW2ldLmNv bnRyb2wpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGNoYW5faW5pdChzdHJ1Y3QgZG1hX2No YW4gKmFjaGFuKQ0KPiArew0KPiArCXN0cnVjdCBrZXlzdG9uZV9kbWFfY2hhbiAqY2hhbiA9IGZy b21fYWNoYW4oYWNoYW4pOw0KPiArCXN0cnVjdCBrZXlzdG9uZV9kbWFfZGV2aWNlICpkbWEgPSBj aGFuLT5kbWE7DQo+ICsNCj4gKwljaGFuX3ZkYmcoY2hhbiwgImluaXRpYWxpemluZyAlcyBjaGFu bmVsXG4iLA0KPiArCQkgIGNoYW4tPmRpcmVjdGlvbiA9PSBETUFfTUVNX1RPX0RFViAgID8gInRy YW5zbWl0IiA6DQo+ICsJCSAgY2hhbi0+ZGlyZWN0aW9uID09IERNQV9ERVZfVE9fTUVNID8gInJl Y2VpdmUiICA6DQo+ICsJCSAgInVua25vd24iKTsNCj4gKw0KPiArCWlmIChjaGFuLT5kaXJlY3Rp b24gIT0gRE1BX01FTV9UT19ERVYgJiYNCj4gKwkgICAgY2hhbi0+ZGlyZWN0aW9uICE9IERNQV9E RVZfVE9fTUVNKSB7DQoNCmlzX3NsYXZlX2RpcmVjdGlvbigpLg0KDQo+ICsJCWRldl9lcnIoY2hh bl9kZXYoY2hhbiksICJiYWQgZGlyZWN0aW9uXG4iKTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ ICsJfQ0KPiArDQo+ICsJYXRvbWljX3NldCgmY2hhbi0+c3RhdGUsIENIQU5fU1RBVEVfT1BFTkVE KTsNCj4gKw0KPiArCWlmIChhdG9taWNfaW5jX3JldHVybigmZG1hLT5pbl91c2UpIDw9IDEpDQo+ ICsJCWtleXN0b25lX2RtYV9od19pbml0KGRtYSk7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30N Cj4gKw0KPiArc3RhdGljIHZvaWQgY2hhbl9kZXN0cm95KHN0cnVjdCBkbWFfY2hhbiAqYWNoYW4p DQo+ICt7DQo+ICsJc3RydWN0IGtleXN0b25lX2RtYV9jaGFuICpjaGFuID0gZnJvbV9hY2hhbihh Y2hhbik7DQo+ICsJc3RydWN0IGtleXN0b25lX2RtYV9kZXZpY2UgKmRtYSA9IGNoYW4tPmRtYTsN Cj4gKw0KPiArCWlmIChjaGFuX2dldF9zdGF0ZShjaGFuKSA9PSBDSEFOX1NUQVRFX0NMT1NFRCkN Cj4gKwkJcmV0dXJuOw0KPiArDQo+ICsJY2hhbl92ZGJnKGNoYW4sICJkZXN0cm95aW5nIGNoYW5u ZWxcbiIpOw0KPiArCWNoYW5fc3RvcChjaGFuKTsNCj4gKwlhdG9taWNfc2V0KCZjaGFuLT5zdGF0 ZSwgQ0hBTl9TVEFURV9DTE9TRUQpOw0KPiArCWlmIChhdG9taWNfZGVjX3JldHVybigmZG1hLT5p bl91c2UpIDw9IDApDQo+ICsJCWtleXN0b25lX2RtYV9od19kZXN0cm95KGRtYSk7DQo+ICsJY2hh bl92ZGJnKGNoYW4sICJjaGFubmVsIGRlc3Ryb3llZFxuIik7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyBpbnQgY2hhbl9rZXlzdG9uZV9jb25maWcoc3RydWN0IGtleXN0b25lX2RtYV9jaGFuICpjaGFu LA0KPiArCQlzdHJ1Y3QgZG1hX2tleXN0b25lX2NmZyAqY2ZnKQ0KPiArew0KPiArCWlmIChjaGFu X2dldF9zdGF0ZShjaGFuKSAhPSBDSEFOX1NUQVRFX09QRU5FRCkNCj4gKwkJcmV0dXJuIC1FTk9E RVY7DQo+ICsNCj4gKwlpZiAoY2ZnLT5zbF9jZmcuZGlyZWN0aW9uICE9IGNoYW4tPmRpcmVjdGlv bikNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQoNCkkgdGhpbmsgc2xhdmVfY29uZmlnLmRpcmVjdGlv biBpcyBraW5kYSBkZXByZWNhdGVkLg0KDQo+ICsNCj4gKwlyZXR1cm4gY2hhbl9zdGFydChjaGFu LCBjZmcpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGNoYW5fY29udHJvbChzdHJ1Y3QgZG1h X2NoYW4gKmFjaGFuLCBlbnVtIGRtYV9jdHJsX2NtZCBjbWQsDQo+ICsJCQl1bnNpZ25lZCBsb25n IGFyZykNCj4gK3sNCj4gKwlzdHJ1Y3Qga2V5c3RvbmVfZG1hX2NoYW4gKmNoYW4gPSBmcm9tX2Fj aGFuKGFjaGFuKTsNCj4gKwlzdHJ1Y3QgZG1hX2tleXN0b25lX2NmZyAqa2V5c3RvbmVfY29uZmln Ow0KPiArCXN0cnVjdCBkbWFfc2xhdmVfY29uZmlnICpkbWFfY2ZnOw0KPiArCWludCByZXQ7DQo+ ICsNCj4gKwlzd2l0Y2ggKGNtZCkgew0KPiArCWNhc2UgRE1BX1NMQVZFX0NPTkZJRzoNCj4gKwkJ ZG1hX2NmZyA9IChzdHJ1Y3QgZG1hX3NsYXZlX2NvbmZpZyAqKWFyZzsNCj4gKwkJa2V5c3RvbmVf Y29uZmlnID0ga2V5c3RvbmVfY2ZnX2Zyb21fc2xhdmVfY29uZmlnKGRtYV9jZmcpOw0KPiArCQly ZXQgPSBjaGFuX2tleXN0b25lX2NvbmZpZyhjaGFuLCBrZXlzdG9uZV9jb25maWcpOw0KPiArCQli cmVhazsNCj4gKw0KPiArCWRlZmF1bHQ6DQo+ICsJCXJldCA9IC1FTk9UU1VQUDsNCj4gKwkJYnJl YWs7DQo+ICsJfQ0KPiArCXJldHVybiByZXQ7DQoNCllvdSBtYXkgYXZvaWQgJ3JldCcgdmFyaWFi bGUgYXQgYWxsLiBKdXN0IHJldHVybiB2YWx1ZSBleHBsaWNpdGx5Lg0KDQo+ICt9DQo+ICsNCj4g K3N0YXRpYyB2b2lkIF9faW9tZW0gKnBrdGRtYV9nZXRfcmVncygNCj4gKwkJc3RydWN0IGtleXN0 b25lX2RtYV9kZXZpY2UgKmRtYSwgY29uc3QgY2hhciAqbmFtZSwNCj4gKwkJcmVzb3VyY2Vfc2l6 ZV90ICpfc2l6ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBkbWFfZGV2KGRtYSk7 DQo+ICsJc3RydWN0IGRldmljZV9ub2RlICpub2RlID0gZGV2LT5vZl9ub2RlOw0KPiArCXJlc291 cmNlX3NpemVfdCBzaXplOw0KPiArCXN0cnVjdCByZXNvdXJjZSByZXM7DQo+ICsJdm9pZCBfX2lv bWVtICpyZWdzOw0KPiArCWludCBpOw0KPiArDQo+ICsJaSA9IG9mX3Byb3BlcnR5X21hdGNoX3N0 cmluZyhub2RlLCAicmVnLW5hbWVzIiwgbmFtZSk7DQo+ICsJaWYgKG9mX2FkZHJlc3NfdG9fcmVz b3VyY2Uobm9kZSwgaSwgJnJlcykpIHsNCj4gKwkJZGV2X2VycihkZXYsICJjb3VsZCBub3QgZmlu ZCAlcyByZXNvdXJjZShpbmRleCAlZClcbiIsIG5hbWUsIGkpOw0KPiArCQlyZXR1cm4gTlVMTDsN Cj4gKwl9DQo+ICsJc2l6ZSA9IHJlc291cmNlX3NpemUoJnJlcyk7DQo+ICsNCj4gKwlyZWdzID0g b2ZfaW9tYXAobm9kZSwgaSk7DQo+ICsJaWYgKCFyZWdzKSB7DQo+ICsJCWRldl9lcnIoZGV2LCAi Y291bGQgbm90IG1hcCAlcyByZXNvdXJjZSAoaW5kZXggJWQpXG4iLCBuYW1lLCBpKTsNCj4gKwkJ cmV0dXJuIE5VTEw7DQo+ICsJfQ0KPiArDQo+ICsJZGV2X2RiZyhkZXYsICJpbmRleDogJWQsIHJl czolcywgc2l6ZToleCwgcGh5czoleCwgdmlydDolcFxuIiwNCj4gKwkJaSwgbmFtZSwgKHVuc2ln bmVkIGludClzaXplLCAodW5zaWduZWQgaW50KXJlcy5zdGFydCwgcmVncyk7DQoNCkkgdGhpbmsg aGVyZSBpcyBiZXR0ZXIgdG8gdXNlICVwUiB0byBwcmludCByZXNvdXJjZS4NCg0KPiArDQo+ICsJ aWYgKF9zaXplKQ0KPiArCQkqX3NpemUgPSBzaXplOw0KPiArDQo+ICsJcmV0dXJuIHJlZ3M7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgcGt0ZG1hX2luaXRfcnhfY2hhbihzdHJ1Y3Qga2V5c3Rv bmVfZG1hX2NoYW4gKmNoYW4sDQo+ICsJCQkJICAgICAgc3RydWN0IGRldmljZV9ub2RlICpub2Rl LA0KPiArCQkJCSAgICAgIHUzMiBmbG93KQ0KPiArew0KPiArCXN0cnVjdCBrZXlzdG9uZV9kbWFf ZGV2aWNlICpkbWEgPSBjaGFuLT5kbWE7DQo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gZG1hX2Rl dihjaGFuLT5kbWEpOw0KPiArDQo+ICsJY2hhbi0+ZmxvdyA9IGZsb3c7DQo+ICsJY2hhbi0+cmVn X3J4X2Zsb3cgPSBkbWEtPnJlZ19yeF9mbG93ICsgZmxvdzsNCj4gKwlkZXZfZGJnKGRldiwgInJ4 IGZsb3coJWQpICglcClcbiIsIGNoYW4tPmZsb3csIGNoYW4tPnJlZ19yeF9mbG93KTsNCj4gKw0K PiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHBrdGRtYV9pbml0X3R4X2No YW4oc3RydWN0IGtleXN0b25lX2RtYV9jaGFuICpjaGFuLA0KPiArCQkJCXN0cnVjdCBkZXZpY2Vf bm9kZSAqbm9kZSwNCj4gKwkJCQl1MzIgY2hhbm5lbCkNCj4gK3sNCj4gKwlzdHJ1Y3Qga2V5c3Rv bmVfZG1hX2RldmljZSAqZG1hID0gY2hhbi0+ZG1hOw0KPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9 IGRtYV9kZXYoY2hhbi0+ZG1hKTsNCj4gKw0KPiArCWNoYW4tPmNoYW5uZWwgPSBjaGFubmVsOw0K PiArCWNoYW4tPnJlZ19jaGFuID0gZG1hLT5yZWdfdHhfY2hhbiArIGNoYW5uZWw7DQo+ICsJY2hh bi0+cmVnX3R4X3NjaGVkID0gZG1hLT5yZWdfdHhfc2NoZWQgKyBjaGFubmVsOw0KPiArCWRldl9k YmcoZGV2LCAidHggY2hhbm5lbCglZCkgKCVwKVxuIiwgY2hhbi0+Y2hhbm5lbCwgY2hhbi0+cmVn X2NoYW4pOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgcGt0 ZG1hX2luaXRfY2hhbihzdHJ1Y3Qga2V5c3RvbmVfZG1hX2RldmljZSAqZG1hLA0KPiArCQkJCXN0 cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSwNCj4gKwkJCQllbnVtIGRtYV90cmFuc2Zlcl9kaXJlY3Rp b24gZGlyLA0KPiArCQkJCXVuc2lnbmVkIGNoYW5fbnVtKQ0KPiArew0KPiArCXN0cnVjdCBkZXZp Y2UgKmRldiA9IGRtYV9kZXYoZG1hKTsNCj4gKwlzdHJ1Y3Qga2V5c3RvbmVfZG1hX2NoYW4gKmNo YW47DQo+ICsJc3RydWN0IGRtYV9jaGFuICphY2hhbjsNCj4gKwlpbnQgcmV0ID0gLUVJTlZBTDsN Cj4gKw0KPiArCWNoYW4gPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmNoYW4pLCBHRlBfS0VS TkVMKTsNCj4gKwlpZiAoIWNoYW4pDQo+ICsJCXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsJYWNo YW4gPSB0b19hY2hhbihjaGFuKTsNCj4gKwlhY2hhbi0+ZGV2aWNlICAgPSAmZG1hLT5lbmdpbmU7 DQo+ICsJY2hhbi0+ZG1hCT0gZG1hOw0KPiArCWNoYW4tPmRpcmVjdGlvbgk9IERNQV9OT05FOw0K PiArCWF0b21pY19zZXQoJmNoYW4tPnN0YXRlLCBDSEFOX1NUQVRFX09QRU5FRCk7DQo+ICsNCj4g KwlpZiAoZGlyID09IERNQV9NRU1fVE9fREVWKSB7DQo+ICsJCWNoYW4tPmRpcmVjdGlvbiA9IGRp cjsNCj4gKwkJcmV0ID0gcGt0ZG1hX2luaXRfdHhfY2hhbihjaGFuLCBub2RlLCBjaGFuX251bSk7 DQo+ICsJfSBlbHNlIGlmIChkaXIgPT0gRE1BX0RFVl9UT19NRU0pIHsNCj4gKwkJY2hhbi0+ZGly ZWN0aW9uID0gZGlyOw0KPiArCQlyZXQgPSBwa3RkbWFfaW5pdF9yeF9jaGFuKGNoYW4sIG5vZGUs IGNoYW5fbnVtKTsNCj4gKwl9IGVsc2Ugew0KPiArCQlkZXZfZXJyKGRldiwgImNoYW5uZWwoJWQp IGRpcmVjdGlvbiB1bmtub3duXG4iLCBjaGFuX251bSk7DQo+ICsJfQ0KDQo+ICsNCj4gKwlpZiAo cmV0IDwgMCkNCj4gKwkJZ290byBmYWlsOw0KPiArDQo+ICsJbGlzdF9hZGRfdGFpbCgmdG9fYWNo YW4oY2hhbiktPmRldmljZV9ub2RlLCAmdG9fZG1hKGRtYSktPmNoYW5uZWxzKTsNCj4gKwlyZXR1 cm4gMDsNCj4gKw0KPiArZmFpbDoNCj4gKwlkZXZtX2tmcmVlKGRldiwgY2hhbik7DQo+ICsJcmV0 dXJuIHJldDsNCg0KQmVsb3cgeW91IHNraXAgY2hhbm5lbHMgd2hpY2ggZmFpbGVkIHRvIGluaXRp YWxpemUuIElzIGl0IHJlYWwgdXNlIGNhc2U/DQoNCj4gK30NCj4gKw0KPiArLyogZHVtbXkgZnVu Y3Rpb246IGZlYXR1cmUgbm90IHN1cHBvcnRlZCAqLw0KPiArc3RhdGljIGVudW0gZG1hX3N0YXR1 cyBjaGFuX3hmZXJfc3RhdHVzKHN0cnVjdCBkbWFfY2hhbiAqYWNoYW4sDQo+ICsJCQkJICAgICAg ZG1hX2Nvb2tpZV90IGNvb2tpZSwNCj4gKwkJCQkgICAgICBzdHJ1Y3QgZG1hX3R4X3N0YXRlICp0 eHN0YXRlKQ0KPiArew0KPiArCVdBUk4oMSwgInhmZXIgc3RhdHVzIG5vdCBzdXBwb3J0ZWRcbiIp Ow0KPiArCXJldHVybiBETUFfRVJST1I7DQo+ICt9DQo+ICsNCj4gKy8qIGR1bW15IGZ1bmN0aW9u OiBmZWF0dXJlIG5vdCBzdXBwb3J0ZWQgKi8NCj4gK3N0YXRpYyB2b2lkIGNoYW5faXNzdWVfcGVu ZGluZyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pDQo+ICt7DQo+ICsJV0FSTigxLCAiaXNzdWUgcGVu ZGluZyBub3Qgc3VwcG9ydGVkXG4iKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHNzaXplX3Qga2V5 c3RvbmVfZG1hX3Nob3dfY2hhbl9udW0oc3RydWN0IGRldmljZSAqZGV2LA0KPiArCQkJICAgICBz dHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQ0KPiArew0KPiArCXN0cnVj dCBkbWFfY2hhbiAqYWNoYW4gPSBkZXZfdG9fZG1hX2NoYW4oZGV2KTsNCj4gKwlzdHJ1Y3Qga2V5 c3RvbmVfZG1hX2NoYW4gKmNoYW4gPSBmcm9tX2FjaGFuKGFjaGFuKTsNCj4gKw0KPiArCXJldHVy biBzY25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIldVxuIiwgY2hhbi0+Y2hhbm5lbCk7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyBzc2l6ZV90IGtleXN0b25lX2RtYV9zaG93X2Zsb3coc3RydWN0IGRl dmljZSAqZGV2LA0KPiArCQkJICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hh ciAqYnVmKQ0KPiArew0KPiArCXN0cnVjdCBkbWFfY2hhbiAqYWNoYW4gPSBkZXZfdG9fZG1hX2No YW4oZGV2KTsNCj4gKwlzdHJ1Y3Qga2V5c3RvbmVfZG1hX2NoYW4gKmNoYW4gPSBmcm9tX2FjaGFu KGFjaGFuKTsNCj4gKw0KPiArCXJldHVybiBzY25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIldVxu IiwgY2hhbi0+Zmxvdyk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBERVZJQ0VfQVRUUihjaGFuX251 bSwgU19JUlVTUiwga2V5c3RvbmVfZG1hX3Nob3dfY2hhbl9udW0sIE5VTEwpOw0KPiArc3RhdGlj IERFVklDRV9BVFRSKHJ4X2Zsb3csIFNfSVJVU1IsIGtleXN0b25lX2RtYV9zaG93X2Zsb3csIE5V TEwpOw0KPiArDQo+ICtzdGF0aWMgdm9pZCBrZXlzdG9uZV9kbWFfZGVzdHJveV9hdHRyKHN0cnVj dCBrZXlzdG9uZV9kbWFfZGV2aWNlICpkbWEpDQo+ICt7DQo+ICsJc3RydWN0IGRtYV9kZXZpY2Ug KmVuZ2luZSA9IHRvX2RtYShkbWEpOw0KPiArCXN0cnVjdCBrZXlzdG9uZV9kbWFfY2hhbiAqY2hh bjsNCj4gKwlzdHJ1Y3QgZG1hX2NoYW4gKmFjaGFuOw0KPiArCXN0cnVjdCBkZXZpY2UgKmRldjsN Cj4gKw0KPiArCWxpc3RfZm9yX2VhY2hfZW50cnkoYWNoYW4sICZlbmdpbmUtPmNoYW5uZWxzLCBk ZXZpY2Vfbm9kZSkgew0KPiArCQljaGFuID0gZnJvbV9hY2hhbihhY2hhbik7DQo+ICsJCWRldiA9 IGNoYW5fZGV2KGNoYW4pOw0KPiArDQo+ICsJCS8qIHJlbW92ZSBzeXNmcyBlbnRyaWVzICovDQo+ ICsJCWlmIChjaGFuLT5kaXJlY3Rpb24gPT0gRE1BX01FTV9UT19ERVYpDQo+ICsJCQlkZXZpY2Vf cmVtb3ZlX2ZpbGUoZGV2LCAmZGV2X2F0dHJfY2hhbl9udW0pOw0KPiArCQllbHNlDQo+ICsJCQlk ZXZpY2VfcmVtb3ZlX2ZpbGUoZGV2LCAmZGV2X2F0dHJfcnhfZmxvdyk7DQo+ICsJfQ0KPiArfQ0K PiArDQo+ICtzdGF0aWMgaW50ICBrZXlzdG9uZV9kbWFfc2V0dXBfYXR0cihzdHJ1Y3Qga2V5c3Rv bmVfZG1hX2RldmljZSAqZG1hKQ0KPiArew0KPiArCXN0cnVjdCBkbWFfZGV2aWNlICplbmdpbmUg PSB0b19kbWEoZG1hKTsNCj4gKwlzdHJ1Y3Qga2V5c3RvbmVfZG1hX2NoYW4gKmNoYW47DQo+ICsJ c3RydWN0IGRtYV9jaGFuICphY2hhbjsNCj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7DQo+ICsJaW50 IHN0YXR1cyA9IDA7DQo+ICsNCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGFjaGFuLCAmZW5naW5l LT5jaGFubmVscywgZGV2aWNlX25vZGUpIHsNCj4gKwkJY2hhbiA9IGZyb21fYWNoYW4oYWNoYW4p Ow0KPiArCQlkZXYgPSBjaGFuX2RldihjaGFuKTsNCj4gKw0KPiArCQkvKiBhZGQgc3lzZnMgZW50 cmllcyAqLw0KPiArCQlpZiAoY2hhbi0+ZGlyZWN0aW9uID09IERNQV9NRU1fVE9fREVWKSB7DQo+ ICsJCQlzdGF0dXMgPSBkZXZpY2VfY3JlYXRlX2ZpbGUoZGV2LCAmZGV2X2F0dHJfY2hhbl9udW0p Ow0KPiArCQkJaWYgKHN0YXR1cykNCj4gKwkJCQlkZXZfd2FybihkZXYsDQo+ICsJCQkJCSAiQ291 bGRuJ3QgY3JlYXRlIHN5c2ZzIGNoYW5fbnVtXG4iKTsNCj4gKwkJfSBlbHNlIHsNCj4gKwkJCXN0 YXR1cyA9IGRldmljZV9jcmVhdGVfZmlsZShkZXYsICZkZXZfYXR0cl9yeF9mbG93KTsNCj4gKwkJ CWlmIChzdGF0dXMpDQo+ICsJCQkJZGV2X3dhcm4oZGV2LA0KPiArCQkJCQkgIkNvdWxkbid0IGNy ZWF0ZSBzeXNmcyByeF9mbG93XG4iKTsNCj4gKwkJfQ0KPiArCX0NCj4gKwlyZXR1cm4gc3RhdHVz Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgc3RydWN0IG9mX2RtYV9maWx0ZXJfaW5mbyBrZXlzdG9u ZV9kbWFfaW5mbyA9IHsNCj4gKwkuZmlsdGVyX2ZuID0gZG1hX2tleXN0b25lX2ZpbHRlcl9mbiwN Cj4gK307DQo+ICsNCj4gK3N0YXRpYyBpbnQga2V5c3RvbmVfZG1hX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICt7DQo+ICsJdW5zaWduZWQgbWF4X3R4X2NoYW4sIG1heF9y eF9jaGFuLCBtYXhfcnhfZmxvdywgbWF4X3R4X3NjaGVkOw0KPiArCXN0cnVjdCBkZXZpY2Vfbm9k ZSAqbm9kZSA9IHBkZXYtPmRldi5vZl9ub2RlOw0KPiArCXN0cnVjdCBrZXlzdG9uZV9kbWFfZGV2 aWNlICpkbWE7DQo+ICsJc3RydWN0IGRldmljZV9ub2RlICpjaGFuOw0KPiArCWludCByZXQsIGxl biwgbnVtX2NoYW4gPSAwOw0KPiArCXN0cnVjdCBkbWFfZGV2aWNlICplbmdpbmU7DQo+ICsJcmVz b3VyY2Vfc2l6ZV90IHNpemU7DQo+ICsJdTMyIHRpbWVvdXQ7DQo+ICsJdTMyIGk7DQo+ICsNCj4g KwlpZiAoIW5vZGUpIHsNCj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiY291bGQgbm90IGZpbmQg ZGV2aWNlIGluZm9cbiIpOw0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsNCj4gKwlk bWEgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpkbWEpLCBHRlBfS0VSTkVMKTsN Cj4gKwlpZiAoIWRtYSkgew0KPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJjb3VsZCBub3QgYWxs b2NhdGUgZHJpdmVyIG1lbVxuIik7DQo+ICsJCXJldHVybiAtRU5PTUVNOw0KPiArCX0NCj4gKw0K PiArCWVuZ2luZSA9IHRvX2RtYShkbWEpOw0KPiArCWVuZ2luZS0+ZGV2ID0gJnBkZXYtPmRldjsN Cj4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkbWEpOw0KPiArDQo+ICsJcG1fcnVudGlt ZV9lbmFibGUoJnBkZXYtPmRldik7DQo+ICsJcmV0ID0gcG1fcnVudGltZV9nZXRfc3luYygmcGRl di0+ZGV2KTsNCj4gICsJaWYgKHJldCA8IDApIHsNCj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAi dW5hYmxlIHRvIGVuYWJsZSBwa3RkbWEsIGVyciAlZFxuIiwgcmV0KTsNCj4gKwkJcmV0dXJuIHJl dDsNCj4gKwl9DQo+ICsNCj4gKwlkbWEtPnJlZ19nbG9iYWwJID0gcGt0ZG1hX2dldF9yZWdzKGRt YSwgImdsb2JhbCIsICZzaXplKTsNCj4gKwlpZiAoIWRtYS0+cmVnX2dsb2JhbCkNCj4gKwkJcmV0 dXJuIC1FTk9ERVY7DQo+ICsJaWYgKHNpemUgPCBzaXplb2Yoc3RydWN0IHJlZ19nbG9iYWwpKSB7 DQo+ICsJCWRldl9lcnIoZG1hX2RldihkbWEpLCAiYmFkIHNpemUgJXBhIGZvciBnbG9iYWwgcmVn c1xuIiwgJnNpemUpOw0KPiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gKwl9DQo+ICsNCj4gKwlkbWEt PnJlZ190eF9jaGFuID0gcGt0ZG1hX2dldF9yZWdzKGRtYSwgInR4Y2hhbiIsICZzaXplKTsNCj4g KwlpZiAoIWRtYS0+cmVnX3R4X2NoYW4pDQo+ICsJCXJldHVybiAtRU5PREVWOw0KPiArDQo+ICsJ bWF4X3R4X2NoYW4gPSBzaXplIC8gc2l6ZW9mKHN0cnVjdCByZWdfY2hhbik7DQo+ICsJZG1hLT5y ZWdfcnhfY2hhbiA9IHBrdGRtYV9nZXRfcmVncyhkbWEsICJyeGNoYW4iLCAmc2l6ZSk7DQo+ICsJ aWYgKCFkbWEtPnJlZ19yeF9jaGFuKQ0KPiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gKw0KPiArCW1h eF9yeF9jaGFuID0gc2l6ZSAvIHNpemVvZihzdHJ1Y3QgcmVnX2NoYW4pOw0KPiArCWRtYS0+cmVn X3R4X3NjaGVkID0gcGt0ZG1hX2dldF9yZWdzKGRtYSwgInR4c2NoZWQiLCAmc2l6ZSk7DQo+ICsJ aWYgKCFkbWEtPnJlZ190eF9zY2hlZCkNCj4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ICsNCj4gKwlt YXhfdHhfc2NoZWQgPSBzaXplIC8gc2l6ZW9mKHN0cnVjdCByZWdfdHhfc2NoZWQpOw0KPiArCWRt YS0+cmVnX3J4X2Zsb3cgPSBwa3RkbWFfZ2V0X3JlZ3MoZG1hLCAicnhmbG93IiwgJnNpemUpOw0K PiArCWlmICghZG1hLT5yZWdfcnhfZmxvdykNCj4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ICsNCj4g KwltYXhfcnhfZmxvdyA9IHNpemUgLyBzaXplb2Yoc3RydWN0IHJlZ19yeF9mbG93KTsNCj4gKwlk bWEtPnJ4X3ByaW9yaXR5ID0gRE1BX1BSSU9fREVGQVVMVDsNCj4gKwlkbWEtPnR4X3ByaW9yaXR5 ID0gRE1BX1BSSU9fREVGQVVMVDsNCj4gKw0KPiArCWRtYS0+ZW5hYmxlX2FsbAk9IChvZl9nZXRf cHJvcGVydHkobm9kZSwgImVuYWJsZS1hbGwiLCBOVUxMKSAhPSBOVUxMKTsNCj4gKwlkbWEtPmxv b3BiYWNrCT0gKG9mX2dldF9wcm9wZXJ0eShub2RlLCAibG9vcC1iYWNrIiwgIE5VTEwpICE9IE5V TEwpOw0KPiArDQo+ICsJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgInJ4LXJldHJ5 LXRpbWVvdXQiLCAmdGltZW91dCk7DQo+ICsJaWYgKHJldCA8IDApIHsNCj4gKwkJZGV2X2RiZygm cGRldi0+ZGV2LCAidW5zcGVjaWZpZWQgcnggdGltZW91dCB1c2luZyB2YWx1ZSAlZFxuIiwNCj4g KwkJCURNQV9SWF9USU1FT1VUX0RFRkFVTFQpOw0KPiArCQl0aW1lb3V0ID0gRE1BX1JYX1RJTUVP VVRfREVGQVVMVDsNCj4gKwl9DQo+ICsJZG1hLT5yeF90aW1lb3V0ID0gdGltZW91dDsNCj4gKw0K PiArCWlmICghb2ZfZmluZF9wcm9wZXJ0eShub2RlLCAicW0tYmFzZS1hZGRyZXNzIiwgJmxlbikp IHsNCj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAidW5zcGVjaWZpZWQgcW0tYmFzZS1hZGRyZXNz XG4iKTsNCj4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ICsJfQ0KPiArDQo+ICsJZG1hLT5sb2dpY2Fs X3F1ZXVlX21hbmFnZXJzID0gbGVuIC8gc2l6ZW9mKHUzMik7DQo+ICsJaWYgKGRtYS0+bG9naWNh bF9xdWV1ZV9tYW5hZ2VycyA+IERNQV9NQVhfUU1TKSB7DQo+ICsJCWRldl93YXJuKCZwZGV2LT5k ZXYsICJ0b28gbWFueSBxdWV1ZSBtZ3JzKD4lZCkgcmVzdCBpZ25vcmVkXG4iLA0KDQptZ3JzIC0+ IG1hbmFnZXJzID8gU2luY2UgdGhlIHN0cmluZyB0b28gbG9uZywgcHV0IGl0IG9uIHNlcGFyYXRl IGxpbmUsDQpidXQgZG9uJ3QgYnJlYWsuDQoNCj4gKwkJCSBkbWEtPmxvZ2ljYWxfcXVldWVfbWFu YWdlcnMpOw0KPiArCQlkbWEtPmxvZ2ljYWxfcXVldWVfbWFuYWdlcnMgPSBETUFfTUFYX1FNUzsN Cj4gKwl9DQo+ICsNCj4gKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMl9hcnJheShub2RlLCAi cW0tYmFzZS1hZGRyZXNzIiwNCj4gKwkJCQkJZG1hLT5xbV9iYXNlX2FkZHJlc3MsDQo+ICsJCQkJ CWRtYS0+bG9naWNhbF9xdWV1ZV9tYW5hZ2Vycyk7DQo+ICsJaWYgKHJldCkgew0KPiArCQlkZXZf ZXJyKCZwZGV2LT5kZXYsICJpbnZhbGlkIHFtLWJhc2UtYWRkcmVzc1xuIik7DQo+ICsJCXJldHVy biByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJZG1hLT5tYXhfcnhfY2hhbiA9IG1heF9yeF9jaGFuOw0K PiArCWRtYS0+bWF4X3J4X2Zsb3cgPSBtYXhfcnhfZmxvdzsNCj4gKwlkbWEtPm1heF90eF9jaGFu ID0gbWluKG1heF90eF9jaGFuLCBtYXhfdHhfc2NoZWQpOw0KPiArDQo+ICsJYXRvbWljX3NldCgm ZG1hLT5pbl91c2UsIDApOw0KPiArDQo+ICsJSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+Y2hhbm5l bHMpOw0KPiArDQo+ICsJZm9yIChpID0gMDsgaSA8IGRtYS0+bWF4X3R4X2NoYW47IGkrKykgew0K PiArCQlpZiAocGt0ZG1hX2luaXRfY2hhbihkbWEsIGNoYW4sIERNQV9NRU1fVE9fREVWLCBpKSA+ PSAwKQ0KPiArCQkJbnVtX2NoYW4rKzsNCj4gKwl9DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwg ZG1hLT5tYXhfcnhfY2hhbjsgaSsrKSB7DQo+ICsJCWlmIChwa3RkbWFfaW5pdF9jaGFuKGRtYSwg Y2hhbiwgRE1BX0RFVl9UT19NRU0sIGkpID49IDApDQo+ICsJCQludW1fY2hhbisrOw0KPiArCX0N Cj4gKw0KPiArCWlmIChsaXN0X2VtcHR5KCZlbmdpbmUtPmNoYW5uZWxzKSkgew0KPiArCQlkZXZf ZXJyKGRtYV9kZXYoZG1hKSwgIm5vIHZhbGlkIGNoYW5uZWxzXG4iKTsNCj4gKwkJcmV0dXJuIC1F Tk9ERVY7DQo+ICsJfQ0KPiArDQo+ICsJZG1hX2NhcF9zZXQoRE1BX1NMQVZFLCBlbmdpbmUtPmNh cF9tYXNrKTsNCj4gKwllbmdpbmUtPmRldmljZV9hbGxvY19jaGFuX3Jlc291cmNlcyA9IGNoYW5f aW5pdDsNCj4gKwllbmdpbmUtPmRldmljZV9mcmVlX2NoYW5fcmVzb3VyY2VzICA9IGNoYW5fZGVz dHJveTsNCj4gKwllbmdpbmUtPmRldmljZV9jb250cm9sCQkgICAgPSBjaGFuX2NvbnRyb2w7DQo+ ICsJZW5naW5lLT5kZXZpY2VfdHhfc3RhdHVzCSAgICA9IGNoYW5feGZlcl9zdGF0dXM7DQo+ICsJ ZW5naW5lLT5kZXZpY2VfaXNzdWVfcGVuZGluZwkgICAgPSBjaGFuX2lzc3VlX3BlbmRpbmc7DQo+ ICsNCj4gKwlyZXQgPSBkbWFfYXN5bmNfZGV2aWNlX3JlZ2lzdGVyKGVuZ2luZSk7DQo+ICsJaWYg KHJldCkgew0KPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJ1bmFibGUgdG8gcmVnaXN0ZXIgZG1h IGVuZ2luZVxuIik7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJa2V5c3RvbmVf ZG1hX2luZm8uZG1hX2NhcCA9IGVuZ2luZS0+Y2FwX21hc2s7DQo+ICsJcmV0ID0gb2ZfZG1hX2Nv bnRyb2xsZXJfcmVnaXN0ZXIobm9kZSwgb2ZfZG1hX3NpbXBsZV94bGF0ZSwNCj4gKwkJCQkJJmtl eXN0b25lX2RtYV9pbmZvKTsNCj4gKwlpZiAocmV0KSB7DQo+ICsJCWRldl9lcnIoJnBkZXYtPmRl diwgIkZhaWxlZCB0byByZWdpc3RlciBkbWEgY29udHJvbGxlclxuIik7DQo+ICsJCWRtYV9hc3lu Y19kZXZpY2VfdW5yZWdpc3RlcihlbmdpbmUpOw0KPiArCQlyZXR1cm4gcmV0Ow0KPiArCX0NCj4g Kw0KPiArCXJldCA9IGtleXN0b25lX2RtYV9zZXR1cF9hdHRyKGRtYSk7DQo+ICsJaWYgKHJldCkg ew0KPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJ1bmFibGUgdG8gc2V0dXAgZGV2aWNlIGF0dHJc biIpOw0KPiArCQlyZXR1cm4gcmV0Ow0KPiArCX0NCj4gKw0KPiArCWRldl9pbmZvKGRtYV9kZXYo ZG1hKSwgInJlZ2lzdGVyZWQgJWQgbG9naWNhbCBjaGFubmVscywgZmxvd3MgJWQsIHR4IGNoYW5z OiAlZCwgcnggY2hhbnM6ICVkJXNcbiIsDQo+ICsJCSBudW1fY2hhbiwgZG1hLT5tYXhfcnhfZmxv dywgZG1hLT5tYXhfdHhfY2hhbiwNCj4gKwkJIGRtYS0+bWF4X3J4X2NoYW4sIGRtYS0+bG9vcGJh Y2sgPyAiLCBsb29wYmFjayIgOiAiIik7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0K PiArc3RhdGljIGludCBrZXlzdG9uZV9kbWFfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpDQo+ICt7DQo+ICsJc3RydWN0IGtleXN0b25lX2RtYV9kZXZpY2UgKmRtYSA9IHBsYXRm b3JtX2dldF9kcnZkYXRhKHBkZXYpOw0KPiArCXN0cnVjdCBkbWFfZGV2aWNlICplbmdpbmUgPSB0 b19kbWEoZG1hKTsNCj4gKw0KPiArCXBtX3J1bnRpbWVfcHV0X3N5bmMoJnBkZXYtPmRldik7DQo+ ICsJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOw0KPiArDQo+ICsJa2V5c3RvbmVfZG1h X2Rlc3Ryb3lfYXR0cihkbWEpOw0KPiArCWRtYV9hc3luY19kZXZpY2VfdW5yZWdpc3Rlcihlbmdp bmUpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3Qgb2Zf ZGV2aWNlX2lkIG9mX21hdGNoW10gPSB7DQo+ICsJeyAuY29tcGF0aWJsZSA9ICJ0aSxrZXlzdG9u ZS1wa3RkbWEiLCB9LA0KPiArCXt9LA0KPiArfTsNCj4gKw0KPiArTU9EVUxFX0RFVklDRV9UQUJM RShvZiwgb2ZfbWF0Y2gpOw0KPiArDQo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBr ZXlzdG9uZV9kbWFfZHJpdmVyID0gew0KPiArCS5wcm9iZQk9IGtleXN0b25lX2RtYV9wcm9iZSwN Cj4gKwkucmVtb3ZlCT0ga2V5c3RvbmVfZG1hX3JlbW92ZSwNCj4gKwkuZHJpdmVyID0gew0KPiAr CQkubmFtZQkJPSAia2V5c3RvbmUtcGt0ZG1hIiwNCj4gKwkJLm93bmVyCQk9IFRISVNfTU9EVUxF LA0KPiArCQkub2ZfbWF0Y2hfdGFibGUJPSBvZl9tYXRjaCwNCj4gKwl9LA0KPiArfTsNCj4gKw0K PiArYm9vbCBkbWFfa2V5c3RvbmVfZmlsdGVyX2ZuKHN0cnVjdCBkbWFfY2hhbiAqY2hhbiwgdm9p ZCAqcGFyYW0pDQo+ICt7DQo+ICsJaWYgKGNoYW4tPmRldmljZS0+ZGV2LT5kcml2ZXIgPT0gJmtl eXN0b25lX2RtYV9kcml2ZXIuZHJpdmVyKSB7DQo+ICsJCXN0cnVjdCBrZXlzdG9uZV9kbWFfY2hh biAqa2RtYV9jaGFuID0gZnJvbV9hY2hhbihjaGFuKTsNCj4gKwkJdW5zaWduZWQgY2hhbl9pZCA9 ICoodTMyICopcGFyYW0gJiBLRVlTVE9ORV9ETUFfQ0hBTl9JRF9NQVNLOw0KPiArCQl1bnNpZ25l ZCBjaGFuX3R5cGUgPSAqKHUzMiAqKXBhcmFtID4+IEtFWVNUT05FX0RNQV9UWVBFX1NISUZUOw0K PiArDQo+ICsJCWlmIChjaGFuX3R5cGUgPT0gS0VZU1RPTkVfRE1BX1RYX0NIQU5fVFlQRSAmJg0K PiArCQkgICAga2RtYV9jaGFuLT5kaXJlY3Rpb24gPT0gRE1BX01FTV9UT19ERVYpDQo+ICsJCQly ZXR1cm4gY2hhbl9pZCAgPT0ga2RtYV9jaGFuLT5jaGFubmVsOw0KPiArDQo+ICsJCWlmIChjaGFu X3R5cGUgPT0gS0VZU1RPTkVfRE1BX1JYX0ZMT1dfVFlQRSAmJg0KPiArCQkgICAga2RtYV9jaGFu LT5kaXJlY3Rpb24gPT0gRE1BX0RFVl9UT19NRU0pDQo+ICsJCQlyZXR1cm4gY2hhbl9pZCAgPT0g a2RtYV9jaGFuLT5mbG93Ow0KPiArCX0NCj4gKwlyZXR1cm4gZmFsc2U7DQo+ICt9DQo+ICtFWFBP UlRfU1lNQk9MX0dQTChkbWFfa2V5c3RvbmVfZmlsdGVyX2ZuKTsNCj4gKw0KPiArc3RhdGljIGlu dCBfX2luaXQga2V5c3RvbmVfZG1hX2luaXQodm9pZCkNCj4gK3sNCj4gKwlCVUlMRF9DSEVDS19S RUdTKCk7DQoNCkNvdWxkIHlvdSBtb3ZlIHRoaXMgc29tZXdoZXJlIGVsc2UgYW5kIHVzZSBtb2R1 bGVfcGxhdGZvcm1fZHJpdmVyKCkNCmluc3RlYWQgb2YgaW5pdC9leGl0Pw0KDQo+ICsJcmV0dXJu IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3Rlcigma2V5c3RvbmVfZG1hX2RyaXZlcik7DQo+ICt9DQo+ ICttb2R1bGVfaW5pdChrZXlzdG9uZV9kbWFfaW5pdCk7DQo+ICsNCj4gK3N0YXRpYyB2b2lkIF9f ZXhpdCBrZXlzdG9uZV9kbWFfZXhpdCh2b2lkKQ0KPiArew0KPiArCXBsYXRmb3JtX2RyaXZlcl91 bnJlZ2lzdGVyKCZrZXlzdG9uZV9kbWFfZHJpdmVyKTsNCj4gK30NCj4gK21vZHVsZV9leGl0KGtl eXN0b25lX2RtYV9leGl0KTsNCj4gKw0KPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOw0KPiAr TU9EVUxFX0RFU0NSSVBUSU9OKCJUSSBLZXlzdG9uZSBQYWNrZXQgRE1BIGRyaXZlciIpOw0KPiBk aWZmIC0tZ2l0IGEvaW5jbHVkZS9kdC1iaW5kaW5ncy9kbWEva2V5c3RvbmUuaCBiL2luY2x1ZGUv ZHQtYmluZGluZ3MvZG1hL2tleXN0b25lLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXggMDAwMDAwMC4uYWJlMDI5ZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2luY2x1ZGUvZHQt YmluZGluZ3MvZG1hL2tleXN0b25lLmgNCj4gQEAgLTAsMCArMSwzMyBAQA0KPiArLyoNCj4gKyAq IENvcHlyaWdodCAoQykgMjAxNCBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQNCj4gKyAq IEF1dGhvcnM6CVNhbmRlZXAgTmFpciA8c2FuZGVlcF9uQHRpLmNvbT4NCj4gKyAqCQlTYW50b3No IFNoaWxpbWthciA8c2FudG9zaC5zaGlsaW1rYXJAdGkuY29tPg0KPiArICoNCj4gKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IN Cj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzDQo+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiB2ZXJzaW9uIDIuDQo+ICsgKg0KPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk ICJhcyBpcyIgV0lUSE9VVCBBTlkgV0FSUkFOVFkgb2YgYW55DQo+ICsgKiBraW5kLCB3aGV0aGVy IGV4cHJlc3Mgb3IgaW1wbGllZDsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5DQo+ ICsgKiBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlDQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLg0KPiArICovDQo+ICsNCj4gKyNpZm5kZWYgX19EVF9CSU5ESU5HU19LRVlTVE9ORV9E TUFfSF9fDQo+ICsjZGVmaW5lIF9fRFRfQklORElOR1NfS0VZU1RPTkVfRE1BX0hfXw0KPiArDQo+ ICsjZGVmaW5lIEtFWVNUT05FX0RNQV9DSEFOX0lEX01BU0sJKDB4ZmYpDQo+ICsjZGVmaW5lIEtF WVNUT05FX0RNQV9UWVBFX1NISUZUCQkoMjQpDQo+ICsjZGVmaW5lIEtFWVNUT05FX0RNQV9UWF9D SEFOX1RZUEUJKDB4ZmYpDQo+ICsjZGVmaW5lIEtFWVNUT05FX0RNQV9SWF9GTE9XX1RZUEUJKDB4 ZmUpDQo+ICsNCj4gKyNkZWZpbmUgS0VZU1RPTkVfRE1BX1RYX0NIQU4oaWQpCSgoaWQgJiBLRVlT VE9ORV9ETUFfQ0hBTl9JRF9NQVNLKSB8IFwNCj4gKwkJCQkJKEtFWVNUT05FX0RNQV9UWF9DSEFO X1RZUEUgPDwgXA0KPiArCQkJCQkgS0VZU1RPTkVfRE1BX1RZUEVfU0hJRlQpKQ0KPiArDQo+ICsj ZGVmaW5lIEtFWVNUT05FX0RNQV9SWF9GTE9XKGlkKQkoKGlkICYgS0VZU1RPTkVfRE1BX0NIQU5f SURfTUFTSykgfCBcDQo+ICsJCQkJCShLRVlTVE9ORV9ETUFfUlhfRkxPV19UWVBFIDw8IFwNCj4g KwkJCQkJIEtFWVNUT05FX0RNQV9UWVBFX1NISUZUKSkNCj4gKw0KPiArDQo+ICsjZW5kaWYgLyog X19EVF9CSU5ESU5HU19LRVlTVE9ORV9ETUFfSF8gKi8NCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv bGludXgva2V5c3RvbmUtcGt0ZG1hLmggYi9pbmNsdWRlL2xpbnV4L2tleXN0b25lLXBrdGRtYS5o DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLmU2YTY2YzgNCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9pbmNsdWRlL2xpbnV4L2tleXN0b25lLXBrdGRtYS5oDQo+IEBA IC0wLDAgKzEsMTY4IEBADQo+ICsvKg0KPiArICogQ29weXJpZ2h0IChDKSAyMDE0IFRleGFzIElu c3RydW1lbnRzIEluY29ycG9yYXRlZA0KPiArICogQXV0aG9yczoJU2FuZGVlcCBOYWlyIDxzYW5k ZWVwX25AdGkuY29tDQo+ICsgKgkJQ3lyaWwgQ2hlbXBhcmF0aHkgPGN5cmlsQHRpLmNvbQ0KPiAr CQlTYW50b3NoIFNoaWxpbWthciA8c2FudG9zaC5zaGlsaW1rYXJAdGkuY29tPg0KPiArICoNCj4g KyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3INCj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzDQo+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiB2ZXJzaW9uIDIuDQo+ICsgKg0KPiArICogVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkICJhcyBpcyIgV0lUSE9VVCBBTlkgV0FSUkFOVFkgb2YgYW55DQo+ICsgKiBraW5k LCB3aGV0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZDsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5DQo+ICsgKiBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlDQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLg0KPiArICovDQo+ICsNCj4gKyNpZm5kZWYgX19LRVlTVE9ORV9QS1RE TUFfSF9fDQo+ICsjZGVmaW5lIF9fS0VZU1RPTkVfUEtURE1BX0hfXw0KPiArDQo+ICsjaW5jbHVk ZSA8bGludXgvZG1hZW5naW5lLmg+DQo+ICsNCj4gKy8qDQo+ICsgKiBQS1RETUEgZGVzY3JpcHRv ciBtYW5pcHVsYXRpb24gbWFjcm9zIGZvciBob3N0IHBhY2tldCBkZXNjcmlwdG9yDQo+ICsgKi8N Cj4gKyNkZWZpbmUgTUFTSyh4KQkJCQkJKEJJVCh4KSAtIDEpDQo+ICsjZGVmaW5lIERNQV9LRVlT VE9ORV9ERVNDX1BLVF9MRU5fTUFTSwkJTUFTSygyMikNCj4gKyNkZWZpbmUgRE1BX0tFWVNUT05F X0RFU0NfUEtUX0xFTl9TSElGVAkJMA0KPiArI2RlZmluZSBETUFfS0VZU1RPTkVfREVTQ19QU19J TkZPX0lOX1NPUAlCSVQoMjIpDQo+ICsjZGVmaW5lIERNQV9LRVlTVE9ORV9ERVNDX1BTX0lORk9f SU5fREVTQwkwDQo+ICsjZGVmaW5lIERNQV9LRVlTVE9ORV9ERVNDX1RBR19NQVNLCQlNQVNLKDgp DQo+ICsjZGVmaW5lIERNQV9LRVlTVE9ORV9ERVNDX1NBR19ISV9TSElGVAkJMjQNCj4gKyNkZWZp bmUgRE1BX0tFWVNUT05FX0RFU0NfU1RBR19MT19TSElGVAkJMTYNCj4gKyNkZWZpbmUgRE1BX0tF WVNUT05FX0RFU0NfRFRBR19ISV9TSElGVAkJOA0KPiArI2RlZmluZSBETUFfS0VZU1RPTkVfREVT Q19EVEFHX0xPX1NISUZUCQkwDQo+ICsjZGVmaW5lIERNQV9LRVlTVE9ORV9ERVNDX0hBU19FUElC CQlCSVQoMzEpDQo+ICsjZGVmaW5lIERNQV9LRVlTVE9ORV9ERVNDX05PX0VQSUIJCTANCj4gKyNk ZWZpbmUgRE1BX0tFWVNUT05FX0RFU0NfUFNMRU5fU0hJRlQJCTI0DQo+ICsjZGVmaW5lIERNQV9L RVlTVE9ORV9ERVNDX1BTTEVOX01BU0sJCU1BU0soNikNCj4gKyNkZWZpbmUgRE1BX0tFWVNUT05F X0RFU0NfRVJSX0ZMQUdfU0hJRlQJMjANCj4gKyNkZWZpbmUgRE1BX0tFWVNUT05FX0RFU0NfRVJS X0ZMQUdfTUFTSwkJTUFTSyg0KQ0KPiArI2RlZmluZSBETUFfS0VZU1RPTkVfREVTQ19QU0ZMQUdf U0hJRlQJCTE2DQo+ICsjZGVmaW5lIERNQV9LRVlTVE9ORV9ERVNDX1BTRkxBR19NQVNLCQlNQVNL KDQpDQo+ICsjZGVmaW5lIERNQV9LRVlTVE9ORV9ERVNDX1JFVFFfU0hJRlQJCTANCj4gKyNkZWZp bmUgRE1BX0tFWVNUT05FX0RFU0NfUkVUUV9NQVNLCQlNQVNLKDE0KQ0KPiArI2RlZmluZSBETUFf S0VZU1RPTkVfREVTQ19CVUZfTEVOX01BU0sJCU1BU0soMjIpDQo+ICsNCj4gKyNkZWZpbmUgRE1B X0tFWVNUT05FX05VTV9FUElCX1dPUkRTCQk0DQo+ICsjZGVmaW5lIERNQV9LRVlTVE9ORV9OVU1f UFNfV09SRFMJCTE2DQo+ICsjZGVmaW5lIERNQV9LRVlTVE9ORV9GRFFfUEVSX0NIQU4JCTQNCj4g Kw0KPiArLyogVHggY2hhbm5lbCBzY2hlZHVsaW5nIHByaW9yaXR5ICovDQo+ICtlbnVtIGRtYV9r ZXlzdG9uZV90eF9wcmlvcml0eSB7DQo+ICsJRE1BX1BSSU9fSElHSAk9IDAsDQo+ICsJRE1BX1BS SU9fTUVEX0gsDQo+ICsJRE1BX1BSSU9fTUVEX0wsDQo+ICsJRE1BX1BSSU9fTE9XDQo+ICt9Ow0K PiArDQo+ICsvKiBSeCBjaGFubmVsIGVycm9yIGhhbmRsaW5nIG1vZGUgZHVyaW5nIGJ1ZmZlciBz dGFydmF0aW9uICovDQo+ICtlbnVtIGRtYV9rZXlzdG9uZV9yeF9lcnJfbW9kZSB7DQo+ICsJRE1B X0RST1AgPSAwLA0KPiArCURNQV9SRVRSWQ0KPiArfTsNCj4gKw0KPiArLyogUnggZmxvdyBzaXpl IHRocmVzaG9sZCBjb25maWd1cmF0aW9uICovDQo+ICtlbnVtIGRtYV9rZXlzdG9uZV9yeF90aHJl c2hvbGRzIHsNCj4gKwlETUFfVEhSRVNIX05PTkUJCT0gMCwNCj4gKwlETUFfVEhSRVNIXzAJCT0g MSwNCj4gKwlETUFfVEhSRVNIXzBfMQkJPSAzLA0KPiArCURNQV9USFJFU0hfMF8xXzIJPSA3DQo+ ICt9Ow0KPiArDQo+ICsvKiBEZXNjcmlwdG9yIHR5cGUgKi8NCj4gK2VudW0gZG1hX2tleXN0b25l X2Rlc2NfdHlwZSB7DQo+ICsJRE1BX0RFU0NfSE9TVCA9IDAsDQo+ICsJRE1BX0RFU0NfTU9OT0xJ VEhJQyA9IDINCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0IGRtYV9rZXlzdG9uZV90 eF9jZmc6CVR4IGNoYW5uZWwgY29uZmlndXJhdGlvbg0KPiArICogQGZpbHRfZWluZm86CQkJRmls dGVyIGV4dGVuZGVkIHBhY2tldCBpbmZvDQo+ICsgKiBAZmlsdF9wc3dvcmRzOgkJRmlsdGVyIFBT IHdvcmRzIHByZXNlbnQNCj4gKyAqIEBkbWFfa2V5c3RvbmVfdHhfcHJpb3JpdHk6CVR4IGNoYW5u ZWwgc2NoZWR1bGluZyBwcmlvcml0eQ0KPiArICovDQo+ICtzdHJ1Y3QgZG1hX2tleXN0b25lX3R4 X2NmZyB7DQo+ICsJYm9vbAkJCQlmaWx0X2VpbmZvOw0KPiArCWJvb2wJCQkJZmlsdF9wc3dvcmRz Ow0KPiArCWVudW0gZG1hX2tleXN0b25lX3R4X3ByaW9yaXR5CXByaW9yaXR5Ow0KPiArfTsNCj4g Kw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgZG1hX2tleXN0b25lX3J4X2NmZzoJUnggZmxvdyBjb25m aWd1cmF0aW9uDQo+ICsgKiBAZWluZm9fcHJlc2VudDoJCUV4dGVuZGVkIHBhY2tldCBpbmZvIHBy ZXNlbnQNCj4gKyAqIEBwc2luZm9fcHJlc2VudDoJCVBTIHdvcmRzIHByZXNlbnQNCj4gKyAqIEBk bWFfa2V5c3RvbmVfcnhfZXJyX21vZGU6CUVycm9yIGR1cmluZyBidWZmZXIgc3RhcnZhdGlvbg0K PiArICogQGRtYV9rZXlzdG9uZV9kZXNjX3R5cGU6CUhvc3Qgb3IgTW9ub2xpdGhpYyBkZXNjDQo+ ICsgKiBAcHNpbmZvX2F0X3NvcDoJCVBTIHdvcmQgbG9jYXRlZCBhdCBzdGFydCBvZiBwYWNrZXQN Cj4gKyAqIEBzb3Bfb2Zmc2V0OgkJCVN0YXJ0IG9mIHBhY2tldCBvZmZzZXQNCj4gKyAqIEBkc3Rf cToJCQlEZXN0aW5hdGlvbiBxdWV1ZSBmb3IgYSBnaXZlbiBmbG93DQo+ICsgKiBAdGhyZXNoOgkJ CVJ4IGZsb3cgc2l6ZSB0aHJlc2hvbGQNCj4gKyAqIEBmZHFbXToJCQlGcmVlIGRlc2MgUXVldWUg YXJyYXkNCj4gKyAqIEBzel90aHJlc2gwOgkJCVJYIHBhY2tldCBzaXplIHRocmVzaG9sZCAwDQo+ ICsgKiBAc3pfdGhyZXNoMToJCQlSWCBwYWNrZXQgc2l6ZSB0aHJlc2hvbGQgMQ0KPiArICogQHN6 X3RocmVzaDI6CQkJUlggcGFja2V0IHNpemUgdGhyZXNob2xkIDINCj4gKyAqLw0KPiArc3RydWN0 IGRtYV9rZXlzdG9uZV9yeF9jZmcgew0KPiArCWJvb2wJCQkJZWluZm9fcHJlc2VudDsNCj4gKwli b29sCQkJCXBzaW5mb19wcmVzZW50Ow0KPiArCWVudW0gZG1hX2tleXN0b25lX3J4X2Vycl9tb2Rl CWVycl9tb2RlOw0KPiArCWVudW0gZG1hX2tleXN0b25lX2Rlc2NfdHlwZQlkZXNjX3R5cGU7DQo+ ICsJYm9vbAkJCQlwc2luZm9fYXRfc29wOw0KPiArCXVuc2lnbmVkIGludAkJCXNvcF9vZmZzZXQ7 DQo+ICsJdW5zaWduZWQgaW50CQkJZHN0X3E7DQo+ICsJZW51bSBkbWFfa2V5c3RvbmVfcnhfdGhy ZXNob2xkcwl0aHJlc2g7DQo+ICsJdW5zaWduZWQgaW50CQkJZmRxW0RNQV9LRVlTVE9ORV9GRFFf UEVSX0NIQU5dOw0KPiArCXVuc2lnbmVkIGludAkJCXN6X3RocmVzaDA7DQo+ICsJdW5zaWduZWQg aW50CQkJc3pfdGhyZXNoMTsNCj4gKwl1bnNpZ25lZCBpbnQJCQlzel90aHJlc2gyOw0KPiArfTsN Cj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgZG1hX2tleXN0b25lX2NmZzoJUGt0ZG1hIGNoYW5u ZWwgY29uZmlndXJhdGlvbg0KPiArICogQHNsX2NmZzoJCQlTbGF2ZSBjb25maWd1cmF0aW9uDQo+ ICsgKiBAdHg6CQkJCVR4IGNoYW5uZWwgY29uZmlndXJhdGlvbg0KPiArICogQHJ4OgkJCQlSeCBm bG93IGNvbmZpZ3VyYXRpb24NCj4gKyAqLw0KPiArc3RydWN0IGRtYV9rZXlzdG9uZV9jZmcgew0K PiArCXN0cnVjdCBkbWFfc2xhdmVfY29uZmlnCQlzbF9jZmc7DQo+ICsJdW5pb24gew0KPiArCQlz dHJ1Y3QgZG1hX2tleXN0b25lX3R4X2NmZwl0eDsNCj4gKwkJc3RydWN0IGRtYV9rZXlzdG9uZV9y eF9jZmcJcng7DQo+ICsJfSB1Ow0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgZG1h X2tleXN0b25lX2Rlc2M6CUhvc3QgcGFja2V0IGRlc2NyaXB0b3IgbGF5b3V0DQo+ICsgKiBAZGVz Y19pbmZvOgkJCURlc2NyaXB0b3IgaW5mb3JtYXRpb24gbGlrZSBpZCwgdHlwZSwgbGVuZ3RoDQo+ ICsgKiBAdGFnX2luZm86CQkJRmxvdyB0YWcgaW5mbyB3cml0dGVuIGluIGR1cmluZyBSWA0KPiAr ICogQHBhY2tldF9pbmZvOgkJUXVldWUgTWFuYWdlciwgcG9saWN5LCBmbGFncyBldGMNCj4gKyAq IEBidWZmX2xlbjoJCQlCdWZmZXIgbGVuZ3RoIGluIGJ5dGVzDQo+ICsgKiBAYnVmZjoJCQlCdWZm ZXIgcG9pbnRlcg0KPiArICogQG5leHRfZGVzYzoJCQlGb3IgY2hhaW5pbmcgdGhlIGRlc2NyaXB0 b3JzDQo+ICsgKiBAb3JpZ19sZW46CQkJbGVuZ3RoIHNpbmNlICdidWZmX2xlbicgY2FuIGJlIG92 ZXJ3cml0dGVuDQo+ICsgKiBAb3JpZ19idWZmOgkJCWJ1ZmYgcG9pbnRlciBzaW5jZSAnYnVmZicg Y2FuIGJlIG92ZXJ3cml0dGVuDQo+ICsgKiBAZXBpYjoJCQlFeHRlbmRlZCBwYWNrZXQgaW5mbyBi bG9jaw0KPiArICogQHBzZGF0YToJCQlQcm90b2NvbCBzcGVjaWZpYw0KPiArICovDQo+ICtzdHJ1 Y3QgZG1hX2tleXN0b25lX2Rlc2Mgew0KPiArCXUzMglkZXNjX2luZm87DQo+ICsJdTMyCXRhZ19p bmZvOw0KPiArCXUzMglwYWNrZXRfaW5mbzsNCj4gKwl1MzIJYnVmZl9sZW47DQo+ICsJdTMyCWJ1 ZmY7DQo+ICsJdTMyCW5leHRfZGVzYzsNCj4gKwl1MzIJb3JpZ19sZW47DQo+ICsJdTMyCW9yaWdf YnVmZjsNCj4gKwl1MzIJZXBpYltETUFfS0VZU1RPTkVfTlVNX0VQSUJfV09SRFNdOw0KPiArCXUz Mglwc2RhdGFbRE1BX0tFWVNUT05FX05VTV9QU19XT1JEU107DQo+ICsJdTMyCXBhZFs0XTsNCj4g K30gX19fX2NhY2hlbGluZV9hbGlnbmVkOw0KPiArDQo+ICsjZGVmaW5lIGtleXN0b25lX2NmZ190 b19zbGF2ZV9jb25maWcoa2V5c3RvbmVfY2ZnKSAoJmtleXN0b25lX2NmZy5zbF9jZmcpDQo+ICsj ZGVmaW5lIGtleXN0b25lX2NmZ19mcm9tX3NsYXZlX2NvbmZpZyhkbWFfY2ZnKQljb250YWluZXJf b2YoZG1hX2NmZywgXA0KPiArCQkJCQlzdHJ1Y3QgZG1hX2tleXN0b25lX2NmZywgc2xfY2ZnKQ0K PiArLyogS2V5c3RvbmUgUEtURE1BIGZpbHRlciBmdW5jdGlvbiAqLw0KPiArYm9vbCBkbWFfa2V5 c3RvbmVfZmlsdGVyX2ZuKHN0cnVjdCBkbWFfY2hhbiAqY2hhbiwgdm9pZCAqcGFyYW0pOw0KPiAr DQo+ICsjZW5kaWYgLyogX19LRVlTVE9ORV9QS1RETUFfSF9fICovDQoNCg0KLS0gDQpBbmR5IFNo ZXZjaGVua28gPGFuZHJpeS5zaGV2Y2hlbmtvQGludGVsLmNvbT4NCkludGVsIEZpbmxhbmQgT3kN Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpJbnRlbCBGaW5sYW5kIE95ClJlZ2lzdGVyZWQgQWRkcmVzczogUEwgMjgx LCAwMDE4MSBIZWxzaW5raSAKQnVzaW5lc3MgSWRlbnRpdHkgQ29kZTogMDM1NzYwNiAtIDQgCkRv bWljaWxlZCBpbiBIZWxzaW5raSAKClRoaXMgZS1tYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgbWF5 IGNvbnRhaW4gY29uZmlkZW50aWFsIG1hdGVyaWFsIGZvcgp0aGUgc29sZSB1c2Ugb2YgdGhlIGlu dGVuZGVkIHJlY2lwaWVudChzKS4gQW55IHJldmlldyBvciBkaXN0cmlidXRpb24KYnkgb3RoZXJz IGlzIHN0cmljdGx5IHByb2hpYml0ZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZApyZWNp cGllbnQsIHBsZWFzZSBjb250YWN0IHRoZSBzZW5kZXIgYW5kIGRlbGV0ZSBhbGwgY29waWVzLgo= -- 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