From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 790A643CEA; Tue, 19 Mar 2024 14:26:02 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 00969402D1; Tue, 19 Mar 2024 14:26:02 +0100 (CET) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id 446CF40298 for ; Tue, 19 Mar 2024 14:26:00 +0100 (CET) Received: from mail.maildlp.com (unknown [172.18.186.231]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4TzXXT4jp1z684m2; Tue, 19 Mar 2024 21:25:29 +0800 (CST) Received: from frapeml100005.china.huawei.com (unknown [7.182.85.132]) by mail.maildlp.com (Postfix) with ESMTPS id 949F61400CF; Tue, 19 Mar 2024 21:25:58 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml100005.china.huawei.com (7.182.85.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Tue, 19 Mar 2024 14:25:58 +0100 Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2507.035; Tue, 19 Mar 2024 14:25:58 +0100 From: Konstantin Ananyev To: Yoan Picchi , Yoan Picchi , Thomas Monjalon , Yipeng Wang , Sameh Gobriel , Bruce Richardson , Vladimir Medvedkin CC: "dev@dpdk.org" , "nd@arm.com" , Ruifeng Wang , Nathan Brown Subject: RE: [PATCH v7 1/4] hash: pack the hitmask for hash in bulk lookup Thread-Topic: [PATCH v7 1/4] hash: pack the hitmask for hash in bulk lookup Thread-Index: AQHadJP+5Ro6T8yAkEGoOrDN5ls2cbE+6Q3QgAAacACAABEvEA== Date: Tue, 19 Mar 2024 13:25:58 +0000 Message-ID: <3cfce8e3b128473096e1d43683fbe6f0@huawei.com> References: <20231020165159.1649282-1-yoan.picchi@arm.com> <20240312154215.802374-1-yoan.picchi@arm.com> <20240312154215.802374-2-yoan.picchi@arm.com> <28cff0e5ea404051acdcb71c567d9d7c@huawei.com> <169368f3-c385-4591-ab3c-531c8918eba3@foss.arm.com> In-Reply-To: <169368f3-c385-4591-ab3c-531c8918eba3@foss.arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.206.138.42] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQoNCj4gPg0KPiA+IEhpLA0KPiA+DQo+ID4+IEN1cnJlbnQgaGl0bWFzayBpbmNsdWRlcyBwYWRk aW5nIGR1ZSB0byBJbnRlbCdzIFNJTUQNCj4gPj4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiBUaGlz IHBhdGNoIGFsbG93cyBub24gSW50ZWwgU0lNRA0KPiA+PiBpbXBsZW1lbnRhdGlvbnMgdG8gYmVu ZWZpdCBmcm9tIGEgZGVuc2UgaGl0bWFzay4NCj4gPj4gSW4gYWRkaXRpb24sIHRoZSBuZXcgZGVu c2UgaGl0bWFzayBpbnRlcndlYXZlIHRoZSBwcmltYXJ5DQo+ID4+IGFuZCBzZWNvbmRhcnkgbWF0 Y2hlcyB3aGljaCBhbGxvdyBhIGJldHRlciBjYWNoZSB1c2FnZSBhbmQNCj4gPj4gZW5hYmxlIGZ1 dHVyZSBpbXByb3ZlbWVudHMgZm9yIHRoZSBTSU1EIGltcGxlbWVudGF0aW9ucw0KPiA+Pg0KPiA+ PiBTaWduZWQtb2ZmLWJ5OiBZb2FuIFBpY2NoaSA8eW9hbi5waWNjaGlAYXJtLmNvbT4NCj4gPj4g UmV2aWV3ZWQtYnk6IFJ1aWZlbmcgV2FuZyA8cnVpZmVuZy53YW5nQGFybS5jb20+DQo+ID4+IFJl dmlld2VkLWJ5OiBOYXRoYW4gQnJvd24gPG5hdGhhbi5icm93bkBhcm0uY29tPg0KPiA+PiAtLS0N Cj4gPj4gICAubWFpbG1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiAr DQo+ID4+ICAgbGliL2hhc2gvYXJjaC9hcm0vY29tcGFyZV9zaWduYXR1cmVzLmggICAgfCAgNjEg KysrKysrKw0KPiA+PiAgIGxpYi9oYXNoL2FyY2gvY29tbW9uL2NvbXBhcmVfc2lnbmF0dXJlcy5o IHwgIDM4ICsrKysrDQo+ID4+ICAgbGliL2hhc2gvYXJjaC94ODYvY29tcGFyZV9zaWduYXR1cmVz LmggICAgfCAgNTMgKysrKysrDQo+ID4+ICAgbGliL2hhc2gvcnRlX2N1Y2tvb19oYXNoLmMgICAg ICAgICAgICAgICAgfCAxOTIgKysrKysrKysrKysrLS0tLS0tLS0tLQ0KPiA+PiAgIDUgZmlsZXMg Y2hhbmdlZCwgMjU1IGluc2VydGlvbnMoKyksIDkxIGRlbGV0aW9ucygtKQ0KPiA+PiAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsaWIvaGFzaC9hcmNoL2FybS9jb21wYXJlX3NpZ25hdHVyZXMuaA0KPiA+ PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaGFzaC9hcmNoL2NvbW1vbi9jb21wYXJlX3NpZ25h dHVyZXMuaA0KPiA+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaGFzaC9hcmNoL3g4Ni9jb21w YXJlX3NpZ25hdHVyZXMuaA0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvLm1haWxtYXAgYi8ubWFp bG1hcA0KPiA+PiBpbmRleCA2NmViYzIwNjY2Li4wMGI1MDQxNGQzIDEwMDY0NA0KPiA+PiAtLS0g YS8ubWFpbG1hcA0KPiA+PiArKysgYi8ubWFpbG1hcA0KPiA+PiBAQCAtNDk0LDYgKzQ5NCw3IEBA IEhhcmkgS3VtYXIgVmVtdWxhIDxoYXJpLmt1bWFyeC52ZW11bGFAaW50ZWwuY29tPg0KPiA+PiAg IEhhcmluaSBSYW1ha3Jpc2huYW4gPGhhcmluaS5yYW1ha3Jpc2huYW5AbWljcm9zb2Z0LmNvbT4N Cj4gPj4gICBIYXJpcHJhc2FkIEdvdmluZGhhcmFqYW4gPGhhcmlwcmFzYWQuZ292aW5kaGFyYWph bkBpbnRlbC5jb20+DQo+ID4+ICAgSGFyaXNoIFBhdGlsIDxoYXJpc2gucGF0aWxAY2F2aXVtLmNv bT4gPGhhcmlzaC5wYXRpbEBxbG9naWMuY29tPg0KPiA+PiArSGFyam90IFNpbmdoIDxoYXJqb3Qu c2luZ2hAYXJtLmNvbT4NCj4gPj4gICBIYXJtYW4gS2FscmEgPGhrYWxyYUBtYXJ2ZWxsLmNvbT4N Cj4gPj4gICBIYXJuZWV0IFNpbmdoIDxoYXJuZWV0LnNpbmdoQGludGVsLmNvbT4NCj4gPj4gICBI YXJvbGQgSHVhbmcgPGJheW1heGh1YW5nQGdtYWlsLmNvbT4NCj4gPj4gQEAgLTE2MzMsNiArMTYz NCw3IEBAIFlpeHVlIFdhbmcgPHlpeHVlLndhbmdAaW50ZWwuY29tPg0KPiA+PiAgIFlpIFlhbmcg PHlhbmd5aTAxQGluc3B1ci5jb20+IDx5aS55LnlhbmdAaW50ZWwuY29tPg0KPiA+PiAgIFlpIFpo YW5nIDx6aGFuZy55aTc1QHp0ZS5jb20uY24+DQo+ID4+ICAgWW9hbm4gRGVzbW91Y2VhdXggPHlk ZXNtb3VjQGNpc2NvLmNvbT4NCj4gPj4gK1lvYW4gUGljY2hpIDx5b2FuLnBpY2NoaUBhcm0uY29t Pg0KPiA+PiAgIFlvZ2VzaCBKYW5ncmEgPHlvZ2VzaC5qYW5ncmFAaW50ZWwuY29tPg0KPiA+PiAg IFlvZ2V2IENoYWltb3ZpY2ggPHlvZ2V2QGNnc3Rvd2VybmV0d29ya3MuY29tPg0KPiA+PiAgIFlv bmdqaWUgR3UgPHlvbmdqaWV4Lmd1QGludGVsLmNvbT4NCj4gPj4gZGlmZiAtLWdpdCBhL2xpYi9o YXNoL2FyY2gvYXJtL2NvbXBhcmVfc2lnbmF0dXJlcy5oIGIvbGliL2hhc2gvYXJjaC9hcm0vY29t cGFyZV9zaWduYXR1cmVzLmgNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgg MDAwMDAwMDAwMC4uMWFmNmJhODE5MA0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKyBiL2xp Yi9oYXNoL2FyY2gvYXJtL2NvbXBhcmVfc2lnbmF0dXJlcy5oDQo+ID4+IEBAIC0wLDAgKzEsNjEg QEANCj4gPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPj4g KyAqIENvcHlyaWdodChjKSAyMDEwLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24NCj4gPj4gKyAqIENv cHlyaWdodChjKSAyMDE4LTIwMjQgQXJtIExpbWl0ZWQNCj4gPj4gKyAqLw0KPiA+PiArDQo+ID4+ ICsvKg0KPiA+PiArICogQXJtJ3MgdmVyc2lvbiB1c2VzIGEgZGVuc2VseSBwYWNrZWQgaGl0bWFz ayBidWZmZXI6DQo+ID4+ICsgKiBFdmVyeSBiaXQgaXMgaW4gdXNlLg0KPiA+PiArICovDQo+ID4+ ICsNCj4gPj4gKyNpbmNsdWRlIDxpbnR0eXBlcy5oPg0KPiA+PiArI2luY2x1ZGUgPHJ0ZV9jb21t b24uaD4NCj4gPj4gKyNpbmNsdWRlIDxydGVfdmVjdC5oPg0KPiA+PiArI2luY2x1ZGUgInJ0ZV9j dWNrb29faGFzaC5oIg0KPiA+PiArDQo+ID4+ICsjZGVmaW5lIERFTlNFX0hBU0hfQlVMS19MT09L VVAgMQ0KPiA+PiArDQo+ID4+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPj4gK2NvbXBhcmVfc2ln bmF0dXJlc19kZW5zZSh1aW50MTZfdCAqaGl0bWFza19idWZmZXIsDQo+ID4+ICsJCQljb25zdCB1 aW50MTZfdCAqcHJpbV9idWNrZXRfc2lncywNCj4gPj4gKwkJCWNvbnN0IHVpbnQxNl90ICpzZWNf YnVja2V0X3NpZ3MsDQo+ID4+ICsJCQl1aW50MTZfdCBzaWcsDQo+ID4+ICsJCQllbnVtIHJ0ZV9o YXNoX3NpZ19jb21wYXJlX2Z1bmN0aW9uIHNpZ19jbXBfZm4pDQo+ID4+ICt7DQo+ID4+ICsNCj4g Pj4gKwlzdGF0aWNfYXNzZXJ0KHNpemVvZigqaGl0bWFza19idWZmZXIpID49IDIqKFJURV9IQVNI X0JVQ0tFVF9FTlRSSUVTLzgpLA0KPiA+PiArCSJUaGUgaGl0bWFzayBtdXN0IGJlIGV4YWN0bHkg d2lkZSBlbm91Z2ggdG8gYWNjZXB0IHRoZSB3aG9sZSBoaXRtYXNrIGlmIGl0IGlzIGRlbnNlIik7 DQo+ID4+ICsNCj4gPj4gKwkvKiBGb3IgbWF0Y2ggbWFzayBldmVyeSBiaXRzIGluZGljYXRlcyB0 aGUgbWF0Y2ggKi8NCj4gPj4gKwlzd2l0Y2ggKHNpZ19jbXBfZm4pIHsNCj4gPj4gKyNpZiBSVEVf SEFTSF9CVUNLRVRfRU5UUklFUyA8PSA4DQo+ID4+ICsJY2FzZSBSVEVfSEFTSF9DT01QQVJFX05F T046IHsNCj4gPj4gKwkJdWludDE2eDhfdCB2bWF0LCB2c2lnLCB4Ow0KPiA+PiArCQlpbnQxNng4 X3Qgc2hpZnQgPSB7MCwgMSwgMiwgMywgNCwgNSwgNiwgN307DQo+ID4+ICsJCXVpbnQxNl90IGxv dywgaGlnaDsNCj4gPj4gKw0KPiA+PiArCQl2c2lnID0gdmxkMXFfZHVwX3UxNigodWludDE2X3Qg Y29uc3QgKikmc2lnKTsNCj4gPj4gKwkJLyogQ29tcGFyZSBhbGwgc2lnbmF0dXJlcyBpbiB0aGUg cHJpbWFyeSBidWNrZXQgKi8NCj4gPj4gKwkJdm1hdCA9IHZjZXFxX3UxNih2c2lnLA0KPiA+PiAr CQkJdmxkMXFfdTE2KCh1aW50MTZfdCBjb25zdCAqKXByaW1fYnVja2V0X3NpZ3MpKTsNCj4gPj4g KwkJeCA9IHZzaGxxX3UxNih2YW5kcV91MTYodm1hdCwgdmR1cHFfbl91MTYoMHgwMDAxKSksIHNo aWZ0KTsNCj4gPj4gKwkJbG93ID0gKHVpbnQxNl90KSh2YWRkdnFfdTE2KHgpKTsNCj4gPj4gKwkJ LyogQ29tcGFyZSBhbGwgc2lnbmF0dXJlcyBpbiB0aGUgc2Vjb25kYXJ5IGJ1Y2tldCAqLw0KPiA+ PiArCQl2bWF0ID0gdmNlcXFfdTE2KHZzaWcsDQo+ID4+ICsJCQl2bGQxcV91MTYoKHVpbnQxNl90 IGNvbnN0ICopc2VjX2J1Y2tldF9zaWdzKSk7DQo+ID4+ICsJCXggPSB2c2hscV91MTYodmFuZHFf dTE2KHZtYXQsIHZkdXBxX25fdTE2KDB4MDAwMSkpLCBzaGlmdCk7DQo+ID4+ICsJCWhpZ2ggPSAo dWludDE2X3QpKHZhZGR2cV91MTYoeCkpOw0KPiA+PiArCQkqaGl0bWFza19idWZmZXIgPSBsb3cg fCBoaWdoIDw8IFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVTOw0KPiA+PiArDQo+ID4+ICsJCX0NCj4g Pj4gKwkJYnJlYWs7DQo+ID4+ICsjZW5kaWYNCj4gPj4gKwlkZWZhdWx0Og0KPiA+PiArCQlmb3Ig KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVTOyBpKyspIHsN Cj4gPj4gKwkJCSpoaXRtYXNrX2J1ZmZlciB8PQ0KPiA+PiArCQkJCSgoc2lnID09IHByaW1fYnVj a2V0X3NpZ3NbaV0pIDw8IGkpOw0KPiA+PiArCQkJKmhpdG1hc2tfYnVmZmVyIHw9DQo+ID4+ICsJ CQkJKChzaWcgPT0gc2VjX2J1Y2tldF9zaWdzW2ldKSA8PCBpKSA8PCBSVEVfSEFTSF9CVUNLRVRf RU5UUklFUzsNCj4gPj4gKwkJfQ0KPiA+PiArCX0NCj4gPj4gK30NCj4gPj4gZGlmZiAtLWdpdCBh L2xpYi9oYXNoL2FyY2gvY29tbW9uL2NvbXBhcmVfc2lnbmF0dXJlcy5oIGIvbGliL2hhc2gvYXJj aC9jb21tb24vY29tcGFyZV9zaWduYXR1cmVzLmgNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gPj4gaW5kZXggMDAwMDAwMDAwMC4uZGNmOTQ0NDAzMg0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ ID4+ICsrKyBiL2xpYi9oYXNoL2FyY2gvY29tbW9uL2NvbXBhcmVfc2lnbmF0dXJlcy5oDQo+ID4+ IEBAIC0wLDAgKzEsMzggQEANCj4gPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt My1DbGF1c2UNCj4gPj4gKyAqIENvcHlyaWdodChjKSAyMDEwLTIwMTYgSW50ZWwgQ29ycG9yYXRp b24NCj4gPj4gKyAqIENvcHlyaWdodChjKSAyMDE4LTIwMjQgQXJtIExpbWl0ZWQNCj4gPj4gKyAq Lw0KPiA+PiArDQo+ID4+ICsvKg0KPiA+PiArICogVGhlIGdlbmVyaWMgdmVyc2lvbiBjb3VsZCB1 c2UgZWl0aGVyIGEgZGVuc2Ugb3Igc3BhcnNlbHkgcGFja2VkIGhpdG1hc2sgYnVmZmVyLA0KPiA+ PiArICogYnV0IHRoZSBkZW5zZSBvbmUgaXMgc2xpZ2h0bHkgZmFzdGVyLg0KPiA+PiArICovDQo+ ID4+ICsNCj4gPj4gKyNpbmNsdWRlIDxpbnR0eXBlcy5oPg0KPiA+PiArI2luY2x1ZGUgPHJ0ZV9j b21tb24uaD4NCj4gPj4gKyNpbmNsdWRlIDxydGVfdmVjdC5oPg0KPiA+PiArI2luY2x1ZGUgInJ0 ZV9jdWNrb29faGFzaC5oIg0KPiA+PiArDQo+ID4+ICsjZGVmaW5lIERFTlNFX0hBU0hfQlVMS19M T09LVVAgMQ0KPiA+PiArDQo+ID4+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPj4gK2NvbXBhcmVf c2lnbmF0dXJlc19kZW5zZSh1aW50MTZfdCAqaGl0bWFza19idWZmZXIsDQo+ID4+ICsJCQljb25z dCB1aW50MTZfdCAqcHJpbV9idWNrZXRfc2lncywNCj4gPj4gKwkJCWNvbnN0IHVpbnQxNl90ICpz ZWNfYnVja2V0X3NpZ3MsDQo+ID4+ICsJCQl1aW50MTZfdCBzaWcsDQo+ID4+ICsJCQllbnVtIHJ0 ZV9oYXNoX3NpZ19jb21wYXJlX2Z1bmN0aW9uIHNpZ19jbXBfZm4pDQo+ID4+ICt7DQo+ID4+ICsJ KHZvaWQpIHNpZ19jbXBfZm47DQo+ID4+ICsNCj4gPj4gKwlzdGF0aWNfYXNzZXJ0KHNpemVvZigq aGl0bWFza19idWZmZXIpID49IDIqKFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVTLzgpLA0KPiA+PiAr CSJUaGUgaGl0bWFzayBtdXN0IGJlIGV4YWN0bHkgd2lkZSBlbm91Z2ggdG8gYWNjZXB0IHRoZSB3 aG9sZSBoaXRtYXNrIGlmIGl0IGlzIGRlbnNlIik7DQo+ID4+ICsNCj4gPj4gKwkvKiBGb3IgbWF0 Y2ggbWFzayBldmVyeSBiaXRzIGluZGljYXRlcyB0aGUgbWF0Y2ggKi8NCj4gPj4gKwlmb3IgKHVu c2lnbmVkIGludCBpID0gMDsgaSA8IFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVTOyBpKyspIHsNCj4g Pj4gKwkJKmhpdG1hc2tfYnVmZmVyIHw9DQo+ID4+ICsJCQkoKHNpZyA9PSBwcmltX2J1Y2tldF9z aWdzW2ldKSA8PCBpKTsNCj4gPj4gKwkJKmhpdG1hc2tfYnVmZmVyIHw9DQo+ID4+ICsJCQkoKHNp ZyA9PSBzZWNfYnVja2V0X3NpZ3NbaV0pIDw8IGkpIDw8IFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVT Ow0KPiA+PiArCX0NCj4gPj4gKw0KPiA+PiArfQ0KPiA+DQo+ID4gVGhhbmtzIGZvciByZS1mYWN0 b3JpbmcgY29tcGFyZV9zaWduYXR1cmVzXy4uLigpIGNvZGUsIGl0IGxvb2tzIG11Y2ggY2xlYW5l ciB0aGF0IHdheS4NCj4gPiBPbmUgcXVlc3Rpb24gSSBoYXZlIC0gZG9lcyBpdCBtZWFuIHRoYXQg bm93IGZvciB4ODYgd2UgYWx3YXlzIHVzZSAnc3BhcnNlJyB3aGlsZSBmb3IgYWxsIG90aGVyDQo+ ID4gQVJNIGFuZCBub24tQVJNIHBsYXRmb3JtcyB3ZSBzd2l0Y2ggdG8gJ2RlbnNlJz8NCj4gDQo+ IFllcyBpdCBkb2VzLiB4ODYgc3VwcG9ydCBvbmx5IHRoZSBzcGFyc2UgbWV0aG9kICh0aGUgbGVn YWN5IG9uZSkuIEFybQ0KPiBhbmQgZ2VuZXJpYyBjb2RlIGNvdWxkIHN1cHBvcnQgYm90aCBkZW5z ZSBhbmQgc3BhcnNlLiBUaGUgcmVhc29uIEkgbWFkZQ0KPiB0aGVtIHVzZSB0aGUgZGVuc2UgbWV0 aG9kIGlzIGJlY2F1c2UgaXQgd2FzIHNsaWdodGx5IGZhc3RlciBpbiBteSB0ZXN0cy4NCg0KT2ss IGJ1dCBiZWZvcmUgdGhhdCwgYSAnZ2VuZXJpYycgb25lIChub24teDg2IGFuZCBub24tQVJNKSB1 c2VkICdzcGFyc2UnIG9uZSwgY29ycmVjdD8NCklmIHNvLCB0aGVuIHByb2JhYmx5IG5lZWQgdG8g b3V0bGluZSBpdCBhIGJpdCBtb3JlIGluIHBhdGNoIGNvbW1lbnRzIGFuZCBtaWdodCBiZSBldmVu IHJlbGVhc2Ugbm90ZXMuDQpBdCBsZWFzdCB0aGF0IHdvdWxkIGJlIG15IGV4cGVjdGF0aW9ucywg cHJvYmFibHkgaGFzaCBsaWIgbWFpbnRhaW5lcnMgbmVlZCB0byBzYXkgd2hhdCBpcyB0aGUgYmVz dCB3YXkgaGVyZS4NClRoZSBjb2RlIHJlZmFjdG9yaW5nIGl0c2VsZiAtIExHVE0uDQoNCj4gKG5v IG5lZWQgdG8gYWRkIHBhZGRpbmcgYW5kIHNoaWZ0cyBhbW9uZ3N0IG90aGVyIGJlbmVmaXQuKQ0K PiANCj4gPg0KPiA+PiBkaWZmIC0tZ2l0IGEvbGliL2hhc2gvYXJjaC94ODYvY29tcGFyZV9zaWdu YXR1cmVzLmggYi9saWIvaGFzaC9hcmNoL3g4Ni9jb21wYXJlX3NpZ25hdHVyZXMuaA0KPiA+PiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleCAwMDAwMDAwMDAwLi43ZWVjNDk5ZTFmDQo+ ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrIGIvbGliL2hhc2gvYXJjaC94ODYvY29tcGFyZV9z aWduYXR1cmVzLmgNCj4gPj4gQEAgLTAsMCArMSw1MyBAQA0KPiA+PiArLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiA+PiArICogQ29weXJpZ2h0KGMpIDIwMTAtMjAx NiBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+PiArICogQ29weXJpZ2h0KGMpIDIwMTgtMjAyNCBBcm0g TGltaXRlZA0KPiA+PiArICovDQo+ID4+ICsNCj4gPj4gKy8qDQo+ID4+ICsgKiB4ODYncyB2ZXJz aW9uIHVzZXMgYSBzcGFyc2VseSBwYWNrZWQgaGl0bWFzayBidWZmZXI6DQo+ID4+ICsgKiBFdmVy eSBvdGhlciBiaXQgaXMgcGFkZGluZy4NCj4gPj4gKyAqLw0KPiA+PiArDQo+ID4+ICsjaW5jbHVk ZSA8aW50dHlwZXMuaD4NCj4gPj4gKyNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+ID4+ICsjaW5j bHVkZSA8cnRlX3ZlY3QuaD4NCj4gPj4gKyNpbmNsdWRlICJydGVfY3Vja29vX2hhc2guaCINCj4g Pj4gKw0KPiA+PiArI2RlZmluZSBERU5TRV9IQVNIX0JVTEtfTE9PS1VQIDANCj4gPj4gKw0KPiA+ PiArc3RhdGljIGlubGluZSB2b2lkDQo+ID4+ICtjb21wYXJlX3NpZ25hdHVyZXNfc3BhcnNlKHVp bnQzMl90ICpwcmltX2hhc2hfbWF0Y2hlcywgdWludDMyX3QgKnNlY19oYXNoX21hdGNoZXMsDQo+ ID4+ICsJCQljb25zdCBzdHJ1Y3QgcnRlX2hhc2hfYnVja2V0ICpwcmltX2JrdCwNCj4gPj4gKwkJ CWNvbnN0IHN0cnVjdCBydGVfaGFzaF9idWNrZXQgKnNlY19ia3QsDQo+ID4+ICsJCQl1aW50MTZf dCBzaWcsDQo+ID4+ICsJCQllbnVtIHJ0ZV9oYXNoX3NpZ19jb21wYXJlX2Z1bmN0aW9uIHNpZ19j bXBfZm4pDQo+ID4+ICt7DQo+ID4+ICsJLyogRm9yIG1hdGNoIG1hc2sgdGhlIGZpcnN0IGJpdCBv ZiBldmVyeSB0d28gYml0cyBpbmRpY2F0ZXMgdGhlIG1hdGNoICovDQo+ID4+ICsJc3dpdGNoIChz aWdfY21wX2ZuKSB7DQo+ID4+ICsjaWYgZGVmaW5lZChfX1NTRTJfXykgJiYgUlRFX0hBU0hfQlVD S0VUX0VOVFJJRVMgPD0gOA0KPiA+PiArCWNhc2UgUlRFX0hBU0hfQ09NUEFSRV9TU0U6DQo+ID4+ ICsJCS8qIENvbXBhcmUgYWxsIHNpZ25hdHVyZXMgaW4gdGhlIGJ1Y2tldCAqLw0KPiA+PiArCQkq cHJpbV9oYXNoX21hdGNoZXMgPSBfbW1fbW92ZW1hc2tfZXBpOChfbW1fY21wZXFfZXBpMTYoDQo+ ID4+ICsJCQkJX21tX2xvYWRfc2kxMjgoDQo+ID4+ICsJCQkJCShfX20xMjhpIGNvbnN0ICopcHJp bV9ia3QtPnNpZ19jdXJyZW50KSwNCj4gPj4gKwkJCQlfbW1fc2V0MV9lcGkxNihzaWcpKSk7DQo+ ID4+ICsJCS8qIEV4dHJhY3QgdGhlIGV2ZW4taW5kZXggYml0cyBvbmx5ICovDQo+ID4+ICsJCSpw cmltX2hhc2hfbWF0Y2hlcyAmPSAweDU1NTU7DQo+ID4+ICsJCS8qIENvbXBhcmUgYWxsIHNpZ25h dHVyZXMgaW4gdGhlIGJ1Y2tldCAqLw0KPiA+PiArCQkqc2VjX2hhc2hfbWF0Y2hlcyA9IF9tbV9t b3ZlbWFza19lcGk4KF9tbV9jbXBlcV9lcGkxNigNCj4gPj4gKwkJCQlfbW1fbG9hZF9zaTEyOCgN Cj4gPj4gKwkJCQkJKF9fbTEyOGkgY29uc3QgKilzZWNfYmt0LT5zaWdfY3VycmVudCksDQo+ID4+ ICsJCQkJX21tX3NldDFfZXBpMTYoc2lnKSkpOw0KPiA+PiArCQkvKiBFeHRyYWN0IHRoZSBldmVu LWluZGV4IGJpdHMgb25seSAqLw0KPiA+PiArCQkqc2VjX2hhc2hfbWF0Y2hlcyAmPSAweDU1NTU7 DQo+ID4+ICsJCWJyZWFrOw0KPiA+PiArI2VuZGlmIC8qIGRlZmluZWQoX19TU0UyX18pICovDQo+ ID4+ICsJZGVmYXVsdDoNCj4gPj4gKwkJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBSVEVf SEFTSF9CVUNLRVRfRU5UUklFUzsgaSsrKSB7DQo+ID4+ICsJCQkqcHJpbV9oYXNoX21hdGNoZXMg fD0NCj4gPj4gKwkJCQkoKHNpZyA9PSBwcmltX2JrdC0+c2lnX2N1cnJlbnRbaV0pIDw8IChpIDw8 IDEpKTsNCj4gPj4gKwkJCSpzZWNfaGFzaF9tYXRjaGVzIHw9DQo+ID4+ICsJCQkJKChzaWcgPT0g c2VjX2JrdC0+c2lnX2N1cnJlbnRbaV0pIDw8IChpIDw8IDEpKTsNCj4gPj4gKwkJfQ0KPiA+PiAr CX0NCj4gPj4gK30NCg0K