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 9D6D941D50; Thu, 23 Feb 2023 14:31:35 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 67689431B9; Thu, 23 Feb 2023 14:31:34 +0100 (CET) Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by mails.dpdk.org (Postfix) with ESMTP id D60E143196; Thu, 23 Feb 2023 14:31:31 +0100 (CET) Received: from dggpeml100023.china.huawei.com (unknown [172.30.72.53]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4PMv5669dJzKppm; Thu, 23 Feb 2023 21:29:30 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by dggpeml100023.china.huawei.com (7.185.36.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.17; Thu, 23 Feb 2023 21:31:24 +0800 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.017; Thu, 23 Feb 2023 14:31:22 +0100 From: Konstantin Ananyev To: Fengchengwen , Honnappa Nagarahalli , Stephen Hemminger , Ruifeng Wang , "Ajit Khaparde (ajit.khaparde@broadcom.com)" CC: Ashok Kaladi , "jerinj@marvell.com" , "thomas@monjalon.net" , "dev@dpdk.org" , "s.v.naga.harish.k@intel.com" , "erik.g.carrillo@intel.com" , "abhinandan.gujjar@intel.com" , "stable@dpdk.org" , nd Subject: RE: [PATCH 2/2] ethdev: fix race condition in fast-path ops setup Thread-Topic: [PATCH 2/2] ethdev: fix race condition in fast-path ops setup Thread-Index: AQHZRPHnBL1vPilgIEWuG59yHT+R767XVo0AgAGZ0YCAAKEXgIAAh9OAgACoesCAASVfAIAAPmKAgABYF4A= Date: Thu, 23 Feb 2023 13:31:22 +0000 Message-ID: <54fbf4e55cd44477b1e956f98a7a3c50@huawei.com> References: <20230220060839.1267349-1-ashok.k.kaladi@intel.com> <20230220060839.1267349-2-ashok.k.kaladi@intel.com> <4786db4b-63dc-5329-522d-77eb58d4cff4@huawei.com> <20230221090053.14d653bf@hermes.local> <3cd97a71-b32f-b33b-dce1-46fabad182f6@huawei.com> In-Reply-To: <3cd97a71-b32f-b33b-dce1-46fabad182f6@huawei.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-CFilter-Loop: Reflected 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 DQoNCj4gPj4+Pj4+PiBJZiBldGhkZXYgZW5xdWV1ZSBvciBkZXF1ZXVlIGZ1bmN0aW9uIGlzIGNh bGxlZCBkdXJpbmcNCj4gPj4+Pj4+PiBldGhfZGV2X2ZwX29wc19zZXR1cCgpLCBpdCBtYXkgZ2V0 IHByZS1lbXB0ZWQgYWZ0ZXIgc2V0dGluZyB0aGUNCj4gPj4+Pj4+PiBmdW5jdGlvbiBwb2ludGVy cywgYnV0IGJlZm9yZSBzZXR0aW5nIHRoZSBwb2ludGVyIHRvIHBvcnQgZGF0YS4NCj4gPj4+Pj4+ PiBJbiB0aGlzIGNhc2UgdGhlIG5ld2x5IHJlZ2lzdGVyZWQgZW5xdWV1ZS9kZXF1ZXVlIGZ1bmN0 aW9uIHdpbGwNCj4gPj4+Pj4+PiB1c2UgZHVtbXkgcG9ydCBkYXRhIGFuZCBlbmQgdXAgaW4gc2Vn IGZhdWx0Lg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gVGhpcyBwYXRjaCBtb3ZlcyB0aGUgdXBkYXRp b24gb2YgZWFjaCBkYXRhIHBvaW50ZXJzIGJlZm9yZQ0KPiA+Pj4+Pj4+IHVwZGF0aW5nIGNvcnJl c3BvbmRpbmcgZnVuY3Rpb24gcG9pbnRlcnMuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBGaXhlczog Yzg3ZDQzNWE0ZDc5ICgiZXRoZGV2OiBjb3B5IGZhc3QtcGF0aCBBUEkgaW50byBzZXBhcmF0ZQ0K PiA+Pj4+Pj4+IHN0cnVjdHVyZSIpDQo+ID4+Pj4+Pj4gQ2M6IHN0YWJsZUBkcGRrLm9yZw0KPiA+ Pj4+DQo+ID4+Pj4gV2h5IGlzIHNvbWV0aGluZyBjYWxsaW5nIGVucXVldWUvZGVxdWV1ZSB3aGVu IGRldmljZSBpcyBub3QgZnVsbHkNCj4gPj4gc3RhcnRlZC4NCj4gPj4+PiBBIGNvcnJlY3RseSB3 cml0dGVuIGFwcGxpY2F0aW9uIHdvdWxkIG5vdCBjYWxsIHJ4L3R4IGJ1cnN0IHVudGlsDQo+ID4+ Pj4gYWZ0ZXIgZXRoZGV2IHN0YXJ0IGhhZCBmaW5pc2hlZC4NCj4gPj4+DQo+ID4+PiBQbGVhc2Ug cmVmZXIgdGhlIGViMGQ0NzFhODk0IChldGhkZXY6IGFkZCBwcm9hY3RpdmUgZXJyb3IgaGFuZGxp bmcNCj4gPj4+IG1vZGUpLCB3aGVuIGRyaXZlciByZWNvdmVyIGl0c2VsZiwgdGhlIGFwcGxpY2F0 aW9uIG1heSBzdGlsbCBpbnZva2UNCj4gPj4gZW5xdWV1ZS9kZXF1ZXVlIEFQSS4NCj4gPj4NCj4g Pj4gUmlnaHQgbm93IERQREsgZXRoZGV2IGxheWVyICpkb2VzIG5vdCogcHJvdmlkZSBzeW5jaHJv bml6YXRpb24NCj4gPj4gbWVjaGFuaXNtcyBiZXR3ZWVuIGRhdGEtcGF0aCBhbmQgY29udHJvbC1w YXRoIGZ1bmN0aW9ucy4NCj4gPj4gVGhhdCB3YXMgYSBkZWxpYmVyYXRlIGRlaXNnbiBjaG9pY2Uu IElmIHdlIHdhbnQgdG8gY2hhbmdlIHRoYXQgcnVsZSwgdGhlbiBJDQo+ID4+IHN1cHBvc2Ugd2Ug bmVlZCBhIGNvbW11bml0eSBjb25zZW5zdXMgZm9yIGl0Lg0KPiA+PiBJIHRoaW5rIHRoYXQgaWYg dGhlIGRyaXZlciB3YW50cyB0byBwcm92aWRlIHNvbWUgc29ydCBvZiBlcnJvciByZWNvdmVyeQ0K PiA+PiBwcm9jZWR1cmUsIHRoZW4gaXQgaGFzIHRvIHByb3ZpZGUgc29tZSBzeW5jaHJvbml6YXRp b24gbWVjaGFuaXNtIGluc2lkZSBpdA0KPiA+PiBiZXR3ZWVuIGRhdGEtcGF0aCBhbmQgY29udHJv bC1wYXRoIGZ1bmN0aW9ucy4NCj4gPj4gQWN0dWFsbHkgbG9va2luZyBhdCBlYjBkNDcxYTg5NCAo ZXRoZGV2OiBhZGQgcHJvYWN0aXZlIGVycm9yIGhhbmRsaW5nDQo+ID4+IG1vZGUpLCBhbmQgZm9s bG93aW5nIHBhdGNoZXMgSSB3b25kZXIgaG93IGl0IGNyZWVwZWQgaW4/DQo+ID4+IEl0IHNlZW1z IHdlIGp1c3QgaW50cm9kdWNlZCBhIGxvb3Bob2xlIGZvciByYWNlIGNvbmRpdGlvbiB3aXRoIHRo aXMNCj4gPj4gYXBwcm9hY2guLi4NCj4gDQo+IENvdWxkIHlvdSB0cnkgdG8gZGVzY3JpYmUgdGhl IHNwZWNpZmljIHNjZW5hcmlvIG9mIGxvb3Bob2xlID8NCg0KT2ssIGFzIEkgdW5kZXJzdGFuZCB0 aGUgZXhpc3RpbmcgbWVjaGFuaXNtOiANCg0KV2hlbiBQTUQgd2FudHMgdG8gc3RhcnQgYSByZWNv dmVyeSBpdCBoYXMgdG86DQogLSBpbnZva2UgIHJ0ZV9ldGhfZGV2X2NhbGxiYWNrX3Byb2Nlc3Mo UlRFX0VUSF9FVkVOVF9FUlJfUkVDT1ZFUklORyk7DQogICBUaGF0IHN1cHBvc2VkIHRvIGNhbGwg dXNlciBwcm92aWRlZCBjYWxsYmFjay4gQWZ0ZXIgY2FsbGJhY2sgaXMgZmluaXNoZWQgUE1EIGFz c3VtZXMNCiAgIHRoYXQgdXNlciBpcyBhd2FyZSB0aGF0IHJlY292ZXJ5IGlzIGFib3V0IHRvIHN0 YXJ0IGFuZCBzaG91bGQgbWFrZSBzb21lIHByZWNhdXRpb25zLg0KLSB3aGVuIHJlY292ZXJ5IGlz IGZpbmlzaGVkIGl0IGludm9rZXMgYW5vdGhlciBjYWxsYmFjazogDQogIFJURV9FVEhfRVZFTlRf UkVDT1ZFUllfKFNVQ0NFU1MvRkFJTEVEKS4gQWZ0ZXIgdGhhdCB1c2VyIGVpdGhlciBjYW4gY29u dGludWUgdG8NCiAgdXNlIHBvcnQgb3IgaGF2ZSB0byB0cmVhdCBpcyBhcyBmYXVsdHkuDQoNClRo ZSBpZGVhIGlzIG9rIGluIHByaW5jaXBsZSwgYnV0IHRoZXJlIGlzIGEgcHJvYmxlbS4NCg0KbGli L2V0aGRldi9ydGVfZXRoZGV2Lmg6DQogDQogICAgICAgICAvKiogUG9ydCByZWNvdmVyaW5nIGZy b20gYSBoYXJkd2FyZSBvciBmaXJtd2FyZSBlcnJvci4NCiAgICAgICAgICogSWYgUE1EIHN1cHBv cnRzIHByb2FjdGl2ZSBlcnJvciByZWNvdmVyeSwNCiAgICAgICAgICogaXQgc2hvdWxkIHRyaWdn ZXIgdGhpcyBldmVudCB0byBub3RpZnkgYXBwbGljYXRpb24NCiAgICAgICAgICogdGhhdCBpdCBk ZXRlY3RlZCBhbiBlcnJvciBhbmQgdGhlIHJlY292ZXJ5IGlzIGJlaW5nIHN0YXJ0ZWQuDQoNCjw8 PCAhISEhIQ0KICAgICAgICAgKiBVcG9uIHJlY2VpdmluZyB0aGUgZXZlbnQsIHRoZSBhcHBsaWNh dGlvbiBzaG91bGQgbm90IGludm9rZSBhbnkgY29udHJvbCBwYXRoIEFQSQ0KICAgICAgICAgKiAo c3VjaCBhcyBydGVfZXRoX2Rldl9jb25maWd1cmUvcnRlX2V0aF9kZXZfc3RvcC4uLikgdW50aWwg cmVjZWl2aW5nDQogICAgICAgICAqIFJURV9FVEhfRVZFTlRfUkVDT1ZFUllfU1VDQ0VTUyBvciBS VEVfRVRIX0VWRU5UX1JFQ09WRVJZX0ZBSUxFRCBldmVudC4NCiAgICAgICAgICogVGhlIFBNRCB3 aWxsIHNldCB0aGUgZGF0YSBwYXRoIHBvaW50ZXJzIHRvIGR1bW15IGZ1bmN0aW9ucywNCiAgICAg ICAgICogYW5kIHJlLXNldCB0aGUgZGF0YSBwYXRoIHBvaW50ZXJzIHRvIG5vbi1kdW1teSBmdW5j dGlvbnMNCiAgICAgICAgICogYmVmb3JlIHJlcG9ydGluZyBSVEVfRVRIX0VWRU5UX1JFQ09WRVJZ X1NVQ0NFU1MgZXZlbnQuDQo8PDwgISEhISENCg0KVGhhdCBwYXJ0IGlzIGp1c3Qgd3JvbmcgSSBi ZWxpZXZlLg0KSXQgc2hvdWxkIGJlOg0KVXBvbiByZWNlaXZpbmcgdGhlIGV2ZW50LCB0aGUgYXBw bGljYXRpb24gc2hvdWxkIG5vdCBpbnZva2UgYW55ICpib3RoIGNvbnRyb2wgYW5kIGRhdGEtcGF0 aCogQVBJDQp1bnRpbCByZWNlaXZpbmcgIFJURV9FVEhfRVZFTlRfUkVDT1ZFUllfU1VDQ0VTUyBv ciBSVEVfRVRIX0VWRU5UX1JFQ09WRVJZX0ZBSUxFRCBldmVudC4gDQpSZXNldHRpbmcgZGF0YSBw YXRoIHBvaW50ZXJzIHRvIGR1bW15IGZ1bmN0aW9ucyBieSBQTUQgKmJlZm9yZSogaW52b2tpbmcN CnJ0ZV9ldGhfZGV2X2NhbGxiYWNrX3Byb2Nlc3MoUlRFX0VUSF9FVkVOVF9FUlJfUkVDT1ZFUklO Ryk7IA0KaW50cm9kdWNlcyBhIHJhY2UtY29uZGl0aW9uIHdpdGggZGF0YS1wYXRoIHRocmVhZHMs IGFzIHN1Y2ggdGhyZWFkIGNvdWxkIGFscmVhZHkgYmUgaW5zaWRlIFJYL1RYIGZ1bmN0aW9uDQpv ciBjYW4gYWxyZWFkeSByZWFkIFJYL1RYIGZ1bmN0aW9uL2RhdGEgcG9pbnRlcnMgYW5kIGJlIGFi b3V0IHRvIHVzZSB0aGVtLg0KQW5kIHJpZ2h0IG5vdyBydGVfZXRoZGV2IGxheWVyIGRvZXNuJ3Qg cHJvdmlkZSBhbnkgbWVjaGFuaXNtIHRvIGNoZWNrIGl0IG9yIHdhaXQgd2hlbiB0aGV5J2xsIGZp bmlzaCwgZXRjLg0KDQpTbywgcHJvYmFibHkgdGhlIHNpbXBsZXN0IHdheSB0byBmaXggaXQgd2l0 aCBleGlzdGluZyBEUERLIGRlc2lnbjoNCi0gdXNlciBsZXZlbCBjYWxsYmFjayAgUlRFX0VUSF9F VkVOVF9FUlJfUkVDT1ZFUklORyBzaG91bGQgcmV0dXJuIG9ubHkgYWZ0ZXIgaXQgZW5zdXJlcyB0 aGF0ICphbGwqDQogIGFwcGxpY2F0aW9uIHRocmVhZHMgKGFuZCBwcm9jZXNzZXMpIHN0b3BwZWQg dXNpbmcgZWl0aGVyIGNvbnRyb2wgb3IgZGF0YS1wYXRoIGZ1bmN0aW9ucyBmb3IgdGhhdCBwb3J0 DQogICh5ZXMgaXQgbWVhbnMgdGhhdCBhcHBsaWNhdGlvbiB0aGF0IHdhbnRzIHRvIHVzZSB0aGlz IGZlYXR1cmUgaGFzIHRvIHByb3ZpZGUgaXRzIG93biBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNt DQogIGFyb3VuZCBkYXRhLXBhdGggZnVuY3Rpb25zIChSWC9UWCkgdGhhdCBpdCBpcyBnb2luZyB0 byB1c2UpLiANCi0gYWZ0ZXIgdGhhdCBQTUQgaXMgc2FmZSB0byByZXNldCBydGVfZXRoX2ZwX29w c1tdIHZhbHVlcyB0byBkdW1teSBvbmVzLg0KDQpBbmQgbWVzc2FnZSB0byBhbGwgUE1EIGRldmVs b3BlcnM6DQoqcGxlYXNlIHN0b3AgdXBkYXRpbmcgcnRlX2V0aF9mcF9vcHNbXSBvbiB5b3VyIG93 biouDQpUaGF0J3MgYSBiYWQgcHJhY3RpY2UgYW5kIGl0IGlzIG5vdCBzdXBwb3NlZCB0byBkbyB0 aGluZ3MgdGhhdCB3YXkuDQpUaGVyZSBpcyBhIHNwZWNpYWwgQVBJIHByb3ZpZGVkIGZvciB0aGVz ZSBwdXJwb3NlczoNCmV0aF9kZXZfZnBfb3BzX3Jlc2V0KCksIGV0aF9kZXZfZnBfb3BzX3NldHVw KCksIHNvIHVzZSBpdC4NCg0KQlRXLCAgSSBkb24ndCBzZWUgYW55IGltcGxlbWVudGF0aW9uIGZv ciBSVEVfRVRIX0VWRU5UX0VSUl9SRUNPVkVSSU5HIHdpdGhpbg0KZWl0aGVyIHRlc3RwbWQgb3Ig YW55IG90aGVyIGV4YW1wbGUgYXBwcy4gDQpBbSBJIG1pc3Npbmcgc29tZXRoaW5nPw0KSWYgbm90 LCB0aGVuIHByb2JhYmx5IGl0IGNvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCAtIGxldCdz IGluY29ycG9yYXRlIGl0IGluc2lkZSB0ZXN0cG1kIA0KKG5ldyBmb3J3YXJkaW5nIGVuZ2luZSBw cm9iYWJseSkgc28gZXZlcnlvbmUgY2FuIHRlc3QvdHJ5IGl0Lg0KDQogICAgICAgICAqIEl0IG1l YW5zIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBzZW5kIG9yIHJlY2VpdmUgYW55IHBhY2tl dHMNCiAgICAgICAgICogZHVyaW5nIHRoaXMgcGVyaW9kLg0KICAgICAgICAgKiBAbm90ZSBCZWZv cmUgdGhlIFBNRCByZXBvcnRzIHRoZSByZWNvdmVyeSByZXN1bHQsDQogICAgICAgICAqIHRoZSBQ TUQgbWF5IHJlcG9ydCB0aGUgUlRFX0VUSF9FVkVOVF9FUlJfUkVDT1ZFUklORyBldmVudCBhZ2Fp biwNCiAgICAgICAgICogYmVjYXVzZSBhIGxhcmdlciBlcnJvciBtYXkgb2NjdXIgZHVyaW5nIHRo ZSByZWNvdmVyeS4NCiAgICAgICAgICovDQogICAgICAgIFJURV9FVEhfRVZFTlRfRVJSX1JFQ09W RVJJTkcsIA0KDQo+ID4+IEl0IHByb2JhYmx5IG5lZWRzIHRvIGJlIGVpdGhlciBkZXByZWNhdGVk IG9yIHJld29ya2VkLg0KPiA+IExvb2tpbmcgYXQgdGhlIGNvbW1pdCwgaXQgZG9lcyBub3Qgc2F5 IGFueXRoaW5nIGFib3V0IHRoZSBkYXRhIHBsYW5lIGZ1bmN0aW9ucyB3aGljaCBwcm9iYWJseSBt ZWFucywgdGhlIGVycm9yIHJlY292ZXJ5IGlzDQo+IGhhcHBlbmluZyB3aXRoaW4gdGhlIGRhdGEg cGxhbmUgdGhyZWFkLiBXaGF0IGhhcHBlbnMgdG8gb3RoZXIgZGF0YSBwbGFuZSB0aHJlYWRzIHRo YXQgYXJlIHBvbGxpbmcgdGhlIHNhbWUgcG9ydCBvbiB3aGljaCB0aGUgZXJyb3INCj4gcmVjb3Zl cnkgaXMgaGFwcGVuaW5nPw0KPiANCj4gVGhlIGNvbW1pdCBsb2cgc2F5czogInRoZSBQTUQgc2V0 cyB0aGUgZGF0YSBwYXRoIHBvaW50ZXJzIHRvIGR1bW15IGZ1bmN0aW9ucyIuDQo+IA0KPiBTbyB0 aGUgZGF0YSBwbGFuZSB0aHJlYWRzIHdpbGwgcmVjZWl2ZSBub24tcGFja2V0IGFuZCBzZW5kIHpl cm8gd2l0aCBwb3J0IHdoaWNoIGluIGVycm9yIHJlY292ZXJ5Lg0KPiANCj4gPg0KPiA+IEFsc28s IHRoZSBjb21taXQgbG9nIHNheXMgdGhhdCB3aGlsZSB0aGUgZXJyb3IgcmVjb3ZlcnkgaXMgdW5k ZXIgcHJvZ3Jlc3MsIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgbm90IGNhbGwgYW55IGNvbnRyb2wg cGxhbmUgQVBJcy4gRG9lcw0KPiB0aGF0IG1lYW4sIHRoZSBhcHBsaWNhdGlvbiBoYXMgdG8gY2hl Y2sgZm9yIGVycm9yIGNvbmRpdGlvbiBldmVyeSB0aW1lIGl0IGNhbGxzIGEgY29udHJvbCBwbGFu ZSBBUEk/DQo+IA0KPiBJZiBhcHBsaWNhdGlvbiBoYXMgbm90IHJlZ2lzdGVyIGV2ZW50IChSVEVf RVRIX0VWRU5UX0VSUl9SRUNPVkVSSU5HKSBjYWxsYmFjaywgaXQgY291bGQgY2FsbHMgY29udHJv bCBwbGFuZSBBUEksIGJ1dCBpdCB3aWxsIHJldHVybg0KPiBmYWlsZWQuDQo+IElmIGFwcGxpY2F0 aW9uIGhhcyByZWdpc3RlciBhYm92ZSBjYWxsYmFjaywgaXQgY2FuIHdhaXQgZm9yIHJlY292ZXJ5 IHJlc3VsdCwgb3IgZGlyZWN0IGNhbGwgd2l0aG91dCB3YWl0IGJ1dCB0aGlzIHdpbGwgcmV0dXJu IGZhaWxlZC4NCj4gDQo+ID4NCj4gPiBUaGUgY29tbWl0IG1lc3NhZ2UgYWxzbyBzYXlzIHRoYXQg IlBNRCBtYWtlcyBzdXJlIHRoZSBjb250cm9sIHBhdGggb3BlcmF0aW9ucyBmYWlsZWQgd2l0aCBy ZXRjb2RlIC1FQlVTWSIuIEl0IGRvZXMgbm90IHNheSBob3cgaXQNCj4gZG9lcyB0aGlzLiBCdXQs IGFueSBjb21tdW5pY2F0aW9uIGZyb20gdGhlIFBNRCB0aHJlYWQgdG8gY29udHJvbCBwbGFuZSB0 aHJlYWQgbWF5IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMgaWYgbm90IGRvbmUgY29ycmVjdGx5 Lg0KPiANCj4gRmlyc3QgdGhlcmUgYXJlIG5vIFBNRCB0aHJlYWQsIGRvIHlvdSBtZWFuIGVhbC1p bnRyLXRocmVhZCA/DQo+IA0KPiBBcyBmb3IgdGhpcyBxdWVzdGlvbiwgeW91IGNhbiBzZWUgUE1E cyB3aGljaCBhbHJlYWR5IGltcGxlbWVudCBpdCwgdGhleSBib3RoIHByb3ZpZGVzIG11dHVhbCBl eGNsdXNpb24gcHJvdGVjdGlvbi4NCj4gDQo+ID4NCj4gPj4NCj4gPj4+DQo+ID4+Pj4NCj4gPj4+ PiBXb3VsZCBzb21ldGhpbmcgbGlrZSB0aGlzIHdvcmsgYmV0dGVyPw0KPiA+Pj4+DQo+ID4+Pj4g Tm90ZTogdGhlcmUgaXMgYW5vdGhlciBidWcgaW4gY3VycmVudCBjb2RlLiBUaGUgY2hlY2sgZm9y IGxpbmsgc3RhdGUNCj4gPj4+PiBpbnRlcnJ1cHQgYW5kIGxpbmtfb3BzIGNvdWxkIHJldHVybiAt RU5PVFNVUCBhbmQgbGVhdmUgZGV2aWNlIGluDQo+ID4+IGluZGV0ZXJtaW5hdGUgc3RhdGUuDQo+ ID4+Pj4gVGhlIGNoZWNrIHNob3VsZCBiZSBkb25lIGJlZm9yZSBjYWxsaW5nIFBNRC4NCj4gPj4+ Pg0KPiA+Pj4+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyBiL2xpYi9ldGhk ZXYvcnRlX2V0aGRldi5jIGluZGV4DQo+ID4+Pj4gMDI2NmNjODJhY2I2Li5kNmMxNjNlZDg1ZTcg MTAwNjQ0DQo+ID4+Pj4gLS0tIGEvbGliL2V0aGRldi9ydGVfZXRoZGV2LmMNCj4gPj4+PiArKysg Yi9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYw0KPiA+Pj4+IEBAIC0xNTgyLDYgKzE1ODIsMTQgQEAg cnRlX2V0aF9kZXZfc3RhcnQodWludDE2X3QgcG9ydF9pZCkNCj4gPj4+PiAgCQlyZXR1cm4gMDsN Cj4gPj4+PiAgCX0NCj4gPj4+Pg0KPiA+Pj4+ICsJaWYgKGRldi0+ZGF0YS0+ZGV2X2NvbmYuaW50 cl9jb25mLmxzYyA9PSAwICYmDQo+ID4+Pj4gKwkgICAgZGV2LT5kZXZfb3BzLT5saW5rX3VwZGF0 ZSA9PSBOVUxMKSB7DQo+ID4+Pj4gKwkJUlRFX0VUSERFVl9MT0coSU5GTywNCj4gPj4+PiArCQkJ ICAgICAgICJEZXZpY2Ugd2l0aCBwb3J0X2lkPSUiUFJJdTE2IiBsaW5rIHVwZGF0ZSBub3QNCj4g Pj4gc3VwcG9ydGVkXG4iLA0KPiA+Pj4+ICsJCQkgICAgICAgcG9ydF9pZCk7DQo+ID4+Pj4gKwkJ CXJldHVybiAtRU5PVFNVUDsNCj4gPj4+PiArCX0NCj4gPj4+PiArDQo+ID4+Pj4gIAlyZXQgPSBy dGVfZXRoX2Rldl9pbmZvX2dldChwb3J0X2lkLCAmZGV2X2luZm8pOw0KPiA+Pj4+ICAJaWYgKHJl dCAhPSAwKQ0KPiA+Pj4+ICAJCXJldHVybiByZXQ7DQo+ID4+Pj4gQEAgLTE1OTEsOSArMTU5OSw3 IEBAIHJ0ZV9ldGhfZGV2X3N0YXJ0KHVpbnQxNl90IHBvcnRfaWQpDQo+ID4+Pj4gIAkJZXRoX2Rl dl9tYWNfcmVzdG9yZShkZXYsICZkZXZfaW5mbyk7DQo+ID4+Pj4NCj4gPj4+PiAgCWRpYWcgPSAo KmRldi0+ZGV2X29wcy0+ZGV2X3N0YXJ0KShkZXYpOw0KPiA+Pj4+IC0JaWYgKGRpYWcgPT0gMCkN Cj4gPj4+PiAtCQlkZXYtPmRhdGEtPmRldl9zdGFydGVkID0gMTsNCj4gPj4+PiAtCWVsc2UNCj4g Pj4+PiArCWlmIChkaWFnICE9IDApDQo+ID4+Pj4gIAkJcmV0dXJuIGV0aF9lcnIocG9ydF9pZCwg ZGlhZyk7DQo+ID4+Pj4NCj4gPj4+PiAgCXJldCA9IGV0aF9kZXZfY29uZmlnX3Jlc3RvcmUoZGV2 LCAmZGV2X2luZm8sIHBvcnRfaWQpOyBAQCAtMTYxMSwxNg0KPiA+Pj4+ICsxNjE3LDE4IEBAIHJ0 ZV9ldGhfZGV2X3N0YXJ0KHVpbnQxNl90IHBvcnRfaWQpDQo+ID4+Pj4gIAkJcmV0dXJuIHJldDsN Cj4gPj4+PiAgCX0NCj4gPj4+Pg0KPiA+Pj4+IC0JaWYgKGRldi0+ZGF0YS0+ZGV2X2NvbmYuaW50 cl9jb25mLmxzYyA9PSAwKSB7DQo+ID4+Pj4gLQkJaWYgKCpkZXYtPmRldl9vcHMtPmxpbmtfdXBk YXRlID09IE5VTEwpDQo+ID4+Pj4gLQkJCXJldHVybiAtRU5PVFNVUDsNCj4gPj4+PiAtCQkoKmRl di0+ZGV2X29wcy0+bGlua191cGRhdGUpKGRldiwgMCk7DQo+ID4+Pj4gLQl9DQo+ID4+Pj4gLQ0K PiA+Pj4+ICAJLyogZXhwb3NlIHNlbGVjdGlvbiBvZiBQTUQgZmFzdC1wYXRoIGZ1bmN0aW9ucyAq Lw0KPiA+Pj4+ICAJZXRoX2Rldl9mcF9vcHNfc2V0dXAocnRlX2V0aF9mcF9vcHMgKyBwb3J0X2lk LCBkZXYpOw0KPiA+Pj4+DQo+ID4+Pj4gKwkvKiBlbnN1cmUgc3RhdGUgaXMgc2V0IGJlZm9yZSBt YXJraW5nIGRldmljZSByZWFkeSAqLw0KPiA+Pj4+ICsJcnRlX3NtcF93bWIoKTsNCj4gPj4+PiAr DQo+ID4+Pj4gIAlydGVfZXRoZGV2X3RyYWNlX3N0YXJ0KHBvcnRfaWQpOw0KPiA+Pj4+ICsNCj4g Pj4+PiArCS8qIFVwZGF0ZSBjdXJyZW50IGxpbmsgc3RhdGUgKi8NCj4gPj4+PiArCWlmIChkZXYt PmRhdGEtPmRldl9jb25mLmludHJfY29uZi5sc2MgPT0gMCkNCj4gPj4+PiArCQkoKmRldi0+ZGV2 X29wcy0+bGlua191cGRhdGUpKGRldiwgMCk7DQo+ID4+Pj4gKw0KPiA+Pj4+ICAJcmV0dXJuIDA7 DQo+ID4+Pj4gIH0NCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gLg0KPiA+Pj4+DQo+ID4NCg==