From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id CB14D377E for ; Fri, 8 Sep 2017 11:30:31 +0200 (CEST) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Sep 2017 02:30:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,360,1500966000"; d="scan'208";a="309418160" Received: from irsmsx152.ger.corp.intel.com ([163.33.192.66]) by fmsmga004.fm.intel.com with ESMTP; 08 Sep 2017 02:30:29 -0700 Received: from irsmsx103.ger.corp.intel.com ([169.254.3.49]) by IRSMSX152.ger.corp.intel.com ([169.254.6.87]) with mapi id 14.03.0319.002; Fri, 8 Sep 2017 10:30:28 +0100 From: "Singh, Jasvinder" To: "Yigit, Ferruh" , "dev@dpdk.org" CC: "Dumitrescu, Cristian" , "thomas@monjalon.net" Thread-Topic: [PATCH v3 1/4] net/softnic: add softnic PMD Thread-Index: AQHTJla70it5r9nOcEO2bi4fx1qgtaKqtlug Date: Fri, 8 Sep 2017 09:30:28 +0000 Message-ID: <54CBAA185211B4429112C315DA58FF6D3324AD8D@IRSMSX103.ger.corp.intel.com> References: <20170626164334.50621-2-jasvinder.singh@intel.com> <20170811124929.118564-1-jasvinder.singh@intel.com> <20170811124929.118564-2-jasvinder.singh@intel.com> <97795b7b-bfb4-f9da-b847-9b313916c374@intel.com> In-Reply-To: <97795b7b-bfb4-f9da-b847-9b313916c374@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [163.33.239.181] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v3 1/4] net/softnic: add softnic PMD 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: Fri, 08 Sep 2017 09:30:32 -0000 SGkgRmVycnVoLA0KDQpUaGFuayB5b3UgZm9yIHRoZSByZXZpZXcgYW5kIGZlZWRiYWNrLiBQbGVh c2Ugc2VlIGlubGluZSByZXNwb25zZTsNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiBGcm9tOiBZaWdpdCwgRmVycnVoDQo+IFNlbnQ6IFR1ZXNkYXksIFNlcHRlbWJlciA1LCAyMDE3 IDM6NTMgUE0NCj4gVG86IFNpbmdoLCBKYXN2aW5kZXIgPGphc3ZpbmRlci5zaW5naEBpbnRlbC5j b20+OyBkZXZAZHBkay5vcmcNCj4gQ2M6IER1bWl0cmVzY3UsIENyaXN0aWFuIDxjcmlzdGlhbi5k dW1pdHJlc2N1QGludGVsLmNvbT47DQo+IHRob21hc0Btb25qYWxvbi5uZXQNCj4gU3ViamVjdDog UmU6IFtQQVRDSCB2MyAxLzRdIG5ldC9zb2Z0bmljOiBhZGQgc29mdG5pYyBQTUQNCj4gDQo+IE9u IDgvMTEvMjAxNyAxOjQ5IFBNLCBKYXN2aW5kZXIgU2luZ2ggd3JvdGU6DQo+ID4gQWRkIFNvZnRO SUMgUE1EIHRvIHByb3ZpZGUgU1cgZmFsbC1iYWNrIGZvciBldGhkZXYgQVBJcy4NCj4gPg0KPiA+ IFNpZ25lZC1vZmYtYnk6IENyaXN0aWFuIER1bWl0cmVzY3UgPGNyaXN0aWFuLmR1bWl0cmVzY3VA aW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEphc3ZpbmRlciBTaW5naCA8amFzdmluZGVy LnNpbmdoQGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiB2MyBjaGFuZ2VzOg0KPiA+IC0gcmViYXNl IHRvIGRwZGsxNy4wOCByZWxlYXNlDQo+ID4NCj4gPiB2MiBjaGFuZ2VzOg0KPiA+IC0gZml4IGJ1 aWxkIGVycm9ycw0KPiA+IC0gcmViYXNlZCB0byBUTSBBUElzIHY2IHBsdXMgZHBkayBtYXN0ZXIN Cj4gPg0KPiA+ICBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgNSArDQo+ID4gIGNvbmZpZy9jb21tb25fYmFzZSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA1ICsNCj4gPiAgZHJpdmVycy9uZXQvTWFrZWZpbGUgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDUgKw0KPiA+ICBkcml2ZXJzL25ldC9zb2Z0bmljL01ha2VmaWxlICAg ICAgICAgICAgICAgICAgICB8ICA1NiArKysNCj4gPiAgZHJpdmVycy9uZXQvc29mdG5pYy9ydGVf ZXRoX3NvZnRuaWMuYyAgICAgICAgICAgfCA2MDkNCj4gKysrKysrKysrKysrKysrKysrKysrKysr DQo+ID4gIGRyaXZlcnMvbmV0L3NvZnRuaWMvcnRlX2V0aF9zb2Z0bmljLmggICAgICAgICAgIHwg IDU0ICsrKw0KPiA+ICBkcml2ZXJzL25ldC9zb2Z0bmljL3J0ZV9ldGhfc29mdG5pY19pbnRlcm5h bHMuaCB8IDExNCArKysrKw0KPiA+ICBkcml2ZXJzL25ldC9zb2Z0bmljL3J0ZV9ldGhfc29mdG5p Y192ZXJzaW9uLm1hcCB8ICAgNyArDQo+ID4gIG1rL3J0ZS5hcHAubWsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICA1ICstDQo+IA0KPiBBbHNvIGRvY3VtZW50YXRpb24gdXBk YXRlcyBhcmUgcmVxdWlyZWQ6DQo+IC0gLmluaSBmaWxlDQo+IC0gUE1EIGRvY3VtZW50YXRpb24g LnJzdCBmaWxlDQo+IC0gSSBiZWxpZXZlIGl0IGlzIGdvb2QgdG8gdXBkYXRlIHJlbGVhc2Ugbm90 ZSBhYm91dCBuZXcgUE1EDQo+IC0gcmVsZWFzZSBub3RlcyBsaWJyYXJ5IHZlcnNpb24gaW5mbywg c2luY2UgdGhpcyBoYXMgcHVibGljIEFQSQ0KDQpXaWxsIHNlbmQgZG9jdW1lbnRhdGlvbiBwYXRj aC4NCg0KPiA8Li4uPg0KPiANCj4gPiArRVhQT1JUX01BUCA6PSBydGVfZXRoX3NvZnRuaWNfdmVy c2lvbi5tYXANCj4gDQo+IHJ0ZV9wbWRfLi4uIHRvIGJlIGNvbnNpc3RlbnQuDQo+IA0KPiA8Li4u Pg0KDQpXaWxsIGRvLg0KDQo+ID4gKyMNCj4gPiArIyBFeHBvcnQgaW5jbHVkZSBmaWxlcw0KPiA+ ICsjDQo+ID4gK1NZTUxJTksteS1pbmNsdWRlICs9cnRlX2V0aF9zb2Z0bmljLmgNCj4gDQo+IHNw YWNlIGFmdGVyICs9DQo+IA0KDQpXaWxsIGFkZCBzcGFjZS4NCj4gDQo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L3NvZnRuaWMvcnRlX2V0aF9zb2Z0bmljLmMNCj4gPiBiL2RyaXZlcnMvbmV0 L3NvZnRuaWMvcnRlX2V0aF9zb2Z0bmljLmMNCj4gPC4uLj4NCj4gPiArDQo+ID4gK3N0YXRpYyBz dHJ1Y3QgcnRlX3ZkZXZfZHJpdmVyIHBtZF9kcnY7DQo+IA0KPiBXaHkgdGhpcyBpcyByZXF1aXJl ZCwgYWxyZWFkeSBkZWZpbmVkIGJlbG93Lg0KPiBBbmQgZm9yIG5hbWluZywgcG1kPXBvbGwgbW9k ZSBkcml2ZXIsIGRydj1kcml2ZXIsIG1ha2VzICJwb2xsIG1vZGUgZHJpdmVyDQo+IGRyaXZlciIN Cj4gDQoNCk9rLiB3aWxsIGNvcnJlY3QgdGhpcy4NCg0KPiA8Li4uPg0KPiANCj4gPiArc3RhdGlj IGludA0KPiA+ICtwbWRfcnhfcXVldWVfc2V0dXAoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ ID4gKwl1aW50MTZfdCByeF9xdWV1ZV9pZCwNCj4gPiArCXVpbnQxNl90IG5iX3J4X2Rlc2MgX19y dGVfdW51c2VkLA0KPiA+ICsJdW5zaWduZWQgaW50IHNvY2tldF9pZCwNCj4gPiArCWNvbnN0IHN0 cnVjdCBydGVfZXRoX3J4Y29uZiAqcnhfY29uZiBfX3J0ZV91bnVzZWQsDQo+ID4gKwlzdHJ1Y3Qg cnRlX21lbXBvb2wgKm1iX3Bvb2wgX19ydGVfdW51c2VkKSB7DQo+ID4gKwlzdHJ1Y3QgcG1kX2lu dGVybmFscyAqcCA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4gKw0KPiA+ICsJaWYgKHAt PnBhcmFtcy5zb2Z0LmludHJ1c2l2ZSA9PSAwKSB7DQo+ID4gKwkJc3RydWN0IHBtZF9yeF9xdWV1 ZSAqcnhxOw0KPiA+ICsNCj4gPiArCQlyeHEgPSBydGVfem1hbGxvY19zb2NrZXQocC0+cGFyYW1z LnNvZnQubmFtZSwNCj4gPiArCQkJc2l6ZW9mKHN0cnVjdCBwbWRfcnhfcXVldWUpLCAwLCBzb2Nr ZXRfaWQpOw0KPiA+ICsJCWlmIChyeHEgPT0gTlVMTCkNCj4gPiArCQkJcmV0dXJuIC0xOw0KPiAN Cj4gcmV0dXJuIC1FTk9NRU0gPw0KDQpPay4NCiANCj4gPiArDQo+ID4gKwkJcnhxLT5oYXJkLnBv cnRfaWQgPSBwLT5oYXJkLnBvcnRfaWQ7DQo+ID4gKwkJcnhxLT5oYXJkLnJ4X3F1ZXVlX2lkID0g cnhfcXVldWVfaWQ7DQo+ID4gKwkJZGV2LT5kYXRhLT5yeF9xdWV1ZXNbcnhfcXVldWVfaWRdID0g cnhxOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQlzdHJ1Y3QgcnRlX2V0aF9kZXYgKmhhcmRfZGV2 ID0NCj4gPiArCQkJJnJ0ZV9ldGhfZGV2aWNlc1twLT5oYXJkLnBvcnRfaWRdOz4gKw0KPiAJdm9p ZCAqcnhxID0gaGFyZF9kZXYtPmRhdGEtPnJ4X3F1ZXVlc1tyeF9xdWV1ZV9pZF07DQo+ID4gKw0K PiA+ICsJCWlmIChyeHEgPT0gTlVMTCkNCj4gPiArCQkJcmV0dXJuIC0xOw0KPiA+ICsNCj4gPiAr CQlkZXYtPmRhdGEtPnJ4X3F1ZXVlc1tyeF9xdWV1ZV9pZF0gPSByeHE7DQo+IA0KPiBUaGlzIGFz c2lnbnMgdW5kZXJseWluZyBodyBxdWV1ZSBhcyB0aGlzIHNvZnQgUE1EIHF1ZXVlLCB3aGF0IGhh cHBlbnMgaWYNCj4gdHdvIGRpZmZlcmVudCBjb3Jlcywgb25lIHBvbGxzIHRoZSBhY3R1YWwgaHcg ZGV2aWNlIGFuZCBvdGhlciBwb2xscyB0aGUgdGhpcw0KPiB2aXJ0dWFsIGRldmljZSwgc2luY2Ug Ym90aCBhcmUgaW5kZWVkIHNhbWUgcXVldWVzPw0KDQpPbmNlIHNvZnQgZGV2aWNlIGlzIGNyZWF0 ZWQgYW5kIGF0dGFjaGVkIHRvIGhhcmQgZGV2aWNlLCBhcHBsaWNhdGlvbiBoYXMgdG8gcmVhZHMg cGFja2V0cyBmcm9tL3dyaXRlcyBwYWNrZXRzIHRvIHRoZSAic29mdCIgcG9ydCBpbnN0ZWFkIG9m IHRoZSAiaGFyZCIgcG9ydCBhcyBzb2Z0IGRldmljZSBpcyBmZWF0dXJlIHJpY2gNCnZlcnNpb24g b2YgdGhlIGhhcmQgZGV2aWNlIChTZWUgQ292ZXIgbGV0dGVyIG5vdGVzKS4gVGhlIFJYIGFuZCBU WCBxdWV1ZXMgb2YgdGhlICJzb2Z0IiBwb3J0IGFyZSB0aHJlYWQgc2FmZSwgYXMgYW55IGV0aGRl di4gDQogDQo+ID4gKwl9DQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gDQo+IDwu Li4+DQo+IA0KPiA+ICtzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSBpbnQNCj4gPiArcnRlX3Bt ZF9zb2Z0bmljX3J1bl9kZWZhdWx0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KSB7DQo+ID4gKwlz dHJ1Y3QgcG1kX2ludGVybmFscyAqcCA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4gKw0K PiA+ICsJLyogUGVyc2lzdGVudCBjb250ZXh0OiBSZWFkIE9ubHkgKHVwZGF0ZSBub3QgcmVxdWly ZWQpICovDQo+ID4gKwlzdHJ1Y3QgcnRlX21idWYgKipwa3RzID0gcC0+c29mdC5kZWYucGt0czsN Cj4gPiArCXVpbnQxNl90IG5iX3R4X3F1ZXVlcyA9IGRldi0+ZGF0YS0+bmJfdHhfcXVldWVzOw0K PiA+ICsNCj4gPiArCS8qIFBlcnNpc3RlbnQgY29udGV4dDogUmVhZCAtIFdyaXRlICh1cGRhdGUg cmVxdWlyZWQpICovDQo+ID4gKwl1aW50MzJfdCB0eHFfcG9zID0gcC0+c29mdC5kZWYudHhxX3Bv czsNCj4gPiArCXVpbnQzMl90IHBrdHNfbGVuID0gcC0+c29mdC5kZWYucGt0c19sZW47DQo+ID4g Kwl1aW50MzJfdCBmbHVzaF9jb3VudCA9IHAtPnNvZnQuZGVmLmZsdXNoX2NvdW50Ow0KPiA+ICsN Cj4gPiArCS8qIE5vdCBwYXJ0IG9mIHRoZSBwZXJzaXN0ZW50IGNvbnRleHQgKi8NCj4gPiArCXVp bnQzMl90IHBvczsNCj4gPiArCXVpbnQxNl90IGk7DQo+ID4gKw0KPiA+ICsJLyogU29mdCBkZXZp Y2UgVFhRIHJlYWQsIEhhcmQgZGV2aWNlIFRYUSB3cml0ZSAqLw0KPiA+ICsJZm9yIChpID0gMDsg aSA8IG5iX3R4X3F1ZXVlczsgaSsrKSB7DQo+ID4gKwkJc3RydWN0IHJ0ZV9yaW5nICp0eHEgPSBk ZXYtPmRhdGEtPnR4X3F1ZXVlc1t0eHFfcG9zXTsNCj4gPiArDQo+ID4gKwkJLyogUmVhZCBzb2Z0 IGRldmljZSBUWFEgYnVyc3QgdG8gcGFja2V0IGVucXVldWUgYnVmZmVyICovDQo+ID4gKwkJcGt0 c19sZW4gKz0gcnRlX3Jpbmdfc2NfZGVxdWV1ZV9idXJzdCh0eHEsDQo+ID4gKwkJCSh2b2lkICoq KSAmcGt0c1twa3RzX2xlbl0sDQo+ID4gKwkJCURFRkFVTFRfQlVSU1RfU0laRSwNCj4gPiArCQkJ TlVMTCk7DQo+ID4gKw0KPiA+ICsJCS8qIEluY3JlbWVudCBzb2Z0IGRldmljZSBUWFEgKi8NCj4g PiArCQl0eHFfcG9zKys7DQo+ID4gKwkJaWYgKHR4cV9wb3MgPj0gbmJfdHhfcXVldWVzKQ0KPiA+ ICsJCQl0eHFfcG9zID0gMDsNCj4gPiArDQo+ID4gKwkJLyogSGFyZCBkZXZpY2UgVFhRIHdyaXRl IHdoZW4gY29tcGxldGUgYnVyc3QgaXMgYXZhaWxhYmxlICovDQo+ID4gKwkJaWYgKHBrdHNfbGVu ID49IERFRkFVTFRfQlVSU1RfU0laRSkgew0KPiANCj4gVGhlcmUgcXVlc3Rpb25zOg0KPiAxLSBX aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSB0eF9xdWV1ZXMgb2Ygc29mdG5pYywgYW5kIGFzc3VtZSBh bGwgd2lsbCBiZQ0KPiBwcm9jZXNzZWQgYnkgYSBjb3JlLCB0aGlzIGNvcmUgd2lsbCBiZSByZWFk aW5nIGZyb20gYWxsIGludG8gc2luZ2xlIEhXIHF1ZXVlLA0KPiB3b24nIHRoaXMgY3JlYXRlIGEg Ym90dGxlIG5lY2s/DQoNCkkgYW0gbm90IHN1cmUgaWYgSSB1bmRlcnN0YW5kIGNvcnJlY3RseS4g QXMgcGVyIFFvUyBzY2hlZCBsaWJyYXJ5IGltcGxlbWVudGF0aW9uLCB0aGUgbnVtYmVyIG9mIHR4 IHF1ZXVlcyBvZiB0aGUgc29mdG5pYyBkZXBlbmQgdXBvbiB0aGUgbnVtYmVyIG9mIHVzZXJzIHNl bmRpbmcgdGhlaXIgdHJhZmZpYyBhbmQgY29uZmlndXJhYmxlIHZpYSBvbmUgb2YgdGhlIGlucHV0 DQphcmd1bWVudCBmb3IgZGV2aWNlIGNyZWF0aW9uLiBUaGVyZSBkb2Vzbid0IGV4aXN0IGFueSBt YXBwaW5nIGJldHdlZW4gdGhlIHNvZnRuaWMgdHggcXVldWVzIGFuZCBoYXJkIGRldmljZSB0eCBx dWV1ZXMuICBUaGUgc29mdG5pYyBkZXZpY2UgcmVjZWl2ZXMgdGhlIHBhY2tldHMgaW4gaXRzIHNj aGVkdWxpbmcgcXVldWVzICh0eCBxdWV1ZXMpIGFuZCBwcmlvcml0aXplcyB0aGVpciB0cmFuc21p c3Npb24NCmFuZCB0cmFuc21pdCB0aGVtIGFjY29yZGluZ2x5IHRvIHNwZWNpZmljIHF1ZXVlIG9m IHRoZSBoYXJkIGRldmljZShjYW4gYmUgc3BlY2lmaWVkIGFzIGFuIGlucHV0IGFyZ3VtZW50KS4g SXQgd291bGQgYmUgcmVkdW5kYW50IGZvciB0aHJlYWQgaW1wbGVtZW50aW5nIHRoZSBRb1Mgc2No ZWR1bGVyIHRvIGRpc3RyaWJ1dGUgdGhlIHBhY2tldHMgYW1vbmcgdGhlIGhhcmQgZGV2aWNlIHR4 IHF1ZXVlcyB3aGljaCBhY3R1YWxseSBkb2Vzbid0IHNlcnZlIGFueSBwdXJwb3NlLg0KIA0KPiAy LSBUaGlzIGxvZ2ljIHJlYWRzIGZyb20gYWxsIHF1ZXVlcyBhcyBCVVJTVF9TSVpFIGFuZCBtZXJn ZXMgdGhlbSwgaWYNCj4gcXVldWVzIHNwbGl0IHdpdGggYSBSU1Mgb3Igc2ltaWxhciwgdGhhdCBj bGFzaWZmaWNhdGlvbiB3aWxsIGJlIGxvc3QsIHdpbGwgaXQgYmUNCj4gcHJvYmxlbT8NCg0KSSBk b24ndCB0aGluayBzby4gVGhlIFFvUyBzY2hlZHVsZXIgc2l0cyBvbiB0aGUgdHggc2lkZSBqdXN0 IGJlZm9yZSB0aGUgdHJhbnNtaXNzaW9uIHN0YWdlIGFuZCByZWNlaXZlcyB0aGUgcGFja2V0IGJ1 cnN0IGRlc3RpbmVkIGZvciB0aGUgc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2UgdG8gd2hpY2gg aXQgaXMgYXR0YWNoZWQuDQpUaHVzLCBpdCBzY2hlZHVsZXMgdGhlIHBhY2tldHMgZWdyZXNzaW5n IHRocm91Z2ggdGhlIHNwZWNpZmljIHBvcnQgaW5zdGVhZCBvZiBtZXJnaW5nIHRoZSBwYWNrZXRz IGdvaW5nIHRvIGRpZmZlcmVudCBpbnRlcmZhY2VzLg0KIA0KPiAzLSBJZiB0aGVyZSBpcyBub3Qg ZW5vdWdoIHBhY2tldHMgaW4gdGhlIHF1ZXVlcyAoIDwgREVGQVVMVF9CVVJTVF9TSVpFKQ0KPiB0 aG9zZSBwYWNrZXRzIHdvbid0IGJlIHRyYW5zbWl0dGVkIHVubGVzcyBtb3JlIGlzIGNvbW1pbmcs IHdpbGwgdGhpcyBjcmVhdGUNCj4gbGF0ZW5jeSBmb3IgdGhvc2UgY2FzZXM/DQoNCkluIGNhc2Ug b2YgbG93IHRyYWZmaWMgcmF0ZSBzaXR1YXRpb24sIHBhY2tldHMgd2lsbCBiZSBhdXRvbWF0aWNh bGx5IGZsdXNoZWQgYXQgc3BlY2lmaWMgaW50ZXJ2YWwgYXMgZGlzY3Vzc2VkIGJlbG93Lg0KDQo+ IA0KPiA+ICsJCQlmb3IgKHBvcyA9IDA7IHBvcyA8IHBrdHNfbGVuOyApDQo+ID4gKwkJCQlwb3Mg Kz0gcnRlX2V0aF90eF9idXJzdChwLT5oYXJkLnBvcnRfaWQsDQo+ID4gKwkJCQkJcC0+cGFyYW1z LmhhcmQudHhfcXVldWVfaWQsDQo+ID4gKwkJCQkJJnBrdHNbcG9zXSwNCj4gPiArCQkJCQkodWlu dDE2X3QpIChwa3RzX2xlbiAtIHBvcykpOw0KPiA+ICsNCj4gPiArCQkJcGt0c19sZW4gPSAwOw0K PiA+ICsJCQlmbHVzaF9jb3VudCA9IDA7DQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsJCX0NCj4gPiAr CX0NCj4gPiArDQo+ID4gKwlpZiAoZmx1c2hfY291bnQgPj0gRkxVU0hfQ09VTlRfVEhSRVNIT0xE KSB7DQo+IA0KPiBGTFVTSF9DT1VOVF9USFJFU0hPTEQgaXMgKDEgPDwgMTcpLCBhbmQgaWYgbm8g cGFja2V0IGlzIHNlbnQsIGZsYXNoIGNvdW50DQo+IGluY3JlbWVudGVkIGJ5IG9uZSwganVzdCB3 YW50IHRvIGNvbmZpcm0gdGhlIHRyZXNob2xkIHZhbHVlPw0KPiANCj4gQW5kIHdoeSB0aGlzIGZs dXNoIGV4aXN0cz8NCg0KRmx1c2ggbWVjaGFuaXNtIGNvbWVzIGluIHBsYXkgd2hlbiB0cmFmZmlj IHJhdGUgaXMgdmVyeSBsb3cuIEluIHN1Y2ggaW5zdGFuY2UsIHBhY2tldCBmbHVzaCB3aWxsIGJl IHRyaWdnZXJlZCBvbmNlIHRocmVzaG9sZCB2YWx1ZSBpcyBzYXRpc2ZpZWQuIEZvciBleGFtcGxl LCAgY3B1IGNvcmUgc3BpbmluZyBhdCAyLjAgR0h6LCBhcyBwZXIgY3VycmVudA0Kc2V0dGluZywg dGhlIHBhY2tldCBmbHVzaCB3aWxsIGhhcHBlbiBhdCB+NjV1cyBpbnRlcnZhbCBpbiBjYXNlIG9m IHBhY2tldCBidXJzdCBzaXplIGlzIGxlc3MgdGhhbiBzZXQgdmFsdWUuDQoNCj4gPiArCQlmb3Ig KHBvcyA9IDA7IHBvcyA8IHBrdHNfbGVuOyApDQo+ID4gKwkJCXBvcyArPSBydGVfZXRoX3R4X2J1 cnN0KHAtPmhhcmQucG9ydF9pZCwNCj4gPiArCQkJCXAtPnBhcmFtcy5oYXJkLnR4X3F1ZXVlX2lk LA0KPiA+ICsJCQkJJnBrdHNbcG9zXSwNCj4gPiArCQkJCSh1aW50MTZfdCkgKHBrdHNfbGVuIC0g cG9zKSk7DQo+ID4gKw0KPiA+ICsJCXBrdHNfbGVuID0gMDsNCj4gPiArCQlmbHVzaF9jb3VudCA9 IDA7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcC0+c29mdC5kZWYudHhxX3BvcyA9IHR4cV9wb3M7 DQo+ID4gKwlwLT5zb2Z0LmRlZi5wa3RzX2xlbiA9IHBrdHNfbGVuOw0KPiA+ICsJcC0+c29mdC5k ZWYuZmx1c2hfY291bnQgPSBmbHVzaF9jb3VudCArIDE7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7 DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludA0KPiA+ICtydGVfcG1kX3NvZnRuaWNfcnVuKHVpbnQ4 X3QgcG9ydF9pZCkNCj4gPiArew0KPiA+ICsJc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYgPSAmcnRl X2V0aF9kZXZpY2VzW3BvcnRfaWRdOw0KPiANCj4gSXQgY2FuIGJlIHBvc3NpYmxlIHRvIGNyZWF0 ZSBhIG1hY3JvIGZvciB0aGlzLg0KDQpPay4gV2lsbCBkby4NCiANCj4gPC4uLj4NCj4gDQo+ID4g K3N0YXRpYyBpbnQNCj4gPiArZGVmYXVsdF9pbml0KHN0cnVjdCBwbWRfaW50ZXJuYWxzICpwLA0K PiANCj4gZGVmYXVsdF9tYnVmc19pbml0KCk/IGRlZmF1bHRfaW5pdCgpIG9uIGl0cyBvd24gaW4g bm90IHRoYXQgY2xlYXIuDQo+IA0KPiA8Li4uPg0KPiANCj4gPiArc3RhdGljIHZvaWQNCj4gPiAr ZGVmYXVsdF9mcmVlKHN0cnVjdCBwbWRfaW50ZXJuYWxzICpwKQ0KPiANCj4gZGVmYXVsdF9tYnVm c19mcmVlKCk/DQoNClRoZSBnZW5lcmljICBuYW1lIGlzIGNob3NlbiBpZiB3ZSBpbml0aWFsaXpl IGFuZCBmcmVlIG1vcmUgcGFyYW1ldGVycyB0aGFuIG1idWZzLg0KIA0KPiA8Li4uPg0KPiANCj4g PiArc3RhdGljIHZvaWQgKg0KPiA+ICtwbWRfaW5pdChzdHJ1Y3QgcG1kX3BhcmFtcyAqcGFyYW1z LCBpbnQgbnVtYV9ub2RlKSB7DQo+ID4gKwlzdHJ1Y3QgcG1kX2ludGVybmFscyAqcDsNCj4gPiAr CWludCBzdGF0dXM7DQo+ID4gKw0KPiA+ICsJcCA9IHJ0ZV96bWFsbG9jX3NvY2tldChwYXJhbXMt PnNvZnQubmFtZSwNCj4gPiArCQlzaXplb2Yoc3RydWN0IHBtZF9pbnRlcm5hbHMpLA0KPiA+ICsJ CTAsDQo+ID4gKwkJbnVtYV9ub2RlKTsNCj4gPiArCWlmIChwID09IE5VTEwpDQo+ID4gKwkJcmV0 dXJuIE5VTEw7DQo+ID4gKw0KPiA+ICsJbWVtY3B5KCZwLT5wYXJhbXMsIHBhcmFtcywgc2l6ZW9m KHAtPnBhcmFtcykpOw0KPiA+ICsJcnRlX2V0aF9kZXZfZ2V0X3BvcnRfYnlfbmFtZShwYXJhbXMt PmhhcmQubmFtZSwgJnAtDQo+ID5oYXJkLnBvcnRfaWQpOw0KPiANCj4gWW91IG1heSB3YW50IHRv IGNoZWNrIHJldHVybiB2YWx1ZSBvZiB0aGlzLg0KDQpXaWxsIGFkZCBjaGVjay4NCiANCj4gPiAr DQo+ID4gKwkvKiBEZWZhdWx0ICovDQo+ID4gKwlzdGF0dXMgPSBkZWZhdWx0X2luaXQocCwgcGFy YW1zLCBudW1hX25vZGUpOw0KPiA+ICsJaWYgKHN0YXR1cykgew0KPiA+ICsJCXJ0ZV9mcmVlKHAp Ow0KPiA+ICsJCXJldHVybiBOVUxMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiBwOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZA0KPiA+ICtwbWRfZnJlZShzdHJ1Y3QgcG1k X2ludGVybmFscyAqcCkNCj4gPiArew0KPiA+ICsJZGVmYXVsdF9mcmVlKHApOw0KPiANCj4gcC0+ aGFyZC5uYW1lIGFsc28gbmVlZHMgdG8gYmUgZnJlZWQgaGVyZS4NCg0KTm8sIHdlIGRvbid0IGFs bG9jYXRlIGFueSBtZW1vcnkgdG8gdGhpcyB2YXJpYmFsZSBhcyBpdCBwb2ludHMgdG8gdGhlIHZh bHVlIHJldHJpZXZlZCBmcm9tIHRoZSBydGVfZXRoX2Rldl9nZXRfcG9ydF9ieV9uYW1lKCk7DQog DQo+ID4gKw0KPiA+ICsJcnRlX2ZyZWUocCk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQNCj4gPiArcG1kX2V0aGRldl9yZWdpc3RlcihzdHJ1Y3QgcnRlX3ZkZXZfZGV2aWNlICp2ZGV2 LA0KPiA+ICsJc3RydWN0IHBtZF9wYXJhbXMgKnBhcmFtcywNCj4gPiArCXZvaWQgKmRldl9wcml2 YXRlKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXZfaW5mbyBoYXJkX2luZm87DQo+ ID4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXYgKnNvZnRfZGV2Ow0KPiA+ICsJc3RydWN0IHJ0ZV9ldGhf ZGV2X2RhdGEgKnNvZnRfZGF0YTsNCj4gPiArCXVpbnQzMl90IGhhcmRfc3BlZWQ7DQo+ID4gKwlp bnQgbnVtYV9ub2RlOw0KPiA+ICsJdWludDhfdCBoYXJkX3BvcnRfaWQ7DQo+ID4gKw0KPiA+ICsJ cnRlX2V0aF9kZXZfZ2V0X3BvcnRfYnlfbmFtZShwYXJhbXMtPmhhcmQubmFtZSwNCj4gJmhhcmRf cG9ydF9pZCk7DQo+ID4gKwlydGVfZXRoX2Rldl9pbmZvX2dldChoYXJkX3BvcnRfaWQsICZoYXJk X2luZm8pOw0KPiA+ICsJaGFyZF9zcGVlZCA9IGV0aF9kZXZfc3BlZWRfbWF4X21icHMoaGFyZF9p bmZvLnNwZWVkX2NhcGEpOw0KPiA+ICsJbnVtYV9ub2RlID0gcnRlX2V0aF9kZXZfc29ja2V0X2lk KGhhcmRfcG9ydF9pZCk7DQo+ID4gKw0KPiA+ICsJLyogTWVtb3J5IGFsbG9jYXRpb24gKi8NCj4g PiArCXNvZnRfZGF0YSA9IHJ0ZV96bWFsbG9jX3NvY2tldChwYXJhbXMtPnNvZnQubmFtZSwNCj4g PiArCQlzaXplb2YoKnNvZnRfZGF0YSksIDAsIG51bWFfbm9kZSk7DQo+ID4gKwlpZiAoIXNvZnRf ZGF0YSkNCj4gPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiArDQo+ID4gKwkvKiBFdGhkZXYgZW50 cnkgYWxsb2NhdGlvbiAqLw0KPiA+ICsJc29mdF9kZXYgPSBydGVfZXRoX2Rldl9hbGxvY2F0ZShw YXJhbXMtPnNvZnQubmFtZSk7DQo+ID4gKwlpZiAoIXNvZnRfZGV2KSB7DQo+ID4gKwkJcnRlX2Zy ZWUoc29mdF9kYXRhKTsNCj4gPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiArCX0NCj4gPiArDQo+ ID4gKwkvKiBDb25uZWN0IGRldi0+ZGF0YSAqLw0KPiA+ICsJbWVtbW92ZShzb2Z0X2RhdGEtPm5h bWUsDQo+ID4gKwkJc29mdF9kZXYtPmRhdGEtPm5hbWUsDQo+ID4gKwkJc2l6ZW9mKHNvZnRfZGF0 YS0+bmFtZSkpOw0KPiANCj4gSSBndWVzcyB0aGlzIGlzIHJlZHVuZGFudCBoZXJlLCBhbGxvY2F0 aW5nIHNvZnRfZGF0YSBhbmQgcmVzdCwgaXQgaXMgcG9zc2libGUgdG8NCj4gdXNlIHNvZnRfZGV2 LT5kYXRhIGRpcmVjdGx5Lg0KDQpZZXMsICB3aWxsIGNvcnJlY3QgdGhpcy4NCiANCj4gPiArCXNv ZnRfZGF0YS0+cG9ydF9pZCA9IHNvZnRfZGV2LT5kYXRhLT5wb3J0X2lkOw0KPiA+ICsJc29mdF9k YXRhLT5tdHUgPSBzb2Z0X2Rldi0+ZGF0YS0+bXR1Ow0KPiA+ICsJc29mdF9kZXYtPmRhdGEgPSBz b2Z0X2RhdGE7DQo+ID4gKw0KPiA+ICsJLyogZGV2ICovDQo+ID4gKwlzb2Z0X2Rldi0+cnhfcGt0 X2J1cnN0ID0gKHBhcmFtcy0+c29mdC5pbnRydXNpdmUpID8NCj4gPiArCQlOVUxMIDogLyogc2V0 IHVwIGxhdGVyICovDQo+ID4gKwkJcG1kX3J4X3BrdF9idXJzdDsNCj4gPiArCXNvZnRfZGV2LT50 eF9wa3RfYnVyc3QgPSBwbWRfdHhfcGt0X2J1cnN0Ow0KPiA+ICsJc29mdF9kZXYtPnR4X3BrdF9w cmVwYXJlID0gTlVMTDsNCj4gPiArCXNvZnRfZGV2LT5kZXZfb3BzID0gJnBtZF9vcHM7DQo+ID4g Kwlzb2Z0X2Rldi0+ZGV2aWNlID0gJnZkZXYtPmRldmljZTsNCj4gPiArDQo+ID4gKwkvKiBkZXYt PmRhdGEgKi8NCj4gPiArCXNvZnRfZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZSA9IGRldl9wcml2YXRl Ow0KPiA+ICsJc29mdF9kZXYtPmRhdGEtPmRldl9saW5rLmxpbmtfc3BlZWQgPSBoYXJkX3NwZWVk Ow0KPiA+ICsJc29mdF9kZXYtPmRhdGEtPmRldl9saW5rLmxpbmtfZHVwbGV4ID0gRVRIX0xJTktf RlVMTF9EVVBMRVg7DQo+ID4gKwlzb2Z0X2Rldi0+ZGF0YS0+ZGV2X2xpbmsubGlua19hdXRvbmVn ID0gRVRIX0xJTktfU1BFRURfRklYRUQ7DQo+ID4gKwlzb2Z0X2Rldi0+ZGF0YS0+ZGV2X2xpbmsu bGlua19zdGF0dXMgPSBFVEhfTElOS19ET1dOOw0KPiANCj4gRm9yIHNpbXBsaXR5LCBpdCBpcyBw b3NzaWJsZSB0byBoYXZlIGEgc3RhdGljIHN0cnVjdCBydGVfZXRoX2xpbmssIGFuZCBhc3Npbmcg aXQgdG8NCj4gZGF0YS0+ZGV2X2xpbmssIGFzIGRvbmUgaW4gbnVsbCBwbWQuDQoNClRoZSBkZXZp Y2Ugc3BlZWQgaXMgZGV0ZXJtaW5lZCBmcm9tIHRoYXQgb2YgaGFyZCBkZXZpY2UsIHNvIHRob3Vn aHQgdG8gYXNzaWduIHZhbHVlIGV4cGxpY2l0bHkgaGVyZS4NCiANCj4gPiArCXNvZnRfZGV2LT5k YXRhLT5tYWNfYWRkcnMgPSAmZXRoX2FkZHI7DQo+ID4gKwlzb2Z0X2Rldi0+ZGF0YS0+cHJvbWlz Y3VvdXMgPSAxOw0KPiA+ICsJc29mdF9kZXYtPmRhdGEtPmtkcnYgPSBSVEVfS0RSVl9OT05FOw0K PiA+ICsJc29mdF9kZXYtPmRhdGEtPm51bWFfbm9kZSA9IG51bWFfbm9kZTsNCj4gDQo+IElmIHBt ZCBpcyBkZXRhY2hhYmxlLCBuZWVkIGZvbGxvd2luZyBmbGFnOg0KPiBkYXRhLT5kZXZfZmxhZ3Mg PSBSVEVfRVRIX0RFVl9ERVRBQ0hBQkxFOw0KDQpPay4gV2lsbCBkbyB0aGF0Lg0KIA0KPiA+ICsN Cj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiANCj4gPC4uLj4NCj4gDQo+ID4gK3N0 YXRpYyBpbnQNCj4gPiArcG1kX3Byb2JlKHN0cnVjdCBydGVfdmRldl9kZXZpY2UgKnZkZXYpIHsN Cj4gPiArCXN0cnVjdCBwbWRfcGFyYW1zIHA7DQo+ID4gKwljb25zdCBjaGFyICpwYXJhbXM7DQo+ ID4gKwlpbnQgc3RhdHVzOw0KPiA+ICsNCj4gPiArCXN0cnVjdCBydGVfZXRoX2Rldl9pbmZvIGhh cmRfaW5mbzsNCj4gPiArCXVpbnQ4X3QgaGFyZF9wb3J0X2lkOw0KPiA+ICsJaW50IG51bWFfbm9k ZTsNCj4gPiArCXZvaWQgKmRldl9wcml2YXRlOw0KPiA+ICsNCj4gPiArCWlmICghdmRldikNCj4g PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gDQo+IFRoaXMgY2hlY2sgaXMgbm90IHJlcXVpcmVkLCBl YWwgd29uJ3QgY2FsbCB0aGlzIGZ1bmN0aW9uIHdpdGggTlVMTCB2ZGV2Lg0KDQpPay4gV2lsbCBj b3JyZWN0IHRoaXMuDQogDQo+IDwuLi4+DQo+IA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9zb2Z0bmljL3J0ZV9ldGhfc29mdG5pYy5oDQo+ID4gYi9kcml2ZXJzL25ldC9zb2Z0bmljL3J0 ZV9ldGhfc29mdG5pYy5oDQo+IDwuLi4+DQo+ID4gK2ludA0KPiA+ICtydGVfcG1kX3NvZnRuaWNf cnVuKHVpbnQ4X3QgcG9ydF9pZCk7DQo+IA0KPiBTaW5jZSB0aGlzIGlzIHB1YmxpYyBBUEksIHRo aXMgbmVlZHMgdG8gYmUgY29tbWVudGVkIHByb3Blcmx5LCB3aXRoIGRveHlnZW4NCj4gY29tbWVu dC4NCj4NCj4gQnR3LCBzaW5jZSB0aGVyZSBpcyBBUEkgaW4gdGhpcyBQTUQgcGVyaGFwcyBhcGkg ZG9jdW1lbnRhdGlvbiBhbHNvIG5lZWRzIHRvDQo+IGJlIHVwZGF0ZWQgdG8gaW5jbHVkZSB0aGlz Lg0KDQpZZXMsIHdpbGwgYWRkIGRvY3VtZW50YXRpb24uDQo+IDwuLi4+DQo=