From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9A267A0487 for ; Mon, 1 Jul 2019 09:08:28 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C75543195; Mon, 1 Jul 2019 09:08:27 +0200 (CEST) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50073.outbound.protection.outlook.com [40.107.5.73]) by dpdk.org (Postfix) with ESMTP id 369E02AB for ; Mon, 1 Jul 2019 09:08:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GwqareZ4Bj8wKQY31ljdy3a0Y0CHyIEpXdReDO/0lbA=; b=bQNUfPiXZgvtSCTbKbH283yD+nYqzjrHg8B2hVeVtCfdTV9UyGcqjZpNV1cllZxNmVbzr46G6F243wYDe18UPDyRcx24kx0uPJCN2illq6DYsHn1oMMfl1T+V4vDsNkh31KzbUrGacCHIJMNvLfRQltwOcTkaVlbhzYf36EuhZo= Received: from AM0PR08MB4418.eurprd08.prod.outlook.com (20.179.35.207) by AM0PR08MB4243.eurprd08.prod.outlook.com (20.179.32.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2032.18; Mon, 1 Jul 2019 07:08:23 +0000 Received: from AM0PR08MB4418.eurprd08.prod.outlook.com ([fe80::3582:a8b6:2af4:a6d]) by AM0PR08MB4418.eurprd08.prod.outlook.com ([fe80::3582:a8b6:2af4:a6d%3]) with mapi id 15.20.2032.019; Mon, 1 Jul 2019 07:08:23 +0000 From: "Ruifeng Wang (Arm Technology China)" To: "Medvedkin, Vladimir" , "bruce.richardson@intel.com" CC: "dev@dpdk.org" , Honnappa Nagarahalli , "Gavin Hu (Arm Technology China)" , nd , nd Thread-Topic: [PATCH v3 3/3] lib/lpm: memory orderings to avoid race conditions for v20 Thread-Index: AQHVLMwY7CmaDOJaDEmFrx04mvLVAqaxEqGAgARGxeA= Date: Mon, 1 Jul 2019 07:08:22 +0000 Message-ID: References: <20190627093751.7746-1-ruifeng.wang@arm.com> <20190627093751.7746-3-ruifeng.wang@arm.com> <6daf7a76-1def-21df-d202-10b2a8f8582a@intel.com> In-Reply-To: <6daf7a76-1def-21df-d202-10b2a8f8582a@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 38844c26-9e0d-4a84-be38-31eec35ac70c.0 x-checkrecipientchecked: true authentication-results: spf=none (sender IP is ) smtp.mailfrom=Ruifeng.Wang@arm.com; x-originating-ip: [113.29.88.7] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 90ab84ec-9203-4d77-1e05-08d6fdf2e7af x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020); SRVR:AM0PR08MB4243; x-ms-traffictypediagnostic: AM0PR08MB4243: nodisclaimer: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4941; x-forefront-prvs: 00851CA28B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(376002)(346002)(39850400004)(396003)(366004)(136003)(13464003)(189003)(199004)(86362001)(110136005)(53936002)(54906003)(186003)(66556008)(66476007)(8676002)(478600001)(66066001)(102836004)(64756008)(316002)(55016002)(5660300002)(66446008)(2906002)(6116002)(446003)(73956011)(76116006)(72206003)(66946007)(11346002)(3846002)(476003)(6246003)(486006)(76176011)(9686003)(53546011)(52536014)(99286004)(6506007)(33656002)(55236004)(81156014)(6436002)(229853002)(81166006)(7696005)(305945005)(74316002)(25786009)(7736002)(14444005)(256004)(5024004)(8936002)(4326008)(71190400001)(71200400001)(14454004)(26005)(2501003)(68736007); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR08MB4243; H:AM0PR08MB4418.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: AdpbQ2tHt3knKifrC2rWrs92UcprQiZ0w3ciCkszua5ZH/0hRzrDxx1SSfQtd2pbUkJr9lKyUoy2Gy6y/s5E71/6lop/l2LDHRd9+l5jlhoz0QyZd6mnbxR2PNmVxfAa9Fe+UWdLZkL5v00u2NiCXnzFhwHGKQTM2Z3HNrx03t3xOa/EZ03l86tMC4aAcw2knw7bdhwbA0Fib5nlsV2k8h+gRS3ZLNR/wa2gOSgY5yjKiXJ4/4nwhPwPVV82ckCRBlYKrGkfSglp1g6Wo91qW52DBjb/z6e/SH/96GNusjOXnoKS4XeqFREDaRrrGW1Gkcqo3WSan78sZBZ8ajt9G/x7sAFgVBbsREfuoliKybg5qCsX6R1B3E3nGmuVyHXdQBYHcZCn34oWmjnHdsEKkAGIaj4X5nrLCgMWhE9dGFU= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90ab84ec-9203-4d77-1e05-08d6fdf2e7af X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jul 2019 07:08:22.9330 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Ruifeng.Wang@arm.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB4243 Subject: Re: [dpdk-dev] [PATCH v3 3/3] lib/lpm: memory orderings to avoid race conditions for v20 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgVmxhZGltaXIsDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWVk dmVka2luLCBWbGFkaW1pciA8dmxhZGltaXIubWVkdmVka2luQGludGVsLmNvbT4NCj4gU2VudDog RnJpZGF5LCBKdW5lIDI4LCAyMDE5IDIxOjM0DQo+IFRvOiBSdWlmZW5nIFdhbmcgKEFybSBUZWNo bm9sb2d5IENoaW5hKSA8UnVpZmVuZy5XYW5nQGFybS5jb20+Ow0KPiBicnVjZS5yaWNoYXJkc29u QGludGVsLmNvbQ0KPiBDYzogZGV2QGRwZGsub3JnOyBIb25uYXBwYSBOYWdhcmFoYWxsaQ0KPiA8 SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT47IEdhdmluIEh1IChBcm0gVGVjaG5vbG9neSBD aGluYSkNCj4gPEdhdmluLkh1QGFybS5jb20+OyBuZCA8bmRAYXJtLmNvbT4NCj4gU3ViamVjdDog UmU6IFtQQVRDSCB2MyAzLzNdIGxpYi9scG06IG1lbW9yeSBvcmRlcmluZ3MgdG8gYXZvaWQgcmFj ZQ0KPiBjb25kaXRpb25zIGZvciB2MjANCj4gDQo+IEhpIFdhbmcsDQo+IA0KPiBPbiAyNy8wNi8y MDE5IDEwOjM3LCBSdWlmZW5nIFdhbmcgd3JvdGU6DQo+ID4gV2hlbiBhIHRibDggZ3JvdXAgaXMg Z2V0dGluZyBhdHRhY2hlZCB0byBhIHRibDI0IGVudHJ5LCBsb29rdXAgbWlnaHQNCj4gPiBmYWls IGV2ZW4gdGhvdWdoIHRoZSBlbnRyeSBpcyBjb25maWd1cmVkIGluIHRoZSB0YWJsZS4NCj4gPg0K PiA+IEZvciBleDogY29uc2lkZXIgYSBMUE0gdGFibGUgY29uZmlndXJlZCB3aXRoIDEwLjEwLjEw LjEvMjQuDQo+ID4gV2hlbiBhIG5ldyBlbnRyeSAxMC4xMC4xMC4zMi8yOCBpcyBiZWluZyBhZGRl ZCwgYSBuZXcgdGJsOCBncm91cCBpcw0KPiA+IGFsbG9jYXRlZCBhbmQgdGJsMjQgZW50cnkgaXMg Y2hhbmdlZCB0byBwb2ludCB0byB0aGUgdGJsOCBncm91cC4gSWYNCj4gPiB0aGUgdGJsMjQgZW50 cnkgaXMgd3JpdHRlbiB3aXRob3V0IHRoZSB0Ymw4IGdyb3VwIGVudHJpZXMgdXBkYXRlZCwgYQ0K PiA+IGxvb2t1cCBvbiAxMC4xMC4xMC45IHdpbGwgcmV0dXJuIGZhaWx1cmUuDQo+ID4NCj4gPiBD b3JyZWN0IG1lbW9yeSBvcmRlcmluZ3MgYXJlIHJlcXVpcmVkIHRvIGVuc3VyZSB0aGF0IHRoZSBz dG9yZSB0bw0KPiA+IHRibDI0IGRvZXMgbm90IGhhcHBlbiBiZWZvcmUgdGhlIHN0b3JlcyB0byB0 Ymw4IGdyb3VwIGVudHJpZXMNCj4gPiBjb21wbGV0ZS4NCj4gPg0KPiA+IFN1Z2dlc3RlZC1ieTog SG9ubmFwcGEgTmFnYXJhaGFsbGkgPGhvbm5hcHBhLm5hZ2FyYWhhbGxpQGFybS5jb20+DQo+ID4g U2lnbmVkLW9mZi1ieTogUnVpZmVuZyBXYW5nIDxydWlmZW5nLndhbmdAYXJtLmNvbT4NCj4gPiBS ZXZpZXdlZC1ieTogSG9ubmFwcGEgTmFnYXJhaGFsbGkgPGhvbm5hcHBhLm5hZ2FyYWhhbGxpQGFy bS5jb20+DQo+ID4gUmV2aWV3ZWQtYnk6IEdhdmluIEh1IDxnYXZpbi5odUBhcm0uY29tPg0KPiA+ IC0tLQ0KPiA+IHYzOiBubyBjaGFuZ2VzDQo+ID4gdjI6IGZpeGVkIGNsYW5nIGJ1aWxkaW5nIGlz c3VlIGJ5IHN1cHBseWluZyBhbGlnbm1lbnQgYXR0cmlidXRlLg0KPiA+IHYxOiBpbml0YWlsIHZl cnNpb24NCj4gPg0KPiA+ICAgbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5jIHwgMzEgKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLQ0KPiA+ICAgbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5oIHwg IDQgKystLQ0KPiA+ICAgMiBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCA5IGRlbGV0 aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfbHBtL3J0ZV9scG0uYyBi L2xpYi9saWJydGVfbHBtL3J0ZV9scG0uYyBpbmRleA0KPiA+IGZhYmQxM2ZiMC4uNWY4ZDQ5NGFl IDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfbHBtL3J0ZV9scG0uYw0KPiA+ICsrKyBiL2xp Yi9saWJydGVfbHBtL3J0ZV9scG0uYw0KPiA+IEBAIC03MzcsNyArNzM3LDggQEAgYWRkX2RlcHRo X3NtYWxsX3YyMChzdHJ1Y3QgcnRlX2xwbV92MjAgKmxwbSwNCj4gdWludDMyX3QgaXAsIHVpbnQ4 X3QgZGVwdGgsDQo+ID4gICAJCQkvKiBTZXR0aW5nIHRibDI0IGVudHJ5IGluIG9uZSBnbyB0byBh dm9pZCByYWNlDQo+ID4gICAJCQkgKiBjb25kaXRpb25zDQo+ID4gICAJCQkgKi8NCj4gPiAtCQkJ bHBtLT50YmwyNFtpXSA9IG5ld190YmwyNF9lbnRyeTsNCj4gPiArCQkJX19hdG9taWNfc3RvcmUo JmxwbS0+dGJsMjRbaV0sICZuZXdfdGJsMjRfZW50cnksDQo+ID4gKwkJCQkJX19BVE9NSUNfUkVM RUFTRSk7DQo+ID4NCj4gPiAgIAkJCWNvbnRpbnVlOw0KPiA+ICAgCQl9DQo+ID4gQEAgLTg5Miw3 ICs4OTMsOCBAQCBhZGRfZGVwdGhfYmlnX3YyMChzdHJ1Y3QgcnRlX2xwbV92MjAgKmxwbSwNCj4g dWludDMyX3QgaXBfbWFza2VkLCB1aW50OF90IGRlcHRoLA0KPiA+ICAgCQkJLmRlcHRoID0gMCwN Cj4gPiAgIAkJfTsNCj4gPg0KPiA+IC0JCWxwbS0+dGJsMjRbdGJsMjRfaW5kZXhdID0gbmV3X3Ri bDI0X2VudHJ5Ow0KPiA+ICsJCV9fYXRvbWljX3N0b3JlKCZscG0tPnRibDI0W3RibDI0X2luZGV4 XSwNCj4gJm5ld190YmwyNF9lbnRyeSwNCj4gPiArCQkJCV9fQVRPTUlDX1JFTEVBU0UpOw0KPiA+ DQo+ID4gICAJfSAvKiBJZiB2YWxpZCBlbnRyeSBidXQgbm90IGV4dGVuZGVkIGNhbGN1bGF0ZSB0 aGUgaW5kZXggaW50byBUYWJsZTguICovDQo+ID4gICAJZWxzZSBpZiAobHBtLT50YmwyNFt0Ymwy NF9pbmRleF0udmFsaWRfZ3JvdXAgPT0gMCkgeyBAQCAtOTM4LDcNCj4gPiArOTQwLDggQEAgYWRk X2RlcHRoX2JpZ192MjAoc3RydWN0IHJ0ZV9scG1fdjIwICpscG0sIHVpbnQzMl90DQo+IGlwX21h c2tlZCwgdWludDhfdCBkZXB0aCwNCj4gPiAgIAkJCQkuZGVwdGggPSAwLA0KPiA+ICAgCQl9Ow0K PiA+DQo+ID4gLQkJbHBtLT50YmwyNFt0YmwyNF9pbmRleF0gPSBuZXdfdGJsMjRfZW50cnk7DQo+ ID4gKwkJX19hdG9taWNfc3RvcmUoJmxwbS0+dGJsMjRbdGJsMjRfaW5kZXhdLA0KPiAmbmV3X3Ri bDI0X2VudHJ5LA0KPiA+ICsJCQkJX19BVE9NSUNfUkVMRUFTRSk7DQo+ID4NCj4gPiAgIAl9IGVs c2UgeyAvKg0KPiA+ICAgCQkqIElmIGl0IGlzIHZhbGlkLCBleHRlbmRlZCBlbnRyeSBjYWxjdWxh dGUgdGhlIGluZGV4IGludG8gdGJsOC4NCj4gPiBAQCAtMTMyMCw3ICsxMzIzLDE0IEBAIGRlbGV0 ZV9kZXB0aF9zbWFsbF92MjAoc3RydWN0IHJ0ZV9scG1fdjIwDQo+ICpscG0sDQo+ID4gdWludDMy X3QgaXBfbWFza2VkLA0KPiA+DQo+ID4gICAJCQlpZiAobHBtLT50YmwyNFtpXS52YWxpZF9ncm91 cCA9PSAwICYmDQo+ID4gICAJCQkJCWxwbS0+dGJsMjRbaV0uZGVwdGggPD0gZGVwdGgpIHsNCj4g PiAtCQkJCWxwbS0+dGJsMjRbaV0udmFsaWQgPSBJTlZBTElEOw0KPiA+ICsJCQkJc3RydWN0IHJ0 ZV9scG1fdGJsX2VudHJ5X3YyMCB6ZXJvX3RibF9lbnRyeQ0KPiA9IHsNCj4gPiArCQkJCQkJLnZh bGlkID0gSU5WQUxJRCwNCj4gPiArCQkJCQkJLmRlcHRoID0gMCwNCj4gPiArCQkJCQkJLnZhbGlk X2dyb3VwID0gMCwNCj4gPiArCQkJCQl9Ow0KPiA+ICsJCQkJCXplcm9fdGJsX2VudHJ5Lm5leHRf aG9wID0gMDsNCj4gDQo+IFBsZWFzZSB1c2UgdGhlIHNhbWUgdmFyIG5hbWUgaW4gYm90aCB2MjAg YW5kIHYxNjA0ICh6ZXJvX3RibDI0X2VudHJ5KS4NCj4gVGhlIHNhbWUgaXMgZm9yIHN0cnVjdCBp bml0aWFsaXphdGlvbi4gSW4gMTYwNCB5b3UgdXNlOg0KPiANCj4gc3RydWN0IHJ0ZV9scG1fdGJs X2VudHJ5IHplcm9fdGJsMjRfZW50cnkgPSB7MH07DQo+IA0KQWNjZXB0IG9uIHRoZSB2YXIgbmFt ZS4NCkhvd2V2ZXIsIHNpbWlsYXIgc3RydWN0IGluaXRpYWxpemF0aW9uIGFzIGluIHYxNjA0IHdp bGwgY2F1c2UgbWVzb24gYnVpbGQgZmFpbHVyZS4NClRoaXMgc2hvdWxkIGJlIHJlbGF0ZWQgdG8g c3RydWN0IHdpdGggdW5pb24gbWVtYmVycyBiZWVuIHVzZWQgZm9yIGJvdGggYmlnLWVuZGlhbiBh bmQgbGl0dGxlLWVuZGlhbiBzeXN0ZW1zLg0KUmVmZXJyZWQgdG8gY29tbWl0OiBlMTM2NzZiZmU3 Lg0KDQo+ID4gKwkJCQlfX2F0b21pY19zdG9yZSgmbHBtLT50YmwyNFtpXSwNCj4gJnplcm9fdGJs X2VudHJ5LA0KPiA+ICsJCQkJCQlfX0FUT01JQ19SRUxFQVNFKTsNCj4gPiAgIAkJCX0gZWxzZSBp ZiAobHBtLT50YmwyNFtpXS52YWxpZF9ncm91cCA9PSAxKSB7DQo+ID4gICAJCQkJLyoNCj4gPiAg IAkJCQkgKiBJZiBUQkwyNCBlbnRyeSBpcyBleHRlbmRlZCwgdGhlbiB0aGVyZSBoYXMNCj4gQEAg LTEzNjUsNyArMTM3NSw4DQo+ID4gQEAgZGVsZXRlX2RlcHRoX3NtYWxsX3YyMChzdHJ1Y3QgcnRl X2xwbV92MjAgKmxwbSwgdWludDMyX3QNCj4gaXBfbWFza2VkLA0KPiA+DQo+ID4gICAJCQlpZiAo bHBtLT50YmwyNFtpXS52YWxpZF9ncm91cCA9PSAwICYmDQo+ID4gICAJCQkJCWxwbS0+dGJsMjRb aV0uZGVwdGggPD0gZGVwdGgpIHsNCj4gPiAtCQkJCWxwbS0+dGJsMjRbaV0gPSBuZXdfdGJsMjRf ZW50cnk7DQo+ID4gKwkJCQlfX2F0b21pY19zdG9yZSgmbHBtLT50YmwyNFtpXSwNCj4gJm5ld190 YmwyNF9lbnRyeSwNCj4gPiArCQkJCQkJX19BVE9NSUNfUkVMRUFTRSk7DQo+ID4gICAJCQl9IGVs c2UgIGlmIChscG0tPnRibDI0W2ldLnZhbGlkX2dyb3VwID09IDEpIHsNCj4gPiAgIAkJCQkvKg0K PiA+ICAgCQkJCSAqIElmIFRCTDI0IGVudHJ5IGlzIGV4dGVuZGVkLCB0aGVuIHRoZXJlIGhhcw0K PiBAQCAtMTY0Nyw4DQo+ID4gKzE2NTgsMTEgQEAgZGVsZXRlX2RlcHRoX2JpZ192MjAoc3RydWN0 IHJ0ZV9scG1fdjIwICpscG0sIHVpbnQzMl90DQo+IGlwX21hc2tlZCwNCj4gPiAgIAl0Ymw4X3Jl Y3ljbGVfaW5kZXggPSB0Ymw4X3JlY3ljbGVfY2hlY2tfdjIwKGxwbS0+dGJsOCwNCj4gPiB0Ymw4 X2dyb3VwX3N0YXJ0KTsNCj4gPg0KPiA+ICAgCWlmICh0Ymw4X3JlY3ljbGVfaW5kZXggPT0gLUVJ TlZBTCkgew0KPiA+IC0JCS8qIFNldCB0YmwyNCBiZWZvcmUgZnJlZWluZyB0Ymw4IHRvIGF2b2lk IHJhY2UgY29uZGl0aW9uLiAqLw0KPiA+ICsJCS8qIFNldCB0YmwyNCBiZWZvcmUgZnJlZWluZyB0 Ymw4IHRvIGF2b2lkIHJhY2UgY29uZGl0aW9uLg0KPiA+ICsJCSAqIFByZXZlbnQgdGhlIGZyZWUg b2YgdGhlIHRibDggZ3JvdXAgZnJvbSBob2lzdGluZy4NCj4gPiArCQkgKi8NCj4gPiAgIAkJbHBt LT50YmwyNFt0YmwyNF9pbmRleF0udmFsaWQgPSAwOw0KPiA+ICsJCV9fYXRvbWljX3RocmVhZF9m ZW5jZShfX0FUT01JQ19SRUxFQVNFKTsNCj4gPiAgIAkJdGJsOF9mcmVlX3YyMChscG0tPnRibDgs IHRibDhfZ3JvdXBfc3RhcnQpOw0KPiA+ICAgCX0gZWxzZSBpZiAodGJsOF9yZWN5Y2xlX2luZGV4 ID4gLTEpIHsNCj4gPiAgIAkJLyogVXBkYXRlIHRibDI0IGVudHJ5LiAqLw0KPiA+IEBAIC0xNjU5 LDggKzE2NzMsMTEgQEAgZGVsZXRlX2RlcHRoX2JpZ192MjAoc3RydWN0IHJ0ZV9scG1fdjIwICps cG0sDQo+IHVpbnQzMl90IGlwX21hc2tlZCwNCj4gPiAgIAkJCS5kZXB0aCA9IGxwbS0+dGJsOFt0 Ymw4X3JlY3ljbGVfaW5kZXhdLmRlcHRoLA0KPiA+ICAgCQl9Ow0KPiA+DQo+ID4gLQkJLyogU2V0 IHRibDI0IGJlZm9yZSBmcmVlaW5nIHRibDggdG8gYXZvaWQgcmFjZSBjb25kaXRpb24uICovDQo+ ID4gKwkJLyogU2V0IHRibDI0IGJlZm9yZSBmcmVlaW5nIHRibDggdG8gYXZvaWQgcmFjZSBjb25k aXRpb24uDQo+ID4gKwkJICogUHJldmVudCB0aGUgZnJlZSBvZiB0aGUgdGJsOCBncm91cCBmcm9t IGhvaXN0aW5nLg0KPiA+ICsJCSAqLw0KPiA+ICAgCQlscG0tPnRibDI0W3RibDI0X2luZGV4XSA9 IG5ld190YmwyNF9lbnRyeTsNCj4gPiArCQlfX2F0b21pY190aHJlYWRfZmVuY2UoX19BVE9NSUNf UkVMRUFTRSk7DQo+ID4gICAJCXRibDhfZnJlZV92MjAobHBtLT50Ymw4LCB0Ymw4X2dyb3VwX3N0 YXJ0KTsNCj4gPiAgIAl9DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9scG0vcnRl X2xwbS5oIGIvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5oIGluZGV4DQo+ID4gNmY1NzA0YzVjLi45 OGM3MGVjYmUgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5oDQo+ID4g KysrIGIvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5oDQo+ID4gQEAgLTg4LDcgKzg4LDcgQEAgc3Ry dWN0IHJ0ZV9scG1fdGJsX2VudHJ5X3YyMCB7DQo+ID4gICAJICovDQo+ID4gICAJdWludDhfdCB2 YWxpZF9ncm91cCA6MTsNCj4gPiAgIAl1aW50OF90IGRlcHRoICAgICAgIDo2OyAvKio8IFJ1bGUg ZGVwdGguICovDQo+ID4gLX07DQo+ID4gK30gX19ydGVfYWxpZ25lZCgyKTsNCj4gDQo+IEkgdGhp bmsgaXQgaXMgYmV0dGVyIHRvIF9fcnRlX2FsaWduZWQoc2l6ZW9mKHVpbnQxNl90KSkuDQo+IA0K V2lsbCBpbmNsdWRlIHRoaXMgY2hhbmdlIGluIG5leHQgdmVyc2lvbi4NCg0KPiA+DQo+ID4gICBf X2V4dGVuc2lvbl9fDQo+ID4gICBzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgew0KPiA+IEBAIC0x MjEsNyArMTIxLDcgQEAgc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5X3YyMCB7DQo+ID4gICAJCXVp bnQ4X3QgZ3JvdXBfaWR4Ow0KPiA+ICAgCQl1aW50OF90IG5leHRfaG9wOw0KPiA+ICAgCX07DQo+ ID4gLX07DQo+ID4gK30gX19ydGVfYWxpZ25lZCgyKTsNCj4gPg0KPiA+ICAgX19leHRlbnNpb25f Xw0KPiA+ICAgc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5IHsNCj4gDQo+IEFzIGEgZ2VuZXJhbCBy ZW1hcmsgY29uc2lkZXIgd3JpdGluZyBhbGwgb2YgdGhlIHRibCBlbnRyaWVzIGluY2x1ZGluZw0K PiB0Ymw4IHdpdGggYXRvbWljX3N0b3JlLiBOb3cgImxwbS0+dGJsOFtqXSA9IG5ld190Ymw4X2Vu dHJ5OyIgaXMgbG9va3MgbGlrZQ0KPiANCj4gIMKgwqDCoMKgIDFlOTrCoMKgwqDCoMKgwqAgNDQg ODggOWMgNDcgNDAgMDEgMDDCoMKgwqAgbW92DQo+ICVyMTFiLDB4MjAwMDE0MCglcmRpLCVyYXgs MikgPC13cml0ZSBmaXJzdCBieXRlDQo+ICDCoMKgwqDCoCAxZjA6wqDCoMKgwqDCoMKgIDAyDQo+ ICDCoMKgwqDCoCAxZjE6wqDCoMKgwqDCoMKgIDQ4IDgzIGMwIDAxwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGFkZMKgwqDCoCAkMHgxLCVyYXgNCj4gIMKgwqDCoMKgIDFmNTrCoMKgwqDCoMKgwqAg NDIgODggOGMgNDcgNDEgMDEgMDDCoMKgwqAgbW92ICVjbCwweDIwMDAxNDEoJXJkaSwlcjgsMikg PC13cml0ZQ0KPiBzZWNvbmQgYnl0ZQ0KPiAgwqDCoMKgwqAgMWZjOsKgwqDCoMKgwqDCoCAwMg0K PiANCj4gVGhpcyBtYXkgY2F1c2UgYW4gaW5jb3JyZWN0IG5leHRob3AgdG8gYmUgcmV0dXJuZWQu IElmIHRoZSBieXRlIHdpdGggdmFsaWQNCj4gZmxhZyBpcyB1cGRhdGVkIGZpcnN0LCB0aGUgb2xk KGFuZCBtYXliZSBpbnZhbGlkKSBuZXh0IGhvcCBjb3VsZCBiZSByZXR1cm5lZC4NCj4gDQo+IFBs ZWFzZSBldmFsdWF0ZSBwZXJmb3JtYW5jZSBkcm9wIGFmdGVyLg0KPiANClRoYW5rcyBmb3IgbG9v a2luZyBpbnRvIHRoaXMuIEl0IGlzIGEgc3VycHJpc2UgY29tcGlsZXIgZG9lc24ndCBnZW5lcmF0 ZSBhdG9taWMgc3RvcmUgZm9yIHRoaXMgZGF0YSB0eXBlLg0KV2lsbCBpbmNsdWRlIHRoZSBjaGFu Z2UgaW4gbmV4dCB2ZXJzaW9uLg0KDQo+IC0tDQo+IFJlZ2FyZHMsDQo+IFZsYWRpbWlyDQoNCg==