From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 414155F1C for ; Wed, 7 Mar 2018 05:10:06 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Mar 2018 20:10:05 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.47,434,1515484800"; d="scan'208";a="22618513" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by orsmga007.jf.intel.com with ESMTP; 06 Mar 2018 20:10:05 -0800 Received: from fmsmsx119.amr.corp.intel.com (10.18.124.207) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 6 Mar 2018 20:10:05 -0800 Received: from cdsmsx151.ccr.corp.intel.com (172.17.4.38) by FMSMSX119.amr.corp.intel.com (10.18.124.207) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 6 Mar 2018 20:10:04 -0800 Received: from cdsmsx104.ccr.corp.intel.com ([169.254.4.111]) by CDSMSX151.ccr.corp.intel.com ([169.254.3.93]) with mapi id 14.03.0319.002; Wed, 7 Mar 2018 12:10:01 +0800 From: "Zhang, Tianfei" To: Shreyansh Jain , "Xu, Rosen" CC: "dev@dpdk.org" , "Doherty, Declan" Thread-Topic: [dpdk-dev] [RFC 4/4] drivers/raw/ifpga_rawdev: Rawdev for Intel FPGA Device, it's a PCI Driver of FPGA Device Manager Thread-Index: AQHTtOx2tjxn6mycE0+i/GtKg/Yc7qPCPi0AgAHp18A= Date: Wed, 7 Mar 2018 04:10:00 +0000 Message-ID: References: <1520300638-134954-1-git-send-email-rosen.xu@intel.com> <1520300638-134954-5-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: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZDg2ZjNmOTMtOTA2OC00NDFiLWFiZWMtNjA3ZDI4M2NiOThkIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiJPeUN6V25oQmxxYWR2djJXdVhia3RiekhnMnAxQnVSN2dIekR1OVRtU3NPYXZoXC85V3ZNdFM3enNNc1luanNUZSJ9 x-ctpclassification: CTP_NT x-originating-ip: [172.17.6.105] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [RFC 4/4] drivers/raw/ifpga_rawdev: Rawdev for Intel FPGA Device, it's a PCI Driver of FPGA Device Manager 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, 07 Mar 2018 04:10:08 -0000 DQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBTaHJleWFuc2ggSmFpbiBbbWFp bHRvOnNocmV5YW5zaC5qYWluQG54cC5jb21dIA0KU2VudDogVHVlc2RheSwgTWFyY2ggNiwgMjAx OCAyOjQ4IFBNDQpUbzogWHUsIFJvc2VuIDxyb3Nlbi54dUBpbnRlbC5jb20+DQpDYzogZGV2QGRw ZGsub3JnOyBEb2hlcnR5LCBEZWNsYW4gPGRlY2xhbi5kb2hlcnR5QGludGVsLmNvbT47IFpoYW5n LCBUaWFuZmVpIDx0aWFuZmVpLnpoYW5nQGludGVsLmNvbT4NClN1YmplY3Q6IFJlOiBbZHBkay1k ZXZdIFtSRkMgNC80XSBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXY6IFJhd2RldiBmb3IgSW50ZWwg RlBHQSBEZXZpY2UsIGl0J3MgYSBQQ0kgRHJpdmVyIG9mIEZQR0EgRGV2aWNlIE1hbmFnZXINCg0K T24gVHVlLCBNYXIgNiwgMjAxOCBhdCA3OjEzIEFNLCBSb3NlbiBYdSA8cm9zZW4ueHVAaW50ZWwu Y29tPiB3cm90ZToNCj4gU2lnbmVkLW9mZi1ieTogUm9zZW4gWHUgPHJvc2VuLnh1QGludGVsLmNv bT4NCj4gLS0tDQo+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvTWFrZWZpbGUgICAgICAgICAg ICAgICAgICB8ICA1OSArKysrDQo+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvaWZwZ2FfcmF3 ZGV2LmMgICAgICAgICAgICB8IDM0MyArKysrKysrKysrKysrKysrKysrKysNCj4gIGRyaXZlcnMv cmF3L2lmcGdhX3Jhd2Rldi9pZnBnYV9yYXdkZXYuaCAgICAgICAgICAgIHwgMTA5ICsrKysrKysN Cj4gIGRyaXZlcnMvcmF3L2lmcGdhX3Jhd2Rldi9pZnBnYV9yYXdkZXZfZXhhbXBsZS5jICAgIHwg MTIxICsrKysrKysrDQoNCldoZW4gcmF3ZGV2IHNrZWxldG9uIGRyaXZlciB3YXMgaW50ZWdyYXRl ZCwgVGhvbWFzIHJhaXNlZCB0aGlzIHBvaW50IG9mIG5hbWluZyAnc2tlbGV0b25fcmF3ZGV2JyBy YXRoZXIgdGhhbiBqdXN0ICdza2VsZXRvbicuDQpTbywgcmF0aGVyIHRoYW4gJ2lmcGdhX3Jhd2Rl dicgcmF0aGVyIHRoYW4gJ2lmcGdhJy4NCkF0IHRoYXQgdGltZSBJIHRob3VnaHQgd2UgY291bGQg dXNlIDxkcml2ZXJ0eXBlX2RyaXZlcnN1YnR5cGU+IGFzIG1vZGVsLiBCdXQsIGZyYW5rbHksIHRv IG1lIGl0IHNlZW1zIGEgYmFkIGNob2ljZSBub3cuIEV4dHJhICdfcmF3ZGV2Jw0KZG9lc24ndCBz ZXJ2ZSBhbnkgcHVycG9zZSBoZXJlLg0KDQpTbywgZmVlbCBmcmVlIHRvIGNoYW5nZSB5b3VyIG5h bWluZyB0byBhIG1vcmUgYXBwcm9wcmlhdGUgImRyaXZlcnMvcmF3L2lmcGdhLyIgb3IgImRyaXZl cnMvcmF3L2lmcGdhX3NhbXBsZSIgZXRjLg0KDQpQcm9iYWJseSBJIHRvbyBjYW4gY2hhbmdlIHRo ZSBza2VsZXRvbl9yYXdkZXYgdG8gc2tlbGV0b24uDQoNCj4gIC4uLi9pZnBnYV9yYXdkZXYvcnRl X3BtZF9pZnBnYV9yYXdkZXZfdmVyc2lvbi5tYXAgIHwgICA0ICsNCj4gIDUgZmlsZXMgY2hhbmdl ZCwgNjM2IGluc2VydGlvbnMoKykNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3Jhdy9p ZnBnYV9yYXdkZXYvTWFrZWZpbGUgIGNyZWF0ZSBtb2RlIA0KPiAxMDA2NDQgZHJpdmVycy9yYXcv aWZwZ2FfcmF3ZGV2L2lmcGdhX3Jhd2Rldi5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9yYXcvaWZwZ2FfcmF3ZGV2L2lmcGdhX3Jhd2Rldi5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2lmcGdhX3Jhd2Rldl9leGFtcGxlLmMNCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCANCj4gZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L3J0ZV9wbWRfaWZwZ2Ff cmF3ZGV2X3ZlcnNpb24ubWFwDQo+DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Jhdy9pZnBnYV9y YXdkZXYvTWFrZWZpbGUgDQo+IGIvZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L01ha2VmaWxlDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLjMxNjZmZTINCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvTWFrZWZpbGUNCj4gQEAg LTAsMCArMSw1OSBAQA0KPiArIyAgIEJTRCBMSUNFTlNFDQo+ICsjDQo+ICsjICAgQ29weXJpZ2h0 KGMpIDIwMTAtMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4g KyMgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0KPiArIyAgIFJlZGlzdHJpYnV0aW9uIGFu ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPiArIyAg IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9ucw0KPiArIyAgIGFyZSBtZXQ6DQo+ICsjDQo+ICsjICAgICAqIFJlZGlzdHJpYnV0 aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsj ICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lci4NCj4gKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11 c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gKyMgICAgICAgbm90aWNlLCB0aGlz IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluDQo+ICsj ICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg d2l0aCB0aGUNCj4gKyMgICAgICAgZGlzdHJpYnV0aW9uLg0KPiArIyAgICAgKiBOZWl0aGVyIHRo ZSBuYW1lIG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzDQo+ICsjICAg ICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj dHMgZGVyaXZlZA0KPiArIyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQo+ICsjDQo+ICsjICAgVEhJUyBTT0ZUV0FSRSBJ UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KPiAr IyAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE SU5HLCBCVVQgTk9UDQo+ICsjICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQo+ICsjICAgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCj4g KyMgICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ UkVDVCwgSU5DSURFTlRBTCwNCj4gKyMgICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQo+ICsjICAgTElNSVRFRCBUTywgUFJP Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQo+ ICsjICAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS IENBVVNFRCBBTkQgT04gQU5ZDQo+ICsjICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KPiArIyAgIChJTkNMVURJTkcg TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT RQ0KPiArIyAgIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC SUxJVFkgT0YgU1VDSCBEQU1BR0UuDQo+ICsNCg0KU1BEWCBpZGVudGlmaWVyIGluIHBsYWNlIG9m IEJTRCBib2lsZXItcGxhdGUuDQoNCj4gK2luY2x1ZGUgJChSVEVfU0RLKS9tay9ydGUudmFycy5t aw0KPiArDQo+ICsjDQo+ICsjIGxpYnJhcnkgbmFtZQ0KPiArIw0KPiArTElCID0gbGlicnRlX3Bt ZF9pZnBnYV9yYXdkZXYuYQ0KPiArDQo+ICtDRkxBR1MgKz0gLURBTExPV19FWFBFUklNRU5UQUxf QVBJDQo+ICtDRkxBR1MgKz0gLU8zDQo+ICtDRkxBR1MgKz0gJChXRVJST1JfRkxBR1MpDQo+ICtD RkxBR1MgKz0gLUkkKFJURV9TREspL2RyaXZlcnMvYnVzL2lmcGdhIENGTEFHUyArPSANCj4gKy1J JChSVEVfU0RLKS9kcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYNCj4gK0xETElCUyArPSAtbHJ0ZV9l YWwNCj4gK0xETElCUyArPSAtbHJ0ZV9yYXdkZXYNCj4gK0xETElCUyArPSAtbHJ0ZV9idXNfdmRl dg0KPiArTERMSUJTICs9IC1scnRlX2t2YXJncw0KPiArDQo+ICtFWFBPUlRfTUFQIDo9IHJ0ZV9w bWRfaWZwZ2FfcmF3ZGV2X3ZlcnNpb24ubWFwDQo+ICsNCj4gK0xJQkFCSVZFUiA6PSAxDQo+ICsN Cj4gKyMNCj4gKyMgYWxsIHNvdXJjZSBhcmUgc3RvcmVkIGluIFNSQ1MteQ0KPiArIw0KPiArU1JD Uy0kKENPTkZJR19SVEVfTElCUlRFX1BNRF9TS0VMRVRPTl9SQVdERVYpICs9IGlmcGdhX3Jhd2Rl di5jDQo+ICtTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVfUE1EX1NLRUxFVE9OX1JBV0RFVikgKz0g DQo+ICtpZnBnYV9yYXdkZXZfZXhhbXBsZS5jDQoNClRoaXMgaXMgYSBjb3B5LXBhc3RlIGlzc3Vl IC0gQ09ORklHX1JURV9MSUJSVEVfUE1EX1NLRUxFVE9OX1JBV0RFVg0KDQo+ICsNCj4gK2luY2x1 ZGUgJChSVEVfU0RLKS9tay9ydGUubGliLm1rDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Jhdy9p ZnBnYV9yYXdkZXYvaWZwZ2FfcmF3ZGV2LmMgDQo+IGIvZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2 L2lmcGdhX3Jhd2Rldi5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAu LjYwNDY3MTENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL3Jhdy9pZnBnYV9yYXdk ZXYvaWZwZ2FfcmF3ZGV2LmMNCj4gQEAgLTAsMCArMSwzNDMgQEANCj4gKy8qLQ0KPiArICogICBC U0QgTElDRU5TRQ0KPiArICoNCj4gKyAqICAgQ29weXJpZ2h0IDIwMTYgTlhQLg0KDQo6KSAtIHNo b3VsZCBiZSBJbnRlbC4NCkV2ZW4gYmV0dGVyIC0gU1BEWA0KDQo+ICsgKg0KPiArICogICBSZWRp c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp dGhvdXQNCj4gKyAqICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg dGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQo+ICsgKiAgIGFyZSBtZXQ6DQo+ICsgKg0KPiArICog ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92 ZSBjb3B5cmlnaHQNCj4gKyAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsg KiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIgaW4NCj4gKyAqICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gKyAqICAgICAgIGRpc3RyaWJ1dGlvbi4N Cj4gKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTlhQIG5vciB0aGUgbmFtZXMgb2YgaXRz DQo+ICsgKiAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t b3RlIHByb2R1Y3RzIGRlcml2ZWQNCj4gKyAqICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gKyAqDQo+ICsgKiAgIFRI SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U UklCVVRPUlMNCj4gKyAqICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCj4gKyAqICAgTElNSVRFRCBUTywgVEhFIElNUExJ RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQo+ICsgKiAg IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU SEUgQ09QWVJJR0hUDQo+ICsgKiAgIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KPiArICogICBTUEVDSUFMLCBFWEVN UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQo+ICsg KiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD RVM7IExPU1MgT0YgVVNFLA0KPiArICogICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkNCj4gKyAqICAgVEhFT1JZIE9G IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S VA0KPiArICogICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCj4gKyAqICAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCj4gKyAqLw0KPiAr I2luY2x1ZGUgPHN0cmluZy5oPg0KPiArI2luY2x1ZGUgPGRpcmVudC5oPg0KPiArI2luY2x1ZGUg PHN5cy9zdGF0Lmg+DQo+ICsjaW5jbHVkZSA8dW5pc3RkLmg+DQo+ICsjaW5jbHVkZSA8c3lzL3R5 cGVzLmg+DQo+ICsjaW5jbHVkZSA8ZmNudGwuaD4NCj4gKyNpbmNsdWRlIDxydGVfbG9nLmg+DQo+ ICsjaW5jbHVkZSA8cnRlX2J1cy5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9lYWxfbWVtY29uZmlnLmg+ DQo+ICsjaW5jbHVkZSA8cnRlX21hbGxvYy5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9kZXZhcmdzLmg+ DQo+ICsjaW5jbHVkZSA8cnRlX21lbWNweS5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9ldGhkZXYuaD4N Cj4gKyNpbmNsdWRlIDxydGVfcGNpLmg+DQo+ICsjaW5jbHVkZSA8cnRlX2J1c19wY2kuaD4NCj4g KyNpbmNsdWRlIDxydGVfa3ZhcmdzLmg+DQo+ICsjaW5jbHVkZSA8cnRlX2FsYXJtLmg+DQo+ICsN Cj4gKyNpbmNsdWRlIDxydGVfZXJybm8uaD4NCj4gKyNpbmNsdWRlIDxydGVfcGVyX2xjb3JlLmg+ DQo+ICsjaW5jbHVkZSA8cnRlX21lbW9yeS5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9tZW16b25lLmg+ DQo+ICsjaW5jbHVkZSA8cnRlX2VhbC5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9jb21tb24uaD4NCj4g Kw0KPiArI2luY2x1ZGUgInJ0ZV9yYXdkZXYuaCINCj4gKyNpbmNsdWRlICJydGVfcmF3ZGV2X3Bt ZC5oIg0KPiArI2luY2x1ZGUgInJ0ZV9idXNfaWZwZ2EuaCINCj4gKyNpbmNsdWRlICJpZnBnYV9y YXdkZXYuaCINCj4gKw0KPiAraW50IGlmcGdhX3Jhd2Rldl9sb2d0eXBlOw0KPiArDQo+ICsjZGVm aW5lIFBDSV9WRU5ET1JfSURfSU5URUwgICAgICAgICAgMHg4MDg2DQo+ICsvKiBQQ0kgRGV2aWNl IElEICovDQo+ICsjZGVmaW5lIFBDSWVfREVWSUNFX0lEX1JDaUVQMF9NQ1AgICAgMHhCQ0JEDQo+ ICsjZGVmaW5lIFBDSWVfREVWSUNFX0lEX1JDaUVQMF9TS1hfUCAgMHhCQ0MwDQo+ICsjZGVmaW5l IFBDSWVfREVWSUNFX0lEX1JDaUVQMF9EQ1AgICAgMHgwOUM0DQo+ICsvKiBWRiBEZXZpY2UgKi8N Cj4gKyNkZWZpbmUgUENJZV9ERVZJQ0VfSURfVkZfTUNQICAgICAgICAweEJDQkYNCj4gKyNkZWZp bmUgUENJZV9ERVZJQ0VfSURfVkZfU0tYX1AgICAgICAweEJDQzENCj4gKyNkZWZpbmUgUENJZV9E RVZJQ0VfSURfVkZfRENQICAgICAgICAweDA5QzUNCj4gKyNkZWZpbmUgUlRFX01BWF9SQVdfREVW SUNFICAgICAgICAgICAxMA0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJ0ZV9wY2lfaWQg cGNpX2lmcGdhX21hcFtdID0gew0KPiArICAgICAgIHsgUlRFX1BDSV9ERVZJQ0UoUENJX1ZFTkRP Ul9JRF9JTlRFTCwgUENJZV9ERVZJQ0VfSURfUkNpRVAwX01DUCkgfSwNCj4gKyAgICAgICB7IFJU RV9QQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfSU5URUwsIFBDSWVfREVWSUNFX0lEX1ZGX01DUCkg fSwNCj4gKyAgICAgICB7IFJURV9QQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfSU5URUwsIFBDSWVf REVWSUNFX0lEX1JDaUVQMF9TS1hfUCkgfSwNCj4gKyAgICAgICB7IFJURV9QQ0lfREVWSUNFKFBD SV9WRU5ET1JfSURfSU5URUwsIFBDSWVfREVWSUNFX0lEX1ZGX1NLWF9QKSB9LA0KPiArICAgICAg IHsgUlRFX1BDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9JTlRFTCwgUENJZV9ERVZJQ0VfSURfUkNp RVAwX0RDUCkgfSwNCj4gKyAgICAgICB7IFJURV9QQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfSU5U RUwsIFBDSWVfREVWSUNFX0lEX1ZGX0RDUCkgfSwNCj4gKyAgICAgICB7IC52ZW5kb3JfaWQgPSAw LCAvKiBzZW50aW5lbCAqLyB9LCB9Ow0KPiArDQo+ICtzdGF0aWMgdm9pZCBpZnBnYV9yYXdkZXZf aW5mb19nZXQoc3RydWN0IHJ0ZV9yYXdkZXYgKmRldiwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJ0ZV9yYXdkZXZfb2JqX3QgZGV2X2luZm8pIHsNCj4gKyAgICAgICBz dHJ1Y3QgaWZwZ2FfcmF3ZGV2ICppZnBnYTsNCj4gKyAgICAgICBzdHJ1Y3QgcnRlX2FmdV9kZXZp Y2UgKmFmdV9kZXY7DQo+ICsNCj4gKyAgICAgICBJRlBHQV9SQVdERVZfUE1EX0ZVTkNfVFJBQ0Uo KTsNCj4gKw0KPiArICAgICAgIGlmICghZGV2X2luZm8pIHsNCj4gKyAgICAgICAgICAgICAgIElG UEdBX1JBV0RFVl9QTURfRVJSKCJJbnZhbGlkIHJlcXVlc3QiKTsNCj4gKyAgICAgICAgICAgICAg IHJldHVybjsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICBpZnBnYSA9IGlmcGdhX3Jhd2Rl dl9nZXRfcHJpdihkZXYpOw0KPiArDQo+ICsgICAgICAgYWZ1X2RldiA9IGRldl9pbmZvOw0KPiAr ICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArICAgICAgIC8vVG9k bzogZmlsbCBhZnVfZGV2LT5ydGVfcmF3ZGV2IGFuZCBhZnVfZGV2LT5ydGVfbWVtX3Jlc291cmNl DQo+ICsgICAgICAgLy8qZ2V0IGFmdV9kZXYtPm51bV9yZWdpb24gZnJvbSBSYXdkZXYNCj4gKyAg ICAgICAvLypnZXQgYWZ1X2Rldi0+bWVtX3Jlc291cmNlIGZyb20gUmF3ZGV2DQo+ICsgICAgICAg Ly8qZ2V0IGFmdV9kZXYtPm1heF92ZnMgZnJvbSBSYXdkZXYNCj4gKyAgICAgICAvLy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGlm cGdhX3Jhd2Rldl9zdGFydChzdHJ1Y3QgcnRlX3Jhd2RldiAqZGV2KSB7DQo+ICsgICAgICAgaW50 IHJldCA9IDA7DQo+ICsgICAgICAgc3RydWN0IGlmcGdhX3Jhd2RldiAqaWZwZ2E7DQo+ICsgICAg ICAgZW51bSBpZnBnYV9yYXdkZXZfZGV2aWNlX3N0YXRlIGZwZ2Ffc3RhdGU7DQo+ICsNCj4gKyAg ICAgICBJRlBHQV9SQVdERVZfUE1EX0ZVTkNfVFJBQ0UoKTsNCj4gKw0KPiArICAgICAgIFJURV9G VU5DX1BUUl9PUl9FUlJfUkVUKGRldiwgLUVJTlZBTCk7DQo+ICsNCj4gKyAgICAgICBpZnBnYSA9 IGlmcGdhX3Jhd2Rldl9nZXRfcHJpdihkZXYpOw0KPiArDQo+ICsgICAgICAgZnBnYV9zdGF0ZSA9 IGlmcGdhLT5mcGdhX3N0YXRlOw0KPiArDQo+ICsgICAgICAgaWYgKGZwZ2Ffc3RhdGUgPT0gSUZQ R0FfSURMRSkgew0KPiArICAgICAgICAgICAgICAgcmV0ID0gaWZwZ2FfZW51bWVyYXRlKCZpZnBn YS0+aHcpOw0KPiArICAgICAgICAgICAgICAgaWYgKHJldCkgew0KPiArICAgICAgICAgICAgICAg ICAgICAgICBpZnBnYS0+ZnBnYV9zdGF0ZSA9IElGUEdBX0VSUk9SOw0KPiArICAgICAgICAgICAg ICAgSUZQR0FfUkFXREVWX1BNRF9FUlIoIkZhaWxlZCB0byBlbnVtZXJhdGUgZm1lOiAlZCIsIHJl dCk7DQo+ICsgICAgICAgICAgICAgICByZXQgPSAtRUlOVkFMOw0KPiArICAgICAgICAgICAgICAg cmV0dXJuIHJldDsNCj4gKyAgICAgICB9DQo+ICsgICAgICAgaWZwZ2FfZm1lX2h3X2luaXQoJmlm cGdhLT5odyk7DQo+ICsgICAgICAgICAgICAgICBpZnBnYS0+ZnBnYV9zdGF0ZSA9IElGUEdBX1JF QURZOw0KPiArICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICBJRlBHQV9SQVdERVZf UE1EX0RFQlVHKCJJRlBHQSBpcyBlbnVtZXJhdGVkIik7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsg ICAgICAgcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgaWZwZ2FfcmF3ZGV2 X3N0b3Aoc3RydWN0IHJ0ZV9yYXdkZXYgKmRldikgew0KPiArDQo+ICt9DQo+ICtzdGF0aWMgaW50 IGlmcGdhX3Jhd2Rldl9jbG9zZShzdHJ1Y3QgcnRlX3Jhd2RldiAqZGV2KSB7DQo+ICsgICAgICAg aW50IHJldCA9IDA7DQo+ICsNCj4gKw0KPiArICAgICAgIHJldHVybiByZXQ7DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyBpbnQgaWZwZ2FfcmF3ZGV2X3Jlc2V0KHN0cnVjdCBydGVfcmF3ZGV2ICpkZXYp IHsNCj4gKw0KPiArDQo+ICsgICAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICtzdGF0aWMgaW50IGlm cGdhX3Jhd2Rldl9wcihzdHJ1Y3QgcnRlX3Jhd2RldiAqZGV2LA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJ0ZV9yYXdkZXZfb2JqX3QgcHJfY29uZikgew0KPiAr ICAgICAgIHN0cnVjdCBpZnBnYV9yYXdkZXYgKmlmcGdhOw0KPiArICAgICAgIHN0cnVjdCBpZnBn YV9odyAqaHc7DQo+ICsgICAgICAgc3RydWN0IHJ0ZV9hZnVfcHJfY29uZiAqYWZ1X3ByX2NvbmY7 DQo+ICsgICAgICAgaW50ICAgICByZXQ7DQo+ICsgICAgICAgdW5zaWduZWQgaW50ICAgICBudW1f cmVzb3VyY2UgPSAxOw0KPiArDQo+ICsgICAgICAgSUZQR0FfUkFXREVWX1BNRF9GVU5DX1RSQUNF KCk7DQo+ICsNCj4gKyAgICAgICBpZnBnYSA9IGlmcGdhX3Jhd2Rldl9nZXRfcHJpdihkZXYpOw0K PiArDQo+ICsgICAgICAgaWYgKCFwcl9jb25mKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7DQo+ICsNCj4gKyAgICAgICBhZnVfcHJfY29uZiA9IHByX2NvbmY7DQo+ICsNCj4gKyAg ICBodyA9ICZpZnBnYS0+aHc7DQo+ICsgICAgICAgaWZwZ2FfcG9ydF9od19pbml0KGh3LCBhZnVf cHJfY29uZi0+YWZ1X2lkLnBvcnQpOw0KPiArICAgICAgIGlmcGdhX2dldF9hZnVfbW1pb19pbmZv KGh3LCBhZnVfcHJfY29uZi0+YWZ1X2lkLnBvcnQsICZpZnBnYS0+cGNpX2Rldi0+bWVtX3Jlc291 cmNlWzBdLCAmbnVtX3Jlc291cmNlKTsNCj4gKyAgICAgICByZXQ9cnRlX2ZwZ2FfZG9fcHIoaHcs IGFmdV9wcl9jb25mLT5hZnVfaWQucG9ydCwgYWZ1X3ByX2NvbmYtPmJzX3BhdGgpOw0KPiArICAg ICAgIGlmIChyZXQpIHsNCj4gKyAgICAgICBwcmludGYoImRvIHByIGVycm9yXG4iKTsNCj4gKyAg ICAgICByZXR1cm4gcmV0Ow0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIHJldHVybiAwOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJ0ZV9yYXdkZXZfb3BzIGlmcGdhX3Jh d2Rldl9vcHMgPSB7DQo+ICsgICAgICAgLmRldl9pbmZvX2dldCA9IGlmcGdhX3Jhd2Rldl9pbmZv X2dldCwNCj4gKyAgICAgICAuZGV2X2NvbmZpZ3VyZSA9IE5VTEwsDQo+ICsgICAgICAgLmRldl9z dGFydCA9IGlmcGdhX3Jhd2Rldl9zdGFydCwNCj4gKyAgICAgICAuZGV2X3N0b3AgPSBpZnBnYV9y YXdkZXZfc3RvcCwNCj4gKyAgICAgICAuZGV2X2Nsb3NlID0gaWZwZ2FfcmF3ZGV2X2Nsb3NlLA0K PiArICAgICAgIC5kZXZfcmVzZXQgPSBpZnBnYV9yYXdkZXZfcmVzZXQsDQo+ICsNCj4gKyAgICAg ICAucXVldWVfZGVmX2NvbmYgPSBOVUxMLA0KPiArICAgICAgIC5xdWV1ZV9zZXR1cCA9IE5VTEws DQo+ICsgICAgICAgLnF1ZXVlX3JlbGVhc2UgPSBOVUxMLA0KPiArDQo+ICsgICAgICAgLmF0dHJf Z2V0ID0gTlVMTCwNCj4gKyAgICAgICAuYXR0cl9zZXQgPSBOVUxMLA0KPiArDQo+ICsgICAgICAg LmVucXVldWVfYnVmcyA9IE5VTEwsDQo+ICsgICAgICAgLmRlcXVldWVfYnVmcyA9IE5VTEwsDQo+ ICsNCj4gKyAgICAgICAuZHVtcCA9IE5VTEwsDQo+ICsNCj4gKyAgICAgICAueHN0YXRzX2dldCA9 IE5VTEwsDQo+ICsgICAgICAgLnhzdGF0c19nZXRfbmFtZXMgPSBOVUxMLA0KPiArICAgICAgIC54 c3RhdHNfZ2V0X2J5X25hbWUgPSBOVUxMLA0KPiArICAgICAgIC54c3RhdHNfcmVzZXQgPSBOVUxM LA0KPiArDQo+ICsgICAgICAgLmZpcm13YXJlX3N0YXR1c19nZXQgPSBOVUxMLA0KPiArICAgICAg IC5maXJtd2FyZV92ZXJzaW9uX2dldCA9IE5VTEwsDQo+ICsgICAgICAgLmZpcm13YXJlX2xvYWQg PSBpZnBnYV9yYXdkZXZfcHIsDQo+ICsgICAgICAgLmZpcm13YXJlX3VubG9hZCA9IE5VTEwsDQo+ ICsNCj4gKyAgICAgICAuZGV2X3NlbGZ0ZXN0ID0gTlVMTCwNCj4gK307DQo+ICsNCj4gK3N0YXRp YyBpbnQNCj4gK2lmcGdhX3Jhd2Rldl9jcmVhdGUoc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpwY2lf ZGV2LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2V0X2lk KSB7DQo+ICsgICAgICAgaW50IHJldCA9IDA7DQo+ICsgICAgICAgc3RydWN0IHJ0ZV9yYXdkZXYg KnJhd2RldiA9IE5VTEw7DQo+ICsgICAgICAgc3RydWN0IGlmcGdhX3Jhd2RldiAqaWZwZ2EgPSBO VUxMOw0KPiArICAgICAgIGNoYXIgbmFtZVtSVEVfUkFXREVWX05BTUVfTUFYX0xFTl07DQo+ICsN Cj4gKyAgICAgICBpZiAoIXBjaV9kZXYpIHsNCj4gKyAgICAgICAgICAgICAgIElGUEdBX1JBV0RF Vl9QTURfRVJSKCJJbnZhbGlkIHBjaV9kZXYgb2YgdGhlIGRldmljZSEiKTsNCj4gKyAgICAgICAg ICAgICAgIHJldCA9IC1FSU5WQUw7DQo+ICsgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7DQo+ ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgbWVtc2V0KG5hbWUsIHNpemVvZihuYW1lKSwgMCk7 DQo+ICsgICAgICAgc25wcmludGYobmFtZSwgUlRFX1JBV0RFVl9OQU1FX01BWF9MRU4sICJJRlBH QToleDoleDoleCIsIA0KPiArIHBjaV9kZXYtPmFkZHIuYnVzLCBwY2lfZGV2LT5hZGRyLmRldmlk LCBwY2lfZGV2LT5hZGRyLmZ1bmN0aW9uKTsNCj4gKw0KPiArICAgICAgIElGUEdBX1JBV0RFVl9Q TURfSU5GTygiSW5pdCAlcyBvbiBOVU1BIG5vZGUgJWQiLCBuYW1lLCANCj4gKyBydGVfc29ja2V0 X2lkKCkpOw0KPiArDQo+ICsgICAgICAgLyogQWxsb2NhdGUgZGV2aWNlIHN0cnVjdHVyZSAqLw0K PiArICAgICAgIHJhd2RldiA9IHJ0ZV9yYXdkZXZfcG1kX2FsbG9jYXRlKG5hbWUsIHNpemVvZihz dHJ1Y3QgaWZwZ2FfcmF3ZGV2KSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzb2NrZXRfaWQpOw0KPiArICAgICAgIGlmIChyYXdkZXYgPT0gTlVMTCkgew0KPiAr ICAgICAgICAgICAgICAgSUZQR0FfUkFXREVWX1BNRF9FUlIoIlVuYWJsZSB0byBhbGxvY2F0ZSBy YXdkZXZpY2UiKTsNCj4gKyAgICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7DQo+ICsgICAgICAg ICAgICAgICBnb3RvIGNsZWFudXA7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgcmF3ZGV2 LT5kZXZfb3BzID0gJmlmcGdhX3Jhd2Rldl9vcHM7DQo+ICsgICAgICAgcmF3ZGV2LT5kZXZpY2Ug PSAmcGNpX2Rldi0+ZGV2aWNlOw0KPiArICAgICAgIHJhd2Rldi0+ZHJpdmVyX25hbWUgPSBwY2lf ZGV2LT5kZXZpY2UuZHJpdmVyLT5uYW1lOw0KPiArDQo+ICsgICAgICAgaWZwZ2EgPSBpZnBnYV9y YXdkZXZfZ2V0X3ByaXYocmF3ZGV2KTsNCj4gKyAgICAgICBpZnBnYS0+cGNpX2RldiA9IHBjaV9k ZXY7DQo+ICsgICAgICAgaWZwZ2EtPmZwZ2Ffc3RhdGUgPSBJRlBHQV9JRExFOw0KPiArDQo+ICsg ICAgICAgLyogSW5pdGlhbGl6ZSB0aGUgc2hhcmVkIGNvZGUgKGJhc2UgZHJpdmVyKSAqLw0KPiAr ICAgICAgIHJldCA9IG9wYWVfaW5pdF9zaGFyZWRfY29kZSgmaWZwZ2EtPmh3KTsNCj4gKyAgICAg ICBpZiAocmV0KSB7DQo+ICsgICAgICAgICAgICAgICBJRlBHQV9SQVdERVZfUE1EX0VSUigiRmFp bGVkIHRvIGluaXQgc2hhcmVkIGNvZGUgKGJhc2UgZHJpdmVyKTogJWQiLCByZXQpOw0KPiArICAg ICAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsNCj4gKyAgICAgICAgICAgICAgIGdvdG8gY2xlYW51 cDsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPiArDQo+ICtjbGVh bnVwOg0KPiArICAgICAgIGlmIChyYXdkZXYpDQo+ICsgICAgICAgICAgICAgICBydGVfcmF3ZGV2 X3BtZF9yZWxlYXNlKHJhd2Rldik7DQo+ICsNCj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPiArfQ0K PiArDQo+ICtzdGF0aWMgaW50DQo+ICtpZnBnYV9yYXdkZXZfZGVzdHJveShzdHJ1Y3QgcnRlX3Bj aV9kZXZpY2UgKnBjaV9kZXYpIHsNCj4gKyAgICAgICBpbnQgcmV0Ow0KPiArICAgICAgIHN0cnVj dCBydGVfcmF3ZGV2ICpyZGV2Ow0KPiArICAgICAgIGNoYXIgbmFtZVtSVEVfUkFXREVWX05BTUVf TUFYX0xFTl07DQo+ICsNCj4gKyAgICAgICBpZiAoIXBjaV9kZXYpIHsNCj4gKyAgICAgICAgICAg ICAgIElGUEdBX1JBV0RFVl9QTURfRVJSKCJJbnZhbGlkIHBjaV9kZXYgb2YgdGhlIGRldmljZSEi KTsNCj4gKyAgICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7DQo+ICsgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Ow0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIG1lbXNldChuYW1lLCBzaXpl b2YobmFtZSksIDApOw0KPiArICAgICAgIHNucHJpbnRmKG5hbWUsIFJURV9SQVdERVZfTkFNRV9N QVhfTEVOLCAiSUZQR0E6JXg6JXg6JXgiLCANCj4gKyBwY2lfZGV2LT5hZGRyLmJ1cywgcGNpX2Rl di0+YWRkci5kZXZpZCwgcGNpX2Rldi0+YWRkci5mdW5jdGlvbik7DQo+ICsNCj4gKyAgICAgICBJ RlBHQV9SQVdERVZfUE1EX0lORk8oIkNsb3NpbmcgJXMgb24gTlVNQSBub2RlICVkIiwgbmFtZSwg DQo+ICsgcnRlX3NvY2tldF9pZCgpKTsNCj4gKw0KPiArICAgICAgIHJkZXYgPSBydGVfcmF3ZGV2 X3BtZF9nZXRfbmFtZWRfZGV2KG5hbWUpOw0KPiArICAgICAgIGlmICghcmRldikgew0KPiArICAg ICAgICAgICAgICAgSUZQR0FfUkFXREVWX1BNRF9FUlIoIkludmFsaWQgZGV2aWNlIG5hbWUgKCVz KSIsIG5hbWUpOw0KPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICsgICAgICAg fQ0KPiArDQo+ICsgICAgICAgLyogcnRlX3Jhd2Rldl9jbG9zZSBpcyBjYWxsZWQgYnkgcG1kX3Jl bGVhc2UgKi8NCj4gKyAgICAgICByZXQgPSBydGVfcmF3ZGV2X3BtZF9yZWxlYXNlKHJkZXYpOw0K PiArICAgICAgIGlmIChyZXQpDQo+ICsgICAgICAgICAgICAgICBJRlBHQV9SQVdERVZfUE1EX0RF QlVHKCJEZXZpY2UgY2xlYW51cCBmYWlsZWQiKTsNCj4gKw0KPiArICAgICAgIHJldHVybiAwOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICtpZnBnYV9yYXdkZXZfcGNpX3Byb2JlKHN0cnVj dCBydGVfcGNpX2RyaXZlciAqcGNpX2RydiBfX3J0ZV91bnVzZWQsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBydGVfcGNpX2RldmljZSAqcGNpX2Rldikgew0KPiArICAgICAg IHJldHVybiBpZnBnYV9yYXdkZXZfY3JlYXRlKHBjaV9kZXYsIHJ0ZV9zb2NrZXRfaWQoKSk7IH0N Cj4gKw0KPiArc3RhdGljIGludCBpZnBnYV9yYXdkZXZfcGNpX3JlbW92ZShzdHJ1Y3QgcnRlX3Bj aV9kZXZpY2UgKnBjaV9kZXYpIHsNCj4gKyAgICAgICByZXR1cm4gaWZwZ2FfcmF3ZGV2X2Rlc3Ry b3kocGNpX2Rldik7IH0NCj4gKw0KPiArc3RhdGljIHN0cnVjdCBydGVfcGNpX2RyaXZlciBydGVf aWZwZ2FfcmF3ZGV2X3BtZCA9IHsNCj4gKyAgICAgICAuaWRfdGFibGUgID0gcGNpX2lmcGdhX21h cCwNCj4gKyAgICAgICAuZHJ2X2ZsYWdzID0gUlRFX1BDSV9EUlZfTkVFRF9NQVBQSU5HIHwgUlRF X1BDSV9EUlZfSU5UUl9MU0MsDQo+ICsgICAgICAgLnByb2JlICAgICA9IGlmcGdhX3Jhd2Rldl9w Y2lfcHJvYmUsDQo+ICsgICAgICAgLnJlbW92ZSAgICA9IGlmcGdhX3Jhd2Rldl9wY2lfcmVtb3Zl LA0KPiArfTsNCg0KPkZyb20gYWJvdmUsIHdoYXQgSSB1bmRlcnN0YW5kIGlzIHRoYXQgaWZwZ2Eg aXMgYSBQQ0kgZGV2aWNlLCBidXQgdGhlcmUgYXJlIGNlcnRhaW4gZnVuY3Rpb25zIHdoaWNoIGFy ZSBub3QgYXZhaWxhYmxlIGluIFBDSSBydGUgbGF5ZXIgYW5kIHRodXMgeW91IG5lZWQgYSByYXdk ZXYgcmVwcmVzZW50YXRpb24uDQo+QnV0IEkgc29tZWhvdyBmZWVsIHRoYXQgeW91IGNvdWxkIGhh dmUgd29ya2VkIHdpdGhvdXQgYWRkaW5nIGFub3RoZXIgYnVzIHR5cGUgKGRyaXZlcnMvYnVzL2lm cGdhKS4NCg0KSW4gRlBHQSBoYXJkd2FyZSB2aWV3LCBpdCBoYXMgYSBGTUUgKEZQR0EgbWFuYWdl bWVudCBlbmdpbmUgKSBhbmQgc2V2ZXJhbCBQb3J0cyBhbmQgc2V2ZXJhbCBBRlVzLg0KKkZNRSAo RlBHQSBtYW5hZ2VtZW50IGVuZ2luZSksIG1ham9yIGZ1bmN0aW9uIGluY2x1ZGUgYml0c3RyZWFt IHBhcnQgcmVjb25maWd1cmF0aW9uIGFuZCBzb21lIG90aGVyIEZQR0EgbWFuYWdlbWVudCANCipQ b3J0OiBhIEJyaWRnZXQgY29ubmVjdCB0byBhIEFGVSBmcm9tIEZNRSwgb25lIHBvcnQgbGluayB0 byBvbmUgQUZVLCBzb21lIG1hbmFnZW1lbnQgYWJvdXQgQUZVLCBsaWtlIEFVRiByZXNldC4NCipB RlUoYWNjZWxlcmF0ZSBmdW5jdGlvbiB1bml0KSwgY3VzdG9tZXIncyBiaXRzdGVhbSBydW5uaW5n IG9uIGl0Lg0KDQpTbyB3aGVuIHRoZSBGUEdBIGVudW1lcmF0ZSBmaW5pc2hlZCwgd2Ugd2lsbCBm aW5kIHNldmVyYWwgQUZVcywgYW5kIHVzZSBhIGRhdGFzdHJ1Y3QgdG8gcmVwcmVzZW50IGl0LCBs aWtlIGFmdV9kZXZpY2UsIGFuZCB0aGVuDQphZGQgdGhvc2UgYWZ1X2RldmljZXMgaW50byBpZnBn YV9idXMuDQoNCj4tIFBDSSBkZXZpY2VzIGFyZSBzY2FubmVkIGJ5IFBDSSBidXMuICh3aGljaCBp cyBzdGlsbCBoYXBwZW5pbmcgaW4gdGhpcyBSRkMgcGF0Y2hlcykNCj4tIFdoZW4gcHJvYmluZyBp cyBkb25lLCB0aGlzIGRyaXZlciAocmF3ZGV2L2lmcGdhKSB3b3VsZCBpZGVudGlmeSBhbmQgYXR0 YWNoIGl0c2VsZiB0byB0aG9zZSBkZXZpY2VzICh1c2luZyBQQ0kgaWRzIGZvciBtYXRjaGluZykN Cj4gIE5vIG90aGVyIGRyaXZlciB3b3VsZCBwYXNzIHRoZSBwcm9iZSBiZWNhdXNlIG9mIFBDSV9U QUJMRQ0KPi0gYW5kIHRoZW4gdXNpbmcgcmF3ZGV2IEFQSXMsIGludGVyYWN0IHdpdGggdGhlIGRl dmljZS4NCg0KPkFtIEkgbWlzc2luZyBzb21lIG9idmlvdXMgbG9naWMgaGVyZSB3aGljaCByZXF1 aXJlcyBhIG5ldyBidXM/DQoNCkluIG91ciBpZnBnYSBkcml2ZXIsIGhlcmUgaXMgb3VyIHdvcmtp bmcgZmxvdyBjb29yZGluYXRlZCB3aXRoIGxpYnJ0ZV9yYXdkZXY6DQoxLiB3ZSBkbyB0aGUgRlBH QSBoYXJkd2FyZSBzY2FuIG9yIGVudW1lcmF0aW9uIGluIFBDSSBwcm9iZSBmdW5jdGlvbiB3aGlj aCBpbXBsZW1lbnRlZCBpbiBGUEdBL09QQUUgYmFzZSBjb2RlLg0KMi4gcnRlX3Jhd2Rldl9pbmZv X2dldCgpLA0KICAgICp3ZSBmaW5kIG9uZSBhdmFpbGFibGUgQUZVIGJ5IHBvcnRfaWQgd2hpY2gg cGFzcyB0aHJvdWdoIGJ5IERQREsgYXBwbGljYXRpb24gY29tbWFuZCBsaW5lDQogICAgKmFuZCBm aWxsIHRoZSBoYXJkd2FyZSBpbmZvIGludG8gb25lIEFGVSBkZXZpY2UNCiAgICAqYWRkIHRoaXMg QUZVIGRldmljZSBpbnRvIGlmcGdhX2J1cw0KICAgICp0cmlnZ2VyIGEgaG90cGx1ZyB0byB0aGlz IGlmcGdhX2J1cyB0byBwcm9iZSBhdmFpbGFibGUgQUZVIGRyaXZlciBsaWtlIGEgRXRoZXJuZXQg ZHJpdmVyDQoNCjMuIHJ0ZV9yYXdkZXZfZmlybXdhcmVfbG9hZCgpDQogICAgKmRvd25sb2FkIGJp dHN0ZWFtIGludG8gdGhpcyBBRlUgZGV2aWNlDQoNCjQuIHJ0ZV9yYXdkZXZfc3RhcnQoKQ0KICAq IHN0YXJ0IHRoaXMgQUZVIGRldmljZQ0KDQoNCj4gKw0KPiArUlRFX1BNRF9SRUdJU1RFUl9QQ0ko aWZwZ2FfcmF3ZGV2X3BjaV9kcml2ZXIsIHJ0ZV9pZnBnYV9yYXdkZXZfcG1kKTsgDQo+ICtSVEVf UE1EX1JFR0lTVEVSX1BDSV9UQUJMRShpZnBnYV9yYXdkZXZfcGNpX2RyaXZlciwgDQo+ICtydGVf aWZwZ2FfcmF3ZGV2X3BtZCk7IA0KPiArUlRFX1BNRF9SRUdJU1RFUl9LTU9EX0RFUChpZnBnYV9y YXdkZXZfcGNpX2RyaXZlciwgIiogaWdiX3VpbyB8IA0KPiArdWlvX3BjaV9nZW5lcmljIHwgdmZp by1wY2kiKTsNCj4gKw0KPiArUlRFX0lOSVQoaWZwZ2FfcmF3ZGV2X2luaXRfbG9nKTsNCj4gK3N0 YXRpYyB2b2lkDQo+ICtpZnBnYV9yYXdkZXZfaW5pdF9sb2codm9pZCkNCj4gK3sNCj4gKyAgICAg ICBpZnBnYV9yYXdkZXZfbG9ndHlwZSA9IHJ0ZV9sb2dfcmVnaXN0ZXIoImRyaXZlci5yYXcuaW5p dCIpOw0KPiArICAgICAgIGlmIChpZnBnYV9yYXdkZXZfbG9ndHlwZSA+PSAwKQ0KPiArICAgICAg ICAgICAgICAgcnRlX2xvZ19zZXRfbGV2ZWwoaWZwZ2FfcmF3ZGV2X2xvZ3R5cGUsIA0KPiArUlRF X0xPR19OT1RJQ0UpOyB9DQo+ICsNCj4gK3ZvaWQgaWZwZ2FfcmF3ZGV2X3Rlc3Qodm9pZCkNCj4g K3sNCj4gKyAgICBwcmludGYoImlmcGdhX3Jhd2Rldl90ZXN0IFxuIik7DQo+ICt9DQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvaWZwZ2FfcmF3ZGV2LmggDQo+IGIvZHJp dmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2lmcGdhX3Jhd2Rldi5oDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAuLmRmYTYzYzYNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9k cml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvaWZwZ2FfcmF3ZGV2LmgNCj4gQEAgLTAsMCArMSwxMDkg QEANCj4gKy8qLQ0KPiArICogICBCU0QgTElDRU5TRQ0KPiArICoNCj4gKyAqICAgQ29weXJpZ2h0 KGMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgKiAg IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgKg0KPiArICogICBSZWRpc3RyaWJ1dGlvbiBhbmQg dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gKyAqICAg bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj b25kaXRpb25zDQo+ICsgKiAgIGFyZSBtZXQ6DQo+ICsgKg0KPiArICogICAgICogUmVkaXN0cmli dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4g KyAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lci4NCj4gKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsgKiAgICAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4N Cj4gKyAqICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv dmlkZWQgd2l0aCB0aGUNCj4gKyAqICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4gKyAqICAgICAqIE5l aXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMN Cj4gKyAqICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v dGUgcHJvZHVjdHMgZGVyaXZlZA0KPiArICogICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiArICoNCj4gKyAqICAgVEhJ UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS SUJVVE9SUw0KPiArICogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KPiArICogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElF RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1INCj4gKyAqICAg QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI RSBDT1BZUklHSFQNCj4gKyAqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsgKiAgIFNQRUNJQUwsIEVYRU1Q TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCj4gKyAq ICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF UzsgTE9TUyBPRiBVU0UsDQo+ICsgKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KPiArICogICBUSEVPUlkgT0Yg TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU DQo+ICsgKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiArICogICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KPiArICovDQo+ICsj aWZuZGVmIF9JRlBHQV9SQVdERVZfSF8NCj4gKyNkZWZpbmUgX0lGUEdBX1JBV0RFVl9IXw0KPiAr DQo+ICsvKisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKytUaGVzZSBmdW5jdGlvbnMg c2hvdWxkIGJlIA0KPiAraW1wbGVtZW50ZWQgYnkgT1BBRSsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysqLw0KPiArc3RydWN0IGlmcGdhX2h3IHsNCj4gKyAgICAgICB2b2lkICAgICAg ICAgICAgICAgICAqcGNpX2RldjsgLy9zaGFyZSBjb2RlIHdpbGwgbm90IGludm9sdmUgYW55IERQ REsgZGVmaW5hdGlvbg0KPiArDQo+ICsgICAgICAgaW50ICAgICAgICAgICAgICAgICAgZm1lOw0K PiArICAgICAgIGludCAgICAgICAgICAgICAgICAgIHBvcnRbNF07DQo+ICt9Ow0KPiArDQo+ICtz dGF0aWMgaW50IG9wYWVfaW5pdF9zaGFyZWRfY29kZShzdHJ1Y3QgaWZwZ2FfaHcgKmh3KSB7DQo+ ICsgICAgLy9pbml0IGlmcGdhX2h3DQo+ICsNCj4gKyAgICByZXR1cm4gMDsNCj4gK30NCj4gK3N0 YXRpYyBpbnQgaWZwZ2FfZW51bWVyYXRlKHN0cnVjdCBpZnBnYV9odyAqaHcpIHsNCj4gKyAgICAg ICByZXR1cm4gMDsNCj4gK30NCj4gK3N0YXRpYyBpbnQgaWZwZ2FfZm1lX2h3X2luaXQoc3RydWN0 IGlmcGdhX2h3ICpodykgew0KPiArICAgICAgIHJldHVybiAwOw0KPiArfQ0KPiArc3RhdGljIGlu dCBpZnBnYV9wb3J0X2h3X2luaXQoc3RydWN0IGlmcGdhX2h3ICpodywgaW50IHBvcnRfaWQpIHsN Cj4gKyAgICByZXR1cm4gMDsNCj4gK30NCj4gK3N0YXRpYyBpbnQgaWZwZ2FfZ2V0X2FmdV9tbWlv X2luZm8oc3RydWN0IGlmcGdhX2h3ICpodywgdW5zaWduZWQgaW50IHBvcnRfaWQsDQo+ICsgICAg ICAgICAgICAgICBzdHJ1Y3QgcnRlX21lbV9yZXNvdXJjZSAqbWVtX3Jlc291cmNlLA0KPiArICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50ICpudW1fcmVzb3VyY2UpIHsNCj4gKyAgICByZXR1cm4g MDsNCj4gK30NCj4gK3N0YXRpYyBpbnQgcnRlX2ZwZ2FfZG9fcHIoc3RydWN0IGlmcGdhX2h3ICph ZnVfZGV2LCBpbnQgcG9ydF9pZCwgDQo+ICtjb25zdCBjaGFyICpmaWxlX25hbWUpIHsNCj4gKyAg ICByZXR1cm4gMDsNCj4gK30NCj4gKy8qKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr K1RoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgDQo+ICtpbXBsZW1lbnRlZCBieSBPUEFFKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKyovDQo+ICsNCj4gK2V4dGVybiBpbnQgaWZwZ2Ff cmF3ZGV2X2xvZ3R5cGU7DQo+ICsNCj4gKyNkZWZpbmUgSUZQR0FfUkFXREVWX1BNRF9MT0cobGV2 ZWwsIGZtdCwgYXJncy4uLikgXA0KPiArICAgICAgIHJ0ZV9sb2coUlRFX0xPR18gIyMgbGV2ZWws IGlmcGdhX3Jhd2Rldl9sb2d0eXBlLCAiJXMoKTogIiBmbXQgIlxuIiwgXA0KPiArICAgICAgICAg ICAgICAgX19mdW5jX18sICMjYXJncykNCj4gKw0KPiArI2RlZmluZSBJRlBHQV9SQVdERVZfUE1E X0ZVTkNfVFJBQ0UoKSBJRlBHQV9SQVdERVZfUE1EX0xPRyhERUJVRywgDQo+ICsiPj4iKQ0KPiAr DQo+ICsjZGVmaW5lIElGUEdBX1JBV0RFVl9QTURfREVCVUcoZm10LCBhcmdzLi4uKSBcDQo+ICsg ICAgICAgSUZQR0FfUkFXREVWX1BNRF9MT0coREVCVUcsIGZtdCwgIyMgYXJncykgI2RlZmluZSAN Cj4gK0lGUEdBX1JBV0RFVl9QTURfSU5GTyhmbXQsIGFyZ3MuLi4pIFwNCj4gKyAgICAgICBJRlBH QV9SQVdERVZfUE1EX0xPRyhJTkZPLCBmbXQsICMjIGFyZ3MpICNkZWZpbmUgDQo+ICtJRlBHQV9S QVdERVZfUE1EX0VSUihmbXQsIGFyZ3MuLi4pIFwNCj4gKyAgICAgICBJRlBHQV9SQVdERVZfUE1E X0xPRyhFUlIsIGZtdCwgIyMgYXJncykgI2RlZmluZSANCj4gK0lGUEdBX1JBV0RFVl9QTURfV0FS TihmbXQsIGFyZ3MuLi4pIFwNCj4gKyAgICAgICBJRlBHQV9SQVdERVZfUE1EX0xPRyhXQVJOSU5H LCBmbXQsICMjIGFyZ3MpDQo+ICsNCj4gK2VudW0gaWZwZ2FfcmF3ZGV2X2RldmljZV9zdGF0ZSB7 DQo+ICsgICAgICAgSUZQR0FfSURMRSwNCj4gKyAgICAgICBJRlBHQV9SRUFEWSwNCj4gKyAgICAg ICBJRlBHQV9FUlJPUg0KPiArfTsNCj4gKw0KPiArc3RydWN0IGlmcGdhX3Jhd2RldiB7DQo+ICsg ICAgICAgc3RydWN0IGlmcGdhX2h3IGh3Ow0KPiArICAgICAgIHN0cnVjdCBydGVfcGNpX2Rldmlj ZSAqcGNpX2RldjsNCj4gKyAgICAgICBlbnVtICAgaWZwZ2FfcmF3ZGV2X2RldmljZV9zdGF0ZSBm cGdhX3N0YXRlOw0KPiArfTsNCj4gKw0KPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaWZwZ2FfcmF3 ZGV2ICoNCj4gK2lmcGdhX3Jhd2Rldl9nZXRfcHJpdihjb25zdCBzdHJ1Y3QgcnRlX3Jhd2RldiAq cmF3ZGV2KSB7DQo+ICsgICAgICAgcmV0dXJuIHJhd2Rldi0+ZGV2X3ByaXZhdGU7DQo+ICt9DQo+ ICsNCj4gKyNlbmRpZiAvKiBfSUZQR0FfUkFXREVWX0hfICovDQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvaWZwZ2FfcmF3ZGV2X2V4YW1wbGUuYyANCj4gYi9kcml2ZXJz L3Jhdy9pZnBnYV9yYXdkZXYvaWZwZ2FfcmF3ZGV2X2V4YW1wbGUuYw0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi5jNTA2YzBlDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2lmcGdhX3Jhd2Rldl9leGFtcGxlLmMNCj4gQEAg LTAsMCArMSwxMjEgQEANCj4gKy8qLQ0KPiArICogICBCU0QgTElDRU5TRQ0KPiArICoNCj4gKyAq ICAgQ29weXJpZ2h0KGMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuDQo+ICsgKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgKg0KPiArICogICBSZWRpc3Ry aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv dXQNCj4gKyAqICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl IGZvbGxvd2luZyBjb25kaXRpb25zDQo+ICsgKiAgIGFyZSBtZXQ6DQo+ICsgKg0KPiArICogICAg ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj b3B5cmlnaHQNCj4gKyAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsgKiAg ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIgaW4NCj4gKyAqICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gKyAqICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4g KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBu YW1lcyBvZiBpdHMNCj4gKyAqICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KPiArICogICAgICAgZnJvbSB0aGlzIHNv ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiArICoN Cj4gKyAqICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF UlMgQU5EIENPTlRSSUJVVE9SUw0KPiArICogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KPiArICogICBMSU1JVEVEIFRP LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG T1INCj4gKyAqICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCj4gKyAqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ICsgKiAgIFNQ RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV VCBOT1QNCj4gKyAqICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQo+ICsgKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KPiArICog ICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM SVRZLCBPUiBUT1JUDQo+ICsgKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiArICogICBPRiBUSElTIFNPRlRX QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0K PiArICovDQo+ICsNCj4gKyNpbmNsdWRlIDxzdGRpby5oPg0KPiArI2luY2x1ZGUgPHN0ZGxpYi5o Pg0KPiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiArI2lu Y2x1ZGUgPGludHR5cGVzLmg+DQo+ICsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQo+ICsjaW5jbHVk ZSA8c3lzL3F1ZXVlLmg+DQo+ICsjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPg0KPiArI2luY2x1ZGUg PHNldGptcC5oPg0KPiArI2luY2x1ZGUgPHN0ZGFyZy5oPg0KPiArI2luY2x1ZGUgPGN0eXBlLmg+ DQo+ICsjaW5jbHVkZSA8ZXJybm8uaD4NCj4gKyNpbmNsdWRlIDxnZXRvcHQuaD4NCj4gKyNpbmNs dWRlIDxzaWduYWwuaD4NCj4gKyNpbmNsdWRlIDxzdGRib29sLmg+DQo+ICsNCj4gKyNpbmNsdWRl IDxydGVfY29tbW9uLmg+DQo+ICsjaW5jbHVkZSA8cnRlX2xvZy5oPg0KPiArI2luY2x1ZGUgPHJ0 ZV9tYWxsb2MuaD4NCj4gKyNpbmNsdWRlIDxydGVfbWVtb3J5Lmg+DQo+ICsjaW5jbHVkZSA8cnRl X21lbWNweS5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9lYWwuaD4NCj4gKyNpbmNsdWRlIDxydGVfbGF1 bmNoLmg+DQo+ICsjaW5jbHVkZSA8cnRlX2F0b21pYy5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9jeWNs ZXMuaD4NCj4gKyNpbmNsdWRlIDxydGVfcHJlZmV0Y2guaD4NCj4gKyNpbmNsdWRlIDxydGVfbGNv cmUuaD4NCj4gKyNpbmNsdWRlIDxydGVfcGVyX2xjb3JlLmg+DQo+ICsjaW5jbHVkZSA8cnRlX2Jy YW5jaF9wcmVkaWN0aW9uLmg+DQo+ICsjaW5jbHVkZSA8cnRlX2ludGVycnVwdHMuaD4NCj4gKyNp bmNsdWRlIDxydGVfcmFuZG9tLmg+DQo+ICsjaW5jbHVkZSA8cnRlX2RlYnVnLmg+DQo+ICsjaW5j bHVkZSA8cnRlX2V0aGVyLmg+DQo+ICsjaW5jbHVkZSA8cnRlX2V0aGRldi5oPg0KPiArI2luY2x1 ZGUgPHJ0ZV9tZW1wb29sLmg+DQo+ICsjaW5jbHVkZSA8cnRlX21idWYuaD4NCj4gKyNpbmNsdWRl IDxydGVfaW8uaD4NCj4gKw0KPiArI2luY2x1ZGUgPHJ0ZV9lcnJuby5oPg0KPiArI2luY2x1ZGUg PHJ0ZV9idXMuaD4NCj4gKyNpbmNsdWRlIDxydGVfbWVtem9uZS5oPg0KPiArDQo+ICsjaW5jbHVk ZSA8cnRlX2RldmFyZ3MuaD4NCj4gKyNpbmNsdWRlIDxydGVfcGNpLmg+DQo+ICsjaW5jbHVkZSA8 cnRlX2J1c19wY2kuaD4NCj4gKyNpbmNsdWRlIDxydGVfYWxhcm0uaD4NCj4gKw0KPiArI2luY2x1 ZGUgInJ0ZV9idXNfaWZwZ2EuaCINCj4gKyNpbmNsdWRlICJpZnBnYV9sb2dzLmgiDQo+ICsNCj4g KyNkZWZpbmUgUlRFX1BNRF9SRUdJU1RFUl9BRlUobm0sIGFmdWRydilcIFJURV9JTklUKGFmdWRy dmluaXRmbl8gDQo+ICsjI2FmdWRydik7XCBzdGF0aWMgY29uc3QgY2hhciAqYWZ1ZHJ2aW5pdF8g IyMgbm0gIyMgX2FsaWFzO1wgc3RhdGljIA0KPiArdm9pZCBhZnVkcnZpbml0Zm5fICMjYWZ1ZHJ2 KHZvaWQpXCB7XA0KPiArICAgICAgIChhZnVkcnYpLmRyaXZlci5uYW1lID0gUlRFX1NUUihubSk7 XA0KPiArICAgICAgIChhZnVkcnYpLmRyaXZlci5hbGlhcyA9IGFmdWRydmluaXRfICMjIG5tICMj IF9hbGlhcztcDQo+ICsgICAgICAgcnRlX2lmcGdhX2RyaXZlcl9yZWdpc3RlcigmYWZ1ZHJ2KTtc DQo+ICt9IFwNCj4gK1JURV9QTURfRVhQT1JUX05BTUUobm0sIF9fQ09VTlRFUl9fKQ0KPiArDQo+ ICsjZGVmaW5lIFJURV9QTURfUkVHSVNURVJfQUZVX0FMSUFTKG5tLCBhbGlhcylcIHN0YXRpYyBj b25zdCBjaGFyIA0KPiArKmFmdWRydmluaXRfICMjIG5tICMjIF9hbGlhcyA9IFJURV9TVFIoYWxp YXMpDQo+ICsNCj4gK3N0YXRpYyBpbnQgYWZ1X2Rldl9wcm9iZShzdHJ1Y3QgcnRlX2FmdV9kZXZp Y2UgKmFmdV9kZXYpIHsNCj4gKyAgICAgICByZXR1cm4gMDsNCj4gK30NCj4gK3N0YXRpYyBpbnQg YWZ1X2Rldl9yZW1vdmUoc3RydWN0IHJ0ZV9hZnVfZGV2aWNlICphZnVfZGV2KSB7DQo+ICsgICAg ICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgcnRlX2FmdV9kcml2ZXIg YWZ1X2Rldl9kcml2ZXIgPSB7DQo+ICsgICAgICAgLnByb2JlID0gYWZ1X2Rldl9wcm9iZSwNCj4g KyAgICAgICAucmVtb3ZlID0gYWZ1X2Rldl9yZW1vdmUsDQo+ICt9Ow0KPiArDQo+ICtSVEVfUE1E X1JFR0lTVEVSX0FGVShuZXRfYWZ1X2Rydl9leGFtcGxlLCBhZnVfZGV2X2RyaXZlcik7IA0KPiAr UlRFX1BNRF9SRUdJU1RFUl9BRlVfQUxJQVMobmV0X2FmdV9kcnZfZXhhbXBsZSwgYWZ1X2Rldik7 IA0KPiArUlRFX1BNRF9SRUdJU1RFUl9QQVJBTV9TVFJJTkcobmV0X2FmdV9kcnZfZXhhbXBsZSwN Cj4gKyAgICAgICAiYmRmPTxzdHJpbmc+ICINCj4gKyAgICAgICAicG9ydD08aW50PiAiDQo+ICsg ICAgICAgInV1ZGlfaGlnaD08aW50NjQ+ICINCj4gKyAgICAgICAidXVpZF9sb3c9PGludDY0PiAi DQo+ICsgICAgICAgInBhdGg9PHN0cmluZz4gIg0KPiArICAgICAgICJwcl9lbmFibGU9PGludD4i DQo+ICsgICAgICAgImRlYnVnPTxpbnQ+Iik7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Jhdy9p ZnBnYV9yYXdkZXYvcnRlX3BtZF9pZnBnYV9yYXdkZXZfdmVyc2lvbi5tYXAgDQo+IGIvZHJpdmVy cy9yYXcvaWZwZ2FfcmF3ZGV2L3J0ZV9wbWRfaWZwZ2FfcmF3ZGV2X3ZlcnNpb24ubWFwDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLjE3OTE0MGYNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9kcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvcnRlX3BtZF9pZnBnYV9yYXdk ZXZfdmVyc2lvbi5tYXANCj4gQEAgLTAsMCArMSw0IEBADQo+ICtEUERLXzE4LjAyIHsNCg0KPldp bGwgYmUgMTguMDUNCg0KWWVzLCB3ZSBoYXMgcmViYXNlIG91ciBjb2RlIG9uIDE4LjA1LCB3aWxs IHNlbmQgcGF0Y2hlcyBiYXNlIG9uIDE4LjA1Lg0KDQo+ICsNCj4gKyAgICAgICBsb2NhbDogKjsN Cj4gK307DQo+IC0tDQo+IDEuOC4zLjENCj4NCg==