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 107F5A2E1B for ; Thu, 5 Sep 2019 03:33:44 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 89E871EA11; Thu, 5 Sep 2019 03:33:42 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 426A11EA09; Thu, 5 Sep 2019 03:33:40 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Sep 2019 18:33:39 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,469,1559545200"; d="scan'208";a="177142246" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga008.jf.intel.com with ESMTP; 04 Sep 2019 18:33:38 -0700 Received: from fmsmsx123.amr.corp.intel.com (10.18.125.38) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 4 Sep 2019 18:33:37 -0700 Received: from shsmsx106.ccr.corp.intel.com (10.239.4.159) by fmsmsx123.amr.corp.intel.com (10.18.125.38) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 4 Sep 2019 18:33:37 -0700 Received: from shsmsx105.ccr.corp.intel.com ([169.254.11.23]) by SHSMSX106.ccr.corp.intel.com ([169.254.10.86]) with mapi id 14.03.0439.000; Thu, 5 Sep 2019 09:33:35 +0800 From: "Zhang, Xiao" To: Kevin Traynor , "dev@dpdk.org" CC: "Lu, Wenzhuo" , "Zhao1, Wei" , "Ye, Xiaolong" , "stable@dpdk.org" Thread-Topic: [dpdk-dev] [v8] net/e1000: fix i219 hang on reset/close Thread-Index: AQHVQFUKyCnwQYEpNEy6OdlrdASVZKcbMDAAgAFhvqA= Date: Thu, 5 Sep 2019 01:33:34 +0000 Message-ID: References: <1563797960-58560-1-git-send-email-xiao.zhang@intel.com> <1563808312-64145-1-git-send-email-xiao.zhang@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [v8] net/e1000: fix i219 hang on reset/close 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" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS2V2aW4gVHJheW5vciBb bWFpbHRvOmt0cmF5bm9yQHJlZGhhdC5jb21dDQo+IFNlbnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVy IDQsIDIwMTkgODoyMyBQTQ0KPiBUbzogWmhhbmcsIFhpYW8gPHhpYW8uemhhbmdAaW50ZWwuY29t PjsgZGV2QGRwZGsub3JnDQo+IENjOiBMdSwgV2Vuemh1byA8d2Vuemh1by5sdUBpbnRlbC5jb20+ OyBaaGFvMSwgV2VpIDx3ZWkuemhhbzFAaW50ZWwuY29tPjsNCj4gWWUsIFhpYW9sb25nIDx4aWFv bG9uZy55ZUBpbnRlbC5jb20+OyBzdGFibGVAZHBkay5vcmcNCj4gU3ViamVjdDogUmU6IFtkcGRr LWRldl0gW3Y4XSBuZXQvZTEwMDA6IGZpeCBpMjE5IGhhbmcgb24gcmVzZXQvY2xvc2UNCj4gDQo+ IE9uIDIyLzA3LzIwMTkgMTY6MTEsIFhpYW8gWmhhbmcgd3JvdGU6DQo+ID4gVW5pdCBoYW5nIG1h eSBvY2N1ciBpZiBtdWx0aXBsZSBkZXNjcmlwdG9ycyBhcmUgYXZhaWxhYmxlIGluIHRoZSByaW5n cw0KPiA+IGR1cmluZyByZXNldCBvciBjbG9zZS4gVGhpcyBzdGF0ZSBjYW4gYmUgZGV0ZWN0ZWQg YnkgY29uZmlndXJlIHN0YXR1cw0KPiA+IGJ5IGJpdCA4IGluIHJlZ2lzdGVyLiBJZiB0aGUgYml0 IGlzIHNldCBhbmQgdGhlcmUgYXJlIHBlbmRpbmcNCj4gPiBkZXNjcmlwdG9ycyBpbiBvbmUgb2Yg dGhlIHJpbmdzLCB3ZSBtdXN0IGZsdXNoIHRoZW0gYmVmb3JlIHJlc2V0IG9yDQo+ID4gY2xvc2Uu DQo+ID4NCj4gPiBGaXhlczogODA1ODAzNDQoImUxMDAwOiBzdXBwb3J0IEVNIGRldmljZXMgKGFs c28ga25vd24gYXMNCj4gPiBlMTAwMC9lMTAwMGUpIikNCj4gPiBDYzogc3RhYmxlQGRwZGsub3Jn DQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBYaWFvIFpoYW5nIDx4aWFvLnpoYW5nQGludGVsLmNv bT4NCj4gPiAtLS0NCj4gPiB2OCBNb2RpZnkgdG8gZm9sbG93IGNvZGUgc3R5bGUgb2YgZHBkayBj b21tdW5pdHkuDQo+ID4gdjcgQWRkIGZpeCBsaW5lLg0KPiA+IHY2IENoYW5nZSB0aGUgZml4IG9u IGVtIGRyaXZlciBpbnN0ZWFkIG9mIGlnYiBkcml2ZXIgYW5kIHVwZGF0ZSB0aGUNCj4gPiByZWdp c3RlciBhZGRyZXNzIGFjY29yZGluZyB0byBDLVNwZWMuDQo+ID4gdjUgQ2hhbmdlIHRoZSBzdWJq ZWN0Lg0KPiA+IHY0IENvcnJlY3QgdGhlIHRhaWwgZGVzY3JpcHRvciBvZiB0eCByaW5nLg0KPiA+ IHYzIEFkZCBsb29wIHRvIGhhbmRsZSBhbGwgdHggYW5kIHJ4IHF1ZXVlcy4NCj4gPiB2MiBVc2Ug Y29uZmlndXJhdGlvbiByZWdpc3RlciBpbnN0ZWFkIG9mIE5WTTcgdG8gZ2V0IHRoZSBoYW5nIHN0 YXRlLg0KPiA+IC0tLQ0KPiANCj4gSGkgV2Vuemh1bywgYXMgZTEwMDAgbWFpbnRhaW5lciBjYW4g eW91IHJldmlldyBhbmQgYWNrIHRoaXMgcGF0Y2ggZm9yIHN0YWJsZSA/DQo+IA0KPiA+ICBkcml2 ZXJzL25ldC9lMTAwMC9lMTAwMF9ldGhkZXYuaCB8ICAgNCArKw0KPiA+ICBkcml2ZXJzL25ldC9l MTAwMC9lbV9ldGhkZXYuYyAgICB8ICAgNSArKw0KPiA+ICBkcml2ZXJzL25ldC9lMTAwMC9lbV9y eHR4LmMgICAgICB8IDExMQ0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysNCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxMjAgaW5zZXJ0aW9ucygrKQ0KPiA+DQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX2V0aGRldi5oDQo+ID4gYi9kcml2ZXJz L25ldC9lMTAwMC9lMTAwMF9ldGhkZXYuaA0KPiA+IGluZGV4IDY3YWNiNzMuLjAxZmY5NDMgMTAw NjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfZXRoZGV2LmgNCj4gPiArKysg Yi9kcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9ldGhkZXYuaA0KPiA+IEBAIC0zNSw2ICszNSw5IEBA DQo+ID4gICNkZWZpbmUgSUdCX01BWF9SWF9RVUVVRV9OVU0gICAgICAgICAgIDgNCj4gPiAgI2Rl ZmluZSBJR0JfTUFYX1JYX1FVRVVFX05VTV84MjU3NiAgICAgMTYNCj4gPg0KPiA+ICsjZGVmaW5l IEUxMDAwX0kyMTlfTUFYX1JYX1FVRVVFX05VTQkJMg0KPiA+ICsjZGVmaW5lIEUxMDAwX0kyMTlf TUFYX1RYX1FVRVVFX05VTQkJMg0KPiA+ICsNCj4gPiAgI2RlZmluZSBFMTAwMF9TWU5fRklMVEVS X0VOQUJMRSAgICAgICAgMHgwMDAwMDAwMSAvKiBzeW4gZmlsdGVyIGVuYWJsZSBmaWVsZA0KPiAq Lw0KPiA+ICAjZGVmaW5lIEUxMDAwX1NZTl9GSUxURVJfUVVFVUUgICAgICAgICAweDAwMDAwMDBF IC8qIHN5biBmaWx0ZXIgcXVldWUgZmllbGQNCj4gKi8NCj4gPiAgI2RlZmluZSBFMTAwMF9TWU5f RklMVEVSX1FVRVVFX1NISUZUICAgMSAgICAgICAgICAvKiBzeW4gZmlsdGVyIHF1ZXVlIGZpZWxk ICovDQo+ID4gQEAgLTUyMiw1ICs1MjUsNiBAQCBpbnQgaWdiX2FjdGlvbl9yc3Nfc2FtZShjb25z dCBzdHJ1Y3QNCj4gPiBydGVfZmxvd19hY3Rpb25fcnNzICpjb21wLCAgaW50IGlnYl9jb25maWdf cnNzX2ZpbHRlcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgCQkJc3RydWN0IGlnYl9y dGVfZmxvd19yc3NfY29uZiAqY29uZiwNCj4gPiAgCQkJYm9vbCBhZGQpOw0KPiA+ICt2b2lkIGVt X2ZsdXNoX2Rlc2NfcmluZ3Moc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOw0KPiA+DQo+ID4gICNl bmRpZiAvKiBfRTEwMDBfRVRIREVWX0hfICovDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L2UxMDAwL2VtX2V0aGRldi5jDQo+ID4gYi9kcml2ZXJzL25ldC9lMTAwMC9lbV9ldGhkZXYuYyBp bmRleCBkYzg4NjYxLi42MmQzYTk1IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L2UxMDAw L2VtX2V0aGRldi5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvZTEwMDAvZW1fZXRoZGV2LmMNCj4g PiBAQCAtNzM4LDYgKzczOCwxMSBAQCBldGhfZW1fc3RvcChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl dikNCj4gPiAgCWVtX2xzY19pbnRyX2Rpc2FibGUoaHcpOw0KPiA+DQo+ID4gIAllMTAwMF9yZXNl dF9odyhodyk7DQo+ID4gKw0KPiA+ICsJLyogRmx1c2ggZGVzYyByaW5ncyBmb3IgaTIxOSAqLw0K PiA+ICsJaWYgKGh3LT5tYWMudHlwZSA+PSBlMTAwMF9wY2hfc3B0KQ0KPiANCj4gSXQgbWVhbnMg aXQgaXMgY2FsbGVkIGZvciBtYWMgdHlwZXMgYmVsb3cgLSBpcyBpdCByaWdodD8NCj4gDQo+IAll MTAwMF9wY2hfc3B0LA0KPiAJZTEwMDBfcGNoX2NucCwNCj4gCWUxMDAwXzgyNTc1LA0KPiAJZTEw MDBfODI1NzYsDQo+IAllMTAwMF84MjU4MCwNCj4gCWUxMDAwX2kzNTAsDQo+IAllMTAwMF9pMzU0 LA0KPiAJZTEwMDBfaTIxMCwNCj4gCWUxMDAwX2kyMTEsDQo+IAllMTAwMF92ZmFkYXB0LA0KPiAJ ZTEwMDBfdmZhZGFwdF9pMzUwLA0KDQpUaGlzIHNob3VsZCBmb3IgdHlwZXMgZTEwMDBfcGNoX3Nw dCBhbmQgZTEwMDBfcGNoX2NucCwgd2lsbCBjb3JyZWN0IGl0Lg0KDQo+IA0KPiA+ICsJCWVtX2Zs dXNoX2Rlc2NfcmluZ3MoZGV2KTsNCj4gPiArDQo+ID4gIAlpZiAoaHctPm1hYy50eXBlID49IGUx MDAwXzgyNTQ0KQ0KPiA+ICAJCUUxMDAwX1dSSVRFX1JFRyhodywgRTEwMDBfV1VDLCAwKTsNCj4g Pg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9lMTAwMC9lbV9yeHR4LmMgYi9kcml2ZXJz L25ldC9lMTAwMC9lbV9yeHR4LmMNCj4gPiBpbmRleCA3MDhmODMyLi41NWQ4YTY3IDEwMDY0NA0K PiA+IC0tLSBhL2RyaXZlcnMvbmV0L2UxMDAwL2VtX3J4dHguYw0KPiA+ICsrKyBiL2RyaXZlcnMv bmV0L2UxMDAwL2VtX3J4dHguYw0KPiA+IEBAIC0xOCw2ICsxOCw3IEBADQo+ID4gICNpbmNsdWRl IDxydGVfbG9nLmg+DQo+ID4gICNpbmNsdWRlIDxydGVfZGVidWcuaD4NCj4gPiAgI2luY2x1ZGUg PHJ0ZV9wY2kuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9idXNfcGNpLmg+DQo+ID4gICNpbmNsdWRl IDxydGVfbWVtb3J5Lmg+DQo+ID4gICNpbmNsdWRlIDxydGVfbWVtY3B5Lmg+DQo+ID4gICNpbmNs dWRlIDxydGVfbWVtem9uZS5oPg0KPiA+IEBAIC01OSw2ICs2MCwxMSBAQA0KPiA+ICAjZGVmaW5l IEUxMDAwX1RYX09GRkxPQURfTk9UU1VQX01BU0sgXA0KPiA+ICAJCShQS1RfVFhfT0ZGTE9BRF9N QVNLIF4gRTEwMDBfVFhfT0ZGTE9BRF9NQVNLKQ0KPiA+DQo+ID4gKy8qIFBDSSBvZmZzZXQgZm9y IHF1ZXJ5aW5nIGNvbmZpZ3VyYXRpb24gc3RhdHVzIHJlZ2lzdGVyICovDQo+ID4gKyNkZWZpbmUg UENJX0NGR19TVEFUVVNfUkVHICAgICAgICAgICAgICAgICAweDA2DQo+ID4gKyNkZWZpbmUgRkxV U0hfREVTQ19SRVFVSVJFRCAgICAgICAgICAgICAgIDB4MTAwDQo+ID4gKw0KPiA+ICsNCj4gPiAg LyoqDQo+ID4gICAqIFN0cnVjdHVyZSBhc3NvY2lhdGVkIHdpdGggZWFjaCBkZXNjcmlwdG9yIG9m IHRoZSBSWCByaW5nIG9mIGEgUlggcXVldWUuDQo+ID4gICAqLw0KPiA+IEBAIC0yMDAwLDMgKzIw MDYsMTA4IEBAIGVtX3R4cV9pbmZvX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gdWlu dDE2X3QgcXVldWVfaWQsDQo+ID4gIAlxaW5mby0+Y29uZi50eF9yc190aHJlc2ggPSB0eHEtPnR4 X3JzX3RocmVzaDsNCj4gPiAgCXFpbmZvLT5jb25mLm9mZmxvYWRzID0gdHhxLT5vZmZsb2Fkczsg IH0NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK2UxMDAwX2ZsdXNoX3R4X3Jpbmcoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYpIHsNCj4gPiArCXN0cnVjdCBlMTAwMF9odyAqaHcgPSBFMTAw MF9ERVZfUFJJVkFURV9UT19IVyhkZXYtPmRhdGEtDQo+ID5kZXZfcHJpdmF0ZSk7DQo+ID4gKwl2 b2xhdGlsZSBzdHJ1Y3QgZTEwMDBfZGF0YV9kZXNjICp0eF9kZXNjOw0KPiA+ICsJdm9sYXRpbGUg dWludDMyX3QgKnRkdF9yZWdfYWRkcjsNCj4gPiArCXVpbnQzMl90IHRkdCwgdGN0bCwgdHhkX2xv d2VyID0gRTEwMDBfVFhEX0NNRF9JRkNTOw0KPiA+ICsJdWludDE2X3Qgc2l6ZSA9IDUxMjsNCj4g PiArCXN0cnVjdCBlbV90eF9xdWV1ZSAqdHhxOw0KPiA+ICsJaW50IGk7DQo+ID4gKw0KPiA+ICsJ aWYgKGRldi0+ZGF0YS0+dHhfcXVldWVzID09IE5VTEwpDQo+ID4gKwkJcmV0dXJuOw0KPiA+ICsJ dGN0bCA9IEUxMDAwX1JFQURfUkVHKGh3LCBFMTAwMF9UQ1RMKTsNCj4gPiArCUUxMDAwX1dSSVRF X1JFRyhodywgRTEwMDBfVENUTCwgdGN0bCB8IEUxMDAwX1RDVExfRU4pOw0KPiA+ICsJZm9yIChp ID0gMDsgaSA8IGRldi0+ZGF0YS0+bmJfdHhfcXVldWVzICYmDQo+ID4gKwkJaSA8IEUxMDAwX0ky MTlfTUFYX1RYX1FVRVVFX05VTTsgaSsrKSB7DQo+ID4gKwkJdHhxID0gZGV2LT5kYXRhLT50eF9x dWV1ZXNbaV07DQo+ID4gKwkJdGR0ID0gRTEwMDBfUkVBRF9SRUcoaHcsIEUxMDAwX1REVChpKSk7 DQo+ID4gKwkJaWYgKHRkdCAhPSB0eHEtPnR4X3RhaWwpDQo+ID4gKwkJCXJldHVybjsNCj4gPiAr CQl0eF9kZXNjID0gJnR4cS0+dHhfcmluZ1t0eHEtPnR4X3RhaWxdOw0KPiA+ICsJCXR4X2Rlc2Mt PmJ1ZmZlcl9hZGRyID0gcnRlX2NwdV90b19sZV82NCh0eHEtDQo+ID50eF9yaW5nX3BoeXNfYWRk cik7DQo+ID4gKwkJdHhfZGVzYy0+bG93ZXIuZGF0YSA9IHJ0ZV9jcHVfdG9fbGVfMzIodHhkX2xv d2VyIHwgc2l6ZSk7DQo+ID4gKwkJdHhfZGVzYy0+dXBwZXIuZGF0YSA9IDA7DQo+ID4gKw0KPiA+ ICsJCXJ0ZV93bWIoKTsNCj4gPiArCQl0eHEtPnR4X3RhaWwrKzsNCj4gPiArCQlpZiAodHhxLT50 eF90YWlsID09IHR4cS0+bmJfdHhfZGVzYykNCj4gPiArCQkJdHhxLT50eF90YWlsID0gMDsNCj4g PiArCQlydGVfaW9fd21iKCk7DQo+ID4gKwkJdGR0X3JlZ19hZGRyID0gRTEwMDBfUENJX1JFR19B RERSKGh3LCBFMTAwMF9URFQoaSkpOw0KPiA+ICsJCUUxMDAwX1BDSV9SRUdfV1JJVEVfUkVMQVhF RCh0ZHRfcmVnX2FkZHIsIHR4cS0+dHhfdGFpbCk7DQo+ID4gKwkJdXNlY19kZWxheSgyNTApOw0K PiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZA0KPiA+ICtlMTAwMF9mbHVz aF9yeF9yaW5nKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KSB7DQo+ID4gKwl1aW50MzJfdCByY3Rs LCByeGRjdGw7DQo+ID4gKwlzdHJ1Y3QgZTEwMDBfaHcgKmh3ID0gRTEwMDBfREVWX1BSSVZBVEVf VE9fSFcoZGV2LT5kYXRhLQ0KPiA+ZGV2X3ByaXZhdGUpOw0KPiA+ICsJaW50IGk7DQo+ID4gKw0K PiA+ICsJcmN0bCA9IEUxMDAwX1JFQURfUkVHKGh3LCBFMTAwMF9SQ1RMKTsNCj4gPiArCUUxMDAw X1dSSVRFX1JFRyhodywgRTEwMDBfUkNUTCwgcmN0bCAmIH5FMTAwMF9SQ1RMX0VOKTsNCj4gPiAr CUUxMDAwX1dSSVRFX0ZMVVNIKGh3KTsNCj4gPiArCXVzZWNfZGVsYXkoMTUwKTsNCj4gPiArDQo+ ID4gKwlmb3IgKGkgPSAwOyBpIDwgZGV2LT5kYXRhLT5uYl9yeF9xdWV1ZXMgJiYNCj4gPiArCQlp IDwgRTEwMDBfSTIxOV9NQVhfUlhfUVVFVUVfTlVNOyBpKyspIHsNCj4gPiArCQlyeGRjdGwgPSBF MTAwMF9SRUFEX1JFRyhodywgRTEwMDBfUlhEQ1RMKGkpKTsNCj4gPiArCQkvKiB6ZXJvIHRoZSBs b3dlciAxNCBiaXRzIChwcmVmZXRjaCBhbmQgaG9zdCB0aHJlc2hvbGRzKSAqLw0KPiA+ICsJCXJ4 ZGN0bCAmPSAweGZmZmZjMDAwOw0KPiA+ICsNCj4gPiArCQkvKiB1cGRhdGUgdGhyZXNob2xkczog cHJlZmV0Y2ggdGhyZXNob2xkIHRvIDMxLA0KPiA+ICsJCSAqIGhvc3QgdGhyZXNob2xkIHRvIDEg YW5kIG1ha2Ugc3VyZSB0aGUgZ3JhbnVsYXJpdHkNCj4gPiArCQkgKiBpcyAiZGVzY3JpcHRvcnMi IGFuZCBub3QgImNhY2hlIGxpbmVzIg0KPiA+ICsJCSAqLw0KPiA+ICsJCXJ4ZGN0bCB8PSAoMHgx RiB8ICgxVUwgPDwgOCkgfA0KPiBFMTAwMF9SWERDVExfVEhSRVNIX1VOSVRfREVTQyk7DQo+ID4g Kw0KPiA+ICsJCUUxMDAwX1dSSVRFX1JFRyhodywgRTEwMDBfUlhEQ1RMKGkpLCByeGRjdGwpOw0K PiA+ICsJfQ0KPiA+ICsJLyogbW9tZW50YXJpbHkgZW5hYmxlIHRoZSBSWCByaW5nIGZvciB0aGUg Y2hhbmdlcyB0byB0YWtlIGVmZmVjdCAqLw0KPiA+ICsJRTEwMDBfV1JJVEVfUkVHKGh3LCBFMTAw MF9SQ1RMLCByY3RsIHwgRTEwMDBfUkNUTF9FTik7DQo+ID4gKwlFMTAwMF9XUklURV9GTFVTSCho dyk7DQo+ID4gKwl1c2VjX2RlbGF5KDE1MCk7DQo+ID4gKwlFMTAwMF9XUklURV9SRUcoaHcsIEUx MDAwX1JDVEwsIHJjdGwgJiB+RTEwMDBfUkNUTF9FTik7IH0NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgKiBlbV9mbHVzaF9kZXNjX3JpbmdzIC0gcmVtb3ZlIGFsbCBkZXNjcmlwdG9ycyBmcm9tIHRo ZSBkZXNjcmlwdG9yDQo+ID4gK3JpbmdzDQo+ID4gKyAqDQo+ID4gKyAqIEluIGkyMTksIHRoZSBk ZXNjcmlwdG9yIHJpbmdzIG11c3QgYmUgZW1wdGllZCBiZWZvcmUNCj4gPiArcmVzZXR0aW5nL2Ns b3NpbmcgdGhlDQo+ID4gKyAqIEhXLiBGYWlsdXJlIHRvIGRvIHRoaXMgd2lsbCBjYXVzZSB0aGUg SFcgdG8gZW50ZXIgYSB1bml0IGhhbmcNCj4gPiArc3RhdGUgd2hpY2gNCj4gPiArICogY2FuIG9u bHkgYmUgcmVsZWFzZWQgYnkgUENJIHJlc2V0IG9uIHRoZSBkZXZpY2UNCj4gPiArICoNCj4gPiAr ICovDQo+ID4gKw0KPiA+ICt2b2lkDQo+ID4gK2VtX2ZsdXNoX2Rlc2NfcmluZ3Moc3RydWN0IHJ0 ZV9ldGhfZGV2ICpkZXYpIHsNCj4gPiArCXVpbnQzMl90IGZleHRudm0xMSwgdGRsZW47DQo+ID4g KwlzdHJ1Y3QgZTEwMDBfaHcgKmh3ID0gRTEwMDBfREVWX1BSSVZBVEVfVE9fSFcoZGV2LT5kYXRh LQ0KPiA+ZGV2X3ByaXZhdGUpOw0KPiA+ICsJc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpwY2lfZGV2 ID0gUlRFX0VUSF9ERVZfVE9fUENJKGRldik7DQo+ID4gKwl1aW50MTZfdCBwY2lfY2ZnX3N0YXR1 cyA9IDA7DQo+ID4gKw0KPiA+ICsJZmV4dG52bTExID0gRTEwMDBfUkVBRF9SRUcoaHcsIEUxMDAw X0ZFWFROVk0xMSk7DQo+ID4gKwlFMTAwMF9XUklURV9SRUcoaHcsIEUxMDAwX0ZFWFROVk0xMSwN Cj4gPiArCQkJZmV4dG52bTExIHwgRTEwMDBfRkVYVE5WTTExX0RJU0FCTEVfTVVMUl9GSVgpOw0K PiA+ICsJdGRsZW4gPSBFMTAwMF9SRUFEX1JFRyhodywgRTEwMDBfVERMRU4oMCkpOw0KPiA+ICsJ cnRlX3BjaV9yZWFkX2NvbmZpZyhwY2lfZGV2LCAmcGNpX2NmZ19zdGF0dXMsIHNpemVvZihwY2lf Y2ZnX3N0YXR1cyksDQo+ID4gKwkJCQlQQ0lfQ0ZHX1NUQVRVU19SRUcpOw0KPiA+ICsNCj4gPiAr CS8qIGRvIG5vdGhpbmcgaWYgd2UncmUgbm90IGluIGZhdWx0eSBzdGF0ZSwgb3IgaWYgdGhlIHF1 ZXVlIGlzIGVtcHR5ICovDQo+ID4gKwlpZiAoKHBjaV9jZmdfc3RhdHVzICYgRkxVU0hfREVTQ19S RVFVSVJFRCkgJiYgdGRsZW4pIHsNCj4gPiArCQkvKiBmbHVzaCBkZXNjIHJpbmcgKi8NCj4gPiAr CQllMTAwMF9mbHVzaF90eF9yaW5nKGRldik7DQo+ID4gKwkJcnRlX3BjaV9yZWFkX2NvbmZpZyhw Y2lfZGV2LCAmcGNpX2NmZ19zdGF0dXMsDQo+ID4gKwkJCQlzaXplb2YocGNpX2NmZ19zdGF0dXMp LCBQQ0lfQ0ZHX1NUQVRVU19SRUcpOw0KPiA+ICsJCWlmIChwY2lfY2ZnX3N0YXR1cyAmIEZMVVNI X0RFU0NfUkVRVUlSRUQpDQo+ID4gKwkJCWUxMDAwX2ZsdXNoX3J4X3JpbmcoZGV2KTsNCj4gPiAr CX0NCj4gPiArfQ0KPiA+DQoNCg==