From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 25D725A6C for ; Tue, 17 Nov 2015 17:24:28 +0100 (CET) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP; 17 Nov 2015 08:20:43 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,308,1444719600"; d="scan'208,217";a="852852876" Received: from irsmsx154.ger.corp.intel.com ([163.33.192.96]) by orsmga002.jf.intel.com with ESMTP; 17 Nov 2015 08:20:41 -0800 Received: from irsmsx156.ger.corp.intel.com (10.108.20.68) by IRSMSX154.ger.corp.intel.com (163.33.192.96) with Microsoft SMTP Server (TLS) id 14.3.248.2; Tue, 17 Nov 2015 16:20:14 +0000 Received: from irsmsx105.ger.corp.intel.com ([169.254.7.203]) by IRSMSX156.ger.corp.intel.com ([169.254.3.110]) with mapi id 14.03.0248.002; Tue, 17 Nov 2015 16:20:15 +0000 From: "Ananyev, Konstantin" To: Matt Laswell Thread-Topic: [dpdk-dev] How to approach packet TX lockups Thread-Index: AQHRIMljuyZtc77fqkuDLa9xAWL/A56fV5aAgAAKZ4CAAAvNgIAA18WAgAADwgCAAAe4AIAAEkFQ Date: Tue, 17 Nov 2015 16:20:14 +0000 Message-ID: <2601191342CEEE43887BDE71AB97725836AC9C07@irsmsx105.ger.corp.intel.com> References: <20151116161201.7e951097@samsung9> <20151116173129.2a429930@samsung9> <2601191342CEEE43887BDE71AB97725836AC9A40@irsmsx105.ger.corp.intel.com> In-Reply-To: Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.182] MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] How to approach packet TX lockups X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Nov 2015 16:24:31 -0000 SGkgTWF0dCwNCg0KQXMgSSBzYWlkLCBhdCBsZWFzdCAgdHJ5IHRvIHVwZ3JhZGUgY29udGVudHMg b2Ygc2hhcmVkIGNvZGUgdG8gdGhlIGxhdGVzdCBvbmUuDQpJbiBwcmV2aW91cyByZWxlYXNlczog bGliL2xpYnJ0ZV9wbWRfaXhnYmUvaXhnYmUsIG5vdyBsb2NhdGVkIGF0OiBkcml2ZXJzL25ldC9p eGdiZS8uDQoNCj4gRm9yIHJlZmVyZW5jZSwgbXkgdHJhbnNtaXQgZnVuY3Rpb24gaXMgIHJ0ZV9l dGhfdHhfYnVyc3QoKS4NCkkgbWVhbnQgd2hhdCBpeGdiZSBUWCBmdW5jdGlvbiBpdCBwb2ludHMg dG86IGl4Z2JlX3htaXRfcGt0cyBvciBpeGdiZV94bWl0X3BrdHNfc2ltcGxlKCk/DQpGb3IgaXhn YmVfeG1pdF9wa3RzX3NpbXBsZSgpIGRvbuKAmXQgc2V0IHR4X3JzX3RocmVzaCA+IDMyLA0KZm9y IGl4Z2JlX3htaXRfcGt0cygpIHRoZSBzYWZlc3Qgd2F5IGlzIHRvIHNldCAgdHhfcnNfdGhyZXNo PTEuDQpUaG91Z2ggYXMgSSB1bmRlcnN0YW5kIGZyb20geW91ciBwcmV2aW91cyBtYWlscywgeW91 IGFscmVhZHkgZGlkIHRoYXQsIGFuZCBpdCBkaWRu4oCZdCBoZWxwLg0KS29uc3RhbnRpbg0KDQoN CkZyb206IE1hdHQgTGFzd2VsbCBbbWFpbHRvOmxhc3dlbGxAaW5maW5pdGVpby5jb21dDQpTZW50 OiBUdWVzZGF5LCBOb3ZlbWJlciAxNywgMjAxNSAzOjA1IFBNDQpUbzogQW5hbnlldiwgS29uc3Rh bnRpbg0KQ2M6IFN0ZXBoZW4gSGVtbWluZ2VyOyBkZXZAZHBkay5vcmcNClN1YmplY3Q6IFJlOiBb ZHBkay1kZXZdIEhvdyB0byBhcHByb2FjaCBwYWNrZXQgVFggbG9ja3Vwcw0KDQpIZXkgS29uc3Rh bnRpbiwNCg0KTW92aW5nIGZyb20gMS42cjIgdG8gMi4yIGlzIGdvaW5nIHRvIGJlIGEgcHJldHR5 IHNpZ25pZmljYW50IGNoYW5nZSBkdWUgdG8gdGhpbmdzIGxpa2UgY2hhbmdlcyBpbiB0aGUgTUJ1 ZiBmb3JtYXQsIEFQSSBkaWZmZXJlbmNlcywgZXRjLiAgRXZlbiBhcyBhbiBleHBlcmltZW50LCB0 aGF0J3MgYW4gYXdmdWxseSBsYXJnZSBjaGFuZ2UgdG8gYWJzb3JiLiAgSXMgdGhlcmUgYSBzdWJz ZXQgdGhhdCB5b3UncmUgcmVmZXJyaW5nIHRvIHRoYXQgY291bGQgYmUgbW9yZSByZWFkaWx5IGlu Y2x1ZGVkIHdpdGhvdXQgbW9kaWZ5aW5nIHNvIG1hbnkgdG91Y2ggcG9pbnRzIGludG8gRFBESz8N Cg0KRm9yIHJlZmVyZW5jZSwgbXkgdHJhbnNtaXQgZnVuY3Rpb24gaXMgIHJ0ZV9ldGhfdHhfYnVy c3QoKS4gIEl0IHNlZW1zIHRvIHJlbGlhYmx5IHRlbGwgbWUgdGhhdCBpdCBoYXMgZW5xdWV1ZWQg YWxsIG9mIHRoZSBwYWNrZXRzIHRoYXQgSSBnYXZlIGl0LCBob3dldmVyIHRoZSBzdGF0cyBmcm9t IHJ0ZV9ldGhfc3RhdHNfZ2V0KCkgaW5kaWNhdGUgdGhhdCBubyBwYWNrZXRzIGFyZSBhY3R1YWxs eSBiZWluZyBzZW50Lg0KDQpUaGFua3MsDQoNCi0gTWF0dA0KDQpPbiBUdWUsIE5vdiAxNywgMjAx NSBhdCA4OjQ0IEFNLCBBbmFueWV2LCBLb25zdGFudGluIDxrb25zdGFudGluLmFuYW55ZXZAaW50 ZWwuY29tPG1haWx0bzprb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPj4gd3JvdGU6DQoNCg0K PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91 bmNlc0BkcGRrLm9yZzxtYWlsdG86ZGV2LWJvdW5jZXNAZHBkay5vcmc+XSBPbiBCZWhhbGYgT2Yg TWF0dCBMYXN3ZWxsDQo+IFNlbnQ6IFR1ZXNkYXksIE5vdmVtYmVyIDE3LCAyMDE1IDI6MjQgUE0N Cj4gVG86IFN0ZXBoZW4gSGVtbWluZ2VyDQo+IENjOiBkZXZAZHBkay5vcmc8bWFpbHRvOmRldkBk cGRrLm9yZz4NCj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gSG93IHRvIGFwcHJvYWNoIHBhY2tl dCBUWCBsb2NrdXBzDQo+DQo+IFllcywgd2UncmUgb24gMS42cjIuICBUaGF0IHNhaWQsIEkndmUg dHJpZWQgYSBudW1iZXIgb2YgZGlmZmVyZW50IHZhbHVlcw0KPiBmb3IgdGhlIHRocmVzaG9sZHMg d2l0aG91dCBhIGxvdCBvZiBsdWNrLiAgU2V0dGluZyB3dGhyZXNoL2h0aHJlc2gvcHRocmVzaA0K PiB0byAwLzAvMzIgb3IgMC8wLzAgZG9lc24ndCBhcHBlYXIgdG8gZml4IHRoaW5ncy4gIEFuZCwg YXMgTWF0dGhldw0KPiBzdWdnZXN0ZWQsIEknbSBwcmV0dHkgc3VyZSB1c2luZyAwIGZvciB0aGUg dGhyZXNob2xkcyBsZWFkcyB0byBhdXRvLWNvbmZpZw0KPiBieSB0aGUgZHJpdmVyLiAgSSBhbHNv IHRyaWVkIDEvMS8zMiwgd2hpY2ggcmVxdWlyZWQgdGhhdCBJIGFsc28gY2hhbmdlIHRoZQ0KPiBy c190aHJlc2ggdmFsdWUgZnJvbSAwIHRvIDEgdG8gd29yayBhcm91bmQgYSBwYW5pYyBpbiBQTUQg aW5pdGlhbGl6YXRpb24NCj4gKCJUWCBXVEhSRVNIIG11c3QgYmUgc2V0IHRvIDAgaWYgdHhfcnNf dGhyZXNoIGlzIGdyZWF0ZXIgdGhhbiAxIikuDQo+DQo+IEFueSBvdGhlciBzdWdnZXN0aW9ucz8N Cg0KVGhhdCdzIG5vdCBvbmx5IERQREsgY29kZSBjaGFuZ2VkIHNpbmNlIDEuNi4NCkkgYW0gcHJl dHR5IHN1cmUgdGhhdCB3ZSBhbHNvIGhhdmUgYSBuZXcgdXBkYXRlIG9mIHNoYXJlZCBjb2RlIHNp bmNlIHRoZW4NCihhbmQgYXMgSSByZW1lbWJlciBwcm9iYWJseSBtb3JlIHRoYW4gb25lKS4NCk9u ZSBzdWdnZXN0aW9uIHdvdWxkIGJlIGF0IGxlYXN0IHRyeSB0byB1cGdyYWRlIHRoZSBzaGFyZWQg Y29kZSB1cCB0byB0aGUgbGF0ZXN0Lg0KQW5vdGhlciBvbmUgLSBldmVuIGlmIHlvdSBjYW4ndCB1 cGdyYWRlIHRvIDIuMiBpbiB5b3UgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCwNCml0IHByb2JhYmx5 IHdvcnRoIHRvIGRvIHRoYXQgaW4gc29tZSB0ZXN0IGVudmlyb25tZW50IGFuZCB0aGVuIGNoZWNr IGRvZXMgdGhlIHByb2JsZW0gcGVyc2lzdC4NCklmIHllcywgIHRoZW4gd2UnbGwgbmVlZCBzb21l IGd1aWRhbmNlIGhvdyB0byByZXByb2R1Y2UgaXQuDQoNCkFub3RoZXIgcXVlc3Rpb24gaXQgaXMg bm90IGNsZWFyIHdoYXQgVFggZnVuY3Rpb24gZG8geW91IHVzZT8NCktvbnN0YW50aW4NCg0KPg0K PiBPbiBNb24sIE5vdiAxNiwgMjAxNSBhdCA3OjMxIFBNLCBTdGVwaGVuIEhlbW1pbmdlciA8DQo+ IHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnPG1haWx0bzpzdGVwaGVuQG5ldHdvcmtwbHVtYmVy Lm9yZz4+IHdyb3RlOg0KPg0KPiA+IE9uIE1vbiwgMTYgTm92IDIwMTUgMTg6NDk6MTUgLTA2MDAN Cj4gPiBNYXR0IExhc3dlbGwgPGxhc3dlbGxAaW5maW5pdGVpby5jb208bWFpbHRvOmxhc3dlbGxA aW5maW5pdGVpby5jb20+PiB3cm90ZToNCj4gPg0KPiA+ID4gSGV5IFN0ZXBoZW4sDQo+ID4gPg0K PiA+ID4gVGhhbmtzIGEgbG90OyB0aGF0J3MgcmVhbGx5IHVzZWZ1bCBpbmZvcm1hdGlvbi4gIFVu Zm9ydHVuYXRlbHksIEknbSBhdCBhDQo+ID4gPiBzdGFnZSBpbiBvdXIgcmVsZWFzZSBjeWNsZSB3 aGVyZSB1cGdyYWRpbmcgdG8gYSBuZXcgdmVyc2lvbiBvZiBEUERLIGlzbid0DQo+ID4gPiBmZWFz aWJsZS4gIEFueSBjaGFuY2UgeW91IChvciBvdGhlcnMgcmVhZGluZyB0aGlzKSBoYXMgYSBwb2lu dGVyIHRvIHRoZQ0KPiA+ID4gcmVsZXZhbnQgY2hhbmdlcz8gIFdoaWxlIEkgY2FuJ3QgYWZmb3Jk IHRvIHVwZ3JhZGUgRFBESyBlbnRpcmVseSwNCj4gPiA+IGJhY2twb3J0aW5nIHRhcmdldGVkIGZp eGVzIGlzIG1vcmUgZG9hYmxlLg0KPiA+ID4NCj4gPiA+IEFnYWluLCB0aGFua3MuDQo+ID4gPg0K PiA+ID4gLSBNYXR0DQo+ID4gPg0KPiA+ID4NCj4gPiA+IE9uIE1vbiwgTm92IDE2LCAyMDE1IGF0 IDY6MTIgUE0sIFN0ZXBoZW4gSGVtbWluZ2VyIDwNCj4gPiA+IHN0ZXBoZW5AbmV0d29ya3BsdW1i ZXIub3JnPG1haWx0bzpzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZz4+IHdyb3RlOg0KPiA+ID4N Cj4gPiA+ID4gT24gTW9uLCAxNiBOb3YgMjAxNSAxNzo0ODozNSAtMDYwMA0KPiA+ID4gPiBNYXR0 IExhc3dlbGwgPGxhc3dlbGxAaW5maW5pdGVpby5jb208bWFpbHRvOmxhc3dlbGxAaW5maW5pdGVp by5jb20+PiB3cm90ZToNCj4gPiA+ID4NCj4gPiA+ID4gPiBIZXkgRm9sa3MsDQo+ID4gPiA+ID4N Cj4gPiA+ID4gPiBJIHNlbnQgdGhpcyB0byB0aGUgdXNlcnMgZW1haWwgbGlzdCwgYnV0IEknbSBu b3Qgc3VyZSBob3cgbWFueQ0KPiA+IHBlb3BsZSBhcmUNCj4gPiA+ID4gPiBhY3RpdmVseSByZWFk aW5nIHRoYXQgbGlzdCBhdCB0aGlzIHBvaW50LiAgSSdtIGRlYWxpbmcgd2l0aCBhDQo+ID4gc2l0 dWF0aW9uDQo+ID4gPiA+IGluDQo+ID4gPiA+ID4gd2hpY2ggbXkgYXBwbGljYXRpb24gbG9zZXMg dGhlIGFiaWxpdHkgdG8gdHJhbnNtaXQgcGFja2V0cyBvdXQgb2YgYQ0KPiA+IHBvcnQNCj4gPiA+ ID4gPiBkdXJpbmcgdGltZXMgb2YgbW9kZXJhdGUgc3RyZXNzLiAgSSdkIGxvdmUgdG8gaGVhciBz dWdnZXN0aW9ucyBmb3INCj4gPiBob3cgdG8NCj4gPiA+ID4gPiBhcHByb2FjaCB0aGlzIHByb2Js ZW0sIGFzIEknbSBhIGJpdCBhdCBhIGxvc3MgYXQgdGhlIG1vbWVudC4NCj4gPiA+ID4gPg0KPiA+ ID4gPiA+IFNwZWNpZmljYWxseSwgSSdtIHVzaW5nIERQREsgMS42cjIgcnVubmluZyBvbiBVYnVu dHUgMTQuMDRMVFMgb24NCj4gPiBIYXN3ZWxsDQo+ID4gPiA+ID4gcHJvY2Vzc29ycy4gIEknbSB1 c2luZyB0aGUgODI1OTkgY29udHJvbGxlciwgY29uZmlndXJlZCB0byBzcHJlYWQNCj4gPiBwYWNr ZXRzDQo+ID4gPiA+ID4gYWNyb3NzIG11bHRpcGxlIHF1ZXVlcy4gIEVhY2ggcXVldWUgaXMgYWNj ZXNzZWQgYnkgYSBkaWZmZXJlbnQgbGNvcmUNCj4gPiBpbg0KPiA+ID4gPiBteQ0KPiA+ID4gPiA+ IGFwcGxpY2F0aW9uOyB0aGVyZSBpcyB0aGVyZWZvcmUgY29uY3VycmVudCBhY2Nlc3MgdG8gdGhl IGNvbnRyb2xsZXIsDQo+ID4gYnV0DQo+ID4gPiA+ID4gbm90IHRvIGFueSBvZiB0aGUgcXVldWVz LiAgV2UncmUgYmluZGluZyB0aGUgcG9ydHMgdG8gdGhlIGlnYl91aW8NCj4gPiBkcml2ZXIuDQo+ ID4gPiA+ID4gVGhlIHN5bXB0b21zIEkgc2VlIGFyZSB0aGVzZToNCj4gPiA+ID4gPg0KPiA+ID4g PiA+DQo+ID4gPiA+ID4gICAgLSBBbGwgdHJhbnNtaXQgb3V0IG9mIGEgcGFydGljdWxhciBwb3J0 IHN0b3BzDQo+ID4gPiA+ID4gICAgLSBydGVfZXRoX3R4X2J1cnN0KCkgaW5kaWNhdGVzIHRoYXQg aXQgaXMgc2VuZGluZyBhbGwgb2YgdGhlDQo+ID4gcGFja2V0cw0KPiA+ID4gPiA+ICAgIHRoYXQg SSBnaXZlIHRvIGl0DQo+ID4gPiA+ID4gICAgLSBydGVfZXRoX3N0YXRzX2dldCgpIGdpdmVzIG1l IHN0YXRzIGluZGljYXRpbmcgdGhhdCBubyBwYWNrZXRzDQo+ID4gYXJlDQo+ID4gPiA+ID4gICAg YmVpbmcgc2VudCBvbiB0aGUgYWZmZWN0ZWQgcG9ydC4gIEFsc28sIG5vIHR4IGVycm9ycywgYW5k IG5vIHBhdXNlDQo+ID4gPiA+IGZyYW1lcw0KPiA+ID4gPiA+ICAgIHNlbnQgb3IgcmVjZWl2ZWQg KG9wYWNrZXRzID0gMCwgb2J5dGVzID0gMCwgb2Vycm9ycyA9IDAsIGV0Yy4pDQo+ID4gPiA+ID4g ICAgLSBBbGwgb3RoZXIgcG9ydHMgY29udGludWUgdG8gd29yayBub3JtYWxseQ0KPiA+ID4gPiA+ ICAgIC0gVGhlIGFmZmVjdGVkIHBvcnQgY29udGludWVzIHRvIHJlY2VpdmUgcGFja2V0cyB3aXRo b3V0IHByb2JsZW1zOw0KPiA+ID4gPiBvbmx5DQo+ID4gPiA+ID4gICAgVFggaXMgYWZmZWN0ZWQN Cj4gPiA+ID4gPiAgICAtIFJlc2V0dGluZyB0aGUgcG9ydCB2aWEgcnRlX2V0aF9kZXZfc3RvcCgp IGFuZA0KPiA+IHJ0ZV9ldGhfZGV2X3N0YXJ0KCkNCj4gPiA+ID4gPiAgICByZXN0b3JlcyB0aGlu Z3MgYW5kIHBhY2tldHMgY2FuIGZsb3cgYWdhaW4NCj4gPiA+ID4gPiAgICAtIFRoZSBwcm9ibGVt IGlzIHJlcGxpY2FibGUgb24gbXVsdGlwbGUgZGV2aWNlcywgYW5kIGRvZXNuJ3QNCj4gPiBmb2xs b3cNCj4gPiA+ID4gb25lDQo+ID4gPiA+ID4gICAgcGFydGljdWxhciBwb3J0DQo+ID4gPiA+ID4N Cj4gPiA+ID4gPiBJJ3ZlIHRyaWVkIGNhbGxpbmcgcnRlX21idWZfc2FuaXR5X2NoZWNrKCkgb24g YWxsIHBhY2tldHMgYmVmb3JlDQo+ID4gc2VuZGluZw0KPiA+ID4gPiA+IHRoZW0uICBJJ3ZlIGFs c28gaW5zdHJ1bWVudGVkIG15IGNvZGUgdG8gbG9vayBmb3IgcGFja2V0cyB0aGF0IGhhdmUNCj4g PiA+ID4gYWxyZWFkeQ0KPiA+ID4gPiA+IGJlZW4gc2VudCBvciBmcmVlZCwgYXMgd2VsbCBhcyBj eWNsZXMgaW4gY2hhaW5lZCBwYWNrZXRzIGJlaW5nDQo+ID4gc2VudC4gIEkNCj4gPiA+ID4gPiBh bHNvIHB1dCBhIGxvY2sgYXJvdW5kIGFsbCBhY2Nlc3NlcyB0byBydGVfZXRoKiBjYWxscyB0byBz eW5jaHJvbml6ZQ0KPiA+ID4gPiBhY2Nlc3MNCj4gPiA+ID4gPiB0byB0aGUgTklDLiAgR2l2ZW4g c29tZSByZWNlbnQgZGlzY3Vzc2lvbiBoZXJlLCBJIGFsc28gdHJpZWQNCj4gPiBjaGFuZ2luZyB0 aGUNCj4gPiA+ID4gPiBUWCBSUyB0aHJlc2hvbGQgZnJvbSAwIHRvIDMyLCAxNiwgYW5kIDEuICBO b25lIG9mIHRoZXNlIHN0cmF0ZWdpZXMNCj4gPiBwcm92ZWQNCj4gPiA+ID4gPiBlZmZlY3RpdmUu DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBMaWtlIEkgc2FpZCBhdCB0aGUgdG9wLCBJJ20gYSBsaXR0 bGUgYXQgYSBsb3NzIGF0IHRoaXMgcG9pbnQuICBJZiB5b3UNCj4gPiA+ID4gd2VyZQ0KPiA+ID4g PiA+IGRlYWxpbmcgd2l0aCB0aGlzIHNldCBvZiBzeW1wdG9tcywgaG93IHdvdWxkIHlvdSBwcm9j ZWVkPw0KPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEkgcmVtZW1iZXIgc29tZSBpc3N1ZXMg d2l0aCBvbGQgRFBESyAxLjYgd2l0aCBzb21lIG9mIHRoZSBwcmVmZXRjaA0KPiA+ID4gPiB0aHJl c2hvbGRzIG9uIDgyNTk5LiBZb3Ugd291bGQgYmUgYmV0dGVyIG9mZiBnb2luZyB0byBhIGxhdGVy IERQREsNCj4gPiA+ID4gdmVyc2lvbi4NCj4gPiA+ID4NCj4gPg0KPiA+IEkgaG9wZSB5b3UgYXJl IG9uIDEuNi4wcjIgYXQgbGVhc3Q/Pw0KPiA+DQo+ID4gV2l0aCBvbGRlciBEUERLIHRoZXJlIHdh cyBubyB3YXkgdG8gZ2V0IGRyaXZlciB0byB0ZWxsIHlvdSB3aGF0IHRoZQ0KPiA+IHByZWZlcnJl ZCBzZXR0aW5ncyB3ZXJlIGZvciBwdGhyZXNoL2h0aHJlc2gvd3RocmVzaC4gQW5kIHRoZSB2YWx1 ZXMNCj4gPiBpbiBJbnRlbCBzYW1wbGUgYXBwbGljYXRpb25zIHdlcmUgYnJva2VuIG9uIHNvbWUg aGFyZHdhcmUuDQo+ID4NCj4gPiBJIHJlbWVtYmVyIHJldmVyc2UgZW5naW5lZXJpbmcgdGhlIHNh ZmUgdmFsdWVzIGZyb20gcmVhZGluZyB0aGUgTGludXgNCj4gPiBkcml2ZXIuDQo+ID4NCj4gPiBU aGUgTGludXggZHJpdmVyIGlzIG11Y2ggYmV0dGVyIHRlc3RlZCB0aGFuIHRoZSBEUERLIG9uZS4u Lg0KPiA+IEluIHRoZSBMaW51eCBkcml2ZXIsIHRoZSBUcmFuc21pdCBEZXNjcmlwdG9yIENvbnRy b2xsZXIgKHR4ZGN0bCkNCj4gPiBpcyBmaXhlZCBhdCAoZm9yIHRyYW5zbWl0KQ0KPiA+ICAgIHd0 aHJlc2ggPSAxDQo+ID4gICAgaHRocmVzaCA9IDENCj4gPiAgICBwdGhyZXNoID0gMzINCj4gPg0K PiA+IFRoZSBEUERLIDIuMiBkcml2ZXIgdXNlczoNCj4gPiAgICAgd3RocmVzaCA9IDANCj4gPiAg ICAgaHRocmVzaCA9IDANCj4gPiAgICAgcHRocmVzaCA9IDMyDQo+ID4NCj4gPg0KPiA+DQo+ID4N Cj4gPg0KPiA+DQo+ID4NCg0K