From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from barracuda.hxt-semitech.com (unknown [223.203.96.7]) by dpdk.org (Postfix) with ESMTP id D5AF51B296 for ; Tue, 7 Aug 2018 07:56:36 +0200 (CEST) X-ASG-Debug-ID: 1533621389-093b7e119e95350001-wRLDh4 Received: from HXTBJIDCEMVIW01.hxtcorp.net ([10.128.0.14]) by barracuda.hxt-semitech.com with ESMTP id Nz4lkifZWfL76t2G (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 07 Aug 2018 13:56:29 +0800 (CST) X-Barracuda-Envelope-From: jia.he@hxt-semitech.com Received: from HXTBJIDCEMVIW01.hxtcorp.net (10.128.0.14) by HXTBJIDCEMVIW01.hxtcorp.net (10.128.0.14) with Microsoft SMTP Server (TLS) id 15.0.847.32; Tue, 7 Aug 2018 13:56:36 +0800 Received: from HXTBJIDCEMVIW01.hxtcorp.net ([fe80::f451:a443:c0b5:87d1]) by HXTBJIDCEMVIW01.hxtcorp.net ([fe80::f451:a443:c0b5:87d1%12]) with mapi id 15.00.0847.030; Tue, 7 Aug 2018 13:56:36 +0800 From: "He, Jia" To: Gavin Hu , "dev@dpdk.org" CC: "Honnappa.Nagarahalli@arm.com" , "steve.capper@arm.com" , "Ola.Liljedahl@arm.com" , "jerin.jacob@caviumnetworks.com" , "hemant.agrawal@nxp.com" , "stable@dpdk.org" Thread-Topic: [PATCH v2] ring: fix c11 memory ordering issue X-ASG-Orig-Subj: RE: [PATCH v2] ring: fix c11 memory ordering issue Thread-Index: AQHULf2LWzJS2uNd5EaBDHS8Bg4RCaSzudaQ Date: Tue, 7 Aug 2018 05:56:36 +0000 Message-ID: <88b4421b63ec4802892f3fc40d457f03@HXTBJIDCEMVIW01.hxtcorp.net> References: <20180806011805.7857-1-gavin.hu@arm.com> <20180807031943.5331-1-gavin.hu@arm.com> In-Reply-To: <20180807031943.5331-1-gavin.hu@arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.65.20.169] Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Barracuda-Connect: UNKNOWN[10.128.0.14] X-Barracuda-Start-Time: 1533621389 X-Barracuda-Encrypted: ECDHE-RSA-AES256-SHA X-Barracuda-URL: https://192.168.50.101:443/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at hxt-semitech.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5000 1.0000 0.7500 X-Barracuda-Spam-Score: 0.75 X-Barracuda-Spam-Status: No, SCORE=0.75 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.55197 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Mailman-Approved-At: Wed, 08 Aug 2018 15:36:50 +0200 Subject: Re: [dpdk-stable] [PATCH v2] ring: fix c11 memory ordering issue X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Aug 2018 05:56:37 -0000 SGkgR2F2aW4NCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogR2F2aW4gSHUg W21haWx0bzpnYXZpbi5odUBhcm0uY29tXQ0KPiBTZW50OiAyMDE4xOo41MI3yNUgMTE6MjANCj4g VG86IGRldkBkcGRrLm9yZw0KPiBDYzogZ2F2aW4uaHVAYXJtLmNvbTsgSG9ubmFwcGEuTmFnYXJh aGFsbGlAYXJtLmNvbTsNCj4gc3RldmUuY2FwcGVyQGFybS5jb207IE9sYS5MaWxqZWRhaGxAYXJt LmNvbTsNCj4gamVyaW4uamFjb2JAY2F2aXVtbmV0d29ya3MuY29tOyBoZW1hbnQuYWdyYXdhbEBu eHAuY29tOyBIZSwgSmlhDQo+IDxqaWEuaGVAaHh0LXNlbWl0ZWNoLmNvbT47IHN0YWJsZUBkcGRr Lm9yZw0KPiBTdWJqZWN0OiBbUEFUQ0ggdjJdIHJpbmc6IGZpeCBjMTEgbWVtb3J5IG9yZGVyaW5n IGlzc3VlDQo+IA0KPiBUaGlzIHBhdGNoIGluY2x1ZGVzIHR3byBidWcgZml4ZXMoIzEgYW5kIDIp IGFuZCB0d28gb3B0aW1pc2F0aW9ucygjMyBhbmQgIzQpLg0KDQpNYXliZSB5b3UgbmVlZCB0byBz cGxpdCB0aGlzIGludG8gc21hbGwgcGFydHMuDQoNCj4gMSkgSW4gdXBkYXRlX3RhaWwsIHJlYWQg aHQtPnRhaWwgdXNpbmcgX19hdG9taWNfbG9hZC5BbHRob3VnaCB0aGUNCj4gICAgY29tcGlsZXIg Y3VycmVudGx5IHNlZW1zIHRvIGJlIGRvaW5nIHRoZSByaWdodCB0aGluZyBldmVuIHdpdGhvdXQN Cj4gICAgX2F0b21pY19sb2FkLCB3ZSBkb24ndCB3YW50IHRvIGdpdmUgdGhlIGNvbXBpbGVyIGZy ZWVkb20gdG8gb3B0aW1pc2UNCj4gICAgd2hhdCBzaG91bGQgYmUgYW4gYXRvbWljIGxvYWQsIGl0 IHNob3VsZCBub3QgYmUgYXJiaXRhcmlseSBtb3ZlZA0KPiAgICBhcm91bmQuDQo+IDIpIFN5bmNo cm9uaXplIHRoZSBsb2FkLWFjcXVpcmUgb2YgdGhlIHRhaWwgYW5kIHRoZSBzdG9yZS1yZWxlYXNl DQo+ICAgIHdpdGhpbiB1cGRhdGVfdGFpbCwgdGhlIHN0b3JlIHJlbGVhc2UgZW5zdXJlcyBhbGwg dGhlIHJpbmcgb3BlcmF0aW9ucywNCj4gICAgZW5ncXVldSBvciBkZXF1ZXVlIGFyZSBzZWVuIGJ5 IHRoZSBvYnNlcnZlcnMgYXMgc29vbiBhcyB0aGV5IHNlZQ0KPiAgICB0aGUgdXBkYXRlZCB0YWls LiBUaGUgbG9hZC1hY3F1aXJlIGlzIHJlcXVpcmVkIGZvciBjb3JyZWN0bHkgY29tcHUtDQo+ICAg IHRhdGUgdGhlIGZyZWVfZW50cmllcyBvciBhdmFpbF9lbnRyaWVzLCByZXNwZWN0aXZlbHkgZm9y IGVucXVldWUgYW5kDQo+ICAgIGRlcXVldWUgb3BlcmF0aW9ucywgdGhlIGRhdGEgZGVwZW5kZW5j eSBpcyBub3QgcmVsaWFibGUgZm9yIG9yZGVyaW5nDQo+ICAgIGFzIHRoZSBjb21waWxlciBtaWdo dCBicmVhayBpdCBieSBzYXZpbmcgdG8gdGVtcG9yYXJ5IHZhbHVlcyB0byBib29zdA0KPiAgICBw ZXJmb3JtYW5jZS4NCg0KQ291bGQgeW91IGRlc2NyaWJlIHRoZSByYWNlIGNvbmRpdGlvbiBpbiBk ZXRhaWxzPw0KZS5nLg0KY3B1IDEJCQljcHUyDQpjb2RlMQ0KCQkJCWNvZGUyDQoNCkNoZWVycywN CkppYQ0KPiAzKSBJbiBfX3J0ZV9yaW5nX21vdmVfcHJvZF9oZWFkLCBtb3ZlIHRoZSBfX2F0b21p Y19sb2FkX24gdXAgYW5kIG91dCBvZg0KPiAgICB0aGUgZG8ge30gd2hpbGUgbG9vcCBhcyB1cG9u IGZhaWx1cmUgdGhlIG9sZF9oZWFkIHdpbGwgYmUgdXBkYXRlZCwNCj4gICAgYW5vdGhlciBsb2Fk IGlzIGNvc3R5IGFuZCBub3QgbmVjZXNzYXJ5Lg0KPiA0KSBXaGVuIGNhbGxpbmcgX19hdG9taWNf Y29tcGFyZV9leGNoYW5nZV9uLCByZWxheGVkIG9yZGVyaW5nIGZvciBib3RoDQo+ICAgIHN1Y2Nl c3MgYW5kIGZhaWx1cmUsIGFzIG11bHRpcGxlIHRocmVhZHMgY2FuIHdvcmsgaW5kZXBlbmRlbnRs eSBvbg0KPiAgICB0aGUgc2FtZSBlbmQgb2YgdGhlIHJpbmcgKGVpdGhlciBlbnF1ZXVlIG9yIGRl cXVldWUpIHdpdGhvdXQNCj4gICAgc3luY2hyb25pemF0aW9uLCBub3QgYXMgb3BlcmF0aW5nIG9u IHRhaWwsIHdoaWNoIGhhcyB0byBiZSBmaW5pc2hlZA0KPiAgICBpbiBzZXF1ZW5jZS4NCj4gDQo+ IFRoZSBwYXRjaCB3YXMgYmVuY2htYXJrZWQgd2l0aCB0ZXN0L3JpbmdfcGVyZl9hdXRvdGVzdCBh bmQgaXQgZGVjcmVhc2VzIHRoZQ0KPiBlbnF1ZXVlL2RlcXVldWUgbGF0ZW5jeSBieSA1JSB+IDI0 LjYlIHdpdGggdHdvIGxjb3JlcywgdGhlIHJlYWwgZ2FpbnMgYXJlDQo+IGRlcGVuZGVudCBvbiB0 aGUgbnVtYmVyIG9mIGxjb3JlcywgZGVwdGggb2YgdGhlIHJpbmcsIFNQU0Mgb3IgTVBNQy4NCj4g Rm9yIDEgbGNvcmUsIGl0IGFsc28gaW1wcm92ZXMgYSBsaXR0bGUsIGFib3V0IDMgfiA0JS4NCj4g SXQgaXMgYSBiaWcgaW1wcm92ZW1lbnQsIGluIGNhc2Ugb2YgTVBNQywgd2l0aCByaW5ncyBzaXpl IG9mIDMyLCBpdCBzYXZlcyBsYXRlbmN5IHVwDQo+IHRvICg2LjkwLTUuMjApLzYuOTAgPSAyNC42 JS4NCj4gDQo+IFRlc3QgcmVzdWx0IGRhdGE6DQo+IA0KPiBTUC9TQyBidWxrIGVucS9kZXF1ZXVl IChzaXplOiA4KTogMTMuMTkNCj4gTVAvTUMgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogOCk6IDI1 Ljc5DQo+IFNQL1NDIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogMy44NQ0KPiBNUC9NQyBi dWxrIGVucS9kZXF1ZXVlIChzaXplOiAzMik6IDYuOTANCj4gDQo+IFNQL1NDIGJ1bGsgZW5xL2Rl cXVldWUgKHNpemU6IDgpOiAxMi4wNQ0KPiBNUC9NQyBidWxrIGVucS9kZXF1ZXVlIChzaXplOiA4 KTogMjMuMDYNCj4gU1AvU0MgYnVsayBlbnEvZGVxdWV1ZSAoc2l6ZTogMzIpOiAzLjYyDQo+IE1Q L01DIGJ1bGsgZW5xL2RlcXVldWUgKHNpemU6IDMyKTogNS4yMA0KPiANCj4gRml4ZXM6IDM5MzY4 ZWJmYzYgKCJyaW5nOiBpbnRyb2R1Y2UgQzExIG1lbW9yeSBtb2RlbCBiYXJyaWVyIG9wdGlvbiIp DQo+IENjOiBzdGFibGVAZHBkay5vcmcNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEdhdmluIEh1IDxn YXZpbi5odUBhcm0uY29tPg0KPiBSZXZpZXdlZC1ieTogSG9ubmFwcGEgTmFnYXJhaGFsbGkgPEhv bm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+DQo+IFJldmlld2VkLWJ5OiBTdGV2ZSBDYXBwZXIg PHN0ZXZlLmNhcHBlckBhcm0uY29tPg0KPiBSZXZpZXdlZC1ieTogT2xhIExpbGplZGFobCA8T2xh LkxpbGplZGFobEBhcm0uY29tPg0KPiAtLS0NCj4gIGxpYi9saWJydGVfcmluZy9ydGVfcmluZ19j MTFfbWVtLmggfCAzOA0KPiArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQ0K PiAgMSBmaWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQ0KPiAN Cj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfcmluZy9ydGVfcmluZ19jMTFfbWVtLmgNCj4gYi9s aWIvbGlicnRlX3JpbmcvcnRlX3JpbmdfYzExX21lbS5oDQo+IGluZGV4IDk0ZGYzYzRhNi4uY2Zh M2JlNGE3IDEwMDY0NA0KPiAtLS0gYS9saWIvbGlicnRlX3JpbmcvcnRlX3JpbmdfYzExX21lbS5o DQo+ICsrKyBiL2xpYi9saWJydGVfcmluZy9ydGVfcmluZ19jMTFfbWVtLmgNCj4gQEAgLTIxLDcg KzIxLDggQEAgdXBkYXRlX3RhaWwoc3RydWN0IHJ0ZV9yaW5nX2hlYWR0YWlsICpodCwgdWludDMy X3Qgb2xkX3ZhbCwNCj4gdWludDMyX3QgbmV3X3ZhbCwNCj4gIAkgKiB3ZSBuZWVkIHRvIHdhaXQg Zm9yIHRoZW0gdG8gY29tcGxldGUNCj4gIAkgKi8NCj4gIAlpZiAoIXNpbmdsZSkNCj4gLQkJd2hp bGUgKHVubGlrZWx5KGh0LT50YWlsICE9IG9sZF92YWwpKQ0KPiArCQl3aGlsZSAodW5saWtlbHko b2xkX3ZhbCAhPSBfX2F0b21pY19sb2FkX24oJmh0LT50YWlsLA0KPiArCQkJCQkJX19BVE9NSUNf UkVMQVhFRCkpKQ0KPiAgCQkJcnRlX3BhdXNlKCk7DQo+IA0KPiAgCV9fYXRvbWljX3N0b3JlX24o Jmh0LT50YWlsLCBuZXdfdmFsLCBfX0FUT01JQ19SRUxFQVNFKTsgQEAgLTYwLDIwDQo+ICs2MSwy NCBAQCBfX3J0ZV9yaW5nX21vdmVfcHJvZF9oZWFkKHN0cnVjdCBydGVfcmluZyAqciwgdW5zaWdu ZWQgaW50IGlzX3NwLA0KPiAgCXVuc2lnbmVkIGludCBtYXggPSBuOw0KPiAgCWludCBzdWNjZXNz Ow0KPiANCj4gKwkqb2xkX2hlYWQgPSBfX2F0b21pY19sb2FkX24oJnItPnByb2QuaGVhZCwgX19B VE9NSUNfUkVMQVhFRCk7DQo+ICAJZG8gew0KPiAgCQkvKiBSZXNldCBuIHRvIHRoZSBpbml0aWFs IGJ1cnN0IGNvdW50ICovDQo+ICAJCW4gPSBtYXg7DQo+IA0KPiAtCQkqb2xkX2hlYWQgPSBfX2F0 b21pY19sb2FkX24oJnItPnByb2QuaGVhZCwNCj4gLQkJCQkJX19BVE9NSUNfQUNRVUlSRSk7DQo+ IA0KPiAtCQkvKg0KPiAtCQkgKiAgVGhlIHN1YnRyYWN0aW9uIGlzIGRvbmUgYmV0d2VlbiB0d28g dW5zaWduZWQgMzJiaXRzIHZhbHVlDQo+ICsJCS8qIGxvYWQtYWNxdWlyZSBzeW5jaHJvbml6ZSB3 aXRoIHN0b3JlLXJlbGVhc2Ugb2YgaHQtPnRhaWwNCj4gKwkJICogaW4gdXBkYXRlX3RhaWwuDQo+ ICsJCSAqLw0KPiArCQljb25zdCB1aW50MzJfdCBjb25zX3RhaWwgPSBfX2F0b21pY19sb2FkX24o JnItPmNvbnMudGFpbCwNCj4gKwkJCQkJCQlfX0FUT01JQ19BQ1FVSVJFKTsNCj4gKw0KPiArCQkv KiBUaGUgc3VidHJhY3Rpb24gaXMgZG9uZSBiZXR3ZWVuIHR3byB1bnNpZ25lZCAzMmJpdHMgdmFs dWUNCj4gIAkJICogKHRoZSByZXN1bHQgaXMgYWx3YXlzIG1vZHVsbyAzMiBiaXRzIGV2ZW4gaWYg d2UgaGF2ZQ0KPiAgCQkgKiAqb2xkX2hlYWQgPiBjb25zX3RhaWwpLiBTbyAnZnJlZV9lbnRyaWVz JyBpcyBhbHdheXMgYmV0d2VlbiAwDQo+ICAJCSAqIGFuZCBjYXBhY2l0eSAod2hpY2ggaXMgPCBz aXplKS4NCj4gIAkJICovDQo+IC0JCSpmcmVlX2VudHJpZXMgPSAoY2FwYWNpdHkgKyByLT5jb25z LnRhaWwgLSAqb2xkX2hlYWQpOw0KPiArCQkqZnJlZV9lbnRyaWVzID0gKGNhcGFjaXR5ICsgY29u c190YWlsIC0gKm9sZF9oZWFkKTsNCj4gDQo+ICAJCS8qIGNoZWNrIHRoYXQgd2UgaGF2ZSBlbm91 Z2ggcm9vbSBpbiByaW5nICovDQo+ICAJCWlmICh1bmxpa2VseShuID4gKmZyZWVfZW50cmllcykp DQo+IEBAIC04Nyw5ICs5MiwxMCBAQCBfX3J0ZV9yaW5nX21vdmVfcHJvZF9oZWFkKHN0cnVjdCBy dGVfcmluZyAqciwgdW5zaWduZWQNCj4gaW50IGlzX3NwLA0KPiAgCQlpZiAoaXNfc3ApDQo+ICAJ CQlyLT5wcm9kLmhlYWQgPSAqbmV3X2hlYWQsIHN1Y2Nlc3MgPSAxOw0KPiAgCQllbHNlDQo+ICsJ CQkvKiBvbiBmYWlsdXJlLCAqb2xkX2hlYWQgaXMgdXBkYXRlZCAqLw0KPiAgCQkJc3VjY2VzcyA9 IF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfbigmci0+cHJvZC5oZWFkLA0KPiAgCQkJCQlvbGRf aGVhZCwgKm5ld19oZWFkLA0KPiAtCQkJCQkwLCBfX0FUT01JQ19BQ1FVSVJFLA0KPiArCQkJCQkv KndlYWs9Ki8wLCBfX0FUT01JQ19SRUxBWEVELA0KPiAgCQkJCQlfX0FUT01JQ19SRUxBWEVEKTsN Cj4gIAl9IHdoaWxlICh1bmxpa2VseShzdWNjZXNzID09IDApKTsNCj4gIAlyZXR1cm4gbjsNCj4g QEAgLTEyOCwxOCArMTM0LDIzIEBAIF9fcnRlX3JpbmdfbW92ZV9jb25zX2hlYWQoc3RydWN0IHJ0 ZV9yaW5nICpyLCBpbnQNCj4gaXNfc2MsDQo+ICAJaW50IHN1Y2Nlc3M7DQo+IA0KPiAgCS8qIG1v dmUgY29ucy5oZWFkIGF0b21pY2FsbHkgKi8NCj4gKwkqb2xkX2hlYWQgPSBfX2F0b21pY19sb2Fk X24oJnItPmNvbnMuaGVhZCwgX19BVE9NSUNfUkVMQVhFRCk7DQo+ICAJZG8gew0KPiAgCQkvKiBS ZXN0b3JlIG4gYXMgaXQgbWF5IGNoYW5nZSBldmVyeSBsb29wICovDQo+ICAJCW4gPSBtYXg7DQo+ IC0JCSpvbGRfaGVhZCA9IF9fYXRvbWljX2xvYWRfbigmci0+Y29ucy5oZWFkLA0KPiAtCQkJCQlf X0FUT01JQ19BQ1FVSVJFKTsNCj4gKw0KPiArCQkvKiB0aGlzIGxvYWQtYWNxdWlyZSBzeW5jaHJv bml6ZSB3aXRoIHN0b3JlLXJlbGVhc2Ugb2YgaHQtPnRhaWwNCj4gKwkJICogaW4gdXBkYXRlX3Rh aWwuDQo+ICsJCSAqLw0KPiArCQljb25zdCB1aW50MzJfdCBwcm9kX3RhaWwgPSBfX2F0b21pY19s b2FkX24oJnItPnByb2QudGFpbCwNCj4gKwkJCQkJCQlfX0FUT01JQ19BQ1FVSVJFKTsNCj4gDQo+ ICAJCS8qIFRoZSBzdWJ0cmFjdGlvbiBpcyBkb25lIGJldHdlZW4gdHdvIHVuc2lnbmVkIDMyYml0 cyB2YWx1ZQ0KPiAgCQkgKiAodGhlIHJlc3VsdCBpcyBhbHdheXMgbW9kdWxvIDMyIGJpdHMgZXZl biBpZiB3ZSBoYXZlDQo+ICAJCSAqIGNvbnNfaGVhZCA+IHByb2RfdGFpbCkuIFNvICdlbnRyaWVz JyBpcyBhbHdheXMgYmV0d2VlbiAwDQo+ICAJCSAqIGFuZCBzaXplKHJpbmcpLTEuDQo+ICAJCSAq Lw0KPiAtCQkqZW50cmllcyA9IChyLT5wcm9kLnRhaWwgLSAqb2xkX2hlYWQpOw0KPiArCQkqZW50 cmllcyA9IChwcm9kX3RhaWwgLSAqb2xkX2hlYWQpOw0KPiANCj4gIAkJLyogU2V0IHRoZSBhY3R1 YWwgZW50cmllcyBmb3IgZGVxdWV1ZSAqLw0KPiAgCQlpZiAobiA+ICplbnRyaWVzKQ0KPiBAQCAt MTUyLDEwICsxNjMsMTEgQEAgX19ydGVfcmluZ19tb3ZlX2NvbnNfaGVhZChzdHJ1Y3QgcnRlX3Jp bmcgKnIsIGludA0KPiBpc19zYywNCj4gIAkJaWYgKGlzX3NjKQ0KPiAgCQkJci0+Y29ucy5oZWFk ID0gKm5ld19oZWFkLCBzdWNjZXNzID0gMTsNCj4gIAkJZWxzZQ0KPiArCQkJLyogb24gZmFpbHVy ZSwgKm9sZF9oZWFkIHdpbGwgYmUgdXBkYXRlZCAqLw0KPiAgCQkJc3VjY2VzcyA9IF9fYXRvbWlj X2NvbXBhcmVfZXhjaGFuZ2Vfbigmci0+Y29ucy5oZWFkLA0KPiAtCQkJCQkJCW9sZF9oZWFkLCAq bmV3X2hlYWQsDQo+IC0JCQkJCQkJMCwgX19BVE9NSUNfQUNRVUlSRSwNCj4gLQkJCQkJCQlfX0FU T01JQ19SRUxBWEVEKTsNCj4gKwkJCQkJCW9sZF9oZWFkLCAqbmV3X2hlYWQsDQo+ICsJCQkJCQkv KndlYWs9Ki8wLCBfX0FUT01JQ19SRUxBWEVELA0KPiArCQkJCQkJX19BVE9NSUNfUkVMQVhFRCk7 DQo+ICAJfSB3aGlsZSAodW5saWtlbHkoc3VjY2VzcyA9PSAwKSk7DQo+ICAJcmV0dXJuIG47DQo+ ICB9DQo+IC0tDQo+IDIuMTEuMA0KDQo=