From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <tianfei.zhang@intel.com>
Received: from mga07.intel.com (mga07.intel.com [134.134.136.100])
 by dpdk.org (Postfix) with ESMTP id 18F581DA4
 for <dev@dpdk.org>; Thu,  7 Mar 2019 00:59:07 +0100 (CET)
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from orsmga002.jf.intel.com ([10.7.209.21])
 by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;
 06 Mar 2019 15:59:06 -0800
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.58,449,1544515200"; d="scan'208";a="139773583"
Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203])
 by orsmga002.jf.intel.com with ESMTP; 06 Mar 2019 15:59:05 -0800
Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by
 FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS)
 id 14.3.408.0; Wed, 6 Mar 2019 15:59:05 -0800
Received: from cdsmsx151.ccr.corp.intel.com (172.17.4.38) by
 fmsmsx156.amr.corp.intel.com (10.18.116.74) with Microsoft SMTP Server (TLS)
 id 14.3.408.0; Wed, 6 Mar 2019 15:59:04 -0800
Received: from cdsmsx104.ccr.corp.intel.com ([169.254.4.214]) by
 CDSMSX151.ccr.corp.intel.com ([169.254.3.249]) with mapi id 14.03.0415.000;
 Thu, 7 Mar 2019 07:59:02 +0800
From: "Zhang, Tianfei" <tianfei.zhang@intel.com>
To: "Yigit, Ferruh" <ferruh.yigit@intel.com>, "Xu, Rosen"
 <rosen.xu@intel.com>, "dev@dpdk.org" <dev@dpdk.org>
CC: "Wei, Dan" <dan.wei@intel.com>, "Pei, Andy" <andy.pei@intel.com>, "Yang,
 Qiming" <qiming.yang@intel.com>, "Wang, Haiyue" <haiyue.wang@intel.com>,
 "Chen, Santos" <santos.chen@intel.com>, "Zhang, Zhang"
 <zhang.zhang@intel.com>
Thread-Topic: [PATCH v1 03/11] drivers/raw/ifpga_rawdev: add OPAE share code
 for IPN3KE
Thread-Index: AQHUzzV5+AYp3NtZkkedKaMtP+P2RqX+C24AgACbAMD//8BtgIAA66yg
Date: Wed, 6 Mar 2019 23:59:02 +0000
Message-ID: <BA6F50564D52C24884F9840E07E32DEC4DFE48EF@CDSMSX104.ccr.corp.intel.com>
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>
 <BA6F50564D52C24884F9840E07E32DEC4DFE4304@CDSMSX104.ccr.corp.intel.com>
 <543b6067-9056-635c-5ac3-f96a88fb0c95@intel.com>
