From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 8C28F58FA for ; Wed, 6 Mar 2019 14:59:07 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Mar 2019 05:59:06 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,448,1544515200"; d="scan'208";a="121472002" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga006.jf.intel.com with ESMTP; 06 Mar 2019 05:59:05 -0800 Received: from FMSMSX110.amr.corp.intel.com (10.18.116.10) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 6 Mar 2019 05:59:05 -0800 Received: from cdsmsx103.ccr.corp.intel.com (172.17.3.37) by fmsmsx110.amr.corp.intel.com (10.18.116.10) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 6 Mar 2019 05:59:04 -0800 Received: from cdsmsx104.ccr.corp.intel.com ([169.254.4.214]) by CDSMSX103.ccr.corp.intel.com ([169.254.5.89]) with mapi id 14.03.0415.000; Wed, 6 Mar 2019 21:59:02 +0800 From: "Zhang, Tianfei" To: "Yigit, Ferruh" , "Xu, Rosen" , "dev@dpdk.org" CC: "Wei, Dan" , "Pei, Andy" , "Yang, Qiming" , "Wang, Haiyue" , "Chen, Santos" , "Zhang, Zhang" Thread-Topic: [PATCH v1 03/11] drivers/raw/ifpga_rawdev: add OPAE share code for IPN3KE Thread-Index: AQHUzzV5+AYp3NtZkkedKaMtP+P2RqX+C24AgACbAMA= Date: Wed, 6 Mar 2019 13:59:02 +0000 Message-ID: References: <1551338000-120348-1-git-send-email-rosen.xu@intel.com> <1551338000-120348-4-git-send-email-rosen.xu@intel.com> <07a297cd-79b2-db7b-9029-471e8be60a67@intel.com> In-Reply-To: <07a297cd-79b2-db7b-9029-471e8be60a67@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYzE1ZGE3YTMtNzYyMC00MDhjLWE1NzQtZDlkMTJiZDk2ZjUzIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiJJZUwzcUhmQVNkaVY2MGtmM0E3eGlqQW4wYlZhU3VDbEpiRHQxb1RMYmlwTjV2YkJ4ZGg2VEFUTTBVa2xpXC95cCJ9 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] [PATCH v1 03/11] drivers/raw/ifpga_rawdev: add OPAE share code for IPN3KE 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, 06 Mar 2019 13:59:08 -0000 DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFlpZ2l0LCBGZXJydWgNCj4g U2VudDogV2VkbmVzZGF5LCBNYXJjaCA2LCAyMDE5IDg6MjggUE0NCj4gVG86IFh1LCBSb3NlbiA8 cm9zZW4ueHVAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+IENjOiBaaGFuZywgVGlhbmZlaSA8 dGlhbmZlaS56aGFuZ0BpbnRlbC5jb20+OyBXZWksIERhbg0KPiA8ZGFuLndlaUBpbnRlbC5jb20+ OyBQZWksIEFuZHkgPGFuZHkucGVpQGludGVsLmNvbT47IFlhbmcsIFFpbWluZw0KPiA8cWltaW5n LnlhbmdAaW50ZWwuY29tPjsgV2FuZywgSGFpeXVlIDxoYWl5dWUud2FuZ0BpbnRlbC5jb20+OyBD aGVuLA0KPiBTYW50b3MgPHNhbnRvcy5jaGVuQGludGVsLmNvbT47IFpoYW5nLCBaaGFuZyA8emhh bmcuemhhbmdAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYxIDAzLzExXSBkcml2 ZXJzL3Jhdy9pZnBnYV9yYXdkZXY6IGFkZCBPUEFFIHNoYXJlDQo+IGNvZGUgZm9yIElQTjNLRQ0K PiANCj4gT24gMi8yOC8yMDE5IDc6MTMgQU0sIFJvc2VuIFh1IHdyb3RlOg0KPiA+IEFkZCBPUEFF IHNoYXJlIGNvZGUgZm9yIEludGVsIEZQR0EgQWNjZWxlcmF0aW9uIE5JQyBJUE4zS0UuDQo+IA0K PiBXaGF0IGRvIHlvdSB0aGluayBhZGRpbmcgYSBmaWxlIHRvIHJlY29yZCB0aGUgdmVyc2lvbiBv ZiB0aGUgc2hhcmVkIGNvZGUsIGFzDQo+IGl0IGlzIGRvbmUgaW4gSW50ZWwgTklDIGRyaXZlcnMs IFJFQURNRSBmaWxlPw0KPiANCj4gQWxzbyBjYW4geW91IHBsZWFzZSBhZGQgbW9yZSBkZXRhaWxz IG9uIHdoYXQgZmVhdXR1cmVzIGhhcyBiZWVuIGFkZGVkIHdpdGgNCj4gdGhpcyB1cGRhdGU/DQoN ClRoYW5rcywgZ29vZCBzdWdnZXN0aW9uLCBJIHdpbGwgYWRkIGEgUkVBRE1FIGZpbGUgaW4gbmV4 dCB2ZXJzaW9uLg0KDQo+IA0KPiBBbmQgaWYgcG9zc2libGUgY2FuIHlvdSBwbGVhc2Ugc3BsaXQg dGhpcyBwYXRjaCBpbnRvIGxvZ2ljYWwgcGFydHM/DQoNCk9rLCBpcyBpdCBwb3NzaWJsZSBzcGxp dCBpbnRvIG11bHRpcGxlIHNtYWxsIHBhdGNoZXMgZm9yIHNoYXJlIGNvZGXvvJ9pZiBuZWNlc3Nh cnksIEkgd2lsbCBkbyBpdCBpbiBuZXh0IHZlcnNpb24uDQoNCj4gDQo+ID4NCj4gPiBTaWduZWQt b2ZmLWJ5OiBUaWFuZmVpIFpoYW5nIDx0aWFuZmVpLnpoYW5nQGludGVsLmNvbT4NCj4gPiAtLS0N Cj4gPiAgZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2Jhc2UvTWFrZWZpbGUgICAgICAgICAgICAg fCAgIDcgKw0KPiA+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9pZnBnYV9hcGkuYyAg ICAgICAgICB8ICA2OSArKy0NCj4gPiAgZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2Jhc2UvaWZw Z2FfYXBpLmggICAgICAgICAgfCAgIDEgKw0KPiA+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYv YmFzZS9pZnBnYV9kZWZpbmVzLmggICAgICB8ICA4NiArKystDQo+ID4gIGRyaXZlcnMvcmF3L2lm cGdhX3Jhd2Rldi9iYXNlL2lmcGdhX2VudW1lcmF0ZS5jICAgIHwgMzQyDQo+ICsrKysrLS0tLS0t LS0NCj4gPiAgZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2Jhc2UvaWZwZ2FfZmVhdHVyZV9kZXYu YyAgfCAxNzAgKysrKystLQ0KPiA+IGRyaXZlcnMvcmF3L2lmcGdhX3Jhd2Rldi9iYXNlL2lmcGdh X2ZlYXR1cmVfZGV2LmggIHwgIDYyICsrLQ0KPiA+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYv YmFzZS9pZnBnYV9mbWUuYyAgICAgICAgICB8IDM3Mw0KPiArKysrKysrKysrKysrKw0KPiA+ICBk cml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9pZnBnYV9mbWVfcHIuYyAgICAgICB8ICAgMiAr LQ0KPiA+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9pZnBnYV9ody5oICAgICAgICAg ICB8ICAyMSArLQ0KPiA+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9pZnBnYV9wb3J0 LmMgICAgICAgICB8ICAyMSArDQo+ID4gIGRyaXZlcnMvcmF3L2lmcGdhX3Jhd2Rldi9iYXNlL29w YWVfYXQyNF9lZXByb20uYyAgIHwgIDg5ICsrKysNCj4gPiAgZHJpdmVycy9yYXcvaWZwZ2FfcmF3 ZGV2L2Jhc2Uvb3BhZV9hdDI0X2VlcHJvbS5oICAgfCAgMTQgKw0KPiA+ICBkcml2ZXJzL3Jhdy9p ZnBnYV9yYXdkZXYvYmFzZS9vcGFlX2h3X2FwaS5jICAgICAgICB8IDE4OSArKysrKystDQo+ID4g IGRyaXZlcnMvcmF3L2lmcGdhX3Jhd2Rldi9iYXNlL29wYWVfaHdfYXBpLmggICAgICAgIHwgIDQ2 ICstDQo+ID4gIGRyaXZlcnMvcmF3L2lmcGdhX3Jhd2Rldi9iYXNlL29wYWVfaTJjLmMgICAgICAg ICAgIHwgNDkwDQo+ICsrKysrKysrKysrKysrKysrKysNCj4gPiAgZHJpdmVycy9yYXcvaWZwZ2Ff cmF3ZGV2L2Jhc2Uvb3BhZV9pMmMuaCAgICAgICAgICAgfCAxMjcgKysrKysNCj4gPiAgZHJpdmVy cy9yYXcvaWZwZ2FfcmF3ZGV2L2Jhc2Uvb3BhZV9pbnRlbF9tYXgxMC5jICAgfCAxMDYgKysrKw0K PiA+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9vcGFlX2ludGVsX21heDEwLmggICB8 ICAzNiArKw0KPiA+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9vcGFlX21kaW8uYyAg ICAgICAgICB8IDU0Mg0KPiArKysrKysrKysrKysrKysrKysrKysNCj4gPiAgZHJpdmVycy9yYXcv aWZwZ2FfcmF3ZGV2L2Jhc2Uvb3BhZV9tZGlvLmggICAgICAgICAgfCAgOTAgKysrKw0KPiA+ICBk cml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9vcGFlX29zZGVwLmggICAgICAgICB8ICAxMSAr LQ0KPiA+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9vcGFlX3BoeV9ncm91cC5jICAg ICB8ICA4OCArKysrDQo+ID4gIGRyaXZlcnMvcmF3L2lmcGdhX3Jhd2Rldi9iYXNlL29wYWVfcGh5 X2dyb3VwLmggICAgIHwgIDUzICsrDQo+ID4gIGRyaXZlcnMvcmF3L2lmcGdhX3Jhd2Rldi9iYXNl L29wYWVfc3BpLmMgICAgICAgICAgIHwgMjYwDQo+ICsrKysrKysrKysNCj4gPiAgZHJpdmVycy9y YXcvaWZwZ2FfcmF3ZGV2L2Jhc2Uvb3BhZV9zcGkuaCAgICAgICAgICAgfCAxMjAgKysrKysNCj4g PiAgLi4uL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9vcGFlX3NwaV90cmFuc2FjdGlvbi5jICAgfCA0 MzgNCj4gKysrKysrKysrKysrKysrKysNCj4gPiAgLi4uL2lmcGdhX3Jhd2Rldi9iYXNlL29zZGVw X3Jhdy9vc2RlcF9nZW5lcmljLmggICAgfCAgIDEgKw0KPiA+ICAuLi4vaWZwZ2FfcmF3ZGV2L2Jh c2Uvb3NkZXBfcnRlL29zZGVwX2dlbmVyaWMuaCAgICB8ICAxMCArDQo+ID4gIDI5IGZpbGVzIGNo YW5nZWQsIDM1NDkgaW5zZXJ0aW9ucygrKSwgMzE1IGRlbGV0aW9ucygtKQ0KPiANCj4gPC4uLj4N Cj4gDQo+ID4gQEAgLTE2NSwzNyArNjgsMzUgQEAgc3RhdGljIHU2NCBmZWF0dXJlX2lkKHZvaWQg X19pb21lbSAqc3RhcnQpDQo+ID4NCj4gPiAgc3RhdGljIGludA0KPiA+ICBidWlsZF9pbmZvX2Fk ZF9zdWJfZmVhdHVyZShzdHJ1Y3QgYnVpbGRfZmVhdHVyZV9kZXZzX2luZm8gKmJpbmZvLA0KPiA+ IC0JCQkgICBzdHJ1Y3QgZmVhdHVyZV9pbmZvICpmaW5mbywgdm9pZCBfX2lvbWVtICpzdGFydCkN Cj4gPiArCQl2b2lkIF9faW9tZW0gKnN0YXJ0LCB1NjQgZmlkLCB1bnNpZ25lZCBpbnQgc2l6ZSwN Cj4gPiArCQl1bnNpZ25lZCBpbnQgdmVjX3N0YXJ0LA0KPiA+ICsJCXVuc2lnbmVkIGludCB2ZWNf Y250KQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgaWZwZ2FfaHcgKmh3ID0gYmluZm8tPmh3Ow0KPiA+ ICAJc3RydWN0IGZlYXR1cmUgKmZlYXR1cmUgPSBOVUxMOw0KPiANCj4gc3RydWN0IG5hbWVzIGFy ZSBzbyBnZW5lcmljICdzdHJ1Y3QgZmVhdHVyZScgJiAnc3RydWN0IGZlYXR1cmVfb3BzJyBkZWZp bmVkIGluDQo+IGlmcGdhX2h3LmgsIHRoZXkgc2VlbXMgbm90IGFkZGVkIGluIHRoaXMgcGF0Y2gs IGJ1dCB3aGF0IGRvIHlvdSB0aGluayBwcmVmaXgNCj4gdGhlbSB2aWEgImlmcGdhXyIgaW4gYSBz ZXBhcmF0ZSBwYXRjaD8NCg0KWWVzLCBJIGFncmVlLCBhZGQgcHJlZml4IG5hbWUgaXMgYmV0dGVy LCBtYXliZSB3ZSBmb3JnZXQgdGhhdCBwYXRjaCwgd2lsbCBmaXggaW4gbmV4dCB2ZXJzaW9uLg0K DQo+IA0KPiA8Li4uPg0KPiANCj4gPiArCWZlYXR1cmUtPnZlY19zdGFydCA9IHZlY19zdGFydDsN Cj4gPiArCWZlYXR1cmUtPnZlY19jbnQgPSB2ZWNfY250Ow0KPiA+ICsNCj4gPiArCWRldl9kZWJ1 ZyhiaW5mbywgIiVzOiBpZD0weCVseCwgcGh5c19hZGRyPTB4JWx4LCBzaXplPSVkXG4iLA0KPiA+ ICsJCQlfX2Z1bmNfXywgZmVhdHVyZS0+aWQsIGZlYXR1cmUtPnBoeXNfYWRkciwgc2l6ZSk7DQo+ IA0KPiAzMmJpdCBidWlsZCBjb21wbGFpbnMgYWJvdXQgJWx4IHVzYWdlOg0KPiANCj4gLi4uL2Rw ZGsvZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2Jhc2UvaWZwZ2FfZW51bWVyYXRlLmM6OTk6NTE6 IGVycm9yOg0KPiBmb3JtYXQg4oCYJWx44oCZIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSDigJhs b25nIHVuc2lnbmVkIGludOKAmSwgYnV0IGFyZ3VtZW50DQo+IDUgaGFzIHR5cGUg4oCYdTY04oCZ IHtha2Eg4oCYbG9uZyBsb25nIHVuc2lnbmVkIGludOKAmX0gWy1XZXJyb3I9IGZvcm1hdD1dDQoN CkluIHRoaXMgdjEgcGF0Y2gsIHdlIGZvcmdldCBjaGVjayB0aGUgMzIgYml0IGNvbXBpbGVyLCB3 aWxsIGZpeCBpbiBuZXh0IHZlcnNpb24uDQoNCj4gDQo+IDwuLi4+DQo+IA0KPiA+IEBAIC02NTEs MTIgKzUzOSwxOSBAQCBzdGF0aWMgaW50IHBhcnNlX2ZlYXR1cmUoc3RydWN0DQo+IGJ1aWxkX2Zl YXR1cmVfZGV2c19pbmZvICpiaW5mbywNCj4gPiAgCQl9DQo+ID4NCj4gPiAgCQloZHIgPSAoc3Ry dWN0IGZlYXR1cmVfaGVhZGVyICopc3RhcnQ7DQo+ID4gKwkJaGVhZGVyLmNzciA9IHJlYWRxKGhk cik7DQo+ID4gKw0KPiA+ICsJCS8qZGVidWcqLw0KPiANCj4gSSB0aGluayBjYW4gZHJvcCBhYm92 ZSBjb21tZW50LCBub3QgYWRkaW5nIGV4dHJhIGluZm9ybWF0aW9uLg0KPiANCj4gPiArCQlkZXZf ZGVidWcoYmluZm8sICIlczogYWRkcmVzcz0weCVsbHgsIHZhbD0weCVseCwgaGVhZGVyLmlkPTB4 JXgsDQo+IGhlYWRlci5uZXh0X29mZnNldD0weCV4LCBoZWFkZXIuZW9sPTB4JXgsIGhlYWRlci50 eXBlPTB4JXhcbiIsDQo+ID4gKwkJCV9fZnVuY19fLCAodW5zaWduZWQgbG9uZyBsb25nKShoZHIp LCBoZWFkZXIuY3NyLA0KPiANCj4gV2h5IG5vdCB1c2UgIiVwIiB0byBwcmludCB0aGUgYWRkcmVz cyBvZiB0aGUgdmFyaWFibGUgYnV0IGNhc3QgaXQgdG8gJ3Vuc2lnbmVkDQo+IGxvbmcgbG9uZyc/ DQpXaWxsIGZpeCBpbiBuZXh0IHZlcnNpb24uDQo+IA0KPiA8Li4uPg0KPiANCj4gPiArc3RhdGlj IGludCBmbWVfc3BpX2luaXQoc3RydWN0IGZlYXR1cmUgKmZlYXR1cmUpIHsNCj4gPiArCXN0cnVj dCBmZWF0dXJlX2ZtZV9zcGkgKnNwaTsNCj4gPiArCXN0cnVjdCBpZnBnYV9mbWVfaHcgKmZtZSA9 IChzdHJ1Y3QgaWZwZ2FfZm1lX2h3ICopZmVhdHVyZS0+cGFyZW50Ow0KPiA+ICsJc3RydWN0IGFs dGVyYV9zcGlfZGV2aWNlICpzcGlfbWFzdGVyOw0KPiA+ICsJc3RydWN0IGludGVsX21heDEwX2Rl dmljZSAqbWF4MTA7DQo+ID4gKwlpbnQgcmV0ID0gMDsNCj4gPiArDQo+ID4gKwlzcGkgPSAoc3Ry dWN0IGZlYXR1cmVfZm1lX3NwaSAqKWZlYXR1cmUtPmFkZHI7DQo+ID4gKw0KPiA+ICsJZGV2X2lu Zm8oZm1lLCAiRk1FIFNQSSBNYXN0ZXIgKE1heDEwKSBJbml0LlxuIik7DQo+ID4gKwlkZXZfZGVi dWcoZm1lLCAiRk1FIFNQSSBiYXNlIGFkZHIgJWxseC5cbiIsDQo+ID4gKwkJICh1bnNpZ25lZCBs b25nIGxvbmcpc3BpKTsNCj4gDQo+IFNhbWUgY29tbWVudCBoZXJlLCB3aHkgbm90ICIlcCIsIHdo eSBjYXN0aW5nIHRoZSB2YXJpYWJsZT8NCj4gDQo+ID4gKwlkZXZfZGVidWcoZm1lLCAic3BpIHBh cmFtPTB4JWx4XG4iLCBvcGFlX3JlYWRxKGZlYXR1cmUtPmFkZHIgKw0KPiA+ICsweDgpKTsNCj4g DQo+IC4uLi9kcGRrL2RyaXZlcnMvcmF3L2lmcGdhX3Jhd2Rldi9iYXNlL2lmcGdhX2ZtZS5jOjc3 NDo2OTogZXJyb3I6IGZvcm1hdA0KPiDigJglbHjigJkNCj4gZXhwZWN0cyBhcmd1bWVudCBvZiB0 eXBlIOKAmGxvbmcgdW5zaWduZWQgaW504oCZLCBidXQgYXJndW1lbnQgNCBoYXMgdHlwZQ0KPiDi gJh1aW50NjRfdOKAmQ0KPiB7YWthIOKAmGxvbmcgbG9uZyB1bnNpZ25lZCBpbnTigJl9IFstV2Vy cm9yPSBmb3JtYXQ9XQ0KPiAgIGRldl9kZWJ1ZyhmbWUsICJzcGkgcGFyYW09MHglbHhcbiIsIG9w YWVfcmVhZHEoZmVhdHVyZS0+YWRkciArIDB4OCkpOw0KDQpXaWxsIGZpeCBpbiBuZXh0IHZlcnNp b24uDQo+IA0KPiBeDQo+IA0KPiA8Li4uPg0KPiANCj4gPiArLyoqDQo+ID4gKyAqIG9wYWVfbWFu YWdlcl9nZXRfcmV0aW1lcl9pbmZvIC0gZ2V0IHJldGltZXIgaW5mbyBsaWtlIFBLVkwgY2hpcA0K PiA+ICsgKiBAbWdyOiBvcGFlX21hbmFnZXIgZm9yIHJldGltZXINCj4gPiArICogQGluZm86IGlu Zm8gcmV0dXJuIHRvIGNhbGxlcg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46IDAgb24gc3VjY2Vz cywgb3RoZXJ3aXNlIGVycm9yIGNvZGUgICovIGludA0KPiA+ICtvcGFlX21hbmFnZXJfZ2V0X3Jl dGltZXJfaW5mbyhzdHJ1Y3Qgb3BhZV9tYW5hZ2VyICptZ3IsDQo+ID4gKwkgICAgICAgc3RydWN0 IG9wYWVfcmV0aW1lcl9pbmZvICppbmZvKSB7DQo+ID4gKwlpZiAoIW1nciB8fCAhbWdyLT5uZXR3 b3JrX29wcykNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwkvL2lmIChtZ3It Pm5ldHdvcmtfb3BzLT5nZXRfcmV0aW1lcl9pbmZvKQ0KPiA+ICsJLy8JcmV0dXJuIG1nci0+bmV0 d29ya19vcHMtPmdldF9yZXRpbWVyX2luZm8obWdyLCBpbmZvKTsNCj4gDQo+IA0KPiBQbGVhc2Ug cmVtb3ZlIGNvbW1lbnRlZCBjb2RlLCBhbmQgZm9yIGNvbW1lbnRzIHBsZWFzZSBwcmVmZXIgYzg5 IHN0eWxlDQo+IGNvbW1lbnRzLg0KDQpXaWxsIGZpeCBpbiBuZXh0IHZlcnNpb24uDQoNCj4gDQo+ IDwuLi4+DQo+IA0KPiA+IEBAIC0wLDAgKzEsNDkwIEBADQo+ID4gKw0KPiA+ICsvKiBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gKyAqIENvcHlyaWdodChjKSAyMDEw LTIwMTggSW50ZWwgQ29ycG9yYXRpb24NCj4gDQo+IERvIHlvdSBwcmVmZXIgdG8gdXBkYXRlIGRh dGUgdG8gMjAxOT8NCg0KT2suDQo+IA0KPiA8Li4uPg0KPiANCj4gPiArc3RhdGljIHZvaWQgcGh5 X2luZGlyZWN0X3dyaXRlKHN0cnVjdCBwaHlfZ3JvdXBfZGV2aWNlICpkZXYsIHU4IGVudHJ5LA0K PiA+ICsJCXUxNiBhZGRyLCB1MzIgdmFsdWUpDQo+ID4gK3sNCj4gPiArCXU2NCBjdHJsOw0KPiA+ ICsNCj4gPiArCWN0cmwgPSBDTURfUkQgPDwgQ1RSTF9DT01NQU5EX1NISUZUIHwNCj4gPiArCQko ZW50cnkgJiBDVFJMX1BIWV9OVU1fTUFTSykgPDwgQ1RSTF9QSFlfTlVNX1NISUZUIHwNCj4gPiAr CQkoYWRkciAmIENUUkxfUEhZX0FERFJfTUFTSykgPDwgQ1RSTF9QSFlfQUREUl9TSElGVCB8DQo+ ID4gKwkJKHZhbHVlICYgQ1RSTF9XUklURV9EQVRBX01BU0spOw0KPiANCj4gSXMgMzJiaXQgc3Vw cG9ydGVkPw0KPiBJZiBzbywgQ01EX1JEIGlzIGRlZmluZWQgYXMgJ3Vuc2lnbmVkIGxvbmcnIHdo aWNoIGlzIDRieXRlcyBsb25nIGluIDMyYml0DQo+IG1hY2hpbmUuIFNpbmNlIENUUkxfQ09NTUFO RF9TSElGVCAgaXMgNjIsIHRoZSByZXN1bHQgd2lsbCBiZSBkaWZmZXJlbnQNCj4gdGhhbiBleHBl Y3RlZC4gQWxzbyB0aGVyZSBpcyBjb21waWxlciB3YXJuaW5nIGZvciBpdDoNCj4gDQo+IC4uLi9k cml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9vcGFlX3BoeV9ncm91cC5jOiBJbiBmdW5jdGlv bg0KPiDigJhwaHlfaW5kaXJlY3Rfd3JpdGXigJk6DQo+IC4uLi9kcml2ZXJzL3Jhdy9pZnBnYV9y YXdkZXYvYmFzZS9vcGFlX3BoeV9ncm91cC5jOjI5OjE2OiBlcnJvcjogbGVmdCBzaGlmdA0KPiBj b3VudCA+PSB3aWR0aCBvZiB0eXBlIFstV2Vycm9yPXNoaWZ0LWNvdW50LW92ZXJmbG93XQ0KPiAg IGN0cmwgPSBDTURfUkQgPDwgQ1RSTF9DT01NQU5EX1NISUZUIHwNCj4gICAgICAgICAgICAgICAg IF5+DQo+IA0KPiBTYW1lIGZvciBzaW1pbGFyIHVzYWdlIGlzIHBoeV9pbmRpcmVjdF9yZWFkKCkN Cg0KVGhlIHJlZ2lzdGVyIGlzIDY0Yml0LiBXZSB3aWxsIGZpeCBmb3IgdGhlIDMyYml0IGNvbXBp bGVyIGluIG5leHQgdmVyc2lvbi4NCg0KPiANCj4gPC4uLj4NCj4gDQo+ID4gK3N0YXRpYyB1bnNp Z25lZCBpbnQgc3BpX3dyaXRlX2J5dGVzKHN0cnVjdCBhbHRlcmFfc3BpX2RldmljZSAqZGV2LA0K PiA+ICtpbnQgY291bnQpIHsNCj4gPiArCXVuc2lnbmVkIGludCB2YWwgPSAwOw0KPiA+ICsJdTE2 ICpwMTY7DQo+ID4gKwl1MzIgKnAzMjsNCj4gPiArDQo+ID4gKwlpZiAoZGV2LT50eGJ1Zikgew0K PiA+ICsJCXN3aXRjaCAoZGV2LT5kYXRhX3dpZHRoKSB7DQo+ID4gKwkJY2FzZSAxOg0KPiA+ICsJ CQl2YWwgPSBkZXYtPnR4YnVmW2NvdW50XTsNCj4gPiArCQkJYnJlYWs7DQo+ID4gKwkJY2FzZSAy Og0KPiA+ICsJCQlwMTYgPSAodTE2ICopKGRldi0+dHhidWYgKyAyKmNvdW50KTsNCj4gPiArCQkJ dmFsID0gKnAxNjsNCj4gPiArCQkJaWYgKGRldi0+ZW5kaWFuID09IFNQSV9CSUdfRU5ESUFOKQ0K PiA+ICsJCQkJdmFsID0gY3B1X3RvX2JlMTYodmFsKTsNCj4gPiArCQkJYnJlYWs7DQo+ID4gKwkJ Y2FzZSA0Og0KPiA+ICsJCQlwMzIgPSAodTMyICopKGRldi0+dHhidWYgKyA0KmNvdW50KTsNCj4g PiArCQkJdmFsID0gKnAzMjsNCj4gPiArCQkJaWYgKGRldi0+ZW5kaWFuID09IFNQSV9CSUdfRU5E SUFOKQ0KPiA+ICsJCQkJdmFsID0gKHZhbCk7DQo+IA0KPiBXaGF0IGlzIHRoZSBpbnRlbnRpb24g aGVyZT8gQ29tcGlsZXIgd2FybmluZzoNCj4gDQo+IC4uLi9kcml2ZXJzL3Jhdy9pZnBnYV9yYXdk ZXYvYmFzZS9vcGFlX3NwaS5jOjEyMjo5OiBlcnJvcjogZXhwbGljaXRseQ0KPiBhc3NpZ25pbmcg dmFsdWUgb2YgdmFyaWFibGUgb2YgdHlwZSAndW5zaWduZWQgaW50JyB0byBpdHNlbGYNCj4gWy1X ZXJyb3IsLVdzZWxmLWFzc2lnbl0NCg0KT2ssIHdpbGwgZml4IGluIG5leHQgdmVyc2lvbi4NCj4g DQo+IDwuLi4+DQo+IA0KPiA+ICsNCj4gPiArI2lmZGVmIE9QQUVfREVCVUcNCj4gDQo+IElzIHRo aXMgREVCVUcgbWFjcm8gZGVmaW5lZCBhbnl3aGVyZT8NCj4gDQo+IDwuLi4+DQo+IA0KPiA+ICsJ c3dpdGNoICh0cmFuc190eXBlKSB7DQo+ID4gKwljYXNlIFNQSV9UUkFOX1NFUV9XUklURToNCj4g PiArCWNhc2UgU1BJX1RSQU5fTk9OX1NFUV9XUklURToNCj4gPiArCQlmb3IgKGkgPSAwOyBpIDwg c2l6ZTsgaSsrKQ0KPiA+ICsJCQkqcCsrID0gKmRhdGErKzsNCj4gPiArDQo+ID4gKwkJCXJldCA9 IHBhY2tldF90b19ieXRlX2NvbnZlcihkZXYsIHNpemUgKyBIRUFERVJfTEVOLA0KPiA+ICsJCQkJ ICAgICAgdHJhbnNhY3Rpb24sIFJFU1BPTlNFX0xFTiwgcmVzcG9uc2UsDQo+ID4gKwkJCQkgICAg ICAmdmFsaWRfbGVuKTsNCj4gPiArCQkJaWYgKHJldCkNCj4gPiArCQkJCXJldHVybiAtRUJVU1k7 DQo+ID4gKw0KPiA+ICsJCQkvKiBjaGVjayB0aGUgcmVzdWx0ICovDQo+ID4gKwkJCWlmIChzaXpl ICE9ICgodW5zaWduZWQgaW50KShyZXNwb25zZVsyXSAmIDB4ZmYpIDw8IDggfA0KPiA+ICsJCQkJ CSh1bnNpZ25lZCBpbnQpKHJlc3BvbnNlWzNdICYgMHhmZikpKQ0KPiA+ICsJCQkJcmV0ID0gLUVC VVNZOw0KPiA+ICsNCj4gPiArCQkJYnJlYWs7DQo+IA0KPiBJbmRlbnRhdGlvbiBpcyB3cm9uZyBh ZnRlciAnZm9yJyBsb29wLiBMb29wcyBzZWVtcyBjb3B5aW5nIGZyb20gJ2RhdGEnIHRvDQo+ICd0 cmFuc2FjdGlvbicgYnVmZmVyLCB3aGljaCBpcyB1c2VkIGxhdGVyLCBzbyB0aGUgbG9naWMgc2Vl bXMgY29ycmVjdCBidXQNCj4gaW5kZW50YXRpb24gaXMgbWlzbGVhZGluZywgaXQgaXMgY2F1c2lu ZyBhIGJ1aWxkIHdhcm5pbmc6DQo+IA0KPiAuLi4vZHBkay9kcml2ZXJzL3Jhdy9pZnBnYV9yYXdk ZXYvYmFzZS9vcGFlX3NwaV90cmFuc2FjdGlvbi5jOiBJbg0KPiBmdW5jdGlvbg0KPiDigJhkb190 cmFuc2FjdGlvbuKAmToNCj4gLi4uL2RwZGsvZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2Jhc2Uv b3BhZV9zcGlfdHJhbnNhY3Rpb24uYzozNjI6MzoNCj4gZXJyb3I6IHRoaXMg4oCYZm9y4oCZIGNs YXVzZSBkb2VzIG5vdCBndWFyZC4uLiBbLVdlcnJvcj1taXNsZWFkaW5nLWluZGVudGF0aW9uXQ0K PiAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQ0KPiAgICBefn4NCj4gLi4uL2RwZGsvZHJp dmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2Jhc2Uvb3BhZV9zcGlfdHJhbnNhY3Rpb24uYzozNjU6NDoN Cj4gbm90ZToNCj4gLi4udGhpcyBzdGF0ZW1lbnQsIGJ1dCB0aGUgbGF0dGVyIGlzIG1pc2xlYWRp bmdseSBpbmRlbnRlZCBhcyBpZiBpdCB3ZXJlIGd1YXJkZWQNCj4gYnkgdGhlIOKAmGZvcuKAmQ0K PiAgICAgcmV0ID0gcGFja2V0X3RvX2J5dGVfY29udmVyKGRldiwgc2l6ZSArIEhFQURFUl9MRU4s DQo+ICAgICBefn4NCldpbGwgZml4IGluIG5leHQgdmVyc2lvbi4NCg0KV2hhdCBHQ0MgY29tcGls ZXIgYXJlIHlvdSB1c2luZz8NCg0K