From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id E22261BAA4 for ; Wed, 4 Apr 2018 03:44:22 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Apr 2018 18:44:21 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,404,1517904000"; d="scan'208";a="43198059" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga004.fm.intel.com with ESMTP; 03 Apr 2018 18:44:21 -0700 Received: from fmsmsx116.amr.corp.intel.com (10.18.116.20) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 3 Apr 2018 18:44:21 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by fmsmsx116.amr.corp.intel.com (10.18.116.20) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 3 Apr 2018 18:44:20 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.43]) by shsmsx102.ccr.corp.intel.com ([169.254.2.61]) with mapi id 14.03.0319.002; Wed, 4 Apr 2018 09:44:18 +0800 From: "Xu, Rosen" To: Shreyansh Jain CC: "dev@dpdk.org" , "Doherty, Declan" , "Richardson, Bruce" , "Yigit, Ferruh" , "Ananyev, Konstantin" , "Zhang, Tianfei" , "Wu, Hao" , "gaetan.rivet@6wind.com" Thread-Topic: [dpdk-dev] [PATCH v4 1/3] Add Intel FPGA BUS Lib Code Thread-Index: AQHTyy2xyXgOwj124k6HYVmmWhuDoqPvz2Yw Date: Wed, 4 Apr 2018 01:44:18 +0000 Message-ID: <0E78D399C70DA940A335608C6ED296D739F33D54@SHSMSX104.ccr.corp.intel.com> References: <1521553556-62982-1-git-send-email-rosen.xu@intel.com> <1522512182-182441-1-git-send-email-rosen.xu@intel.com> <1522512182-182441-2-git-send-email-rosen.xu@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZWRkZmQwYzQtY2Y2ZC00ZTMxLThmYTctZDY2NTAwMDNhMjU4IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6IkliTXdUYXd0aWlyelZSM0p2U2tcL29vRlhBbE5zK3NYaXRUNmFzU0l4TzhrPSJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v4 1/3] Add Intel FPGA BUS Lib Code X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Apr 2018 01:44:23 -0000 SGVsbG8gU2hyZXlhbnNoLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206 IFNocmV5YW5zaCBKYWluIFttYWlsdG86c2hyZXlhbnNoLmphaW5AbnhwLmNvbV0NCj4gU2VudDog VHVlc2RheSwgQXByaWwgMDMsIDIwMTggMTc6MjUNCj4gVG86IFh1LCBSb3NlbiA8cm9zZW4ueHVA aW50ZWwuY29tPg0KPiBDYzogZGV2QGRwZGsub3JnOyBEb2hlcnR5LCBEZWNsYW4gPGRlY2xhbi5k b2hlcnR5QGludGVsLmNvbT47DQo+IFJpY2hhcmRzb24sIEJydWNlIDxicnVjZS5yaWNoYXJkc29u QGludGVsLmNvbT47IFlpZ2l0LCBGZXJydWgNCj4gPGZlcnJ1aC55aWdpdEBpbnRlbC5jb20+OyBB bmFueWV2LCBLb25zdGFudGluDQo+IDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPjsgWmhh bmcsIFRpYW5mZWkgPHRpYW5mZWkuemhhbmdAaW50ZWwuY29tPjsNCj4gV3UsIEhhbyA8aGFvLnd1 QGludGVsLmNvbT47IGdhZXRhbi5yaXZldEA2d2luZC5jb20NCj4gU3ViamVjdDogUmU6IFtkcGRr LWRldl0gW1BBVENIIHY0IDEvM10gQWRkIEludGVsIEZQR0EgQlVTIExpYiBDb2RlDQo+IA0KPiBI ZWxsbyBSb3NlbiwNCj4gDQo+IE9uIFNhdHVyZGF5IDMxIE1hcmNoIDIwMTggMDk6MzMgUE0sIFJv c2VuIFh1IHdyb3RlOg0KPiA+IFNpZ25lZC1vZmYtYnk6IFJvc2VuIFh1IDxyb3Nlbi54dUBpbnRl bC5jb20+DQo+ID4gLS0tDQo+ID4gICBjb25maWcvY29tbW9uX2Jhc2UgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA1ICsNCj4gPiAgIGRyaXZlcnMvYnVzL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKw0KPiA+ICAgZHJpdmVycy9idXMvaWZwZ2EvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICB8ICAzMyArKw0KPiA+ICAgZHJpdmVycy9idXMvaWZwZ2EvaWZwZ2FfYnVz LmMgICAgICAgICAgICAgICB8IDUxNw0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ ID4gICBkcml2ZXJzL2J1cy9pZnBnYS9pZnBnYV9jb21tb24uYyAgICAgICAgICAgIHwgMTQxICsr KysrKysrDQo+ID4gICBkcml2ZXJzL2J1cy9pZnBnYS9pZnBnYV9jb21tb24uaCAgICAgICAgICAg IHwgIDIyICsrDQo+ID4gICBkcml2ZXJzL2J1cy9pZnBnYS9pZnBnYV9sb2dzLmggICAgICAgICAg ICAgIHwgIDMxICsrDQo+ID4gICBkcml2ZXJzL2J1cy9pZnBnYS9ydGVfYnVzX2lmcGdhLmggICAg ICAgICAgIHwgMTc1ICsrKysrKysrKysNCj4gPiAgIGRyaXZlcnMvYnVzL2lmcGdhL3J0ZV9idXNf aWZwZ2FfdmVyc2lvbi5tYXAgfCAgIDggKw0KPiA+ICAgbWsvcnRlLmFwcC5tayAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMiArDQo+ID4gICAxMCBmaWxlcyBjaGFuZ2VkLCA5MzUg aW5zZXJ0aW9ucygrKQ0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvYnVzL2lmcGdh L01ha2VmaWxlDQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9idXMvaWZwZ2EvaWZw Z2FfYnVzLmMNCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2J1cy9pZnBnYS9pZnBn YV9jb21tb24uYw0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvYnVzL2lmcGdhL2lm cGdhX2NvbW1vbi5oDQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9idXMvaWZwZ2Ev aWZwZ2FfbG9ncy5oDQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9idXMvaWZwZ2Ev cnRlX2J1c19pZnBnYS5oDQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9idXMvaWZw Z2EvcnRlX2J1c19pZnBnYV92ZXJzaW9uLm1hcA0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2NvbmZp Zy9jb21tb25fYmFzZSBiL2NvbmZpZy9jb21tb25fYmFzZSBpbmRleA0KPiA+IGFkMDNjZjQuLjQ5 ZjZiMDkgMTAwNjQ0DQo+ID4gLS0tIGEvY29uZmlnL2NvbW1vbl9iYXNlDQo+ID4gKysrIGIvY29u ZmlnL2NvbW1vbl9iYXNlDQo+ID4gQEAgLTEzNCw2ICsxMzQsMTEgQEAgQ09ORklHX1JURV9MSUJS VEVfUENJX0JVUz15DQo+ID4gICBDT05GSUdfUlRFX0xJQlJURV9WREVWX0JVUz15DQo+ID4NCj4g PiAgICMNCj4gPiArIyBDb21waWxlIHRoZSBJbnRlbCBGUEdBIGJ1cw0KPiA+ICsjDQo+ID4gK0NP TkZJR19SVEVfTElCUlRFX0lGUEdBX0JVUz15DQo+ID4gKw0KPiA+ICsjDQo+ID4gICAjIENvbXBp bGUgQVJLIFBNRA0KPiA+ICAgIw0KPiA+ICAgQ09ORklHX1JURV9MSUJSVEVfQVJLX1BNRD15DQo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYnVzL01ha2VmaWxlIGIvZHJpdmVycy9idXMvTWFrZWZp bGUgaW5kZXgNCj4gPiA3ZWYyNTkzLi41NWQyZGZlIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMv YnVzL01ha2VmaWxlDQo+ID4gKysrIGIvZHJpdmVycy9idXMvTWFrZWZpbGUNCj4gPiBAQCAtNyw1 ICs3LDYgQEAgRElSUy0kKENPTkZJR19SVEVfTElCUlRFX0RQQUFfQlVTKSArPSBkcGFhDQo+ID4g ICBESVJTLSQoQ09ORklHX1JURV9MSUJSVEVfRlNMTUNfQlVTKSArPSBmc2xtYw0KPiA+ICAgRElS Uy0kKENPTkZJR19SVEVfTElCUlRFX1BDSV9CVVMpICs9IHBjaQ0KPiA+ICAgRElSUy0kKENPTkZJ R19SVEVfTElCUlRFX1ZERVZfQlVTKSArPSB2ZGV2DQo+ID4gK0RJUlMtJChDT05GSUdfUlRFX0xJ QlJURV9JRlBHQV9CVVMpICs9IGlmcGdhDQo+IA0KPiBXaGVuIEkgYXR0ZW1wdGVkIHRvIGNvbXBp bGUgdGhlIGFib3ZlIHVzaW5nIFNIQVJFRF9MSUI9eSwgdGhpcyBpcyB3aGF0IEkNCj4gZ290Og0K PiANCj4gLS0tPjgtLS0NCj4gICAgTEQgbGlicnRlX2J1c19pZnBnYS5zby4xLjENCj4gaWZwZ2Ff YnVzLm86IEluIGZ1bmN0aW9uIGBydGVfaWZwZ2FfcGFyc2UnOg0KPiBpZnBnYV9idXMuYzooLnRl eHQrMHgyZWIpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBydGVfcmF3ZGV2cycNCj4gaWZwZ2Ff YnVzLm86IEluIGZ1bmN0aW9uIGBydGVfaWZwZ2Ffc2Nhbic6DQo+IGlmcGdhX2J1cy5jOigudGV4 dCsweDUzZSk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHJ0ZV9rdmFyZ3NfcGFyc2UnDQo+IGlm cGdhX2J1cy5jOigudGV4dCsweDU1ZSk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHJ0ZV9rdmFy Z3NfY291bnQnDQo+IGlmcGdhX2J1cy5jOigudGV4dCsweDU4MCk6IHVuZGVmaW5lZCByZWZlcmVu Y2UgdG8gYHJ0ZV9rdmFyZ3NfcHJvY2VzcycNCj4gaWZwZ2FfYnVzLmM6KC50ZXh0KzB4NWUwKTog dW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgcnRlX3Jhd2RldnMnDQo+IGlmcGdhX2J1cy5jOigudGV4 dCsweDc0Nik6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHJ0ZV9rdmFyZ3NfZnJlZScNCj4gaWZw Z2FfYnVzLmM6KC50ZXh0KzB4N2I4KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgcnRlX3BjaV9h ZGRyX2NtcCcNCj4gaWZwZ2FfYnVzLmM6KC50ZXh0KzB4ODU4KTogdW5kZWZpbmVkIHJlZmVyZW5j ZSB0byBgcnRlX2t2YXJnc19wYXJzZScNCj4gaWZwZ2FfYnVzLmM6KC50ZXh0KzB4ODc4KTogdW5k ZWZpbmVkIHJlZmVyZW5jZSB0byBgcnRlX2t2YXJnc19jb3VudCcNCj4gaWZwZ2FfYnVzLmM6KC50 ZXh0KzB4ODljKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgcnRlX2t2YXJnc19wcm9jZXNzJw0K PiBpZnBnYV9idXMuYzooLnRleHQrMHg4YjgpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBydGVf a3ZhcmdzX2NvdW50Jw0KPiBpZnBnYV9idXMuYzooLnRleHQrMHg4ZGMpOiB1bmRlZmluZWQgcmVm ZXJlbmNlIHRvIGBydGVfa3ZhcmdzX3Byb2Nlc3MnDQo+IGlmcGdhX2J1cy5jOigudGV4dCsweDhm OCk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHJ0ZV9rdmFyZ3NfY291bnQnDQo+IGlmcGdhX2J1 cy5jOigudGV4dCsweDkxYyk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHJ0ZV9rdmFyZ3NfcHJv Y2VzcycNCj4gaWZwZ2FfYnVzLmM6KC50ZXh0KzB4OTgxKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0 byBgcnRlX2t2YXJnc19mcmVlJw0KPiBpZnBnYV9jb21tb24ubzogSW4gZnVuY3Rpb24gYGlmcGdh X3BjaV9hZGRyX2NtcCc6DQo+IGlmcGdhX2NvbW1vbi5jOigudGV4dCsweDJjNSk6IHVuZGVmaW5l ZCByZWZlcmVuY2UgdG8NCj4gYHJ0ZV9lYWxfY29tcGFyZV9wY2lfYWRkcicNCj4gY29sbGVjdDI6 IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzDQo+IC9ob21lL3NocmV5YW5zaC9idWls ZC9EUERLLzAwX2RwZGsvbWsvcnRlLmxpYi5tazo5ODogcmVjaXBlIGZvciB0YXJnZXQNCj4gJ2xp YnJ0ZV9idXNfaWZwZ2Euc28uMS4xJyBmYWlsZWQNCj4gbWFrZVs2XTogKioqIFtsaWJydGVfYnVz X2lmcGdhLnNvLjEuMV0gRXJyb3IgMQ0KPiAvaG9tZS9zaHJleWFuc2gvYnVpbGQvRFBESy8wMF9k cGRrL21rL3J0ZS5zdWJkaXIubWs6MzU6IHJlY2lwZSBmb3INCj4gdGFyZ2V0ICdpZnBnYScgZmFp bGVkDQo+IG1ha2VbNV06ICoqKiBbaWZwZ2FdIEVycm9yIDINCj4gLS0tPjgtLS0NCg0KSSBoYXZl IGZpeGVkIGl0IHRvIG1vZGlmeSBNYWtlZmlsZSBpbiBteSBQQVRDSCB2NS4NCg0KPiBFc3NlbnRp YWxseSwgeW91IGFyZSBkZXBlbmRlbnQgb24gbGlicnRlX2t2YXJncyBidXQgeW91IGhhdmUgbm90 IGRlY2xhcmVkDQo+IHRoYXQgaW4geW91ciBNYWtlZmlsZS4gU2FtZSBmb3IgbGliX3Jhd2Rldi4N Cg0KSSBoYXZlIGRlY2xhcmVkIGl0IGluIG15IFBBVENIIHY1Lg0KDQo+ID4NCj4gPiAgIGluY2x1 ZGUgJChSVEVfU0RLKS9tay9ydGUuc3ViZGlyLm1rDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv YnVzL2lmcGdhL01ha2VmaWxlIGIvZHJpdmVycy9idXMvaWZwZ2EvTWFrZWZpbGUNCj4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NCBpbmRleCAwMDAwMDAwLi4xYjU2OWFmDQo+ID4gLS0tIC9kZXYvbnVs bA0KPiA+ICsrKyBiL2RyaXZlcnMvYnVzL2lmcGdhL01ha2VmaWxlDQo+ID4gQEAgLTAsMCArMSwz MyBAQA0KPiA+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgIyBDb3B5 cmlnaHQoYykgMjAxOCBJbnRlbA0KPiA+ICtDb3Jwb3JhdGlvbg0KPiA+ICsNCj4gPiAraW5jbHVk ZSAkKFJURV9TREspL21rL3J0ZS52YXJzLm1rDQo+ID4gKw0KPiA+ICsjDQo+ID4gKyMgbGlicmFy eSBuYW1lDQo+ID4gKyMNCj4gPiArTElCID0gbGlicnRlX2J1c19pZnBnYS5hDQo+ID4gKw0KPiA+ ICtDRkxBR1MgKz0gLU8zDQo+ID4gK0NGTEFHUyArPSAkKFdFUlJPUl9GTEFHUykNCj4gPiArDQo+ ID4gKyMgdmVyc2lvbmluZyBleHBvcnQgbWFwDQo+ID4gK0VYUE9SVF9NQVAgOj0gcnRlX2J1c19p ZnBnYV92ZXJzaW9uLm1hcA0KPiA+ICsNCj4gPiArIyBsaWJyYXJ5IHZlcnNpb24NCj4gPiArTElC QUJJVkVSIDo9IDENCj4gPiArDQo+ID4gK1ZQQVRIICs9ICQoU1JDRElSKS9iYXNlDQo+ID4gKw0K PiA+ICtTUkNTLXkgKz0gXA0KPiA+ICsgICAgICAgIGlmcGdhX2J1cy5jIFwNCj4gPiArICAgICAg ICBpZnBnYV9jb21tb24uYw0KPiA+ICsNCj4gPiArTERMSUJTICs9IC1scnRlX2VhbA0KPiA+ICsN Cj4gPiArIw0KPiA+ICsjIEV4cG9ydCBpbmNsdWRlIGZpbGVzDQo+ID4gKyMNCj4gPiArU1lNTElO Sy15LWluY2x1ZGUgKz0gcnRlX2J1c19pZnBnYS5oDQo+ID4gKw0KPiA+ICtpbmNsdWRlICQoUlRF X1NESykvbWsvcnRlLmxpYi5taw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2J1cy9pZnBnYS9p ZnBnYV9idXMuYw0KPiA+IGIvZHJpdmVycy9idXMvaWZwZ2EvaWZwZ2FfYnVzLmMgbmV3IGZpbGUg bW9kZSAxMDA2NDQgaW5kZXgNCj4gPiAwMDAwMDAwLi5lYmEyNjE1DQo+ID4gLS0tIC9kZXYvbnVs bA0KPiA+ICsrKyBiL2RyaXZlcnMvYnVzL2lmcGdhL2lmcGdhX2J1cy5jDQo+ID4gQEAgLTAsMCAr MSw1MTcgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0K PiA+ICsgKiBDb3B5cmlnaHQoYykgMjAxMC0yMDE4IEludGVsIENvcnBvcmF0aW9uICAqLw0KPiA+ ICsNCj4gDQo+IFsuLi5dDQo+IA0KPiA+ICsNCj4gPiArCWlmIChyYXdkZXYtPmRldl9vcHMgJiYN Cj4gPiArCQlyYXdkZXYtPmRldl9vcHMtPmRldl9zdGFydCAmJg0KPiA+ICsJCXJhd2Rldi0+ZGV2 X29wcy0+ZGV2X3N0YXJ0KHJhd2RldikpDQo+ID4gKwkJZ290byBmcmVlX2RldjsNCj4gPiArCWlm IChwYXRoKSB7DQo+ID4gKwkJc3RybmNweShhZnVfcHJfY29uZi5ic19wYXRoLCBwYXRoLCBzdHJs ZW4ocGF0aCkpOw0KPiANCj4gc3RybmNweSB3aXRoIGRlbWFyY2F0aW9uIGJhc2VkIG9uIHNvdXJj ZSBpcyBub3QgcmlnaHQuIHN0cmxlbihwYXRoKSBjYW4gYmUNCj4gbGFyZ2VyIHRoYW4gYWZ1X3By X2NvbmYuYnNfcGF0aA0KDQpJIGhhdmUgY2hhbmdlZCB0byBkZXN0aW5hdGlvbiBzdHJpbmcgaW4g UEFUQ0ggdjUuDQoNCj4gSSBzYXcgc29tZSBjb21tZW50IGZyb20gR2FldGFuIGluIHByZXZpb3Vz IHZlcnNpb24sIGlmIEkgcmVjYWxsIGNvcnJlY3RseS4NCj4gDQo+ID4gKwkJaWYgKHJhd2Rldi0+ ZGV2X29wcy0+ZmlybXdhcmVfbG9hZCAmJg0KPiA+ICsJCQlyYXdkZXYtPmRldl9vcHMtPmZpcm13 YXJlX2xvYWQocmF3ZGV2LA0KPiA+ICsJCQkJCSZhZnVfcHJfY29uZikpew0KPiA+ICsJCQlwcmlu dGYoImZpcm13YXJlIGxvYWQgZXJyb3IgJWRcbiIsIHJldCk7DQo+ID4gKwkJCWdvdG8gZnJlZV9k ZXY7DQo+ID4gKwkJfQ0KPiA+ICsJCWFmdV9kZXYtPmlkLnV1aWRfbG93ICA9IGFmdV9wcl9jb25m LmFmdV9pZC51dWlkX2xvdzsNCj4gPiArCQlhZnVfZGV2LT5pZC51dWlkX2hpZ2ggPSBhZnVfcHJf Y29uZi5hZnVfaWQudXVpZF9oaWdoOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiBhZnVf ZGV2Ow0KPiA+ICsNCj4gPiArZnJlZV9kZXY6DQo+ID4gKwlmcmVlKGFmdV9kZXYpOw0KPiA+ICtl bmQ6DQo+ID4gKwlpZiAoa3ZsaXN0KQ0KPiA+ICsJCXJ0ZV9rdmFyZ3NfZnJlZShrdmxpc3QpOw0K PiA+ICsJaWYgKHBhdGgpDQo+ID4gKwkJZnJlZShwYXRoKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4g TlVMTDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogU2NhbiB0aGUgY29udGVudCBv ZiB0aGUgRlBHQSBidXMsIGFuZCB0aGUgZGV2aWNlcyBpbiB0aGUgZGV2aWNlcw0KPiA+ICsgKiBs aXN0DQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK3J0ZV9pZnBnYV9zY2FuKHZvaWQp DQo+ID4gK3sNCj4gDQo+IFsuLi5dDQo+IA0KPiA+ICsNCj4gPiArc3RhdGljIGludA0KPiA+ICtp ZnBnYV9wcm9iZV9hbGxfZHJpdmVycyhzdHJ1Y3QgcnRlX2FmdV9kZXZpY2UgKmFmdV9kZXYpIHsN Cj4gPiArCXN0cnVjdCBydGVfYWZ1X2RyaXZlciAqZHJ2ID0gTlVMTDsNCj4gPiArCWludCByYzsN Cj4gPiArDQo+ID4gKwlpZiAoYWZ1X2RldiA9PSBOVUxMKQ0KPiA+ICsJCXJldHVybiAtMTsNCj4g PiArDQo+ID4gKwkvKiBDaGVjayBpZiBhIGRyaXZlciBpcyBhbHJlYWR5IGxvYWRlZCAqLw0KPiA+ ICsJaWYgKGFmdV9kZXYtPmRyaXZlciAhPSBOVUxMKQ0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsN Cj4gPiArCVRBSUxRX0ZPUkVBQ0goZHJ2LCAmcnRlX2lmcGdhX2J1cy5kcml2ZXJfbGlzdCwgbmV4 dCkgew0KPiA+ICsJCXJjID0gaWZwZ2FfcHJvYmVfb25lX2RyaXZlcihkcnYsIGFmdV9kZXYpOw0K PiA+ICsJCWlmIChyYyA8IDApDQo+ID4gKwkJCS8qIG5lZ2F0aXZlIHZhbHVlIGlzIGFuIGVycm9y ICovDQo+ID4gKwkJCXJldHVybiAtMTsNCj4gPiArCQlpZiAocmMgPiAwKQ0KPiA+ICsJCQkvKiBw b3NpdGl2ZSB2YWx1ZSBtZWFucyBkcml2ZXIgZG9lc24ndCBzdXBwb3J0IGl0ICovDQo+ID4gKwkJ CWNvbnRpbnVlOw0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsJfQ0KPiA+ICsJcmV0dXJuIDE7DQo+ ID4gK30NCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIFNjYW4gdGhlIGNvbnRlbnQgb2YgdGhlIFBD SSBidXMsIGFuZCBjYWxsIHRoZSBwcm9iZSgpIGZ1bmN0aW9uIGZvcg0KPiANCj4gSSB0aGluayB5 b3UgYXJlIG5vdCBtb3Zpbmcgb24gUENJIGJ1cyBlbGVtZW50cy4gWW91IGFyZSBsb29waW5nIG9u DQo+IHJ0ZV9pZnBnYV9idXMuDQoNCkkgaGF2ZSBtb2RpZmllZCBhbGwgUENJIGJ1cyBlbGVtZW50 cyB0byBGUEdBIEJVUyBpbiBteSBQQVRDSCB2NS4NCiANCj4gPiArICogYWxsIHJlZ2lzdGVyZWQg ZHJpdmVycyB0aGF0IGhhdmUgYSBtYXRjaGluZyBlbnRyeSBpbiBpdHMgaWRfdGFibGUNCj4gPiAr ICogZm9yIGRpc2NvdmVyZWQgZGV2aWNlcy4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQNCj4g PiArcnRlX2lmcGdhX3Byb2JlKHZvaWQpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBydGVfaWZwZ2Ff ZGV2aWNlICppZnBnYV9kZXY7DQo+ID4gKwlzdHJ1Y3QgcnRlX2FmdV9kZXZpY2UgKmFmdV9kZXYg PSBOVUxMOw0KPiA+ICsJaW50IHJldCA9IDA7DQo+ID4gKw0KPiA+ICsJVEFJTFFfRk9SRUFDSChp ZnBnYV9kZXYsICZydGVfaWZwZ2FfYnVzLmlmcGdhX2xpc3QsIG5leHQpIHsNCj4gPiArCQlUQUlM UV9GT1JFQUNIKGFmdV9kZXYsICZpZnBnYV9kZXYtPmFmdV9saXN0LCBuZXh0KSB7DQo+ID4gKw0K PiA+ICsJCQlpZiAoYWZ1X2Rldi0+ZGV2aWNlLmRyaXZlcikNCj4gPiArCQkJCWNvbnRpbnVlOw0K PiA+ICsNCj4gPiArCQkJcmV0ID0gaWZwZ2FfcHJvYmVfYWxsX2RyaXZlcnMoYWZ1X2Rldik7DQo+ ID4gKwkJCWlmIChyZXQgPCAwKQ0KPiA+ICsJCQkJSUZQR0FfQlVTX0VSUigiZmFpbGVkIHRvIGlu aXRpYWxpemUgJXMNCj4gZGV2aWNlXG4iLA0KPiA+ICsJCQkJCXJ0ZV9pZnBnYV9kZXZpY2VfbmFt ZShhZnVfZGV2KSk7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0K PiA+ICt9DQo+ID4gKw0KPiANCj4gWy4uLl0NCj4gDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv YnVzL2lmcGdhL2lmcGdhX2NvbW1vbi5jDQo+ID4gYi9kcml2ZXJzL2J1cy9pZnBnYS9pZnBnYV9j b21tb24uYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uMTI0 ZmZkMg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL2J1cy9pZnBnYS9pZnBn YV9jb21tb24uYw0KPiA+IEBAIC0wLDAgKzEsMTQxIEBADQo+ID4gKy8qIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiArICogQ29weXJpZ2h0KGMpIDIwMTAtMjAxOCBJ bnRlbCBDb3Jwb3JhdGlvbiAgKi8NCj4gPiArDQo+IA0KPiBbLi4uXQ0KPiANCj4gPiArDQo+ID4g K30NCj4gPiAraW50IGlmcGdhX2dldF9iZGZfYXJnKGNvbnN0IGNoYXIgKmtleSBfX3J0ZV91bnVz ZWQsDQo+ID4gKwljb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqZXh0cmFfYXJncykgeyAjZGVmaW5l IE1BWF9QQVRIX0xFTiAxMDI0DQo+IA0KPiBJcyB0aGlzIG1heCBsZW4gb2YgYSBmaWxlIHBhdGgg b3IgYSBtYXggbGVuIG9mIHRoZSB2YWx1ZSBzdHJpbmcgKEJERikuDQo+IENhbiB5b3UgcmVuYW1l IHRoaXM/DQoNCkkgd2lsbCByZW5hbWUgaXQgdG8gSUZQR0FfTUFYX0JERl9MRU4gaW4gbXkgUEFU Q0ggdjUuDQoNCj4gSnVzdCBhIHRyaXZpYWwgY29tbWVudCwgdGhvdWdoLg0KPiANCj4gWy4uLl0N Cj4gDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYnVzL2lmcGdhL2lmcGdhX2xvZ3MuaA0KPiA+ IGIvZHJpdmVycy9idXMvaWZwZ2EvaWZwZ2FfbG9ncy5oIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGlu ZGV4DQo+ID4gMDAwMDAwMC4uODczZTBhNA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9k cml2ZXJzL2J1cy9pZnBnYS9pZnBnYV9sb2dzLmgNCj4gPiBAQCAtMCwwICsxLDMxIEBADQo+ID4g Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiArICogQ29weXJp Z2h0KGMpIDIwMTAtMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbiAgKi8NCj4gPiArDQo+ID4gKyNpZm5k ZWYgX0lGUEdBX0xPR1NfSF8NCj4gPiArI2RlZmluZSBfSUZQR0FfTE9HU19IXw0KPiA+ICsNCj4g PiArI2luY2x1ZGUgPHJ0ZV9sb2cuaD4NCj4gPiArDQo+ID4gK2V4dGVybiBpbnQgaWZwZ2FfYnVz X2xvZ3R5cGU7DQo+ID4gKw0KPiA+ICsjZGVmaW5lIElGUEdBX0xPRyhsZXZlbCwgZm10LCBhcmdz Li4uKSBcDQo+ID4gKwlydGVfbG9nKFJURV9MT0dfICMjIGxldmVsLCBpZnBnYV9idXNfbG9ndHlw ZSwgIiVzKCk6ICIgZm10ICJcbiIsIFwNCj4gPiArCQlfX2Z1bmNfXywgIyNhcmdzKQ0KPiANCj4g SSBkb24ndCBzZWUgbWFjcm8gYWJvdmUgYmVpbmcgdXNlZC4gV291bGQgeW91IGJlIHVzaW5nIHRo aXMgaW4gbGF0ZXIgcGF0Y2hlcz8NCj4gKEJ1dCwgaSB0aGluayB0aGV5IG1pZ2h0IGhhdmUgdGhl aXIgb3duIGxvZ2dpbmcgZGVmaW5pdGlvbnMpLg0KDQpZZXMsIHRoZXkgd2lsbCBiZSB1c2VkIGlu IGxhdGVyIHBhdGNoZXMuDQpGb3IgRlBHQSBCVVMgaXMgYSBjb21tb24gbW9kdWxlLCBzbyB3ZSBu ZWVkIHRvIHByb3ZpZGUgYWxsIG1hY3JvcyB3aWxsIGJlIHVzZWQuDQogDQo+ID4gKw0KPiA+ICsj ZGVmaW5lIElGUEdBX0JVU19MT0cobGV2ZWwsIGZtdCwgYXJncy4uLikgXA0KPiA+ICsJcnRlX2xv ZyhSVEVfTE9HXyAjIyBsZXZlbCwgaWZwZ2FfYnVzX2xvZ3R5cGUsICIlcygpOiAiIGZtdCAiXG4i LCBcDQo+ID4gKwkJX19mdW5jX18sICMjYXJncykNCj4gPiArDQo+ID4gKyNkZWZpbmUgSUZQR0Ff QlVTX0ZVTkNfVFJBQ0UoKSBJRlBHQV9CVVNfTE9HKERFQlVHLCAiPj4iKQ0KPiA+ICsNCj4gPiAr I2RlZmluZSBJRlBHQV9CVVNfREVCVUcoZm10LCBhcmdzLi4uKSBcDQo+ID4gKwlJRlBHQV9CVVNf TE9HKERFQlVHLCBmbXQsICMjIGFyZ3MpDQo+ID4gKyNkZWZpbmUgSUZQR0FfQlVTX0lORk8oZm10 LCBhcmdzLi4uKSBcDQo+ID4gKwlJRlBHQV9CVVNfTE9HKElORk8sIGZtdCwgIyMgYXJncykNCj4g PiArI2RlZmluZSBJRlBHQV9CVVNfRVJSKGZtdCwgYXJncy4uLikgXA0KPiA+ICsJSUZQR0FfQlVT X0xPRyhFUlIsIGZtdCwgIyMgYXJncykNCj4gPiArI2RlZmluZSBJRlBHQV9CVVNfV0FSTihmbXQs IGFyZ3MuLi4pIFwNCj4gPiArCUlGUEdBX0JVU19MT0coV0FSTklORywgZm10LCAjIyBhcmdzKQ0K PiA+ICsNCj4gPiArI2VuZGlmIC8qIF9JRlBHQV9CVVNfTE9HU19IXyAqLw0KPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2J1cy9pZnBnYS9ydGVfYnVzX2lmcGdhLmgNCj4gPiBiL2RyaXZlcnMvYnVz L2lmcGdhL3J0ZV9idXNfaWZwZ2EuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5k ZXggMDAwMDAwMC4uZTIyYWI0ZQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJz L2J1cy9pZnBnYS9ydGVfYnVzX2lmcGdhLmgNCj4gPiBAQCAtMCwwICsxLDE3NSBAQA0KPiA+ICsv KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gKyAqIENvcHlyaWdo dChjKSAyMDEwLTIwMTggSW50ZWwgQ29ycG9yYXRpb24gICovDQo+ID4gKw0KPiA+ICsjaWZuZGVm IF9SVEVfQlVTX0lGUEdBX0hfDQo+ID4gKyNkZWZpbmUgX1JURV9CVVNfSUZQR0FfSF8NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgKiBAZmlsZQ0KPiA+ICsgKg0KPiA+ICsgKiBSVEUgUENJIEJ1cyBJ bnRlcmZhY2UNCj4gDQo+IFRoaXMgaXMgbm90IGEgIlJURSBQQ0kgQnVzIEludGVyZmFjZSIgLSBJ dCBzaG91bGQgYmUgQUZVL0lGUEEgQnVzIGludGVyZmFjZSBmaWxlDQoNCkkgd2lsbCBtb2RpZnkg aXQgaW4gUEFUQ0ggdjUuDQogDQo+IFRoZXJlIGFyZSBzb21lIGNvbW1lbnRzIHdoaWNoIHdlcmUg Z2l2ZW4gaW4gZWFybHkgdmVyc2lvbnMuIExpa2UgdGhpcyBvbmUuDQo+IFBsZWFzZSBkbyByZXNw b25kIHRvIHRob3NlIGluZGl2aWR1YWxseSBpZiB5b3UgYXJlIG5vdCBmaXhpbmcgdGhlbS4NCj4g KEFsc28sIGl0IGlzIG5pY2UgdG8gZ2V0IGFja25vd2xlZGdtZW50IG9mIHRob3NlIHdoaWNoIGFy ZSBiZWluZyBmaXhlZCkuDQoNCkkgaGF2ZSBmaXggdGhvc2UgY29tbWVudHMgYW5kIEkgYWxzbyB3 aWxsIHJlcGx5IGl0IHRvIHRob3NlIGluZGl2aWR1YWxseS4NCiANCj4gPiArICovDQo+ID4gKw0K PiA+ICsjaWZkZWYgX19jcGx1c3BsdXMNCj4gPiArZXh0ZXJuICJDIiB7DQo+ID4gKyNlbmRpZg0K PiA+ICsNCj4gPiArI2luY2x1ZGUgPHJ0ZV9idXMuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9wY2ku aD4NCj4gPiArDQo+ID4gKy8qKiBOYW1lIG9mIEludGVsIEZQR0EgQnVzICovDQo+ID4gKyNkZWZp bmUgSUZQR0FfQlVTX05BTUUgaWZwZ2ENCj4gPiArDQo+ID4gKy8qIEZvcndhcmQgZGVjbGFyYXRp b25zICovDQo+ID4gK3N0cnVjdCBydGVfaWZwZ2FfZGV2aWNlOw0KPiA+ICtzdHJ1Y3QgcnRlX2Fm dV9kZXZpY2U7DQo+ID4gK3N0cnVjdCBydGVfYWZ1X2RyaXZlcjsNCj4gPiArDQo+ID4gKy8qKiBM aXN0IG9mIEludGVsIEZQR0EgZGV2aWNlcyAqLw0KPiA+ICtUQUlMUV9IRUFEKHJ0ZV9pZnBnYV9k ZXZpY2VfbGlzdCwgcnRlX2lmcGdhX2RldmljZSk7DQo+ID4gKy8qKiBMaXN0IG9mIEludGVsIEFG VSBkZXZpY2VzICovDQo+ID4gK1RBSUxRX0hFQUQocnRlX2FmdV9kZXZpY2VfbGlzdCwgcnRlX2Fm dV9kZXZpY2UpOw0KPiA+ICsvKiogTGlzdCBvZiBBRlUgZHJpdmVycyAqLw0KPiA+ICtUQUlMUV9I RUFEKHJ0ZV9hZnVfZHJpdmVyX2xpc3QsIHJ0ZV9hZnVfZHJpdmVyKTsNCj4gPiArDQo+ID4gKyNk ZWZpbmUgSUZQR0FfQlVTX0JJVFNUUkVBTV9QQVRIX01BWF9MRU4gMjU2DQo+ID4gKw0KPiA+ICtz dHJ1Y3QgcnRlX2FmdV91dWlkIHsNCj4gPiArCXVpbnQ2NF90IHV1aWRfbG93Ow0KPiA+ICsJdWlu dDY0X3QgdXVpZF9oaWdoOw0KPiA+ICt9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsNCj4gPiAr DQo+ID4gKyNkZWZpbmUgSUZQR0FfQlVTX0RFVl9QT1JUX01BWCA0DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICogQSBzdHJ1Y3R1cmUgZGVzY3JpYmluZyBhbiBJRCBmb3IgYSBBRlUgZHJpdmVyLiBF YWNoIGRyaXZlcg0KPiA+ICtwcm92aWRlcyBhDQo+ID4gKyAqIHRhYmxlIG9mIHRoZXNlIElEcyBm b3IgZWFjaCBkZXZpY2UgdGhhdCBpdCBzdXBwb3J0cy4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBy dGVfYWZ1X2lkIHsNCj4gPiArCXN0cnVjdCBydGVfcGNpX2FkZHIgcGNpX2FkZHI7DQo+ID4gKwl1 aW50NjRfdCB1dWlkX2xvdzsNCj4gPiArCXVpbnQ2NF90IHV1aWRfaGlnaDsNCj4gPiArCWludCAg ICAgIHBvcnQ7DQo+ID4gK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIEEgc3RydWN0dXJlIHByIGNvbmZpZ3VyYXRpb24gQUZVIGRyaXZlci4NCj4g PiArICovDQo+ID4gKw0KPiA+ICtzdHJ1Y3QgcnRlX2FmdV9wcl9jb25mIHsNCj4gPiArCXN0cnVj dCBydGVfYWZ1X2lkIGFmdV9pZDsNCj4gPiArCWludCBwcl9lbmFibGU7DQo+ID4gKwljaGFyCQli c19wYXRoW0lGUEdBX0JVU19CSVRTVFJFQU1fUEFUSF9NQVhfTEVOXTsNCj4gICAgICAgICAgICAg IF5eXl5eXl5eXl5eDQo+IFNvbWUgc3RyYXkgaW5kZW50YXRpb24gaXNzdWUsIGl0IHNlZW1zDQoN CkRvIHlvdSBtZWFucyB0byBjaGFuZ2UgaXQgIHRvOg0KY2hhciBic19wYXRoW0lGUEdBX0JVU19C SVRTVFJFQU1fUEFUSF9NQVhfTEVOXTs/DQpJZiBzbyBJIGhhdmUgZml4ZWQgaXQgaW4gbXkgUEFU Q0ggdjUuDQoNCj4gPiArfTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgQUZVX1BSSV9TVFJfU0laRSAo UENJX1BSSV9TVFJfU0laRSArIDgpDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogQSBzdHJ1Y3R1 cmUgZGVzY3JpYmluZyBhIGZwZ2EgZGV2aWNlLg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IHJ0ZV9p ZnBnYV9kZXZpY2Ugew0KPiA+ICsJVEFJTFFfRU5UUlkocnRlX2lmcGdhX2RldmljZSkgbmV4dDsg ICAgICAgLyoqPCBOZXh0IGluIGRldmljZSBsaXN0LiAqLw0KPiA+ICsJc3RydWN0IHJ0ZV9wY2lf YWRkciBwY2lfYWRkcjsNCj4gPiArCXN0cnVjdCBydGVfcmF3ZGV2ICpyZGV2Ow0KPiA+ICsJc3Ry dWN0IHJ0ZV9hZnVfZGV2aWNlX2xpc3QgYWZ1X2xpc3Q7ICAvKio8IExpc3Qgb2YgQUZVIGRldmlj ZXMgKi8gfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBBIHN0cnVjdHVyZSBkZXNjcmliaW5n IGEgQUZVIGRldmljZS4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBydGVfYWZ1X2RldmljZSB7DQo+ ID4gKwlUQUlMUV9FTlRSWShydGVfYWZ1X2RldmljZSkgbmV4dDsgICAgICAgLyoqPCBOZXh0IGlu IGRldmljZSBsaXN0LiAqLw0KPiA+ICsJc3RydWN0IHJ0ZV9kZXZpY2UgZGV2aWNlOyAgICAgICAg ICAgICAgIC8qKjwgSW5oZXJpdCBjb3JlIGRldmljZSAqLw0KPiA+ICsJc3RydWN0IHJ0ZV9yYXdk ZXYgKnJhd2RldjsgICAgLyoqPCBQb2ludCBSYXdkZXYgKi8NCj4gPiArCXN0cnVjdCBydGVfaWZw Z2FfZGV2aWNlICppZnBnYV9kZXY7ICAgIC8qKjwgUG9pbnQgaWZwZ2EgZGV2aWNlICovDQo+ID4g KwlzdHJ1Y3QgcnRlX2FmdV9pZCBpZDsgICAgICAgICAgICAgICAgICAgLyoqPCBBRlUgaWQgd2l0 aGluIEZQR0EuICovDQo+ID4gKwl1aW50MzJfdCBudW1fcmVnaW9uOyAgIC8qKjwgbnVtYmVyIG9m IHJlZ2lvbnMgZm91bmQgKi8NCj4gPiArCXN0cnVjdCBydGVfbWVtX3Jlc291cmNlIG1lbV9yZXNv dXJjZVtQQ0lfTUFYX1JFU09VUkNFXTsNCj4gPiArCQkJCQkJLyoqPCBQQ0kgTWVtb3J5IFJlc291 cmNlDQo+ICovDQo+ID4gKwlzdHJ1Y3QgcnRlX2ludHJfaGFuZGxlIGludHJfaGFuZGxlOyAgICAg LyoqPCBJbnRlcnJ1cHQgaGFuZGxlICovDQo+ID4gKwlzdHJ1Y3QgcnRlX2FmdV9kcml2ZXIgKmRy aXZlcjsgICAgICAgICAgLyoqPCBBc3NvY2lhdGVkIGRyaXZlciAqLw0KPiA+ICsJY2hhciBwYXRo W0lGUEdBX0JVU19CSVRTVFJFQU1fUEFUSF9NQVhfTEVOXTsNCj4gPiArfSBfX2F0dHJpYnV0ZV9f ICgocGFja2VkKSk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogQGludGVybmFsDQo+ID4gKyAq IEhlbHBlciBtYWNybyBmb3IgZHJpdmVycyB0aGF0IG5lZWQgdG8gY29udmVydCB0byBzdHJ1Y3Qg cnRlX2FmdV9kZXZpY2UuDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIFJURV9ERVZfVE9fQUZVKHB0 cikgXA0KPiA+ICsJY29udGFpbmVyX29mKHB0ciwgc3RydWN0IHJ0ZV9hZnVfZGV2aWNlLCBkZXZp Y2UpDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogSW5pdGlhbGlzYXRpb24gZnVuY3Rpb24gZm9y IHRoZSBkcml2ZXIgY2FsbGVkIGR1cmluZyBQQ0kgcHJvYmluZy4NCj4gDQo+IFBDSSBQcm9iaW5n IHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGRvbmUgdGhyb3VnaCB0aGUgUENJIGJ1cy4gSSB0aGlu ayB0aGlzIGlzDQo+IHByb2Jpbmcgb2YgdGhlIEFGVSBkZXZpY2VzIChiYXNlZCBvbiB0aGUgUENJ IGFscmVhZHkgcHJvYmVkKS4NCg0KcnRlX2lmcGdhX3BsdWcoKS9ydGVfaWZwZ2FfdW5wbHVnKCkg d2lsbCB1c2UgdGhpcyBtYWNyby4NCiANCj4gPiArICovDQo+ID4gK3R5cGVkZWYgaW50IChhZnVf cHJvYmVfdCkoc3RydWN0IHJ0ZV9hZnVfZGV2aWNlICopOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAqIFVuaW5pdGlhbGlzYXRpb24gZnVuY3Rpb24gZm9yIHRoZSBkcml2ZXIgY2FsbGVkIGR1cmlu ZyBob3RwbHVnZ2luZy4NCj4gPiArICovDQo+ID4gK3R5cGVkZWYgaW50IChhZnVfcmVtb3ZlX3Qp KHN0cnVjdCBydGVfYWZ1X2RldmljZSAqKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBBIHN0 cnVjdHVyZSBkZXNjcmliaW5nIGEgUENJIGRldmljZS4NCj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF5eXl4NCj4gU3RydWN0dXJlIGRlc2NyaWJpbmcgYW4gQUZVIGRldmljZS4NCg0K WWVzLCBpdCBzaG91bGQgYmUgQUZVIGRldmljZSwgYW5kIEkgaGF2ZSBmaXhlZCBpdCBpbiBteSBQ QVRDSCB2NS4NCg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IHJ0ZV9hZnVfZHJpdmVyIHsNCj4gPiAr CVRBSUxRX0VOVFJZKHJ0ZV9hZnVfZHJpdmVyKSBuZXh0OyAgICAgICAvKio8IE5leHQgYWZ1IGRy aXZlci4gKi8NCj4gPiArCXN0cnVjdCBydGVfZHJpdmVyIGRyaXZlcjsgICAgICAgICAgICAgICAv Kio8IEluaGVyaXQgY29yZSBkcml2ZXIuICovDQo+ID4gKwlhZnVfcHJvYmVfdCAqcHJvYmU7ICAg ICAgICAgICAgICAgICAgICAgLyoqPCBEZXZpY2UgUHJvYmUgZnVuY3Rpb24uICovDQo+ID4gKwlh ZnVfcmVtb3ZlX3QgKnJlbW92ZTsgICAgICAgICAgICAgICAgICAgLyoqPCBEZXZpY2UgUmVtb3Zl IGZ1bmN0aW9uLiAqLw0KPiA+ICsJY29uc3Qgc3RydWN0IHJ0ZV9hZnVfdXVpZCAqaWRfdGFibGU7 ICAgIC8qKjwgQUZVIHV1aWQgd2l0aGluIEZQR0EuICovDQo+ID4gKwl1aW50MzJfdCBkcnZfZmxh Z3M7ICAgICAgICAgLyoqPCBGbGFncyBjb250b2xsaW5nIGhhbmRsaW5nIG9mIGRldmljZS4gKi8N Cj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBTdHJ1Y3R1cmUgZGVzY3JpYmluZyB0 aGUgSW50ZWwgRlBHQSBidXMgICovIHN0cnVjdCBydGVfaWZwZ2FfYnVzIHsNCj4gPiArCXN0cnVj dCBydGVfYnVzIGJ1czsgICAgICAgICAgICAgICAvKio8IEluaGVyaXQgdGhlIGdlbmVyaWMgY2xh c3MgKi8NCj4gPiArCXN0cnVjdCBydGVfaWZwZ2FfZGV2aWNlX2xpc3QgaWZwZ2FfbGlzdDsgIC8q KjwgTGlzdCBvZiBGUEdBIGRldmljZXMgKi8NCj4gPiArCXN0cnVjdCBydGVfYWZ1X2RyaXZlcl9s aXN0IGRyaXZlcl9saXN0OyAgLyoqPCBMaXN0IG9mIEZQR0EgZHJpdmVycw0KPiA+ICsqLyB9Ow0K PiA+ICsNCj4gPiArc3RhdGljIGlubGluZSBjb25zdCBjaGFyICoNCj4gPiArcnRlX2lmcGdhX2Rl dmljZV9uYW1lKGNvbnN0IHN0cnVjdCBydGVfYWZ1X2RldmljZSAqYWZ1KSB7DQo+ID4gKwlpZiAo YWZ1ICYmIGFmdS0+ZGV2aWNlLm5hbWUpDQo+ID4gKwkJcmV0dXJuIGFmdS0+ZGV2aWNlLm5hbWU7 DQo+ID4gKwlyZXR1cm4gTlVMTDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArZXh0ZXJuIHN0cnVjdCBy dGVfaWZwZ2FfYnVzIHJ0ZV9pZnBnYV9idXM7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogUmVn aXN0ZXIgYSBpZnBnYSBhZnUgZGV2aWNlIGRyaXZlci4NCj4gPiArICoNCj4gPiArICogQHBhcmFt IGRyaXZlcg0KPiA+ICsgKiAgIEEgcG9pbnRlciB0byBhIHJ0ZV9hZnVfZHJpdmVyIHN0cnVjdHVy ZSBkZXNjcmliaW5nIHRoZSBkcml2ZXINCj4gPiArICogICB0byBiZSByZWdpc3RlcmVkLg0KPiA+ ICsgKi8NCj4gPiArdm9pZCBydGVfaWZwZ2FfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBydGVfYWZ1 X2RyaXZlciAqZHJpdmVyKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBVbnJlZ2lzdGVyIGEg aWZwZ2EgYWZ1IGRldmljZSBkcml2ZXIuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBkcml2ZXIN Cj4gPiArICogICBBIHBvaW50ZXIgdG8gYSBydGVfYWZ1X2RyaXZlciBzdHJ1Y3R1cmUgZGVzY3Jp YmluZyB0aGUgZHJpdmVyDQo+ID4gKyAqICAgdG8gYmUgdW5yZWdpc3RlcmVkLg0KPiA+ICsgKi8N Cj4gPiArdm9pZCBydGVfaWZwZ2FfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IHJ0ZV9hZnVfZHJp dmVyICpkcml2ZXIpOw0KPiA+ICsNCj4gPiArI2RlZmluZSBSVEVfUE1EX1JFR0lTVEVSX0FGVShu bSwgYWZ1ZHJ2KVwgUlRFX0lOSVQoYWZ1ZHJ2aW5pdGZuXw0KPiA+ICsjI2FmdWRydik7XCBzdGF0 aWMgY29uc3QgY2hhciAqYWZ1ZHJ2aW5pdF8gIyMgbm0gIyMgX2FsaWFzO1wgc3RhdGljDQo+ID4g K3ZvaWQgYWZ1ZHJ2aW5pdGZuXyAjI2FmdWRydih2b2lkKVwge1wNCj4gPiArCShhZnVkcnYpLmRy aXZlci5uYW1lID0gUlRFX1NUUihubSk7XA0KPiA+ICsJKGFmdWRydikuZHJpdmVyLmFsaWFzID0g YWZ1ZHJ2aW5pdF8gIyMgbm0gIyMgX2FsaWFzO1wNCj4gPiArCXJ0ZV9pZnBnYV9kcml2ZXJfcmVn aXN0ZXIoJmFmdWRydik7XA0KPiA+ICt9IFwNCj4gPiArUlRFX1BNRF9FWFBPUlRfTkFNRShubSwg X19DT1VOVEVSX18pDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJURV9QTURfUkVHSVNURVJfQUZVX0FM SUFTKG5tLCBhbGlhcylcIHN0YXRpYyBjb25zdCBjaGFyDQo+ID4gKyphZnVkcnZpbml0XyAjIyBu bSAjIyBfYWxpYXMgPSBSVEVfU1RSKGFsaWFzKQ0KPiA+ICsNCj4gPiArI2VuZGlmIC8qIF9SVEVf QlVTX0lGUEdBX0hfICovDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYnVzL2lmcGdhL3J0ZV9i dXNfaWZwZ2FfdmVyc2lvbi5tYXANCj4gPiBiL2RyaXZlcnMvYnVzL2lmcGdhL3J0ZV9idXNfaWZw Z2FfdmVyc2lvbi5tYXANCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAw MDAuLjRlZGM5YzANCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9idXMvaWZw Z2EvcnRlX2J1c19pZnBnYV92ZXJzaW9uLm1hcA0KPiA+IEBAIC0wLDAgKzEsOCBAQA0KPiA+ICtE UERLXzE4LjA1IHsNCj4gPiArCWdsb2JhbDoNCj4gPiArDQo+ID4gKyAgICBydGVfaWZwZ2FfZHJp dmVyX3JlZ2lzdGVyOw0KPiA+ICsgICAgcnRlX2lmcGdhX2RyaXZlcl91bnJlZ2lzdGVyOw0KPiAN Cj4gU2hvdWxkIGJlIHRhYiBpbmRlbnRlZA0KDQpZZXMsIEkgd2lsbCBmaXggdGhlbS4NCg0KPiA+ ICsNCj4gPiArCWxvY2FsOiAqOw0KPiA+ICt9Ow0KPiANCj4gWy4uLl0NCj4gDQo+IE9uZSBzdWdn ZXN0aW9uOg0KPiANCj4gSSB0aGluayBhIGxvdCBvZiBjb21tZW50cyB3ZXJlIHByb3ZpZGVkIGJ5 IEdhZXRhbiBpbiB0aGUgcHJldmlvdXMgdmVyc2lvbi4gSQ0KPiBzZWUgc29tZSB0aGF0IHNvbWUg b2YgdGhlbSBhcmUgc3RpbGwgbm90IGZpeGVkIGluIHRoaXMgdmVyc2lvbi4NCj4gDQo+IEkgc3Vn Z2VzdCB5b3UgaW5kaXZpZHVhbGx5IHJlcGx5IHRvIGhpcyBjb21tZW50cyBpZiB5b3UgYXJlIG5v dCBnb2luZyB0byBmaXgsDQo+IHdpdGggcmVhc29uLiBIZSBwdXQgcXVpdGUgYW4gZWZmb3J0IHRv IGdvIHRocm91Z2ggeW91ciBwYXRjaGVzLg0KPiANCj4gVGhhdCB3b3VsZCBoZWxwIHlvdSB0cmFj ayBjb21tZW50cyBhcyB3ZWxsIGFzIG5vdCBkaXNjb3VudCBhIHJldmlld2Vycw0KPiBlZmZvcnQu DQoNCk9LLCBJIHdpbGwgaW5kaXZpZHVhbGx5IHJlcGx5IHRvIEdhZXRhbidzIGNvbW1lbnRzLg0K DQo+IC0NCj4gU2hyZXlhbnNoDQo=