In-Reply-To: <543b6067-9056-635c-5ac3-f96a88fb0c95@intel.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNDliMTZlMjAtMDY1My00M2I2LWI1NjgtMjA2M2Q0MWI1NzBlIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiJkRlJEd1VENW1CSUZ2dzBcL1wvQ1ZsTU81cFNCbVRDclB4cFY2ckc2U05xQVwvSVlmV3VXYUxEWVhnd0lzWDFlclBnIn0=
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 <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Wed, 06 Mar 2019 23:59:09 -0000

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogWWlnaXQsIEZlcnJ1aA0K
PiBTZW50OiBUaHVyc2RheSwgTWFyY2ggNywgMjAxOSAxOjU1IEFNDQo+IFRvOiBaaGFuZywgVGlh
bmZlaSA8dGlhbmZlaS56aGFuZ0BpbnRlbC5jb20+OyBYdSwgUm9zZW4NCj4gPHJvc2VuLnh1QGlu
dGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiBDYzogV2VpLCBEYW4gPGRhbi53ZWlAaW50ZWwuY29t
PjsgUGVpLCBBbmR5IDxhbmR5LnBlaUBpbnRlbC5jb20+OyBZYW5nLA0KPiBRaW1pbmcgPHFpbWlu
Zy55YW5nQGludGVsLmNvbT47IFdhbmcsIEhhaXl1ZSA8aGFpeXVlLndhbmdAaW50ZWwuY29tPjsN
Cj4gQ2hlbiwgU2FudG9zIDxzYW50b3MuY2hlbkBpbnRlbC5jb20+OyBaaGFuZywgWmhhbmcNCj4g
PHpoYW5nLnpoYW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MSAwMy8xMV0g
ZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2OiBhZGQgT1BBRSBzaGFyZQ0KPiBjb2RlIGZvciBJUE4z
S0UNCj4gDQo+IE9uIDMvNi8yMDE5IDE6NTkgUE0sIFpoYW5nLCBUaWFuZmVpIHdyb3RlOg0KPiA+
DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IFlpZ2l0LCBGZXJy
dWgNCj4gPj4gU2VudDogV2VkbmVzZGF5LCBNYXJjaCA2LCAyMDE5IDg6MjggUE0NCj4gPj4gVG86
IFh1LCBSb3NlbiA8cm9zZW4ueHVAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+ID4+IENjOiBa
aGFuZywgVGlhbmZlaSA8dGlhbmZlaS56aGFuZ0BpbnRlbC5jb20+OyBXZWksIERhbg0KPiA+PiA8
ZGFuLndlaUBpbnRlbC5jb20+OyBQZWksIEFuZHkgPGFuZHkucGVpQGludGVsLmNvbT47IFlhbmcs
IFFpbWluZw0KPiA+PiA8cWltaW5nLnlhbmdAaW50ZWwuY29tPjsgV2FuZywgSGFpeXVlIDxoYWl5
dWUud2FuZ0BpbnRlbC5jb20+Ow0KPiBDaGVuLA0KPiA+PiBTYW50b3MgPHNhbnRvcy5jaGVuQGlu
dGVsLmNvbT47IFpoYW5nLCBaaGFuZw0KPiA8emhhbmcuemhhbmdAaW50ZWwuY29tPg0KPiA+PiBT
dWJqZWN0OiBSZTogW1BBVENIIHYxIDAzLzExXSBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXY6IGFk
ZCBPUEFFDQo+ID4+IHNoYXJlIGNvZGUgZm9yIElQTjNLRQ0KPiA+Pg0KPiA+PiBPbiAyLzI4LzIw
MTkgNzoxMyBBTSwgUm9zZW4gWHUgd3JvdGU6DQo+ID4+PiBBZGQgT1BBRSBzaGFyZSBjb2RlIGZv
ciBJbnRlbCBGUEdBIEFjY2VsZXJhdGlvbiBOSUMgSVBOM0tFLg0KPiA+Pg0KPiA+PiBXaGF0IGRv
IHlvdSB0aGluayBhZGRpbmcgYSBmaWxlIHRvIHJlY29yZCB0aGUgdmVyc2lvbiBvZiB0aGUgc2hh
cmVkDQo+ID4+IGNvZGUsIGFzIGl0IGlzIGRvbmUgaW4gSW50ZWwgTklDIGRyaXZlcnMsIFJFQURN
RSBmaWxlPw0KPiA+Pg0KPiA+PiBBbHNvIGNhbiB5b3UgcGxlYXNlIGFkZCBtb3JlIGRldGFpbHMg
b24gd2hhdCBmZWF1dHVyZXMgaGFzIGJlZW4gYWRkZWQNCj4gPj4gd2l0aCB0aGlzIHVwZGF0ZT8N
Cj4gPg0KPiA+IFRoYW5rcywgZ29vZCBzdWdnZXN0aW9uLCBJIHdpbGwgYWRkIGEgUkVBRE1FIGZp
bGUgaW4gbmV4dCB2ZXJzaW9uLg0KPiA+DQo+ID4+DQo+ID4+IEFuZCBpZiBwb3NzaWJsZSBjYW4g
eW91IHBsZWFzZSBzcGxpdCB0aGlzIHBhdGNoIGludG8gbG9naWNhbCBwYXJ0cz8NCj4gPg0KPiA+
IE9rLCBpcyBpdCBwb3NzaWJsZSBzcGxpdCBpbnRvIG11bHRpcGxlIHNtYWxsIHBhdGNoZXMgZm9y
IHNoYXJlIGNvZGXvvJ9pZg0KPiBuZWNlc3NhcnksIEkgd2lsbCBkbyBpdCBpbiBuZXh0IHZlcnNp
b24uDQo+ID4NCj4gPj4NCj4gPj4+DQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBUaWFuZmVpIFpoYW5n
IDx0aWFuZmVpLnpoYW5nQGludGVsLmNvbT4NCj4gPj4+IC0tLQ0KPiA+Pj4gIGRyaXZlcnMvcmF3
L2lmcGdhX3Jhd2Rldi9iYXNlL01ha2VmaWxlICAgICAgICAgICAgIHwgICA3ICsNCj4gPj4+ICBk
cml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9pZnBnYV9hcGkuYyAgICAgICAgICB8ICA2OSAr
Ky0NCj4gPj4+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9pZnBnYV9hcGkuaCAgICAg
ICAgICB8ICAgMSArDQo+ID4+PiAgZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2Jhc2UvaWZwZ2Ff
ZGVmaW5lcy5oICAgICAgfCAgODYgKysrLQ0KPiA+Pj4gIGRyaXZlcnMvcmF3L2lmcGdhX3Jhd2Rl
di9iYXNlL2lmcGdhX2VudW1lcmF0ZS5jICAgIHwgMzQyDQo+ID4+ICsrKysrLS0tLS0tLS0NCj4g
Pj4+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9pZnBnYV9mZWF0dXJlX2Rldi5jICB8
IDE3MCArKysrKy0tDQo+ID4+PiBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9pZnBnYV9m
ZWF0dXJlX2Rldi5oICB8ICA2MiArKy0NCj4gPj4+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYv
YmFzZS9pZnBnYV9mbWUuYyAgICAgICAgICB8IDM3Mw0KPiA+PiArKysrKysrKysrKysrKw0KPiA+
Pj4gIGRyaXZlcnMvcmF3L2lmcGdhX3Jhd2Rldi9iYXNlL2lmcGdhX2ZtZV9wci5jICAgICAgIHwg
ICAyICstDQo+ID4+PiAgZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2Jhc2UvaWZwZ2FfaHcuaCAg
ICAgICAgICAgfCAgMjEgKy0NCj4gPj4+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9p
ZnBnYV9wb3J0LmMgICAgICAgICB8ICAyMSArDQo+ID4+PiAgZHJpdmVycy9yYXcvaWZwZ2FfcmF3
ZGV2L2Jhc2Uvb3BhZV9hdDI0X2VlcHJvbS5jICAgfCAgODkgKysrKw0KPiA+Pj4gIGRyaXZlcnMv
cmF3L2lmcGdhX3Jhd2Rldi9iYXNlL29wYWVfYXQyNF9lZXByb20uaCAgIHwgIDE0ICsNCj4gPj4+
ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9vcGFlX2h3X2FwaS5jICAgICAgICB8IDE4
OQ0KPiArKysrKystDQo+ID4+PiAgZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2Jhc2Uvb3BhZV9o
d19hcGkuaCAgICAgICAgfCAgNDYgKy0NCj4gPj4+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYv
YmFzZS9vcGFlX2kyYy5jICAgICAgICAgICB8IDQ5MA0KPiA+PiArKysrKysrKysrKysrKysrKysr
DQo+ID4+PiAgZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2Jhc2Uvb3BhZV9pMmMuaCAgICAgICAg
ICAgfCAxMjcgKysrKysNCj4gPj4+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9vcGFl
X2ludGVsX21heDEwLmMgICB8IDEwNiArKysrDQo+ID4+PiAgZHJpdmVycy9yYXcvaWZwZ2FfcmF3
ZGV2L2Jhc2Uvb3BhZV9pbnRlbF9tYXgxMC5oICAgfCAgMzYgKysNCj4gPj4+ICBkcml2ZXJzL3Jh
dy9pZnBnYV9yYXdkZXYvYmFzZS9vcGFlX21kaW8uYyAgICAgICAgICB8IDU0Mg0KPiA+PiArKysr
KysrKysrKysrKysrKysrKysNCj4gPj4+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9v
cGFlX21kaW8uaCAgICAgICAgICB8ICA5MCArKysrDQo+ID4+PiAgZHJpdmVycy9yYXcvaWZwZ2Ff
cmF3ZGV2L2Jhc2Uvb3BhZV9vc2RlcC5oICAgICAgICAgfCAgMTEgKy0NCj4gPj4+ICBkcml2ZXJz
L3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9vcGFlX3BoeV9ncm91cC5jICAgICB8ICA4OCArKysrDQo+
ID4+PiAgZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2Jhc2Uvb3BhZV9waHlfZ3JvdXAuaCAgICAg
fCAgNTMgKysNCj4gPj4+ICBkcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9vcGFlX3NwaS5j
ICAgICAgICAgICB8IDI2MA0KPiA+PiArKysrKysrKysrDQo+ID4+PiAgZHJpdmVycy9yYXcvaWZw
Z2FfcmF3ZGV2L2Jhc2Uvb3BhZV9zcGkuaCAgICAgICAgICAgfCAxMjAgKysrKysNCj4gPj4+ICAu
Li4vcmF3L2lmcGdhX3Jhd2Rldi9iYXNlL29wYWVfc3BpX3RyYW5zYWN0aW9uLmMgICB8IDQzOA0K
PiA+PiArKysrKysrKysrKysrKysrKw0KPiA+Pj4gIC4uLi9pZnBnYV9yYXdkZXYvYmFzZS9vc2Rl
cF9yYXcvb3NkZXBfZ2VuZXJpYy5oICAgIHwgICAxICsNCj4gPj4+ICAuLi4vaWZwZ2FfcmF3ZGV2
L2Jhc2Uvb3NkZXBfcnRlL29zZGVwX2dlbmVyaWMuaCAgICB8ICAxMCArDQo+ID4+PiAgMjkgZmls
ZXMgY2hhbmdlZCwgMzU0OSBpbnNlcnRpb25zKCspLCAzMTUgZGVsZXRpb25zKC0pDQo+ID4+DQo+
ID4+IDwuLi4+DQo+ID4+DQo+ID4+PiBAQCAtMTY1LDM3ICs2OCwzNSBAQCBzdGF0aWMgdTY0IGZl
YXR1cmVfaWQodm9pZCBfX2lvbWVtICpzdGFydCkNCj4gPj4+DQo+ID4+PiAgc3RhdGljIGludA0K
PiA+Pj4gIGJ1aWxkX2luZm9fYWRkX3N1Yl9mZWF0dXJlKHN0cnVjdCBidWlsZF9mZWF0dXJlX2Rl
dnNfaW5mbyAqYmluZm8sDQo+ID4+PiAtCQkJICAgc3RydWN0IGZlYXR1cmVfaW5mbyAqZmluZm8s
IHZvaWQgX19pb21lbSAqc3RhcnQpDQo+ID4+PiArCQl2b2lkIF9faW9tZW0gKnN0YXJ0LCB1NjQg
ZmlkLCB1bnNpZ25lZCBpbnQgc2l6ZSwNCj4gPj4+ICsJCXVuc2lnbmVkIGludCB2ZWNfc3RhcnQs
DQo+ID4+PiArCQl1bnNpZ25lZCBpbnQgdmVjX2NudCkNCj4gPj4+ICB7DQo+ID4+PiAgCXN0cnVj
dCBpZnBnYV9odyAqaHcgPSBiaW5mby0+aHc7DQo+ID4+PiAgCXN0cnVjdCBmZWF0dXJlICpmZWF0
dXJlID0gTlVMTDsNCj4gPj4NCj4gPj4gc3RydWN0IG5hbWVzIGFyZSBzbyBnZW5lcmljICdzdHJ1
Y3QgZmVhdHVyZScgJiAnc3RydWN0IGZlYXR1cmVfb3BzJw0KPiA+PiBkZWZpbmVkIGluIGlmcGdh
X2h3LmgsIHRoZXkgc2VlbXMgbm90IGFkZGVkIGluIHRoaXMgcGF0Y2gsIGJ1dCB3aGF0DQo+ID4+
IGRvIHlvdSB0aGluayBwcmVmaXggdGhlbSB2aWEgImlmcGdhXyIgaW4gYSBzZXBhcmF0ZSBwYXRj
aD8NCj4gPg0KPiA+IFllcywgSSBhZ3JlZSwgYWRkIHByZWZpeCBuYW1lIGlzIGJldHRlciwgbWF5
YmUgd2UgZm9yZ2V0IHRoYXQgcGF0Y2gsIHdpbGwgZml4DQo+IGluIG5leHQgdmVyc2lvbi4NCj4g
Pg0KPiA+Pg0KPiA+PiA8Li4uPg0KPiA+Pg0KPiA+Pj4gKwlmZWF0dXJlLT52ZWNfc3RhcnQgPSB2
ZWNfc3RhcnQ7DQo+ID4+PiArCWZlYXR1cmUtPnZlY19jbnQgPSB2ZWNfY250Ow0KPiA+Pj4gKw0K
PiA+Pj4gKwlkZXZfZGVidWcoYmluZm8sICIlczogaWQ9MHglbHgsIHBoeXNfYWRkcj0weCVseCwg
c2l6ZT0lZFxuIiwNCj4gPj4+ICsJCQlfX2Z1bmNfXywgZmVhdHVyZS0+aWQsIGZlYXR1cmUtPnBo
eXNfYWRkciwgc2l6ZSk7DQo+ID4+DQo+ID4+IDMyYml0IGJ1aWxkIGNvbXBsYWlucyBhYm91dCAl
bHggdXNhZ2U6DQo+ID4+DQo+ID4+IC4uLi9kcGRrL2RyaXZlcnMvcmF3L2lmcGdhX3Jhd2Rldi9i
YXNlL2lmcGdhX2VudW1lcmF0ZS5jOjk5OjUxOiBlcnJvcjoNCj4gPj4gZm9ybWF0IOKAmCVseOKA
mSBleHBlY3RzIGFyZ3VtZW50IG9mIHR5cGUg4oCYbG9uZyB1bnNpZ25lZCBpbnTigJksIGJ1dA0K
PiA+PiBhcmd1bWVudA0KPiA+PiA1IGhhcyB0eXBlIOKAmHU2NOKAmSB7YWthIOKAmGxvbmcgbG9u
ZyB1bnNpZ25lZCBpbnTigJl9IFstV2Vycm9yPSBmb3JtYXQ9XQ0KPiA+DQo+ID4gSW4gdGhpcyB2
MSBwYXRjaCwgd2UgZm9yZ2V0IGNoZWNrIHRoZSAzMiBiaXQgY29tcGlsZXIsIHdpbGwgZml4IGlu
IG5leHQgdmVyc2lvbi4NCj4gPg0KPiA+Pg0KPiA+PiA8Li4uPg0KPiA+Pg0KPiA+Pj4gQEAgLTY1
MSwxMiArNTM5LDE5IEBAIHN0YXRpYyBpbnQgcGFyc2VfZmVhdHVyZShzdHJ1Y3QNCj4gPj4gYnVp
bGRfZmVhdHVyZV9kZXZzX2luZm8gKmJpbmZvLA0KPiA+Pj4gIAkJfQ0KPiA+Pj4NCj4gPj4+ICAJ
CWhkciA9IChzdHJ1Y3QgZmVhdHVyZV9oZWFkZXIgKilzdGFydDsNCj4gPj4+ICsJCWhlYWRlci5j
c3IgPSByZWFkcShoZHIpOw0KPiA+Pj4gKw0KPiA+Pj4gKwkJLypkZWJ1ZyovDQo+ID4+DQo+ID4+
IEkgdGhpbmsgY2FuIGRyb3AgYWJvdmUgY29tbWVudCwgbm90IGFkZGluZyBleHRyYSBpbmZvcm1h
dGlvbi4NCj4gPj4NCj4gPj4+ICsJCWRldl9kZWJ1ZyhiaW5mbywgIiVzOiBhZGRyZXNzPTB4JWxs
eCwgdmFsPTB4JWx4LA0KPiBoZWFkZXIuaWQ9MHgleCwNCj4gPj4gaGVhZGVyLm5leHRfb2Zmc2V0
PTB4JXgsIGhlYWRlci5lb2w9MHgleCwgaGVhZGVyLnR5cGU9MHgleFxuIiwNCj4gPj4+ICsJCQlf
X2Z1bmNfXywgKHVuc2lnbmVkIGxvbmcgbG9uZykoaGRyKSwgaGVhZGVyLmNzciwNCj4gPj4NCj4g
Pj4gV2h5IG5vdCB1c2UgIiVwIiB0byBwcmludCB0aGUgYWRkcmVzcyBvZiB0aGUgdmFyaWFibGUg
YnV0IGNhc3QgaXQgdG8NCj4gPj4gJ3Vuc2lnbmVkIGxvbmcgbG9uZyc/DQo+ID4gV2lsbCBmaXgg
aW4gbmV4dCB2ZXJzaW9uLg0KPiA+Pg0KPiA+PiA8Li4uPg0KPiA+Pg0KPiA+Pj4gK3N0YXRpYyBp
bnQgZm1lX3NwaV9pbml0KHN0cnVjdCBmZWF0dXJlICpmZWF0dXJlKSB7DQo+ID4+PiArCXN0cnVj
dCBmZWF0dXJlX2ZtZV9zcGkgKnNwaTsNCj4gPj4+ICsJc3RydWN0IGlmcGdhX2ZtZV9odyAqZm1l
ID0gKHN0cnVjdCBpZnBnYV9mbWVfaHcNCj4gKilmZWF0dXJlLT5wYXJlbnQ7DQo+ID4+PiArCXN0
cnVjdCBhbHRlcmFfc3BpX2RldmljZSAqc3BpX21hc3RlcjsNCj4gPj4+ICsJc3RydWN0IGludGVs
X21heDEwX2RldmljZSAqbWF4MTA7DQo+ID4+PiArCWludCByZXQgPSAwOw0KPiA+Pj4gKw0KPiA+
Pj4gKwlzcGkgPSAoc3RydWN0IGZlYXR1cmVfZm1lX3NwaSAqKWZlYXR1cmUtPmFkZHI7DQo+ID4+
PiArDQo+ID4+PiArCWRldl9pbmZvKGZtZSwgIkZNRSBTUEkgTWFzdGVyIChNYXgxMCkgSW5pdC5c
biIpOw0KPiA+Pj4gKwlkZXZfZGVidWcoZm1lLCAiRk1FIFNQSSBiYXNlIGFkZHIgJWxseC5cbiIs
DQo+ID4+PiArCQkgKHVuc2lnbmVkIGxvbmcgbG9uZylzcGkpOw0KPiA+Pg0KPiA+PiBTYW1lIGNv
bW1lbnQgaGVyZSwgd2h5IG5vdCAiJXAiLCB3aHkgY2FzdGluZyB0aGUgdmFyaWFibGU/DQo+ID4+
DQo+ID4+PiArCWRldl9kZWJ1ZyhmbWUsICJzcGkgcGFyYW09MHglbHhcbiIsIG9wYWVfcmVhZHEo
ZmVhdHVyZS0+YWRkcg0KPiArDQo+ID4+PiArMHg4KSk7DQo+ID4+DQo+ID4+IC4uLi9kcGRrL2Ry
aXZlcnMvcmF3L2lmcGdhX3Jhd2Rldi9iYXNlL2lmcGdhX2ZtZS5jOjc3NDo2OTogZXJyb3I6DQo+
ID4+IGZvcm1hdCDigJglbHjigJkNCj4gPj4gZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlIOKAmGxv
bmcgdW5zaWduZWQgaW504oCZLCBidXQgYXJndW1lbnQgNCBoYXMgdHlwZQ0KPiA+PiDigJh1aW50
NjRfdOKAmQ0KPiA+PiB7YWthIOKAmGxvbmcgbG9uZyB1bnNpZ25lZCBpbnTigJl9IFstV2Vycm9y
PSBmb3JtYXQ9XQ0KPiA+PiAgIGRldl9kZWJ1ZyhmbWUsICJzcGkgcGFyYW09MHglbHhcbiIsIG9w
YWVfcmVhZHEoZmVhdHVyZS0+YWRkciArDQo+ID4+IDB4OCkpOw0KPiA+DQo+ID4gV2lsbCBmaXgg
aW4gbmV4dCB2ZXJzaW9uLg0KPiA+Pg0KPiA+PiBeDQo+ID4+DQo+ID4+IDwuLi4+DQo+ID4+DQo+
ID4+PiArLyoqDQo+ID4+PiArICogb3BhZV9tYW5hZ2VyX2dldF9yZXRpbWVyX2luZm8gLSBnZXQg
cmV0aW1lciBpbmZvIGxpa2UgUEtWTCBjaGlwDQo+ID4+PiArICogQG1ncjogb3BhZV9tYW5hZ2Vy
IGZvciByZXRpbWVyDQo+ID4+PiArICogQGluZm86IGluZm8gcmV0dXJuIHRvIGNhbGxlcg0KPiA+
Pj4gKyAqDQo+ID4+PiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG90aGVyd2lzZSBlcnJvciBj
b2RlICAqLyBpbnQNCj4gPj4+ICtvcGFlX21hbmFnZXJfZ2V0X3JldGltZXJfaW5mbyhzdHJ1Y3Qg
b3BhZV9tYW5hZ2VyICptZ3IsDQo+ID4+PiArCSAgICAgICBzdHJ1Y3Qgb3BhZV9yZXRpbWVyX2lu
Zm8gKmluZm8pIHsNCj4gPj4+ICsJaWYgKCFtZ3IgfHwgIW1nci0+bmV0d29ya19vcHMpDQo+ID4+
PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4+ICsNCj4gPj4+ICsJLy9pZiAobWdyLT5uZXR3b3Jr
X29wcy0+Z2V0X3JldGltZXJfaW5mbykNCj4gPj4+ICsJLy8JcmV0dXJuIG1nci0+bmV0d29ya19v
cHMtPmdldF9yZXRpbWVyX2luZm8obWdyLCBpbmZvKTsNCj4gPj4NCj4gPj4NCj4gPj4gUGxlYXNl
IHJlbW92ZSBjb21tZW50ZWQgY29kZSwgYW5kIGZvciBjb21tZW50cyBwbGVhc2UgcHJlZmVyIGM4
OQ0KPiA+PiBzdHlsZSBjb21tZW50cy4NCj4gPg0KPiA+IFdpbGwgZml4IGluIG5leHQgdmVyc2lv
bi4NCj4gPg0KPiA+Pg0KPiA+PiA8Li4uPg0KPiA+Pg0KPiA+Pj4gQEAgLTAsMCArMSw0OTAgQEAN
Cj4gPj4+ICsNCj4gPj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNl
DQo+ID4+PiArICogQ29weXJpZ2h0KGMpIDIwMTAtMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+
Pg0KPiA+PiBEbyB5b3UgcHJlZmVyIHRvIHVwZGF0ZSBkYXRlIHRvIDIwMTk/DQo+ID4NCj4gPiBP
ay4NCj4gPj4NCj4gPj4gPC4uLj4NCj4gPj4NCj4gPj4+ICtzdGF0aWMgdm9pZCBwaHlfaW5kaXJl
Y3Rfd3JpdGUoc3RydWN0IHBoeV9ncm91cF9kZXZpY2UgKmRldiwgdTggZW50cnksDQo+ID4+PiAr
CQl1MTYgYWRkciwgdTMyIHZhbHVlKQ0KPiA+Pj4gK3sNCj4gPj4+ICsJdTY0IGN0cmw7DQo+ID4+
PiArDQo+ID4+PiArCWN0cmwgPSBDTURfUkQgPDwgQ1RSTF9DT01NQU5EX1NISUZUIHwNCj4gPj4+
ICsJCShlbnRyeSAmIENUUkxfUEhZX05VTV9NQVNLKSA8PCBDVFJMX1BIWV9OVU1fU0hJRlQgfA0K
PiA+Pj4gKwkJKGFkZHIgJiBDVFJMX1BIWV9BRERSX01BU0spIDw8IENUUkxfUEhZX0FERFJfU0hJ
RlQgfA0KPiA+Pj4gKwkJKHZhbHVlICYgQ1RSTF9XUklURV9EQVRBX01BU0spOw0KPiA+Pg0KPiA+
PiBJcyAzMmJpdCBzdXBwb3J0ZWQ/DQo+ID4+IElmIHNvLCBDTURfUkQgaXMgZGVmaW5lZCBhcyAn
dW5zaWduZWQgbG9uZycgd2hpY2ggaXMgNGJ5dGVzIGxvbmcgaW4NCj4gPj4gMzJiaXQgbWFjaGlu
ZS4gU2luY2UgQ1RSTF9DT01NQU5EX1NISUZUICBpcyA2MiwgdGhlIHJlc3VsdCB3aWxsIGJlDQo+
ID4+IGRpZmZlcmVudCB0aGFuIGV4cGVjdGVkLiBBbHNvIHRoZXJlIGlzIGNvbXBpbGVyIHdhcm5p
bmcgZm9yIGl0Og0KPiA+Pg0KPiA+PiAuLi4vZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2Jhc2Uv
b3BhZV9waHlfZ3JvdXAuYzogSW4gZnVuY3Rpb24NCj4gPj4g4oCYcGh5X2luZGlyZWN0X3dyaXRl
4oCZOg0KPiA+PiAuLi4vZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2Jhc2Uvb3BhZV9waHlfZ3Jv
dXAuYzoyOToxNjogZXJyb3I6IGxlZnQNCj4gPj4gc2hpZnQgY291bnQgPj0gd2lkdGggb2YgdHlw
ZSBbLVdlcnJvcj1zaGlmdC1jb3VudC1vdmVyZmxvd10NCj4gPj4gICBjdHJsID0gQ01EX1JEIDw8
IENUUkxfQ09NTUFORF9TSElGVCB8DQo+ID4+ICAgICAgICAgICAgICAgICBefg0KPiA+Pg0KPiA+
PiBTYW1lIGZvciBzaW1pbGFyIHVzYWdlIGlzIHBoeV9pbmRpcmVjdF9yZWFkKCkNCj4gPg0KPiA+
IFRoZSByZWdpc3RlciBpcyA2NGJpdC4gV2Ugd2lsbCBmaXggZm9yIHRoZSAzMmJpdCBjb21waWxl
ciBpbiBuZXh0IHZlcnNpb24uDQo+ID4NCj4gPj4NCj4gPj4gPC4uLj4NCj4gPj4NCj4gPj4+ICtz
dGF0aWMgdW5zaWduZWQgaW50IHNwaV93cml0ZV9ieXRlcyhzdHJ1Y3QgYWx0ZXJhX3NwaV9kZXZp
Y2UgKmRldiwNCj4gPj4+ICtpbnQgY291bnQpIHsNCj4gPj4+ICsJdW5zaWduZWQgaW50IHZhbCA9
IDA7DQo+ID4+PiArCXUxNiAqcDE2Ow0KPiA+Pj4gKwl1MzIgKnAzMjsNCj4gPj4+ICsNCj4gPj4+
ICsJaWYgKGRldi0+dHhidWYpIHsNCj4gPj4+ICsJCXN3aXRjaCAoZGV2LT5kYXRhX3dpZHRoKSB7
DQo+ID4+PiArCQljYXNlIDE6DQo+ID4+PiArCQkJdmFsID0gZGV2LT50eGJ1Zltjb3VudF07DQo+
ID4+PiArCQkJYnJlYWs7DQo+ID4+PiArCQljYXNlIDI6DQo+ID4+PiArCQkJcDE2ID0gKHUxNiAq
KShkZXYtPnR4YnVmICsgMipjb3VudCk7DQo+ID4+PiArCQkJdmFsID0gKnAxNjsNCj4gPj4+ICsJ
CQlpZiAoZGV2LT5lbmRpYW4gPT0gU1BJX0JJR19FTkRJQU4pDQo+ID4+PiArCQkJCXZhbCA9IGNw
dV90b19iZTE2KHZhbCk7DQo+ID4+PiArCQkJYnJlYWs7DQo+ID4+PiArCQljYXNlIDQ6DQo+ID4+
PiArCQkJcDMyID0gKHUzMiAqKShkZXYtPnR4YnVmICsgNCpjb3VudCk7DQo+ID4+PiArCQkJdmFs
ID0gKnAzMjsNCj4gPj4+ICsJCQlpZiAoZGV2LT5lbmRpYW4gPT0gU1BJX0JJR19FTkRJQU4pDQo+
ID4+PiArCQkJCXZhbCA9ICh2YWwpOw0KPiA+Pg0KPiA+PiBXaGF0IGlzIHRoZSBpbnRlbnRpb24g
aGVyZT8gQ29tcGlsZXIgd2FybmluZzoNCj4gPj4NCj4gPj4gLi4uL2RyaXZlcnMvcmF3L2lmcGdh
X3Jhd2Rldi9iYXNlL29wYWVfc3BpLmM6MTIyOjk6IGVycm9yOiBleHBsaWNpdGx5DQo+ID4+IGFz
c2lnbmluZyB2YWx1ZSBvZiB2YXJpYWJsZSBvZiB0eXBlICd1bnNpZ25lZCBpbnQnIHRvIGl0c2Vs
Zg0KPiA+PiBbLVdlcnJvciwtV3NlbGYtYXNzaWduXQ0KPiA+DQo+ID4gT2ssIHdpbGwgZml4IGlu
IG5leHQgdmVyc2lvbi4NCj4gPj4NCj4gPj4gPC4uLj4NCj4gPj4NCj4gPj4+ICsNCj4gPj4+ICsj
aWZkZWYgT1BBRV9ERUJVRw0KPiA+Pg0KPiA+PiBJcyB0aGlzIERFQlVHIG1hY3JvIGRlZmluZWQg
YW55d2hlcmU/DQo+ID4+DQo+ID4+IDwuLi4+DQo+ID4+DQo+ID4+PiArCXN3aXRjaCAodHJhbnNf
dHlwZSkgew0KPiA+Pj4gKwljYXNlIFNQSV9UUkFOX1NFUV9XUklURToNCj4gPj4+ICsJY2FzZSBT
UElfVFJBTl9OT05fU0VRX1dSSVRFOg0KPiA+Pj4gKwkJZm9yIChpID0gMDsgaSA8IHNpemU7IGkr
KykNCj4gPj4+ICsJCQkqcCsrID0gKmRhdGErKzsNCj4gPj4+ICsNCj4gPj4+ICsJCQlyZXQgPSBw
YWNrZXRfdG9fYnl0ZV9jb252ZXIoZGV2LCBzaXplICsgSEVBREVSX0xFTiwNCj4gPj4+ICsJCQkJ
ICAgICAgdHJhbnNhY3Rpb24sIFJFU1BPTlNFX0xFTiwgcmVzcG9uc2UsDQo+ID4+PiArCQkJCSAg
ICAgICZ2YWxpZF9sZW4pOw0KPiA+Pj4gKwkJCWlmIChyZXQpDQo+ID4+PiArCQkJCXJldHVybiAt
RUJVU1k7DQo+ID4+PiArDQo+ID4+PiArCQkJLyogY2hlY2sgdGhlIHJlc3VsdCAqLw0KPiA+Pj4g
KwkJCWlmIChzaXplICE9ICgodW5zaWduZWQgaW50KShyZXNwb25zZVsyXSAmIDB4ZmYpIDw8IDgg
fA0KPiA+Pj4gKwkJCQkJKHVuc2lnbmVkIGludCkocmVzcG9uc2VbM10gJiAweGZmKSkpDQo+ID4+
PiArCQkJCXJldCA9IC1FQlVTWTsNCj4gPj4+ICsNCj4gPj4+ICsJCQlicmVhazsNCj4gPj4NCj4g
Pj4gSW5kZW50YXRpb24gaXMgd3JvbmcgYWZ0ZXIgJ2ZvcicgbG9vcC4gTG9vcHMgc2VlbXMgY29w
eWluZyBmcm9tDQo+ID4+ICdkYXRhJyB0byAndHJhbnNhY3Rpb24nIGJ1ZmZlciwgd2hpY2ggaXMg
dXNlZCBsYXRlciwgc28gdGhlIGxvZ2ljDQo+ID4+IHNlZW1zIGNvcnJlY3QgYnV0IGluZGVudGF0
aW9uIGlzIG1pc2xlYWRpbmcsIGl0IGlzIGNhdXNpbmcgYSBidWlsZCB3YXJuaW5nOg0KPiA+Pg0K
PiA+PiAuLi4vZHBkay9kcml2ZXJzL3Jhdy9pZnBnYV9yYXdkZXYvYmFzZS9vcGFlX3NwaV90cmFu
c2FjdGlvbi5jOiBJbg0KPiA+PiBmdW5jdGlvbg0KPiA+PiDigJhkb190cmFuc2FjdGlvbuKAmToN
Cj4gPj4gLi4uL2RwZGsvZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2Jhc2Uvb3BhZV9zcGlfdHJh
bnNhY3Rpb24uYzozNjI6MzoNCj4gPj4gZXJyb3I6IHRoaXMg4oCYZm9y4oCZIGNsYXVzZSBkb2Vz
IG5vdCBndWFyZC4uLg0KPiBbLVdlcnJvcj1taXNsZWFkaW5nLWluZGVudGF0aW9uXQ0KPiA+PiAg
ICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQ0KPiA+PiAgICBefn4NCj4gPj4gLi4uL2RwZGsv
ZHJpdmVycy9yYXcvaWZwZ2FfcmF3ZGV2L2Jhc2Uvb3BhZV9zcGlfdHJhbnNhY3Rpb24uYzozNjU6
NDoNCj4gPj4gbm90ZToNCj4gPj4gLi4udGhpcyBzdGF0ZW1lbnQsIGJ1dCB0aGUgbGF0dGVyIGlz
IG1pc2xlYWRpbmdseSBpbmRlbnRlZCBhcyBpZiBpdA0KPiA+PiB3ZXJlIGd1YXJkZWQgYnkgdGhl
IOKAmGZvcuKAmQ0KPiA+PiAgICAgcmV0ID0gcGFja2V0X3RvX2J5dGVfY29udmVyKGRldiwgc2l6
ZSArIEhFQURFUl9MRU4sDQo+ID4+ICAgICBefn4NCj4gPiBXaWxsIGZpeCBpbiBuZXh0IHZlcnNp
b24uDQo+ID4NCj4gPiBXaGF0IEdDQyBjb21waWxlciBhcmUgeW91IHVzaW5nPw0KPiANCj4gZ2Nj
IChHQ0MpIDguMi4xIDIwMTgxMjE1IChSZWQgSGF0IDguMi4xLTYpIGNsYW5nIHZlcnNpb24gNy4w
LjEgKEZlZG9yYQ0KPiA3LjAuMS0yLmZjMjkpIGljYyAoSUNDKSAxOS4wLjIuMTg3IDIwMTkwMTE3
DQo+IA0KPiB0aGUgYnVpbGQgZXJyb3JzIEkgcHV0IGFyZSBmcm9tIG9uZSBvZiB0aGUgYWJvdmUg
b25lcywgc2luY2UgdGhlcmUgd2VyZSBtYW55DQo+IGVycm9ycyBJIGRpZG4ndCBmaWx0ZXIgd2hp
Y2ggZXJyb3IgaXMgc3BlY2lmaWMgdG8gd2hpY2ggY29tcGlsZXIuDQpUaGFua3MsIHdlIHdpbGwg
Y2xlYW4gb3VyIGNvZGUgZm9yIGFsbCBvZiBjb21waWxlcnMgaW4gbmV4dCB2ZXJzaW9uLg0KPiAN
Cg0K