From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Eads, Gage" Subject: Re: [PATCH 1/1] eal: add 128-bit cmpset (x86-64 only) Date: Fri, 1 Feb 2019 19:28:14 +0000 Message-ID: <9184057F7FC11744A2107296B6B8EB1E541CE2CE@FMSMSX108.amr.corp.intel.com> References: <20190128172945.27251-1-gage.eads@intel.com> <20190128172945.27251-2-gage.eads@intel.com> <1548716507.11472.96.camel@arm.com> <9184057F7FC11744A2107296B6B8EB1E541CE1FE@FMSMSX108.amr.corp.intel.com> <1549047709.20325.35.camel@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "jerinj@marvell.com" , "chaozhu@linux.vnet.ibm.com" , nd , "Richardson, Bruce" , "Ananyev, Konstantin" , "hemant.agrawal@nxp.com" , "olivier.matz@6wind.com" , "arybchenko@solarflare.com" , "Gavin Hu (Arm Technology China)" , Honnappa Nagarahalli To: Ola Liljedahl , "dev@dpdk.org" Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id 899FD1B4FB for ; Fri, 1 Feb 2019 20:28:17 +0100 (CET) In-Reply-To: <1549047709.20325.35.camel@arm.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogT2xhIExpbGplZGFobCBb bWFpbHRvOk9sYS5MaWxqZWRhaGxAYXJtLmNvbV0NCj4gU2VudDogRnJpZGF5LCBGZWJydWFyeSAx LCAyMDE5IDE6MDIgUE0NCj4gVG86IEVhZHMsIEdhZ2UgPGdhZ2UuZWFkc0BpbnRlbC5jb20+OyBk ZXZAZHBkay5vcmcNCj4gQ2M6IGplcmluakBtYXJ2ZWxsLmNvbTsgY2hhb3podUBsaW51eC52bmV0 LmlibS5jb207IG5kIDxuZEBhcm0uY29tPjsNCj4gUmljaGFyZHNvbiwgQnJ1Y2UgPGJydWNlLnJp Y2hhcmRzb25AaW50ZWwuY29tPjsgQW5hbnlldiwgS29uc3RhbnRpbg0KPiA8a29uc3RhbnRpbi5h bmFueWV2QGludGVsLmNvbT47IGhlbWFudC5hZ3Jhd2FsQG54cC5jb207DQo+IG9saXZpZXIubWF0 ekA2d2luZC5jb207IGFyeWJjaGVua29Ac29sYXJmbGFyZS5jb207IEdhdmluIEh1IChBcm0NCj4g VGVjaG5vbG9neSBDaGluYSkgPEdhdmluLkh1QGFybS5jb20+OyBIb25uYXBwYSBOYWdhcmFoYWxs aQ0KPiA8SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT4NCj4gU3ViamVjdDogUmU6IFtkcGRr LWRldl0gW1BBVENIIDEvMV0gZWFsOiBhZGQgMTI4LWJpdCBjbXBzZXQgKHg4Ni02NCBvbmx5KQ0K PiANCj4gT24gRnJpLCAyMDE5LTAyLTAxIGF0IDE3OjA2ICswMDAwLCBFYWRzLCBHYWdlIHdyb3Rl Og0KPiA+DQo+ID4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZy b206IE9sYSBMaWxqZWRhaGwgW21haWx0bzpPbGEuTGlsamVkYWhsQGFybS5jb21dDQo+ID4gPiBT ZW50OiBNb25kYXksIEphbnVhcnkgMjgsIDIwMTkgNTowMiBQTQ0KPiA+ID4gVG86IEVhZHMsIEdh Z2UgPGdhZ2UuZWFkc0BpbnRlbC5jb20+OyBkZXZAZHBkay5vcmcNCj4gPiA+IENjOiBhcnliY2hl bmtvQHNvbGFyZmxhcmUuY29tOyBqZXJpbmpAbWFydmVsbC5jb207DQo+ID4gPiBjaGFvemh1QGxp bnV4LnZuZXQuaWJtLmNvbTsgbmQgPG5kQGFybS5jb20+OyBSaWNoYXJkc29uLCBCcnVjZQ0KPiA+ ID4gPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPjsgQW5hbnlldiwgS29uc3RhbnRpbg0KPiA+ ID4gPGtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+OyBoZW1hbnQuYWdyYXdhbEBueHAuY29t Ow0KPiA+ID4gb2xpdmllci5tYXR6QDZ3aW5kLmNvbTsgSG9ubmFwcGEgTmFnYXJhaGFsbGkNCj4g PiA+IDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29tPjsgR2F2aW4gSHUgKEFybSBUZWNobm9s b2d5IENoaW5hKQ0KPiA+ID4gPEdhdmluLkh1QGFybS5jb20+DQo+ID4gPiBTdWJqZWN0OiBSZTog W2RwZGstZGV2XSBbUEFUQ0ggMS8xXSBlYWw6IGFkZCAxMjgtYml0IGNtcHNldCAoeDg2LTY0DQo+ ID4gPiBvbmx5KQ0KPiA+ID4NCj4gPiA+IE9uIE1vbiwgMjAxOS0wMS0yOCBhdCAxMToyOSAtMDYw MCwgR2FnZSBFYWRzIHdyb3RlOg0KPiA+ID4gPg0KPiA+ID4gPiBUaGlzIG9wZXJhdGlvbiBjYW4g YmUgdXNlZCBmb3Igbm9uLWJsb2NraW5nIGFsZ29yaXRobXMsIHN1Y2ggYXMgYQ0KPiA+ID4gPiBu b24tYmxvY2tpbmcgc3RhY2sgb3IgcmluZy4NCj4gPiA+ID4NCj4gPiA+ID4gU2lnbmVkLW9mZi1i eTogR2FnZSBFYWRzIDxnYWdlLmVhZHNAaW50ZWwuY29tPg0KPiA+ID4gPiAtLS0NCj4gPiA+ID4g wqAuLi4vY29tbW9uL2luY2x1ZGUvYXJjaC94ODYvcnRlX2F0b21pY182NC5owqDCoMKgwqDCoMKg wqDCoHwgMzENCj4gPiA+ID4gKysrKysrKysrKysNCj4gPiA+ID4gwqBsaWIvbGlicnRlX2VhbC9j b21tb24vaW5jbHVkZS9nZW5lcmljL3J0ZV9hdG9taWMuaCB8IDY1DQo+ID4gPiA+ICsrKysrKysr KysrKysrKysrKysrKysNCj4gPiA+ID4gwqAyIGZpbGVzIGNoYW5nZWQsIDk2IGluc2VydGlvbnMo KykNCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4gPiBhL2xpYi9saWJydGVfZWFs L2NvbW1vbi9pbmNsdWRlL2FyY2gveDg2L3J0ZV9hdG9taWNfNjQuaA0KPiA+ID4gPiBiL2xpYi9s aWJydGVfZWFsL2NvbW1vbi9pbmNsdWRlL2FyY2gveDg2L3J0ZV9hdG9taWNfNjQuaA0KPiA+ID4g PiBpbmRleCBmZDJlYzljNTMuLmI3YjkwYjgzZSAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvbGliL2xp YnJ0ZV9lYWwvY29tbW9uL2luY2x1ZGUvYXJjaC94ODYvcnRlX2F0b21pY182NC5oDQo+ID4gPiA+ ICsrKyBiL2xpYi9saWJydGVfZWFsL2NvbW1vbi9pbmNsdWRlL2FyY2gveDg2L3J0ZV9hdG9taWNf NjQuaA0KPiA+ID4gPiBAQCAtMzQsNiArMzQsNyBAQA0KPiA+ID4gPiDCoC8qDQo+ID4gPiA+IMKg ICogSW5zcGlyZWQgZnJvbSBGcmVlQlNEIHNyYy9zeXMvYW1kNjQvaW5jbHVkZS9hdG9taWMuaA0K PiA+ID4gPiDCoCAqIENvcHlyaWdodCAoYykgMTk5OCBEb3VnIFJhYnNvbg0KPiA+ID4gPiArICog Q29weXJpZ2h0IChjKSAyMDE5IEludGVsIENvcnBvcmF0aW9uDQo+ID4gPiA+IMKgICogQWxsIHJp Z2h0cyByZXNlcnZlZC4NCj4gPiA+ID4gwqAgKi8NCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTQ2LDYg KzQ3LDcgQEANCj4gPiA+ID4NCj4gPiA+ID4gwqAjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ID4gPiA+ IMKgI2luY2x1ZGUgPHJ0ZV9jb21tb24uaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxydGVfY29tcGF0 Lmg+DQo+ID4gPiA+IMKgI2luY2x1ZGUgPHJ0ZV9hdG9taWMuaD4NCj4gPiA+ID4NCj4gPiA+ID4g wqAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gNjQgYml0IGF0b21pYyBvcGVyYXRpb25zDQo+ ID4gPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtKi8gQEAgLTIwOCw0ICsyMTAsMzMgQEAg c3RhdGljIGlubGluZQ0KPiA+ID4gPiB2b2lkIHJ0ZV9hdG9taWM2NF9jbGVhcihydGVfYXRvbWlj NjRfdCAqdikNCj4gPiA+ID4gwqB9DQo+ID4gPiA+IMKgI2VuZGlmDQo+ID4gPiA+DQo+ID4gPiA+ ICtzdGF0aWMgaW5saW5lIGludCBfX3J0ZV9leHBlcmltZW50YWwNCj4gPiA+IF9fcnRlX2Fsd2F5 c19pbmxpbmU/DQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiArcnRlX2F0b21pYzEyOF9jbXBzZXQo dm9sYXRpbGUgcnRlX2ludDEyOF90ICpkc3QsDQo+ID4gPiBObyBuZWVkIHRvIGRlY2xhcmUgdGhl IGxvY2F0aW9uIHZvbGF0aWxlLiBWb2xhdGlsZSBkb2Vzbid0IGRvIHdoYXQNCj4gPiA+IHlvdSB0 aGluayBpdCBkb2VzLg0KPiA+ID4gaHR0cHM6Ly95b3V0dS5iZS9sa2dzemtQblY4Zz90PTEwMjcN Cj4gPiA+DQo+ID4gSSBtYWRlIHRoaXMgdm9sYXRpbGUgdG8gbWF0Y2ggdGhlIGV4aXN0aW5nIHJ0 ZV9hdG9taWNOX2NtcHNldA0KPiA+IGRlZmluaXRpb25zLCB3aGljaCBwcmVzdW1hYmx5IGhhdmUg YSBnb29kIHJlYXNvbiBmb3IgdXNpbmcgdGhlDQo+ID4ga2V5d29yZC4gTWFpbnRhaW5lcnMsIGFu eSBpbnB1dCBoZXJlPw0KPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gKwkJwqDC oMKgwqDCoHJ0ZV9pbnQxMjhfdCAqZXhwLA0KPiA+ID4gSSB3b3VsZCBkZWNsYXJlICdleHAnIGNv bnN0IGFzIHdlbGwgYW5kIGRvY3VtZW50IHRoYXQgJ2V4cCcgaXMgbm90DQo+ID4gPiB1cGRhdGVk ICh3aXRoIHRoZSBvbGQgdmFsdWUpIGZvciBhIGZhaWx1cmUuIFRoZSByZWFzb24gYmVpbmcgdGhh dA0KPiA+ID4gQVJNdjguMC9BQXJjaDY0IGNhbm5vdCBhdG9taWNhbGx5IHJlYWQgdGhlIG9sZCB2 YWx1ZSB3aXRob3V0IGFsc28NCj4gPiA+IHdyaXRpbmcgdGhlIGxvY2F0aW9uIGFuZCB0aGF0IGlz IGJhZCBmb3IgcGVyZm9ybWFuY2UgKHVubmVjZXNzYXJ5DQo+ID4gPiB3cml0ZXMgbGVhZHMgdG8g dW5uZWNlc3NhcnkgY29udGVudGlvbiBhbmQgd29yc2Ugc2NhbGFiaWxpdHkpLiBBbmQNCj4gPiA+ IHRoZSB1c2VyIG11c3QgYW55d2F5IHJlYWQgdGhlIGxvY2F0aW9uIChpbiB0aGUgc3RhcnQgb2Yg dGhlIGNyaXRpY2FsDQo+ID4gPiBzZWN0aW9uKSB1c2luZyBlLmcuIG5vbi1hdG9taWMgNjQtYml0 IHJlYWRzIHNvIHRoZXJlIGlzbid0IGFjdHVhbGx5DQo+ID4gPiBhbnkgcmVxdWlyZW1lbnQgZm9y IGFuIGF0b21pYyAxMjgtYml0IHJlYWQgb2YgdGhlIGxvY2F0aW9uLg0KPiA+ID4NCj4gPiBXaWxs IGNoYW5nZSBpbiB2Mi4NCj4gPg0KPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gwqBydGVfaW50MTI4 X3QgKnNyYywNCj4gPiA+IGNvbnN0IHJ0ZV9pbnQxMjhfdCAqc3JjPw0KPiA+IFN1cmUsIEkgZG9u J3Qgc2VlIGFueSBoYXJtIGluIHVzaW5nIGNvbnN0Lg0KPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ IEJ1dCB3aHkgYXJlIHdlIG5vdCBwYXNzaW5nICdleHAnIGFuZCAnc3JjJyBieSB2YWx1ZT8gVGhh dCB3b3Jrcw0KPiA+ID4gZ3JlYXQsIGV2ZW4gd2l0aCBzdHJ1Y3RzLiBQYXNzaW5nIGJ5IHZhbHVl IHNpbXBsaWZpZXMgdGhlIGNvbXBpbGVyJ3MNCj4gPiA+IGxpZmUsIGVzcGVjaWFsbHkgaWYgdGhl IGNhbGwgaXMgaW5saW5lZC4gQXNrIGEgY29tcGlsZXIgZGV2ZWxvcGVyLg0KPiA+IEkgcmFuIG9i amR1bXAgb24gdGhlIG5iX3N0YWNrIGNvZGUgd2l0aCBib3RoIGFwcHJvYWNoZXMsIGFuZA0KPiA+ IHBhc3MtYnktcmVmZXJlbmNlIHJlc3VsdGVkIGluIGZld2VyIG92ZXJhbGwgeDg2XzY0IGFzc2Vt Ymx5IG9wcy4NCj4gPiBQQlY6IDEwMCBvcHMgZm9yIHB1c2gsIDk3IG9wcyBmb3IgcG9wDQo+ID4g UEJSOiA5MiBvcHMgZm9yIHB1c2gsIDg0IG9wcyBmb3IgcG9wDQo+IE9LIEkgaGF2ZSBuZXZlciBj aGVja2VkIHg4Nl82NCBjb2RlIGdlbmVyYXRpb24uLi4gSSBoYXZlIGdvb2QgZXhwZXJpZW5jZXMN Cj4gd2l0aCBBUk0vQUFyY2g2NCwgZXZlcnl0aGluZyBzZWVtcyB0byBiZSBkb25lIHVzaW5nIHJl Z2lzdGVycy4gSSBhbSBzdXJwcmlzZWQNCj4gdGhlcmUgaXMgYSBkaWZmZXJlbmNlLg0KPiANCj4g RGlkIGEgcXVpY2sgY2hlY2sgd2l0aCBsZnJpbmcsIHBhc3NpbmcgJ3NyYycgKHRoaXJkIHBhcmFt KSBieSByZWZlcmVuY2UgYW5kIGJ5DQo+IHZhbHVlLiBObyBkaWZmZXJlbmNlIGluIGNvZGUgZ2Vu ZXJhdGlvbiBvbiB4ODZfNjQuDQo+IA0KPiBCdXQgaWYgeW91IGluc2lzdCBsZXQncyBnbyB3aXRo IFBCUi4NCj4gDQo+ID4NCj4gPiAoVXNpbmcgdGhlIGluLXByb2dyZXNzIHY1IG5iX3N0YWNrIGNv ZGUpDQo+ID4NCj4gPiBBbm90aGVyIGZhY3RvciAtLSB0aG91Z2ggbXVjaCBsZXNzIGNvbXBlbGxp bmcgLS0gaXMgdGhhdCB3aXRoIHBhc3MtYnktDQo+ID4gcmVmZXJlbmNlLCB0aGUgdXNlciBjYW4g Y3JlYXRlIGEgMTZCIHN0cnVjdHVyZSBhbmQgY2FzdCBpdCB0bw0KPiA+IHJ0ZV9pbnQxMjhfdCB3 aGVuIHRoZXkgY2FsbCBydGVfYXRvbWljMTI4X2NtcHNldCwgd2hlcmVhcyB3aXRoDQo+ID4gcGFz cy1ieS12YWx1ZSB0aGV5IG5lZWQgdG8gcHV0IHRoYXQgc3RydWN0IGluIGEgdW5pb24gd2l0aCBy dGVfaW50MTI4X3QuDQo+IFdoaWNoIGlzIHdoYXQgSSBhbHdheXMgZG8gbm93YWRheXMuLi4gVHJ5 aW5nIHRvIHVzZSBhcyBmZXcgY2FzdHMgYXMgcG9zc2libGUgYW5kDQo+IGxpZSB0byB0aGUgY29t cGlsZXIgYXMgc2VsZG9tIGFzIHBvc3NpYmxlLiBCdXQgSSBjYW4gc2VlIHRoZSBmcmVlZG9tIHBy b3ZpZGVkIGJ5DQo+IHRha2luZyBhIHBvaW50ZXIgdG8gc29tZXRoaW5nIGFuZCBjYXN0IGl0IGl0 IHJ0ZV9pbnQxMjhfdCBwdHIgaW4gdGhlIGNhbGwNCj4gdG/CoHJ0ZV9hdG9taWMxMjhfY21wc2V0 KCkuDQo+IA0KPiBXb3VsZCBwcmVmZXIgYSBuYW1lIHRoYXQgaXMgbW9yZSBzaW1pbGFyIHRvIF9f YXRvbWljX2NvbXBhcmVfZXhjaGFuZ2UoKS4NCj4gRS5nLg0KPiBydGVfYXRvbWljMTI4X2NvbXBh cmVfZXhjaGFuZ2UoKSAob3IgcGVyaGFwcyBqdXN0IHJ0ZV9hdG9taWMxMjhfY21weGNoZyk/DQo+ IEFsbCB0aGUgcnRlX2F0b21pY1hYX2NtcHNldCgpIGZ1bmN0aW9ucyBkbyBub3QgdGFrZSBhbnkg bWVtb3J5IG9yZGVyDQo+IHBhcmFtZXRlcnMuDQo+IEZyb20gYW4gQXJtIHBlcnNwZWN0aXZlLCB3 ZSBhcmUgbm90IGhhcHB5IHdpdGggdGhhdC4NCg0KU2luY2UgdGhlIGZ1bmN0aW9uIHJldHVybnMg YSBib29sZWFuIHN1Y2Nlc3MgdmFsdWUsIGlzbid0IGNvbXBhcmUtYW5kLXNldCB0aGUgYXBwcm9w cmlhdGUgdGVybT8NCg0KPiANCj4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ICsJ CcKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgd2VhaywNCj4gPiA+ID4gKwkJwqDCoMKgwqDCoGVudW0g cnRlX2F0b21pY19tZW1tb2RlbF90IHN1Y2Nlc3MsDQo+ID4gPiA+ICsJCcKgwqDCoMKgwqBlbnVt IHJ0ZV9hdG9taWNfbWVtbW9kZWxfdCBmYWlsdXJlKSB7DQo+ID4gPiA+ICsJUlRFX1NFVF9VU0VE KHdlYWspOw0KPiA+ID4gPiArCVJURV9TRVRfVVNFRChzdWNjZXNzKTsNCj4gPiA+ID4gKwlSVEVf U0VUX1VTRUQoZmFpbHVyZSk7DQo+ID4gPiA+ICsJdWludDhfdCByZXM7DQo+ID4gPiA+ICsNCj4g PiA+ID4gKwlhc20gdm9sYXRpbGUgKA0KPiA+ID4gPiArCQnCoMKgwqDCoMKgwqBNUExPQ0tFRA0K PiA+ID4gPiArCQnCoMKgwqDCoMKgwqAiY21weGNoZzE2YiAlW2RzdF07Ig0KPiA+ID4gPiArCQnC oMKgwqDCoMKgwqAiIHNldGUgJVtyZXNdIg0KPiA+ID4gPiArCQnCoMKgwqDCoMKgwqA6IFtkc3Rd ICI9bSIgKGRzdC0+dmFsWzBdKSwNCj4gPiA+ID4gKwkJCSI9QSIgKGV4cC0+dmFsWzBdKSwNCj4g PiA+ID4gKwkJCVtyZXNdICI9ciIgKHJlcykNCj4gPiA+ID4gKwkJwqDCoMKgwqDCoMKgOiAiYyIg KHNyYy0+dmFsWzFdKSwNCj4gPiA+ID4gKwkJCSJiIiAoc3JjLT52YWxbMF0pLA0KPiA+ID4gPiAr CQkJIm0iIChkc3QtPnZhbFswXSksDQo+ID4gPiA+ICsJCQkiZCIgKGV4cC0+dmFsWzFdKSwNCj4g PiA+ID4gKwkJCSJhIiAoZXhwLT52YWxbMF0pDQo+ID4gPiA+ICsJCcKgwqDCoMKgwqDCoDogIm1l bW9yeSIpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJcmV0dXJuIHJlczsNCj4gPiA+ID4gK30NCj4g PiA+ID4gKw0KPiA+ID4gPiDCoCNlbmRpZiAvKiBfUlRFX0FUT01JQ19YODZfNjRfSF8gKi8gZGlm ZiAtLWdpdA0KPiA+ID4gPiBhL2xpYi9saWJydGVfZWFsL2NvbW1vbi9pbmNsdWRlL2dlbmVyaWMv cnRlX2F0b21pYy5oDQo+ID4gPiA+IGIvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2luY2x1ZGUvZ2Vu ZXJpYy9ydGVfYXRvbWljLmgNCj4gPiA+ID4gaW5kZXggYjk5YmE0Njg4Li44ZDYxMmQ1NjYgMTAw NjQ0DQo+ID4gPiA+IC0tLSBhL2xpYi9saWJydGVfZWFsL2NvbW1vbi9pbmNsdWRlL2dlbmVyaWMv cnRlX2F0b21pYy5oDQo+ID4gPiA+ICsrKyBiL2xpYi9saWJydGVfZWFsL2NvbW1vbi9pbmNsdWRl L2dlbmVyaWMvcnRlX2F0b21pYy5oDQo+ID4gPiA+IEBAIC0xNCw2ICsxNCw3IEBADQo+ID4gPiA+ DQo+ID4gPiA+IMKgI2luY2x1ZGUgPHN0ZGludC5oPg0KPiA+ID4gPiDCoCNpbmNsdWRlIDxydGVf Y29tbW9uLmg+DQo+ID4gPiA+ICsjaW5jbHVkZSA8cnRlX2NvbXBhdC5oPg0KPiA+ID4gPg0KPiA+ ID4gPiDCoCNpZmRlZiBfX0RPWFlHRU5fXw0KPiA+ID4gPg0KPiA+ID4gPiBAQCAtMTA4Miw0ICsx MDgzLDY4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZA0KPiA+ID4gPiBydGVfYXRvbWljNjRfY2xlYXIo cnRlX2F0b21pYzY0X3QNCj4gPiA+ID4gKnYpDQo+ID4gPiA+IMKgfQ0KPiA+ID4gPiDCoCNlbmRp Zg0KPiA+ID4gPg0KPiA+ID4gPiArLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gMTI4IGJpdCBh dG9taWMgb3BlcmF0aW9ucw0KPiA+ID4gPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4g PiA+IC0qLw0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIDEyOC1iaXQgaW50 ZWdlciBzdHJ1Y3R1cmUuDQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4gK3R5cGVkZWYgc3RydWN0IHsN Cj4gPiA+ID4gKwl1aW50NjRfdCB2YWxbMl07DQo+ID4gPiA+ICt9IF9fcnRlX2FsaWduZWQoMTYp IHJ0ZV9pbnQxMjhfdDsNCj4gPiA+IFNvIHdlIGNhbid0IHVzZSBfX2ludDEyOD8NCj4gPiA+DQo+ ID4gSSdsbCBwdXQgaXQgaW4gYSB1bmlvbiB3aXRoIHZhbFsyXSwgaW4gY2FzZSBhbnkgaW1wbGVt ZW50YXRpb25zIHdhbnQNCj4gPiB0byB1c2UgaXQuDQo+IFRoaW5raW5nIG9uIHRoaXMgb25lIG1v cmUgdGltZSwgc2luY2UgdGhlIGlubGluZSBhc20gZnVuY3Rpb25zIChlLmcuIGZvciB4ODZfNjQN Cj4gY21weGNoZzE2YiBhbmQgZm9yIEFBcmNoNjQgTERYUC9TVFhQKSBhbnl3YXkgd2lsbCB1c2Ug NjQtYml0IHJlZ2lzdGVycywgaXQNCj4gbWFrZXMgbW9zdCBzZW5zZSB0byBtYWtlIHJ0ZV9pbnQx MjhfdCBhIHN0cnVjdCBvZiAyeDY0Yi4gVGhlIHF1ZXN0aW9uIGlzDQo+IHdoZXRoZXIgdG8gdXNl IGFuIGFycmF5IGxpa2UgYWJvdmUgb3IgYSBzdHJ1Y3Qgd2l0aCB0d28gZWxlbWVudHMgKHdoaWNo IEkNCj4gbm9ybWFsbHkgZG8gaW50ZXJuYWxseSkuIENhbiB5b3UgY29tcGFyZSBjb2RlIGdlbmVy YXRpb24gd2l0aCB0aGUgZm9sbG93aW5nDQo+IGRlZmluaXRpb24/DQo+IHR5cGVkZWYgc3RydWN0 IHsNCj4gwqAgwqAgwqAgwqAgdWludDY0X3QgbG8sIGhpOw0KPiB9IF9fcnRlX2FsaWduZWQoMTYp IHJ0ZV9pbnQxMjhfdDsNCj4gDQoNCkludGVyZXN0aW5nbHksIHRoYXQgbWFkZSBubyBkaWZmZXJl bmNlIGluIHRoZSBQQlYgY29kZSBidXQgYWRkZWQgbW9yZSBpbnN0cnVjdGlvbnMgb3ZlcmFsbCB0 byBQQlI6DQpQQlY6IDEwMCBpbnN0cyBmb3IgcHVzaCwgOTcgaW5zdHMgZm9yIHBvcA0KUEJSOiAx MDAgaW5zdHMgZm9yIHB1c2gsIDgzIGluc3RzIGZvciBwb3ANCg0KPiA+DQo+ID4gVGhhbmtzLA0K PiA+IEdhZ2UNCj4gPg0KPiA+IFtzbmlwXQ0KPiAtLQ0KPiBPbGEgTGlsamVkYWhsLCBOZXR3b3Jr aW5nIFN5c3RlbSBBcmNoaXRlY3QsIEFybSBQaG9uZSArNDY3MDY4NjYzNzMsIFNreXBlDQo+IG9s YS5saWxqZWRhaGwNCg0K