From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ola Liljedahl Subject: Re: [PATCH v3 1/3] ring: read tail using atomic load Date: Fri, 5 Oct 2018 18:05:39 +0000 Message-ID: References: <20180807031943.5331-1-gavin.hu@arm.com> <1537172244-64874-1-git-send-email-gavin.hu@arm.com> <20180929104857.GA30457@jerin> <2601191342CEEE43887BDE71AB9772580102FE261A@IRSMSX106.ger.corp.intel.com> <621E373E-048D-4808-8CE8-84373EA98D2F@arm.com> <2601191342CEEE43887BDE71AB9772580102FE2951@IRSMSX106.ger.corp.intel.com> <20181005170725.GA18671@jerin> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "Ananyev, Konstantin" , "Gavin Hu (Arm Technology China)" , "dev@dpdk.org" , Steve Capper , nd , "stable@dpdk.org" To: Jerin Jacob , Honnappa Nagarahalli Return-path: In-Reply-To: <20181005170725.GA18671@jerin> Content-Language: en-US Content-ID: List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" U28geW91IGRvbid0IHdhbnQgdG8gd3JpdGUgdGhlIHByb3BlciBDMTEgY29kZSBiZWNhdXNlIHRo ZSBjb21waWxlciBnZW5lcmF0ZXMgb25lIGV4dHJhIGluc3RydWN0aW9uIHRoYXQgd2F5Pw0KWW91 IGRvbid0IGV2ZW4ga25vdyBpZiB0aGF0IG9uZSBleHRyYSBpbnN0cnVjdGlvbiBoYXMgYW55IG1l YXN1cmFibGUgaW1wYWN0IG9uIHBlcmZvcm1hbmNlLiBFLmcuIGl0IGNvdWxkIGJlIGlzc3VlZCB0 aGUgY3ljbGUgYmVmb3JlIHRvZ2V0aGVyIHdpdGggb3RoZXIgaW5zdHJ1Y3Rpb25zLg0KDQpXZSBj YW4gY29tcGxhaW4gdG8gdGhlIGNvbXBpbGVyIHdyaXRlcnMgdGhhdCB0aGUgY29kZSBnZW5lcmF0 aW9uIGZvciBfX2F0b21pY19sb2FkX24oLCBfX0FUT01JQ19SRUxBWEVEKSBpcyBub3Qgb3B0aW1h bCAoYXQgbGVhc3Qgb24gQVJNL0E2NCkuIEkgdGhpbmsgdGhlIHByb2JsZW0gaXMgdGhhdCB0aGUg X19hdG9taWMgYnVpbHRpbnMgb25seSBhY2NlcHQgYSBiYXNlIGFkZHJlc3Mgd2l0aG91dCBhbnkg b2Zmc2V0IGFuZCB0aGlzIGlzIHBvc3NpYmx5IGJlY2F1c2UgZS5nLiBsb2FkL3N0b3JlIGV4Y2x1 c2l2ZSAoTERYL1NUWCkgYW5kIGxvYWQtYWNxdWlyZSAoTERBUikgYW5kIHN0b3JlLXJlbGVhc2Ug KFNUTFIpIG9ubHkgYWNjZXB0IGEgYmFzZSByZWdpc3RlciB3aXRoIG5vIG9mZnNldC4gU28gYW55 IG9mZnNldCBoYXMgdG8gYmUgYWRkZWQgYmVmb3JlIHRoZSBhY3R1YWwgImF0b21pYyIgaW5zdHJ1 Y3Rpb24sIExEUiBpbiB0aGlzIGNhc2UuDQoNCg0KLS0gT2xhDQoNCg0K77u/T24gMDUvMTAvMjAx OCwgMTk6MDcsICJKZXJpbiBKYWNvYiIgPGplcmluLmphY29iQGNhdml1bW5ldHdvcmtzLmNvbT4g d3JvdGU6DQoNCiAgICAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KICAgID4gRGF0ZTogRnJp LCA1IE9jdCAyMDE4IDE1OjExOjQ0ICswMDAwDQogICAgPiBGcm9tOiBIb25uYXBwYSBOYWdhcmFo YWxsaSA8SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT4NCiAgICA+IFRvOiAiQW5hbnlldiwg S29uc3RhbnRpbiIgPGtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+LCBPbGEgTGlsamVkYWhs DQogICAgPiAgPE9sYS5MaWxqZWRhaGxAYXJtLmNvbT4sICJHYXZpbiBIdSAoQXJtIFRlY2hub2xv Z3kgQ2hpbmEpIg0KICAgID4gIDxHYXZpbi5IdUBhcm0uY29tPiwgSmVyaW4gSmFjb2IgPGplcmlu LmphY29iQGNhdml1bW5ldHdvcmtzLmNvbT4NCiAgICA+IENDOiAiZGV2QGRwZGsub3JnIiA8ZGV2 QGRwZGsub3JnPiwgU3RldmUgQ2FwcGVyIDxTdGV2ZS5DYXBwZXJAYXJtLmNvbT4sIG5kDQogICAg PiAgPG5kQGFybS5jb20+LCAic3RhYmxlQGRwZGsub3JnIiA8c3RhYmxlQGRwZGsub3JnPg0KICAg ID4gU3ViamVjdDogUkU6IFtQQVRDSCB2MyAxLzNdIHJpbmc6IHJlYWQgdGFpbCB1c2luZyBhdG9t aWMgbG9hZA0KICAgID4gDQogICAgPiA+ID4gICAgICAgICA+IEhpIEplcmluLA0KICAgID4gPiA+ ICAgICAgICAgPg0KICAgID4gPiA+ICAgICAgICAgPiBUaGFua3MgZm9yIHlvdXIgcmV2aWV3LCBp bmxpbmUgY29tbWVudHMgZnJvbSBvdXIgaW50ZXJuYWwNCiAgICA+ID4gZGlzY3Vzc2lvbnMuDQog ICAgPiA+ID4gICAgICAgICA+DQogICAgPiA+ID4gICAgICAgICA+IEJSLiBHYXZpbg0KICAgID4g PiA+ICAgICAgICAgPg0KICAgID4gPiA+ICAgICAgICAgPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQogICAgPiA+ID4gICAgICAgICA+ID4gRnJvbTogSmVyaW4gSmFjb2IgPGplcmluLmph Y29iQGNhdml1bW5ldHdvcmtzLmNvbT4NCiAgICA+ID4gPiAgICAgICAgID4gPiBTZW50OiBTYXR1 cmRheSwgU2VwdGVtYmVyIDI5LCAyMDE4IDY6NDkgUE0NCiAgICA+ID4gPiAgICAgICAgID4gPiBU bzogR2F2aW4gSHUgKEFybSBUZWNobm9sb2d5IENoaW5hKSA8R2F2aW4uSHVAYXJtLmNvbT4NCiAg ICA+ID4gPiAgICAgICAgID4gPiBDYzogZGV2QGRwZGsub3JnOyBIb25uYXBwYSBOYWdhcmFoYWxs aQ0KICAgID4gPiA+ICAgICAgICAgPiA+IDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29tPjsg U3RldmUgQ2FwcGVyDQogICAgPiA+ID4gICAgICAgICA+ID4gPFN0ZXZlLkNhcHBlckBhcm0uY29t PjsgT2xhIExpbGplZGFobCA8T2xhLkxpbGplZGFobEBhcm0uY29tPjsNCiAgICA+ID4gbmQNCiAg ICA+ID4gPiAgICAgICAgID4gPiA8bmRAYXJtLmNvbT47IHN0YWJsZUBkcGRrLm9yZw0KICAgID4g PiA+ICAgICAgICAgPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMS8zXSByaW5nOiByZWFkIHRh aWwgdXNpbmcgYXRvbWljIGxvYWQNCiAgICA+ID4gPiAgICAgICAgID4gPg0KICAgID4gPiA+ICAg ICAgICAgPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQogICAgPiA+ID4gICAgICAgICA+ ID4gPiBEYXRlOiBNb24sIDE3IFNlcCAyMDE4IDE2OjE3OjIyICswODAwDQogICAgPiA+ID4gICAg ICAgICA+ID4gPiBGcm9tOiBHYXZpbiBIdSA8Z2F2aW4uaHVAYXJtLmNvbT4NCiAgICA+ID4gPiAg ICAgICAgID4gPiA+IFRvOiBkZXZAZHBkay5vcmcNCiAgICA+ID4gPiAgICAgICAgID4gPiA+IEND OiBnYXZpbi5odUBhcm0uY29tLCBIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29tLA0KICAgID4g PiA+ICAgICAgICAgPiA+ID4gc3RldmUuY2FwcGVyQGFybS5jb20sICBPbGEuTGlsamVkYWhsQGFy bS5jb20sDQogICAgPiA+ID4gICAgICAgICA+ID4gPiBqZXJpbi5qYWNvYkBjYXZpdW1uZXR3b3Jr cy5jb20sIG5kQGFybS5jb20sDQogICAgPiA+IHN0YWJsZUBkcGRrLm9yZw0KICAgID4gPiA+ICAg ICAgICAgPiA+ID4gU3ViamVjdDogW1BBVENIIHYzIDEvM10gcmluZzogcmVhZCB0YWlsIHVzaW5n IGF0b21pYyBsb2FkDQogICAgPiA+ID4gICAgICAgICA+ID4gPiBYLU1haWxlcjogZ2l0LXNlbmQt ZW1haWwgMi43LjQNCiAgICA+ID4gPiAgICAgICAgID4gPiA+DQogICAgPiA+ID4gICAgICAgICA+ ID4gPiBFeHRlcm5hbCBFbWFpbA0KICAgID4gPiA+ICAgICAgICAgPiA+ID4NCiAgICA+ID4gPiAg ICAgICAgID4gPiA+IEluIHVwZGF0ZV90YWlsLCByZWFkIGh0LT50YWlsIHVzaW5nIF9fYXRvbWlj X2xvYWQuQWx0aG91Z2ggdGhlDQogICAgPiA+ID4gICAgICAgICA+ID4gPiBjb21waWxlciBjdXJy ZW50bHkgc2VlbXMgdG8gYmUgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nIGV2ZW4gd2l0aG91dA0KICAg ID4gPiA+ICAgICAgICAgPiA+ID4gX2F0b21pY19sb2FkLCB3ZSBkb24ndCB3YW50IHRvIGdpdmUg dGhlIGNvbXBpbGVyIGZyZWVkb20gdG8NCiAgICA+ID4gb3B0aW1pc2UNCiAgICA+ID4gPiAgICAg ICAgID4gPiA+IHdoYXQgc2hvdWxkIGJlIGFuIGF0b21pYyBsb2FkLCBpdCBzaG91bGQgbm90IGJl IGFyYml0YXJpbHkgbW92ZWQNCiAgICA+ID4gPiAgICAgICAgID4gPiA+IGFyb3VuZC4NCiAgICA+ ID4gPiAgICAgICAgID4gPiA+DQogICAgPiA+ID4gICAgICAgICA+ID4gPiBGaXhlczogMzkzNjhl YmZjNiAoInJpbmc6IGludHJvZHVjZSBDMTEgbWVtb3J5IG1vZGVsIGJhcnJpZXINCiAgICA+ID4g b3B0aW9uIikNCiAgICA+ID4gPiAgICAgICAgID4gPiA+IENjOiBzdGFibGVAZHBkay5vcmcNCiAg ICA+ID4gPiAgICAgICAgID4gPiA+DQogICAgPiA+ID4gICAgICAgICA+ID4gPiBTaWduZWQtb2Zm LWJ5OiBHYXZpbiBIdSA8Z2F2aW4uaHVAYXJtLmNvbT4NCiAgICA+ID4gPiAgICAgICAgID4gPiA+ IFJldmlld2VkLWJ5OiBIb25uYXBwYSBOYWdhcmFoYWxsaQ0KICAgID4gPiA8SG9ubmFwcGEuTmFn YXJhaGFsbGlAYXJtLmNvbT4NCiAgICA+ID4gPiAgICAgICAgID4gPiA+IFJldmlld2VkLWJ5OiBT dGV2ZSBDYXBwZXIgPHN0ZXZlLmNhcHBlckBhcm0uY29tPg0KICAgID4gPiA+ICAgICAgICAgPiA+ ID4gUmV2aWV3ZWQtYnk6IE9sYSBMaWxqZWRhaGwgPE9sYS5MaWxqZWRhaGxAYXJtLmNvbT4NCiAg ICA+ID4gPiAgICAgICAgID4gPiA+IC0tLQ0KICAgID4gPiA+ICAgICAgICAgPiA+ID4gIGxpYi9s aWJydGVfcmluZy9ydGVfcmluZ19jMTFfbWVtLmggfCAzICsrLQ0KICAgID4gPiA+ICAgICAgICAg PiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCiAg ICA+ID4gPiAgICAgICAgID4gPiA+DQogICAgPiA+ID4gICAgICAgICA+IFRoZSByZWFkIG9mIGh0 LT50YWlsIG5lZWRzIHRvIGJlIGF0b21pYywgYSBub24tYXRvbWljIHJlYWQgd291bGQgbm90DQog ICAgPiA+IGJlIGNvcnJlY3QuDQogICAgPiA+ID4NCiAgICA+ID4gPiAgICAgICAgIFRoYXQncyBh IDMyYml0IHZhbHVlIGxvYWQuDQogICAgPiA+ID4gICAgICAgICBBRkFJSyBvbiBhbGwgQ1BVcyB0 aGF0IHdlIHN1cHBvcnQgaXQgaXMgYW4gYXRvbWljIG9wZXJhdGlvbi4NCiAgICA+ID4gPiAgICAg W09sYV0gQnV0IHRoYXQgdGhlIG9yZGluYXJ5IEMgbG9hZCBpcyB0cmFuc2xhdGVkIHRvIGFuIGF0 b21pYyBsb2FkIGZvciB0aGUNCiAgICA+ID4gdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBpbmNpZGVu dGFsLg0KICAgID4gPiA+DQogICAgPiA+ID4gICAgIElmIHRoZSBkZXNpZ24gcmVxdWlyZXMgYW4g YXRvbWljIGxvYWQgKHdoaWNoIGlzIHRoZSBjYXNlIGhlcmUpLCB3ZQ0KICAgID4gPiA+IHNob3Vs ZCB1c2UgYW4gYXRvbWljIGxvYWQgb24gdGhlIGxhbmd1YWdlIGxldmVsLiBUaGVuIHdlIGNhbiBi ZSBzdXJlIGl0IHdpbGwNCiAgICA+ID4gYWx3YXlzIGJlIHRyYW5zbGF0ZWQgdG8gYW4gYXRvbWlj IGxvYWQgZm9yIHRoZSB0YXJnZXQgaW4gcXVlc3Rpb24gb3INCiAgICA+ID4gY29tcGlsYXRpb24g d2lsbCBmYWlsLiBXZSBkb24ndCBoYXZlIHRvIGRlcGVuZCBvbiBhc3N1bXB0aW9ucy4NCiAgICA+ ID4NCiAgICA+ID4gV2UgYWxsIGtub3cgdGhhdCAzMmJpdCBsb2FkL3N0b3JlIG9uIGNwdSB3ZSBz dXBwb3J0IC0gYXJlIGF0b21pYy4NCiAgICA+ID4gSWYgaXQgd291bGRuJ3QgYmUgdGhlIGNhc2Ug LSBEUERLIHdvdWxkIGJlIGJyb2tlbiBpbiBkb3plbiBwbGFjZXMuDQogICAgPiA+IFNvIHdoYXQg dGhlIHBvaW50IHRvIHByZXRlbmQgdGhhdCAiaXQgbWlnaHQgYmUgbm90IGF0b21pYyIgaWYgd2Ug ZG8ga25vdyBmb3INCiAgICA+ID4gc3VyZSB0aGF0IGl0IGlzPw0KICAgID4gPiBJIGRvIHVuZGVy c3RhbmQgdGhhdCB5b3Ugd2FudCB0byB1c2UgYXRvbWljX2xvYWQocmVsYXhlZCkgaGVyZSBmb3IN CiAgICA+ID4gY29uc2lzdGVuY3ksIGFuZCB0byBjb25mb3JtIHdpdGggQzExIG1lbS1tb2RlbCBh bmQgSSBkb24ndCBzZWUgYW55IGhhcm0gaW4NCiAgICA+ID4gdGhhdC4NCiAgICA+IFdlIGNhbiBj b250aW51ZSB0byBkaXNjdXNzIHRoZSB0b3BpYywgaXQgaXMgYSBnb29kIGRpc2N1c3Npb24uIEJ1 dCwgYXMgZmFyIHRoaXMgcGF0Y2ggaXMgY29uY2VybmVkLCBjYW4gSSBjb25zaWRlciB0aGlzIGFz IHVzIGhhdmluZyBhIGNvbnNlbnN1cz8gVGhlIGZpbGUgcnRlX3JpbmdfYzExX21lbS5oIGlzIHNw ZWNpZmljYWxseSBmb3IgQzExIG1lbW9yeSBtb2RlbCBhbmQgSSBhbHNvIGRvIG5vdCBzZWUgYW55 IGhhcm0gaW4gaGF2aW5nIGNvZGUgdGhhdCBjb21wbGV0ZWx5IGNvbmZvcm1zIHRvIEMxMSBtZW1v cnkgbW9kZWwuDQogICAgDQogICAgSGF2ZSB5b3UgZ3V5cyBjaGVja2VkIHRoZSBvdXRwdXQgYXNz ZW1ibHkgd2l0aCBhbmQgd2l0aG91dCBhdG9taWMgbG9hZD8NCiAgICBUaGVyZSBpcyBhbiBleHRy YSAiYWRkIiBpbnN0cnVjdGlvbiB3aXRoIGF0IGxlYXN0IHRoZSBjb2RlIEkgaGF2ZSBjaGVja2Vk Lg0KICAgIEkgdGhpbmssIGNvbXBpbGVyIGlzIG5vdCBzbWFydCBlbm91Z2ggdG8gdW5kZXJzdGFu ZCBpdCBpcyBhIGRlYWQgY29kZSBmb3INCiAgICBhcm02NC4NCiAgICANCiAgICDinpwgW35dICQg YWFyY2g2NC1saW51eC1nbnUtZ2NjIC12DQogICAgVXNpbmcgYnVpbHQtaW4gc3BlY3MuDQogICAg Q09MTEVDVF9HQ0M9YWFyY2g2NC1saW51eC1nbnUtZ2NjDQogICAgQ09MTEVDVF9MVE9fV1JBUFBF Uj0vdXNyL2xpYi9nY2MvYWFyY2g2NC1saW51eC1nbnUvOC4yLjAvbHRvLXdyYXBwZXINCiAgICBU YXJnZXQ6IGFhcmNoNjQtbGludXgtZ251DQogICAgQ29uZmlndXJlZCB3aXRoOiAvYnVpbGQvYWFy Y2g2NC1saW51eC1nbnUtZ2NjL3NyYy9nY2MtOC4yLjAvY29uZmlndXJlDQogICAgLS1wcmVmaXg9 L3VzciAtLXByb2dyYW0tcHJlZml4PWFhcmNoNjQtbGludXgtZ251LQ0KICAgIC0td2l0aC1sb2Nh bC1wcmVmaXg9L3Vzci9hYXJjaDY0LWxpbnV4LWdudQ0KICAgIC0td2l0aC1zeXNyb290PS91c3Iv YWFyY2g2NC1saW51eC1nbnUNCiAgICAtLXdpdGgtYnVpbGQtc3lzcm9vdD0vdXNyL2FhcmNoNjQt bGludXgtZ251IC0tbGliZGlyPS91c3IvbGliDQogICAgLS1saWJleGVjZGlyPS91c3IvbGliIC0t dGFyZ2V0PWFhcmNoNjQtbGludXgtZ251DQogICAgLS1ob3N0PXg4Nl82NC1wYy1saW51eC1nbnUg LS1idWlsZD14ODZfNjQtcGMtbGludXgtZ251IC0tZGlzYWJsZS1ubHMNCiAgICAtLWVuYWJsZS1s YW5ndWFnZXM9YyxjKysgLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLXRocmVhZHM9cG9zaXgNCiAg ICAtLXdpdGgtc3lzdGVtLXpsaWIgLS13aXRoLWlzbCAtLWVuYWJsZS1fX2N4YV9hdGV4aXQNCiAg ICAtLWRpc2FibGUtbGlidW53aW5kLWV4Y2VwdGlvbnMgLS1lbmFibGUtY2xvY2FsZT1nbnUNCiAg ICAtLWRpc2FibGUtbGlic3RkY3h4LXBjaCAtLWRpc2FibGUtbGlic3NwIC0tZW5hYmxlLWdudS11 bmlxdWUtb2JqZWN0DQogICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIC0tZW5hYmxlLWx0byAt LWVuYWJsZS1wbHVnaW4NCiAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmliZXJ0eSAtLXdpdGgtbGlu a2VyLWhhc2gtc3R5bGU9Z251DQogICAgLS1lbmFibGUtZ251LWluZGlyZWN0LWZ1bmN0aW9uIC0t ZGlzYWJsZS1tdWx0aWxpYiAtLWRpc2FibGUtd2Vycm9yDQogICAgLS1lbmFibGUtY2hlY2tpbmc9 cmVsZWFzZQ0KICAgIFRocmVhZCBtb2RlbDogcG9zaXgNCiAgICBnY2MgdmVyc2lvbiA4LjIuMCAo R0NDKQ0KICAgIA0KICAgIA0KICAgICMgYnVpbGQgc2V0dXANCiAgICBtYWtlIC1qIDggY29uZmln IFQ9YXJtNjQtYXJtdjhhLWxpbnV4YXBwLWdjYyAgQ1JPU1M9YWFyY2g2NC1saW51eC1nbnUtDQog ICAgbWFrZSAtaiA4IHRlc3QtYnVpbGQgQ1JPU1M9YWFyY2g2NC1saW51eC1nbnUtDQogICAgDQog ICAgIyBnZW5lcmF0ZSBhc20NCiAgICBhYXJjaDY0LWxpbnV4LWdudS1nZGIgLWJhdGNoIC1leCAn ZmlsZSBidWlsZC9hcHAvdGVzdCAnIC1leCAnZGlzYXNzZW1ibGUgL3JzIGJ1Y2tldF9lbnF1ZXVl X3NpbmdsZScgDQogICAgDQogICAgSSBoYXZlIHVwbG9hZGVkIGdlbmVyYXRlZCBmaWxlIGZvciB5 b3VyIGNvbnZlbmllbmNlDQogICAgd2l0aF9hdG9taWNfbG9hZC50eHQoaW5jbHVkZXMgcGF0Y2gg MSwyLDMpDQogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICBodHRwczovL3Bhc3RlYmlu LmNvbS9TUTZ3MXlSdQ0KICAgIA0KICAgIHdpdGhvdXRfYXRvbWljX2xvYWQudHh0KGluY2x1ZGVz IHBhdGNoIDIsMykNCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIGh0dHBzOi8vcGFz dGViaW4uY29tL0Jwdm5EMENBDQogICAgDQogICAgDQogICAgd2l0aG91dF9hdG9taWMNCiAgICAt LS0tLS0tLS0tLS0tDQogICAgMjMgICAgICAgICAgICAgIGlmICghc2luZ2xlKQ0KICAgICAgIDB4 MDAwMDAwMDAwMDY4ZDI5MCA8KzI0MD46ICAgODUgMDAgMDAgMzUgICAgIGNibnogICAgdzUsIDB4 NjhkMmEwIDxidWNrZXRfZW5xdWV1ZV9zaW5nbGUrMjU2Pg0KICAgICAgIDB4MDAwMDAwMDAwMDY4 ZDI5NCA8KzI0ND46ICAgODIgMDQgNDAgYjkgICAgIGxkciAgICAgdzIsIFt4NCwgIzRdDQogICAg ICAgMHgwMDAwMDAwMDAwNjhkMjk4IDwrMjQ4PjogICA1ZiAwMCAwMSA2YiAgICAgY21wICAgICB3 MiwgdzENCiAgICAgICAweDAwMDAwMDAwMDA2OGQyOWMgPCsyNTI+OiAgIDIxIDAxIDAwIDU0ICAg ICBiLm5lICAgIDB4NjhkMmMwIDxidWNrZXRfZW5xdWV1ZV9zaW5nbGUrMjg4PiAgLy8gYi5hbnkN CiAgICANCiAgICAyNCAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodW5saWtlbHkoaHQtPnRh aWwgIT0gb2xkX3ZhbCkpDQogICAgMjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGVf cGF1c2UoKTsNCiAgICANCiAgICANCiAgICB3aXRoX2F0b21pYw0KICAgIC0tLS0tLS0tLS0tDQog ICAgMjMgICAgICAgICAgICAgIGlmICghc2luZ2xlKQ0KICAgICAgIDB4MDAwMDAwMDAwMDY4Y2Vi MCA8KzI0MD46ICAgMDAgMTAgMDQgOTEgICAgIGFkZCAgICAgeDAsIHgwLCAjMHgxMDQNCiAgICAg ICAweDAwMDAwMDAwMDA2OGNlYjQgPCsyNDQ+OiAgIDg0IDAwIDAwIDM1ICAgICBjYm56ICAgIHc0 LCAweDY4Y2VjNCA8YnVja2V0X2VucXVldWVfc2luZ2xlKzI2MD4NCiAgICAgICAweDAwMDAwMDAw MDA2OGNlYjggPCsyNDg+OiAgIDAyIDAwIDQwIGI5ICAgICBsZHIgICAgIHcyLCBbeDBdDQogICAg ICAgMHgwMDAwMDAwMDAwNjhjZWJjIDwrMjUyPjogICAzZiAwMCAwMiA2YiAgICAgY21wICAgICB3 MSwgdzINCiAgICAgICAweDAwMDAwMDAwMDA2OGNlYzAgPCsyNTY+OiAgIDAxIDA5IDAwIDU0ICAg ICBiLm5lICAgIDB4NjhjZmUwIDxidWNrZXRfZW5xdWV1ZV9zaW5nbGUrNTQ0PiAgLy8gYi5hbnkN CiAgICANCiAgICAyNCAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAodW5saWtlbHkob2xkX3Zh bCAhPSBfX2F0b21pY19sb2FkX24oJmh0LT50YWlsLCBfX0FUT01JQ19SRUxBWEVEKSkpDQogICAg DQogICAgDQogICAgSSBkb24ndCB3YW50IHRvIGJsb2NrIHRoaXMgc2VyaWVzIG9mIHBhdGNoZXMg ZHVlIHRoaXMgcGF0Y2guIENhbiB3ZSBtYWtlDQogICAgcmUgc3BpbiBvbmUgc2VyaWVzIHdpdGgg MiBhbmQgMyBwYXRjaGVzLiBBbmQgV2FpdCBmb3IgcGF0Y2ggMSB0byBjb25jbHVkZT8NCiAgICAN CiAgICBUaG91Z2h0cz8NCiAgICANCiAgICANCiAgICANCiAgICANCiAgICA+IA0KICAgID4gPiBC dXQgYXJndW1lbnQgdGhhdCB3ZSBzaG91bGRuJ3QgYXNzdW1lIDMyYml0IGxvYWQvc3RvcmUgb3Bz IGFzIGF0b21pYw0KICAgID4gPiBzb3VuZHMgYSBiaXQgZmxha3kgdG8gbWUuDQogICAgPiA+IEtv bnN0YW50aW4NCiAgICA+ID4NCiAgICA+ID4NCiAgICA+ID4gPg0KICAgID4gPiA+DQogICAgPiA+ ID4NCiAgICA+ID4gPiAgICAgICAgID4gQnV0IHRoZXJlIGFyZSBubyBtZW1vcnkgb3JkZXJpbmcg cmVxdWlyZW1lbnRzICh3aXRoDQogICAgPiA+ID4gICAgICAgICA+IHJlZ2FyZHMgdG8gb3RoZXIg bG9hZHMgYW5kL29yIHN0b3JlcyBieSB0aGlzIHRocmVhZCkgc28gcmVsYXhlZA0KICAgID4gPiBt ZW1vcnkgb3JkZXIgaXMgc3VmZmljaWVudC4NCiAgICA+ID4gPiAgICAgICAgID4gQW5vdGhlciBh c3BlY3Qgb2YgdXNpbmcgX19hdG9taWNfbG9hZF9uKCkgaXMgdGhhdCB0aGUNCiAgICA+ID4gPiBj b21waWxlciBjYW5ub3QgIm9wdGltaXNlIiB0aGlzIGxvYWQgKGUuZy4gY29tYmluZSwgaG9pc3Qg ZXRjKSwgaXQgaGFzIHRvIGJlDQogICAgPiA+IGRvbmUgYXMNCiAgICA+ID4gPiAgICAgICAgID4g c3BlY2lmaWVkIGluIHRoZSBzb3VyY2UgY29kZSB3aGljaCBpcyBhbHNvIHdoYXQgd2UgbmVlZCBo ZXJlLg0KICAgID4gPiA+DQogICAgPiA+ID4gICAgICAgICBJIHRoaW5rIEplcmluIHBvaW50cyB0 aGF0IHJ0ZV9wYXVzZSgpIGFjdHMgaGVyZSBhcyBjb21waWxlciBiYXJyaWVyIHRvbywNCiAgICA+ ID4gPiAgICAgICAgIHNvIG5vIG5lZWQgdG8gd29ycnkgdGhhdCBjb21waWxlciB3b3VsZCBvcHRp bWl6ZSBvdXQgdGhlIGxvb3AuDQogICAgPiA+ID4gICAgIFtPbGFdIFNvcnJ5IG1pc3NlZCB0aGF0 LiBCdXQgdGhlIGJhcnJpZXIgYmVoYXZpb3VyIG9mIHJ0ZV9wYXVzZSgpDQogICAgPiA+ID4gaXMg bm90IHBhcnQgb2YgQzExLCBpcyBpdCBlc3NlbnRpYWxseSBhIGhhbmQtbWFkZSBmZWF0dXJlIHRv IHN1cHBvcnQNCiAgICA+ID4gPiB0aGUgbGVnYWN5IG11bHRpdGhyZWFkZWQgbWVtb3J5IG1vZGVs ICh3aGljaCB1c2VzIGV4cGxpY2l0IEhXIGFuZA0KICAgID4gPiBjb21waWxlciBiYXJyaWVycyku IEknZCBwcmVmZXIgY29kZSB1c2luZyB0aGUgQzExIG1lbW9yeSBtb2RlbCBub3QgdG8NCiAgICA+ ID4gZGVwZW5kIG9uIHN1Y2ggbGVnYWN5IGZlYXR1cmVzLg0KICAgID4gPiA+DQogICAgPiA+ID4N CiAgICA+ID4gPg0KICAgID4gPiA+ICAgICAgICAgS29uc3RhbnRpbg0KICAgID4gPiA+DQogICAg PiA+ID4gICAgICAgICA+DQogICAgPiA+ID4gICAgICAgICA+IE9uZSBwb2ludCB3b3J0aCBtZW50 aW9uaW5nIHRob3VnaCBpcyB0aGF0IHRoaXMgY2hhbmdlIGlzIGZvcg0KICAgID4gPiA+IHRoZSBy dGVfcmluZ19jMTFfbWVtLmggZmlsZSwgbm90IHRoZSBsZWdhY3kgcmluZy4gSXQgbWF5IGJlIHdv cnRoIHBlcnNpc3RpbmcNCiAgICA+ID4gPiAgICAgICAgID4gd2l0aCBnZXR0aW5nIHRoZSBDMTEg Y29kZSByaWdodCB3aGVuIHBlb3BsZSBhcmUgbGVzcyBleGNpdGVkIGFib3V0DQogICAgPiA+IHNl bmRpbmcgYSByZWxlYXNlIG91dD8NCiAgICA+ID4gPiAgICAgICAgID4NCiAgICA+ID4gPiAgICAg ICAgID4gV2UgY2FuIGV4cGxhaW4gdGhhdCBmb3IgQzExIHdlIHdvdWxkIHByZWZlciB0byBkbyBs b2FkcyBhbmQgc3RvcmVzDQogICAgPiA+IGFzIHBlciB0aGUgQzExIG1lbW9yeSBtb2RlbC4gSW4g dGhlIGNhc2Ugb2YgcnRlX3JpbmcsIHRoZSBjb2RlIGlzDQogICAgPiA+ID4gICAgICAgICA+IHNl cGFyYXRlZCBjbGVhbmx5IGludG8gQzExIHNwZWNpZmljIGZpbGVzIGFueXdheS4NCiAgICA+ID4g PiAgICAgICAgID4NCiAgICA+ID4gPiAgICAgICAgID4gSSB0aGluayByZWFkaW5nIGh0LT50YWls IHVzaW5nIF9fYXRvbWljX2xvYWRfbigpIGlzIHRoZSBtb3N0DQogICAgPiA+IGFwcHJvcHJpYXRl IHdheS4gV2Ugc2hvdyB0aGF0IGh0LT50YWlsIGlzIHVzZWQgZm9yIHN5bmNocm9uaXphdGlvbiwg d2UNCiAgICA+ID4gPiAgICAgICAgID4gYWNrbm93bGVkZ2UgdGhhdCBodC0+dGFpbCBtYXkgYmUg d3JpdHRlbiBieSBvdGhlciB0aHJlYWRzDQogICAgPiA+ID4gd2l0aG91dCBhbnkgb3RoZXIga2lu ZCBvZiBzeW5jaHJvbml6YXRpb24gKGUuZy4gbm8gbG9jayBpbnZvbHZlZCkgYW5kIHdlDQogICAg PiA+IHJlcXVpcmUNCiAgICA+ID4gPiAgICAgICAgID4gYW4gYXRvbWljIGxvYWQgKGFueSB3cml0 ZSB0byBodC0+dGFpbCBtdXN0IGFsc28gYmUgYXRvbWljKS4NCiAgICA+ID4gPiAgICAgICAgID4N CiAgICA+ID4gPiAgICAgICAgID4gVXNpbmcgdm9sYXRpbGUgYW5kIGV4cGxpY2l0IGNvbXBpbGVy IChvciBwcm9jZXNzb3IpIG1lbW9yeSBiYXJyaWVycw0KICAgID4gPiAoZmVuY2VzKSBpcyB0aGUg bGVnYWN5IHByZS1DMTEgd2F5IG9mIGFjY29tcGxpc2hpbmcgdGhlc2UgdGhpbmdzLg0KICAgID4g PiA+IFRoZXJlJ3MNCiAgICA+ID4gPiAgICAgICAgID4gYSByZWFzb24gd2h5IEMxMS9DKysxMSBt b3ZlZCBhd2F5IGZyb20gdGhlIG9sZCB3YXlzLg0KICAgID4gPiA+ICAgICAgICAgPiA+ID4NCiAg ICA+ID4gPiAgICAgICAgID4gPiA+ICAgICAgICAgX19hdG9taWNfc3RvcmVfbigmaHQtPnRhaWws IG5ld192YWwsIF9fQVRPTUlDX1JFTEVBU0UpOw0KICAgID4gPiA+ICAgICAgICAgPiA+ID4gLS0N CiAgICA+ID4gPiAgICAgICAgID4gPiA+IDIuNy40DQogICAgPiA+ID4gICAgICAgICA+ID4gPg0K ICAgID4gPiA+DQogICAgPiA+ID4NCiAgICA+ID4gPg0KICAgID4gDQogICAgDQoNCg==