From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 51F067D19 for ; Mon, 2 Apr 2018 13:52:22 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Apr 2018 04:52:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,395,1517904000"; d="scan'208";a="187970794" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by orsmga004.jf.intel.com with ESMTP; 02 Apr 2018 04:52:20 -0700 Received: from fmsmsx102.amr.corp.intel.com (10.18.124.200) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 2 Apr 2018 04:52:20 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by FMSMSX102.amr.corp.intel.com (10.18.124.200) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 2 Apr 2018 04:52:19 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.235]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.108]) with mapi id 14.03.0319.002; Mon, 2 Apr 2018 19:52:17 +0800 From: "Wang, Zhihong" To: Maxime Coquelin , "dev@dpdk.org" CC: "Tan, Jianfeng" , "Bie, Tiwei" , "yliu@fridaylinux.org" , "Liang, Cunming" , "Wang, Xiao W" , "Daly, Dan" Thread-Topic: [PATCH v4 4/5] vhost: adapt vhost lib for selective datapath Thread-Index: AQHTyA4K+ujJ1Pqo1kmUe5by25iYuqPpb38AgANN9iA= Date: Mon, 2 Apr 2018 11:52:17 +0000 Message-ID: <8F6C2BD409508844A0EFC19955BE094151418DD5@SHSMSX103.ccr.corp.intel.com> References: <1517614137-62926-1-git-send-email-zhihong.wang@intel.com> <20180310100148.12030-1-zhihong.wang@intel.com> <20180310100148.12030-5-zhihong.wang@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] [PATCH v4 4/5] vhost: adapt vhost lib for selective datapath 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: , X-List-Received-Date: Mon, 02 Apr 2018 11:52:23 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWF4aW1lIENvcXVlbGlu IFttYWlsdG86bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb21dDQo+IFNlbnQ6IFNhdHVyZGF5LCBN YXJjaCAzMSwgMjAxOCAzOjM2IFBNDQo+IFRvOiBXYW5nLCBaaGlob25nIDx6aGlob25nLndhbmdA aW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+IENjOiBUYW4sIEppYW5mZW5nIDxqaWFuZmVuZy50 YW5AaW50ZWwuY29tPjsgQmllLCBUaXdlaQ0KPiA8dGl3ZWkuYmllQGludGVsLmNvbT47IHlsaXVA ZnJpZGF5bGludXgub3JnOyBMaWFuZywgQ3VubWluZw0KPiA8Y3VubWluZy5saWFuZ0BpbnRlbC5j b20+OyBXYW5nLCBYaWFvIFcgPHhpYW8udy53YW5nQGludGVsLmNvbT47IERhbHksDQo+IERhbiA8 ZGFuLmRhbHlAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHY0IDQvNV0gdmhvc3Q6 IGFkYXB0IHZob3N0IGxpYiBmb3Igc2VsZWN0aXZlIGRhdGFwYXRoDQo+IA0KPiANCj4gDQo+IE9u IDAzLzEwLzIwMTggMTE6MDEgQU0sIFpoaWhvbmcgV2FuZyB3cm90ZToNCj4gPiBUaGlzIHBhdGNo IGFkYXB0cyB2aG9zdCBsaWIgZm9yIHNlbGVjdGl2ZSBkYXRhcGF0aCBieSBjYWxsaW5nIGRldmlj ZSBvcHMNCj4gPiBhdCB0aGUgY29ycmVzcG9uZGluZyBzdGFnZS4NCj4gPg0KPiA+IFNpZ25lZC1v ZmYtYnk6IFpoaWhvbmcgV2FuZyA8emhpaG9uZy53YW5nQGludGVsLmNvbT4NCj4gPiAtLS0NCj4g PiBDaGFuZ2VzIGluIHY0Og0KPiA+DQo+ID4gICAxLiBSZW1vdmUgdGhlICJlbmdpbmUiIGNvbmNl cHQgaW4gdGhlIGxpYi4NCj4gPg0KPiA+IC0tLQ0KPiA+IENoYW5nZXMgaW4gdjI6DQo+ID4NCj4g PiAgIDEuIEVuc3VyZSBuZWdvdGlhdGVkIGNhcGFiaWxpdGllcyBhcmUgc3VwcG9ydGVkIGluIHZo b3N0LXVzZXIgbGliLg0KPiA+DQo+ID4gICAyLiBDb25maWd1cmUgdGhlIGRhdGEgcGF0aCBhdCB0 aGUgcmlnaHQgdGltZS4NCj4gPg0KPiA+ICAgbGliL2xpYnJ0ZV92aG9zdC9ydGVfdmhvc3QuaCAg ICAgICAgICAgfCAyNyArKysrKysrKysrDQo+ID4gICBsaWIvbGlicnRlX3Zob3N0L3J0ZV92aG9z dF92ZXJzaW9uLm1hcCB8ICAyICsNCj4gPiAgIGxpYi9saWJydGVfdmhvc3Qvc29ja2V0LmMgICAg ICAgICAgICAgIHwgOTQNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQ0KPiA+ ICAgbGliL2xpYnJ0ZV92aG9zdC92aG9zdC5jICAgICAgICAgICAgICAgfCAgMyArKw0KPiA+ICAg bGliL2xpYnJ0ZV92aG9zdC92aG9zdC5oICAgICAgICAgICAgICAgfCAgMiArDQo+ID4gICBsaWIv bGlicnRlX3Zob3N0L3Zob3N0X3VzZXIuYyAgICAgICAgICB8IDU0ICsrKysrKysrKysrKysrKysr LS0NCj4gPiAgIDYgZmlsZXMgY2hhbmdlZCwgMTcyIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9u cygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfdmhvc3QvcnRlX3Zob3N0Lmgg Yi9saWIvbGlicnRlX3Zob3N0L3J0ZV92aG9zdC5oDQo+ID4gaW5kZXggZDUwZjRjNjdkLi4zYzMz MzRkM2UgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2xpYnJ0ZV92aG9zdC9ydGVfdmhvc3QuaA0KPiA+ ICsrKyBiL2xpYi9saWJydGVfdmhvc3QvcnRlX3Zob3N0LmgNCj4gPiBAQCAtMjc5LDYgKzI3OSwz MyBAQCBpbnQgcnRlX3Zob3N0X2RyaXZlcl9kaXNhYmxlX2ZlYXR1cmVzKGNvbnN0IGNoYXINCj4g KnBhdGgsIHVpbnQ2NF90IGZlYXR1cmVzKTsNCj4gPiAgIGludCBydGVfdmhvc3RfZHJpdmVyX2dl dF9mZWF0dXJlcyhjb25zdCBjaGFyICpwYXRoLCB1aW50NjRfdCAqZmVhdHVyZXMpOw0KPiA+DQo+ ID4gICAvKioNCj4gPiArICogR2V0IHRoZSBwcm90b2NvbCBmZWF0dXJlIGJpdHMgYmVmb3JlIGZl YXR1cmUgbmVnb3RpYXRpb24uDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBwYXRoDQo+ID4gKyAq ICBUaGUgdmhvc3QtdXNlciBzb2NrZXQgZmlsZSBwYXRoDQo+ID4gKyAqIEBwYXJhbSBwcm90b2Nv bF9mZWF0dXJlcw0KPiA+ICsgKiAgQSBwb2ludGVyIHRvIHN0b3JlIHRoZSBxdWVyaWVkIHByb3Rv Y29sIGZlYXR1cmUgYml0cw0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAwIG9uIHN1Y2Nlc3Ms IC0xIG9uIGZhaWx1cmUNCj4gPiArICovDQo+ID4gK2ludCBfX3J0ZV9leHBlcmltZW50YWwNCj4g PiArcnRlX3Zob3N0X2RyaXZlcl9nZXRfcHJvdG9jb2xfZmVhdHVyZXMoY29uc3QgY2hhciAqcGF0 aCwNCj4gPiArCQl1aW50NjRfdCAqcHJvdG9jb2xfZmVhdHVyZXMpOw0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAqIEdldCB0aGUgcXVldWUgbnVtYmVyIGJpdHMgYmVmb3JlIGZlYXR1cmUgbmVnb3Rp YXRpb24uDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBwYXRoDQo+ID4gKyAqICBUaGUgdmhvc3Qt dXNlciBzb2NrZXQgZmlsZSBwYXRoDQo+ID4gKyAqIEBwYXJhbSBxdWV1ZV9udW0NCj4gPiArICog IEEgcG9pbnRlciB0byBzdG9yZSB0aGUgcXVlcmllZCBxdWV1ZSBudW1iZXIgYml0cw0KPiA+ICsg KiBAcmV0dXJuDQo+ID4gKyAqICAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUNCj4gPiArICov DQo+ID4gK2ludCBfX3J0ZV9leHBlcmltZW50YWwNCj4gPiArcnRlX3Zob3N0X2RyaXZlcl9nZXRf cXVldWVfbnVtKGNvbnN0IGNoYXIgKnBhdGgsIHVpbnQzMl90DQo+ICpxdWV1ZV9udW0pOw0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gICAgKiBHZXQgdGhlIGZlYXR1cmUgYml0cyBhZnRlciBuZWdvdGlh dGlvbg0KPiA+ICAgICoNCj4gPiAgICAqIEBwYXJhbSB2aWQNCj4gPiBkaWZmIC0tZ2l0IGEvbGli L2xpYnJ0ZV92aG9zdC9ydGVfdmhvc3RfdmVyc2lvbi5tYXANCj4gYi9saWIvbGlicnRlX3Zob3N0 L3J0ZV92aG9zdF92ZXJzaW9uLm1hcA0KPiA+IGluZGV4IDZlMmQ1MzY0YS4uODEyY2NkNzJiIDEw MDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfdmhvc3QvcnRlX3Zob3N0X3ZlcnNpb24ubWFwDQo+ ID4gKysrIGIvbGliL2xpYnJ0ZV92aG9zdC9ydGVfdmhvc3RfdmVyc2lvbi5tYXANCj4gPiBAQCAt NjcsNCArNjcsNiBAQCBFWFBFUklNRU5UQUwgew0KPiA+ICAgCXJ0ZV92aG9zdF9kcml2ZXJfc2V0 X3ZkcGFfZGlkOw0KPiA+ICAgCXJ0ZV92aG9zdF9kcml2ZXJfZ2V0X3ZkcGFfZGlkOw0KPiA+ICAg CXJ0ZV92aG9zdF9nZXRfdmRwYV9kaWQ7DQo+ID4gKwlydGVfdmhvc3RfZHJpdmVyX2dldF9wcm90 b2NvbF9mZWF0dXJlczsNCj4gPiArCXJ0ZV92aG9zdF9kcml2ZXJfZ2V0X3F1ZXVlX251bTsNCj4g PiAgIH0gRFBES18xOC4wMjsNCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV92aG9zdC9zb2Nr ZXQuYyBiL2xpYi9saWJydGVfdmhvc3Qvc29ja2V0LmMNCj4gPiBpbmRleCAzZDU4ZGE5NGUuLmJh N2I0MjJhMCAxMDA2NDQNCj4gPiAtLS0gYS9saWIvbGlicnRlX3Zob3N0L3NvY2tldC5jDQo+ID4g KysrIGIvbGliL2xpYnJ0ZV92aG9zdC9zb2NrZXQuYw0KPiA+IEBAIC0yMTYsNiArMjE2LDggQEAg dmhvc3RfdXNlcl9hZGRfY29ubmVjdGlvbihpbnQgZmQsIHN0cnVjdA0KPiB2aG9zdF91c2VyX3Nv Y2tldCAqdnNvY2tldCkNCj4gPg0KPiA+ICAgCXZob3N0X3NldF9idWlsdGluX3ZpcnRpb19uZXQo dmlkLCB2c29ja2V0LT51c2VfYnVpbHRpbl92aXJ0aW9fbmV0KTsNCj4gPg0KPiA+ICsJdmhvc3Rf c2V0X3ZkcGFfZGlkKHZpZCwgdnNvY2tldC0+ZGlkKTsNCj4gPiArDQo+ID4gICAJaWYgKHZzb2Nr ZXQtPmRlcXVldWVfemVyb19jb3B5KQ0KPiA+ICAgCQl2aG9zdF9lbmFibGVfZGVxdWV1ZV96ZXJv X2NvcHkodmlkKTsNCj4gPg0KPiA+IEBAIC02NDgsMjAgKzY1MCwxMDIgQEAgaW50DQo+ID4gICBy dGVfdmhvc3RfZHJpdmVyX2dldF9mZWF0dXJlcyhjb25zdCBjaGFyICpwYXRoLCB1aW50NjRfdCAq ZmVhdHVyZXMpDQo+ID4gICB7DQo+ID4gICAJc3RydWN0IHZob3N0X3VzZXJfc29ja2V0ICp2c29j a2V0Ow0KPiA+ICsJdWludDY0X3QgdmRwYV9mZWF0dXJlczsNCj4gPiArCWludCBkaWQgPSAtMTsN Cj4gPiArCWludCByZXQgPSAwOw0KPiA+DQo+ID4gICAJcHRocmVhZF9tdXRleF9sb2NrKCZ2aG9z dF91c2VyLm11dGV4KTsNCj4gPiAgIAl2c29ja2V0ID0gZmluZF92aG9zdF91c2VyX3NvY2tldChw YXRoKTsNCj4gPiAtCWlmICh2c29ja2V0KQ0KPiA+IC0JCSpmZWF0dXJlcyA9IHZzb2NrZXQtPmZl YXR1cmVzOw0KPiA+ICsJaWYgKHZzb2NrZXQpIHsNCj4gPiArCQlkaWQgPSB2c29ja2V0LT5kaWQ7 DQo+ID4gKwkJaWYgKGRpZCA8IDAgfHwgdmRwYV9kZXZpY2VzW2RpZF0tPm9wcy0+ZmVhdHVyZV9n ZXQgPT0gTlVMTCkNCj4gPiArCQkJKmZlYXR1cmVzID0gdnNvY2tldC0+ZmVhdHVyZXM7DQo+ID4g KwkJZWxzZSBpZiAodmRwYV9kZXZpY2VzW2RpZF0tPm9wcy0+ZmVhdHVyZV9nZXQoZGlkLA0KPiA+ ICsJCQkJCSZ2ZHBhX2ZlYXR1cmVzKSA8IDApIHsNCj4gPiArCQkJUlRFX0xPRyhFUlIsIFZIT1NU X0NPTkZJRywNCj4gPiArCQkJCQkiZmFpbGVkIHRvIGdldCB2ZHBhIGZlYXR1cmVzICINCj4gPiAr CQkJCQkiZm9yIHNvY2tldCBmaWxlICVzLlxuIiwgcGF0aCk7DQo+ID4gKwkJCXJldCA9IC0xOw0K PiA+ICsJCX0gZWxzZQ0KPiA+ICsJCQkqZmVhdHVyZXMgPSB2c29ja2V0LT5mZWF0dXJlcyAmIHZk cGFfZmVhdHVyZXM7DQo+IA0KPiBJdCBzZWVtcyBjb3JyZWN0IGJ1dCBpdCBpcyBub3QgdmVyeSBp bnR1aXRpdmUuDQo+IEFsc28sIHlvdSBoYXZlIHRvIHB1dCBicmFjZXMgZXZlcnl3aGVyZSBpZiBv bmUgb2YgdGhlIGlmL2Vsc2UgaWYvZWxzZQ0KPiBoYXZlIHNvbWUuDQoNCk5vdGVkLg0KDQo+IA0K PiBXaGF0IGFib3V0IHNvbWV0aGluZyBsaWtlIHRoaXM6DQo+IA0KPiBydGVfdmhvc3RfZHJpdmVy X2dldF9mZWF0dXJlcyhjb25zdCBjaGFyICpwYXRoLCB1aW50NjRfdCAqZmVhdHVyZXMpDQo+IHsN Cj4gCXN0cnVjdCB2aG9zdF91c2VyX3NvY2tldCAqdnNvY2tldDsNCj4gCXVpbnQ2NF90IHZkcGFf ZmVhdHVyZXM7DQo+IAlpbnQgZGlkID0gLTE7DQo+IAlpbnQgcmV0ID0gMDsNCj4gCXN0cnVjdCBy dGVfdmRwYV9kZXZpY2UgKnZkcGFfZGV2Ow0KPiANCj4gCXB0aHJlYWRfbXV0ZXhfbG9jaygmdmhv c3RfdXNlci5tdXRleCk7DQo+IAl2c29ja2V0ID0gZmluZF92aG9zdF91c2VyX3NvY2tldChwYXRo KTsNCj4gCWlmICghdnNvY2tldCkgew0KPiAJCVJURV9MT0coRVJSLCBWSE9TVF9DT05GSUcsDQo+ IAkJCSJzb2NrZXQgZmlsZSAlcyBpcyBub3QgcmVnaXN0ZXJlZCB5ZXQuXG4iDQo+IAkJCSwgcGF0 aCk7DQo+IAkJcmV0ID0gLTE7DQo+IAkJZ290byBvdXRfdW5sb2NrOw0KPiAJfQ0KPiANCj4gCWRp ZCA9IHZzb2NrZXQtPmRpZDsNCj4gCXZkcGFfZGV2ID0gcnRlX3ZkcGFfZGV2aWNlX2dldChkaWQp Ow0KPiAJaWYgKCF2ZHBhX2RldiB8fCAhdmRwYS0+b3BzLT5mZWF0dXJlX2dldCkgew0KPiAJCSpm ZWF0dXJlcyA9IHZzb2NrZXQtPmZlYXR1cmVzOw0KPiAJCWdvdG8gb3V0X3VubG9jazsNCj4gCX0N Cj4gDQo+IAlpZiAodmRwYV9kZXYtPm9wcy0+ZmVhdHVyZV9nZXQoZGlkLCAmdmRwYV9mZWF0dXJl cykgPCAwKSB7DQo+IAkJUlRFX0xPRyhFUlIsIFZIT1NUX0NPTkZJRywNCj4gCQkJCSJmYWlsZWQg dG8gZ2V0IHZkcGEgZmVhdHVyZXMgIg0KPiAJCQkJImZvciBzb2NrZXQgZmlsZSAlcy5cbiIsIHBh dGgpOw0KPiAJCXJldCA9IC0xOw0KPiAJCWdvdG8gb3V0X3VubG9jazsNCj4gCX0NCj4gDQo+IAkq ZmVhdHVyZXMgPSB2c29ja2V0LT5mZWF0dXJlcyAmIHZkcGFfZmVhdHVyZXM7DQo+IA0KPiBvdXRf dW5sb2NrOg0KPiAJcHRocmVhZF9tdXRleF91bmxvY2soJnZob3N0X3VzZXIubXV0ZXgpOw0KPiAJ cmV0dXJuIHJldDsNCj4gfQ0KPiANCj4gd2l0aCBpbiBydGVfdmRwYS5oOg0KPiANCj4gc3RhdGlj IGlubGluZSBzdHJ1Y3QgcnRlX3ZkcGFfZGV2aWNlICoNCj4gcnRlX3ZkcGFfZGV2aWNlX2dldChp bnQgZGlkKQ0KPiB7DQo+IAlpZiAoZGlkIDwgMCB8fCBkaWQgPj0gTUFYX1ZIT1NUX0RFVklDRSkN Cj4gCQlyZXR1cm4gTlVMTDsNCj4gDQo+IAlyZXR1cm4gdmRwYV9kZXZpY2VzW2RpZF07DQo+IH0N Cj4gDQo+IA0KPiBEb2luZyB0aGlzIHlvdSBoYXZlIDMgY2hlY2tzIGluIDEsIHNvIHlvdSBhdm9p ZCBOVUxMIHBvaW50ZXINCj4gZGUtcmVmZXJlbmNpbmcgaWYgZGlkID4gMCBidXQgaW52YWxpZC4N Cg0KWWVhaCBpdCdzIGNsZWFyZXIgdG8gZG8gaXQgdGhpcyB3YXkuDQoNCj4gDQo+IFNhbWUgbG9n aWMgYXBwbGllcyB0byBmdW5jdGlvbnMgYmVsb3c6DQo+IA0KPiA+ICsJfSBlbHNlIHsNCj4gPiAr CQlSVEVfTE9HKEVSUiwgVkhPU1RfQ09ORklHLA0KPiA+ICsJCQkic29ja2V0IGZpbGUgJXMgaXMg bm90IHJlZ2lzdGVyZWQgeWV0LlxuIiwgcGF0aCk7DQo+ID4gKwkJcmV0ID0gLTE7DQo+ID4gKwl9 DQo+ID4gICAJcHRocmVhZF9tdXRleF91bmxvY2soJnZob3N0X3VzZXIubXV0ZXgpOw0KPiA+DQo+ ID4gLQlpZiAoIXZzb2NrZXQpIHsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ ID4gK2ludA0KPiA+ICtydGVfdmhvc3RfZHJpdmVyX2dldF9wcm90b2NvbF9mZWF0dXJlcyhjb25z dCBjaGFyICpwYXRoLA0KPiA+ICsJCXVpbnQ2NF90ICpwcm90b2NvbF9mZWF0dXJlcykNCj4gPiAr ew0KPiA+ICsJc3RydWN0IHZob3N0X3VzZXJfc29ja2V0ICp2c29ja2V0Ow0KPiA+ICsJdWludDY0 X3QgdmRwYV9wcm90b2NvbF9mZWF0dXJlczsNCj4gPiArCWludCBkaWQgPSAtMTsNCj4gPiArCWlu dCByZXQgPSAwOw0KPiA+ICsNCj4gPiArCXB0aHJlYWRfbXV0ZXhfbG9jaygmdmhvc3RfdXNlci5t dXRleCk7DQo+ID4gKwl2c29ja2V0ID0gZmluZF92aG9zdF91c2VyX3NvY2tldChwYXRoKTsNCj4g PiArCWlmICh2c29ja2V0KSB7DQo+ID4gKwkJZGlkID0gdnNvY2tldC0+ZGlkOw0KPiA+ICsJCWlm IChkaWQgPCAwIHx8IHZkcGFfZGV2aWNlc1tkaWRdLT5vcHMtPnByb3RvY29sX2ZlYXR1cmVfZ2V0 DQo+ID4gKwkJCQk9PSBOVUxMKQ0KPiA+ICsJCQkqcHJvdG9jb2xfZmVhdHVyZXMgPQ0KPiBWSE9T VF9VU0VSX1BST1RPQ09MX0ZFQVRVUkVTOw0KPiA+ICsJCWVsc2UgaWYgKHZkcGFfZGV2aWNlc1tk aWRdLT5vcHMtPnByb3RvY29sX2ZlYXR1cmVfZ2V0KGRpZCwNCj4gPiArCQkJCQkmdmRwYV9wcm90 b2NvbF9mZWF0dXJlcykgPCAwKSB7DQo+ID4gKwkJCVJURV9MT0coRVJSLCBWSE9TVF9DT05GSUcs DQo+ID4gKwkJCQkJImZhaWxlZCB0byBnZXQgdmRwYSBwcm90b2NvbCBmZWF0dXJlcyAiDQo+ID4g KwkJCQkJImZvciBzb2NrZXQgZmlsZSAlcy5cbiIsIHBhdGgpOw0KPiA+ICsJCQlyZXQgPSAtMTsN Cj4gPiArCQl9IGVsc2UNCj4gPiArCQkJKnByb3RvY29sX2ZlYXR1cmVzID0NCj4gVkhPU1RfVVNF Ul9QUk9UT0NPTF9GRUFUVVJFUw0KPiA+ICsJCQkJJiB2ZHBhX3Byb3RvY29sX2ZlYXR1cmVzOw0K PiA+ICsJfSBlbHNlIHsNCj4gPiAgIAkJUlRFX0xPRyhFUlIsIFZIT1NUX0NPTkZJRywNCj4gPiAg IAkJCSJzb2NrZXQgZmlsZSAlcyBpcyBub3QgcmVnaXN0ZXJlZCB5ZXQuXG4iLCBwYXRoKTsNCj4g PiAtCQlyZXR1cm4gLTE7DQo+ID4gKwkJcmV0ID0gLTE7DQo+ID4gKwl9DQo+ID4gKwlwdGhyZWFk X211dGV4X3VubG9jaygmdmhvc3RfdXNlci5tdXRleCk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJl dDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAraW50DQo+ID4gK3J0ZV92aG9zdF9kcml2ZXJfZ2V0X3F1 ZXVlX251bShjb25zdCBjaGFyICpwYXRoLA0KPiA+ICsJCXVpbnQzMl90ICpxdWV1ZV9udW0pDQo+ ID4gK3sNCj4gPiArCXN0cnVjdCB2aG9zdF91c2VyX3NvY2tldCAqdnNvY2tldDsNCj4gPiArCXVp bnQzMl90IHZkcGFfcXVldWVfbnVtOw0KPiA+ICsJaW50IGRpZCA9IC0xOw0KPiA+ICsJaW50IHJl dCA9IDA7DQo+ID4gKw0KPiA+ICsJcHRocmVhZF9tdXRleF9sb2NrKCZ2aG9zdF91c2VyLm11dGV4 KTsNCj4gPiArCXZzb2NrZXQgPSBmaW5kX3Zob3N0X3VzZXJfc29ja2V0KHBhdGgpOw0KPiA+ICsJ aWYgKHZzb2NrZXQpIHsNCj4gPiArCQlkaWQgPSB2c29ja2V0LT5kaWQ7DQo+ID4gKwkJaWYgKGRp ZCA8IDAgfHwgdmRwYV9kZXZpY2VzW2RpZF0tPm9wcy0+cXVldWVfbnVtX2dldCA9PQ0KPiBOVUxM KQ0KPiA+ICsJCQkqcXVldWVfbnVtID0gVkhPU1RfTUFYX1FVRVVFX1BBSVJTOw0KPiA+ICsJCWVs c2UgaWYgKHZkcGFfZGV2aWNlc1tkaWRdLT5vcHMtPnF1ZXVlX251bV9nZXQoDQo+ID4gKwkJCQkJ ZGlkLCAmdmRwYV9xdWV1ZV9udW0pIDwgMCkgew0KPiA+ICsJCQlSVEVfTE9HKEVSUiwgVkhPU1Rf Q09ORklHLA0KPiA+ICsJCQkJCSJmYWlsZWQgdG8gZ2V0IHZkcGEgcXVldWUgbnVtYmVyICINCj4g PiArCQkJCQkiZm9yIHNvY2tldCBmaWxlICVzLlxuIiwgcGF0aCk7DQo+ID4gKwkJCXJldCA9IC0x Ow0KPiA+ICsJCX0gZWxzZSBpZiAodmRwYV9xdWV1ZV9udW0gPiBWSE9TVF9NQVhfUVVFVUVfUEFJ UlMpDQo+ID4gKwkJCSpxdWV1ZV9udW0gPSBWSE9TVF9NQVhfUVVFVUVfUEFJUlM7DQo+ID4gKwkJ ZWxzZQ0KPiA+ICsJCQkqcXVldWVfbnVtID0gdmRwYV9xdWV1ZV9udW07DQo+ID4gICAJfSBlbHNl IHsNCj4gPiAtCQlyZXR1cm4gMDsNCj4gPiArCQlSVEVfTE9HKEVSUiwgVkhPU1RfQ09ORklHLA0K PiA+ICsJCQkic29ja2V0IGZpbGUgJXMgaXMgbm90IHJlZ2lzdGVyZWQgeWV0LlxuIiwgcGF0aCk7 DQo+ID4gKwkJcmV0ID0gLTE7DQo+ID4gICAJfQ0KPiA+ICsJcHRocmVhZF9tdXRleF91bmxvY2so JnZob3N0X3VzZXIubXV0ZXgpOw0KPiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gICB9DQo+ ID4NCj4gPiAgIC8qDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfdmhvc3Qvdmhvc3QuYyBi L2xpYi9saWJydGVfdmhvc3Qvdmhvc3QuYw0KPiA+IGluZGV4IDE3NDBjYzFhYi4uNjZiNmI0OTJm IDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfdmhvc3Qvdmhvc3QuYw0KPiA+ICsrKyBiL2xp Yi9saWJydGVfdmhvc3Qvdmhvc3QuYw0KPiA+IEBAIC0yOTYsMTEgKzI5NiwxNCBAQCB2b2lkDQo+ ID4gICB2aG9zdF9kZXN0cm95X2RldmljZShpbnQgdmlkKQ0KPiA+ICAgew0KPiA+ICAgCXN0cnVj dCB2aXJ0aW9fbmV0ICpkZXYgPSBnZXRfZGV2aWNlKHZpZCk7DQo+ID4gKwlpbnQgZGlkID0gZGV2 LT5kaWQ7DQo+ID4NCj4gPiAgIAlpZiAoZGV2ID09IE5VTEwpDQo+ID4gICAJCXJldHVybjsNCj4g Pg0KPiA+ICAgCWlmIChkZXYtPmZsYWdzICYgVklSVElPX0RFVl9SVU5OSU5HKSB7DQo+ID4gKwkJ aWYgKGRpZCA+PSAwICYmIHZkcGFfZGV2aWNlc1tkaWRdLT5vcHMtPmRldl9jbG9zZSkNCj4gPiAr CQkJdmRwYV9kZXZpY2VzW2RpZF0tPm9wcy0+ZGV2X2Nsb3NlKGRldi0+dmlkKTsNCj4gDQo+IERp dHRvLg0KDQpPay4NCg0KPiANCj4gPiAgIAkJZGV2LT5mbGFncyAmPSB+VklSVElPX0RFVl9SVU5O SU5HOw0KPiA+ICAgCQlkZXYtPm5vdGlmeV9vcHMtPmRlc3Ryb3lfZGV2aWNlKHZpZCk7DQo+ID4g ICAJfQ0KPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX3Zob3N0L3Zob3N0LmggYi9saWIvbGli cnRlX3Zob3N0L3Zob3N0LmgNCj4gPiBpbmRleCAyOTcwYzFlYWIuLjMwZThhMGNmZSAxMDA2NDQN Cj4gPiAtLS0gYS9saWIvbGlicnRlX3Zob3N0L3Zob3N0LmgNCj4gPiArKysgYi9saWIvbGlicnRl X3Zob3N0L3Zob3N0LmgNCj4gPiBAQCAtMjcsNiArMjcsOCBAQA0KPiA+ICAgI2RlZmluZSBWSVJU SU9fREVWX1JFQURZIDINCj4gPiAgIC8qIFVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgYnVpbHQt aW4gdmhvc3QgbmV0IGRldmljZSBiYWNrZW5kIGlzIGVuYWJsZWQNCj4gKi8NCj4gPiAgICNkZWZp bmUgVklSVElPX0RFVl9CVUlMVElOX1ZJUlRJT19ORVQgNA0KPiA+ICsvKiBVc2VkIHRvIGluZGlj YXRlIHRoYXQgdGhlIGRldmljZSBoYXMgaXRzIG93biBkYXRhIHBhdGggYW5kIGNvbmZpZ3VyZWQN Cj4gKi8NCj4gPiArI2RlZmluZSBWSVJUSU9fREVWX1ZEUEFfQ09ORklHVVJFRCA4DQo+ID4NCj4g PiAgIC8qIEJhY2tlbmQgdmFsdWUgc2V0IGJ5IGd1ZXN0LiAqLw0KPiA+ICAgI2RlZmluZSBWSVJU SU9fREVWX1NUT1BQRUQgLTENCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV92aG9zdC92aG9z dF91c2VyLmMgYi9saWIvbGlicnRlX3Zob3N0L3Zob3N0X3VzZXIuYw0KPiA+IGluZGV4IDVjNTM2 MTA2Ni4uNTA0OWM4ZTU1IDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfdmhvc3Qvdmhvc3Rf dXNlci5jDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV92aG9zdC92aG9zdF91c2VyLmMNCj4gPiBAQCAt MTMzLDcgKzEzMywxMSBAQCB2aG9zdF91c2VyX3NldF9vd25lcih2b2lkKQ0KPiA+ICAgc3RhdGlj IGludA0KPiA+ICAgdmhvc3RfdXNlcl9yZXNldF9vd25lcihzdHJ1Y3QgdmlydGlvX25ldCAqZGV2 KQ0KPiA+ICAgew0KPiA+ICsJaW50IGRpZCA9IGRldi0+ZGlkOw0KPiA+ICsNCj4gPiAgIAlpZiAo ZGV2LT5mbGFncyAmIFZJUlRJT19ERVZfUlVOTklORykgew0KPiA+ICsJCWlmIChkaWQgPj0gMCAm JiB2ZHBhX2RldmljZXNbZGlkXS0+b3BzLT5kZXZfY2xvc2UpDQo+ID4gKwkJCXZkcGFfZGV2aWNl c1tkaWRdLT5vcHMtPmRldl9jbG9zZShkZXYtPnZpZCk7DQo+IA0KPiBEaXR0by4NCg0KT2suDQoN Cj4gDQo+ID4gICAJCWRldi0+ZmxhZ3MgJj0gflZJUlRJT19ERVZfUlVOTklORzsNCj4gPiAgIAkJ ZGV2LT5ub3RpZnlfb3BzLT5kZXN0cm95X2RldmljZShkZXYtPnZpZCk7DQo+ID4gICAJfQ0KPiA+ IEBAIC0xNTYsMTIgKzE2MCwyNSBAQCB2aG9zdF91c2VyX2dldF9mZWF0dXJlcyhzdHJ1Y3Qgdmly dGlvX25ldCAqZGV2KQ0KPiA+ICAgfQ0KPiA+DQo+ID4gICAvKg0KPiA+ICsgKiBUaGUgcXVldWUg bnVtYmVyIHRoYXQgd2Ugc3VwcG9ydCBhcmUgcmVxdWVzdGVkLg0KPiA+ICsgKi8NCj4gPiArc3Rh dGljIHVpbnQzMl90DQo+ID4gK3Zob3N0X3VzZXJfZ2V0X3F1ZXVlX251bShzdHJ1Y3QgdmlydGlv X25ldCAqZGV2KQ0KPiA+ICt7DQo+ID4gKwl1aW50MzJfdCBxdWV1ZV9udW0gPSAwOw0KPiA+ICsN Cj4gPiArCXJ0ZV92aG9zdF9kcml2ZXJfZ2V0X3F1ZXVlX251bShkZXYtPmlmbmFtZSwgJnF1ZXVl X251bSk7DQo+ID4gKwlyZXR1cm4gKHVpbnQ2NF90KXF1ZXVlX251bTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyoNCj4gPiAgICAqIFdlIHJlY2VpdmUgdGhlIG5lZ290aWF0ZWQgZmVhdHVyZXMgc3Vw cG9ydGVkIGJ5IHVzIGFuZCB0aGUgdmlydGlvDQo+IGRldmljZS4NCj4gPiAgICAqLw0KPiA+ICAg c3RhdGljIGludA0KPiA+ICAgdmhvc3RfdXNlcl9zZXRfZmVhdHVyZXMoc3RydWN0IHZpcnRpb19u ZXQgKmRldiwgdWludDY0X3QgZmVhdHVyZXMpDQo+ID4gICB7DQo+ID4gICAJdWludDY0X3Qgdmhv c3RfZmVhdHVyZXMgPSAwOw0KPiA+ICsJaW50IGRpZCA9IGRldi0+ZGlkOw0KPiA+DQo+ID4gICAJ cnRlX3Zob3N0X2RyaXZlcl9nZXRfZmVhdHVyZXMoZGV2LT5pZm5hbWUsICZ2aG9zdF9mZWF0dXJl cyk7DQo+ID4gICAJaWYgKGZlYXR1cmVzICYgfnZob3N0X2ZlYXR1cmVzKSB7DQo+ID4gQEAgLTE5 MSw2ICsyMDgsOSBAQCB2aG9zdF91c2VyX3NldF9mZWF0dXJlcyhzdHJ1Y3QgdmlydGlvX25ldCAq ZGV2LA0KPiB1aW50NjRfdCBmZWF0dXJlcykNCj4gPiAgIAkJCWRldi0+bm90aWZ5X29wcy0+ZmVh dHVyZXNfY2hhbmdlZChkZXYtPnZpZCwNCj4gZmVhdHVyZXMpOw0KPiA+ICAgCX0NCj4gPg0KPiA+ ICsJaWYgKGRpZCA+PSAwICYmIHZkcGFfZGV2aWNlc1tkaWRdLT5vcHMtPmZlYXR1cmVfc2V0KQ0K PiA+ICsJCXZkcGFfZGV2aWNlc1tkaWRdLT5vcHMtPmZlYXR1cmVfc2V0KGRldi0+dmlkKTsNCj4g PiArDQo+ID4gICAJZGV2LT5mZWF0dXJlcyA9IGZlYXR1cmVzOw0KPiA+ICAgCWlmIChkZXYtPmZl YXR1cmVzICYNCj4gPiAgIAkJKCgxIDw8IFZJUlRJT19ORVRfRl9NUkdfUlhCVUYpIHwgKDFVTEwg PDwNCj4gVklSVElPX0ZfVkVSU0lPTl8xKSkpIHsNCj4gPiBAQCAtOTMzLDE0ICs5NTMsMTggQEAg dmhvc3RfdXNlcl9nZXRfdnJpbmdfYmFzZShzdHJ1Y3QgdmlydGlvX25ldA0KPiAqZGV2LA0KPiA+ ICAgCQkJICBWaG9zdFVzZXJNc2cgKm1zZykNCj4gPiAgIHsNCj4gPiAgIAlzdHJ1Y3Qgdmhvc3Rf dmlydHF1ZXVlICp2cSA9IGRldi0+dmlydHF1ZXVlW21zZy0NCj4gPnBheWxvYWQuc3RhdGUuaW5k ZXhdOw0KPiA+ICsJaW50IGRpZCA9IGRldi0+ZGlkOw0KPiA+DQo+ID4gICAJLyogV2UgaGF2ZSB0 byBzdG9wIHRoZSBxdWV1ZSAodmlydGlvKSBpZiBpdCBpcyBydW5uaW5nLiAqLw0KPiA+ICAgCWlm IChkZXYtPmZsYWdzICYgVklSVElPX0RFVl9SVU5OSU5HKSB7DQo+ID4gKwkJaWYgKGRpZCA+PSAw ICYmIHZkcGFfZGV2aWNlc1tkaWRdLT5vcHMtPmRldl9jbG9zZSkNCj4gPiArCQkJdmRwYV9kZXZp Y2VzW2RpZF0tPm9wcy0+ZGV2X2Nsb3NlKGRldi0+dmlkKTsNCj4gPiAgIAkJZGV2LT5mbGFncyAm PSB+VklSVElPX0RFVl9SVU5OSU5HOw0KPiA+ICAgCQlkZXYtPm5vdGlmeV9vcHMtPmRlc3Ryb3lf ZGV2aWNlKGRldi0+dmlkKTsNCj4gPiAgIAl9DQo+ID4NCj4gPiAgIAlkZXYtPmZsYWdzICY9IH5W SVJUSU9fREVWX1JFQURZOw0KPiA+ICsJZGV2LT5mbGFncyAmPSB+VklSVElPX0RFVl9WRFBBX0NP TkZJR1VSRUQ7DQo+ID4NCj4gPiAgIAkvKiBIZXJlIHdlIGFyZSBzYWZlIHRvIGdldCB0aGUgbGFz dCBhdmFpbCBpbmRleCAqLw0KPiA+ICAgCW1zZy0+cGF5bG9hZC5zdGF0ZS5udW0gPSB2cS0+bGFz dF9hdmFpbF9pZHg7DQo+ID4gQEAgLTk4MywxNiArMTAwNywyMiBAQCB2aG9zdF91c2VyX3NldF92 cmluZ19lbmFibGUoc3RydWN0IHZpcnRpb19uZXQNCj4gKmRldiwNCj4gPiAgIAkJCSAgICBWaG9z dFVzZXJNc2cgKm1zZykNCj4gPiAgIHsNCj4gPiAgIAlpbnQgZW5hYmxlID0gKGludCltc2ctPnBh eWxvYWQuc3RhdGUubnVtOw0KPiA+ICsJaW50IGluZGV4ID0gKGludCltc2ctPnBheWxvYWQuc3Rh dGUuaW5kZXg7DQo+ID4gKwlpbnQgZGlkID0gZGV2LT5kaWQ7DQo+ID4NCj4gPiAgIAlSVEVfTE9H KElORk8sIFZIT1NUX0NPTkZJRywNCj4gPiAgIAkJInNldCBxdWV1ZSBlbmFibGU6ICVkIHRvIHFw IGlkeDogJWRcbiIsDQo+ID4gLQkJZW5hYmxlLCBtc2ctPnBheWxvYWQuc3RhdGUuaW5kZXgpOw0K PiA+ICsJCWVuYWJsZSwgaW5kZXgpOw0KPiA+ICsNCj4gPiArCWlmIChkaWQgPj0gMCAmJiB2ZHBh X2RldmljZXNbZGlkXS0+b3BzLT52cmluZ19zdGF0ZV9zZXQpDQo+ID4gKwkJdmRwYV9kZXZpY2Vz W2RpZF0tPm9wcy0+dnJpbmdfc3RhdGVfc2V0KGRldi0+dmlkLA0KPiA+ICsJCQkJaW5kZXgsIGVu YWJsZSk7DQo+ID4NCj4gPiAgIAlpZiAoZGV2LT5ub3RpZnlfb3BzLT52cmluZ19zdGF0ZV9jaGFu Z2VkKQ0KPiA+ICAgCQlkZXYtPm5vdGlmeV9vcHMtPnZyaW5nX3N0YXRlX2NoYW5nZWQoZGV2LT52 aWQsDQo+ID4gLQkJCQltc2ctPnBheWxvYWQuc3RhdGUuaW5kZXgsIGVuYWJsZSk7DQo+ID4gKwkJ CQlpbmRleCwgZW5hYmxlKTsNCj4gPg0KPiA+IC0JZGV2LT52aXJ0cXVldWVbbXNnLT5wYXlsb2Fk LnN0YXRlLmluZGV4XS0+ZW5hYmxlZCA9IGVuYWJsZTsNCj4gPiArCWRldi0+dmlydHF1ZXVlW2lu ZGV4XS0+ZW5hYmxlZCA9IGVuYWJsZTsNCj4gPg0KPiA+ICAgCXJldHVybiAwOw0KPiA+ICAgfQ0K PiA+IEBAIC0xMDAxLDkgKzEwMzEsMTAgQEAgc3RhdGljIHZvaWQNCj4gPiAgIHZob3N0X3VzZXJf Z2V0X3Byb3RvY29sX2ZlYXR1cmVzKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsDQo+ID4gICAJCQkJ IHN0cnVjdCBWaG9zdFVzZXJNc2cgKm1zZykNCj4gPiAgIHsNCj4gPiAtCXVpbnQ2NF90IGZlYXR1 cmVzLCBwcm90b2NvbF9mZWF0dXJlcyA9DQo+IFZIT1NUX1VTRVJfUFJPVE9DT0xfRkVBVFVSRVM7 DQo+ID4gKwl1aW50NjRfdCBmZWF0dXJlcywgcHJvdG9jb2xfZmVhdHVyZXM7DQo+ID4NCj4gPiAg IAlydGVfdmhvc3RfZHJpdmVyX2dldF9mZWF0dXJlcyhkZXYtPmlmbmFtZSwgJmZlYXR1cmVzKTsN Cj4gPiArCXJ0ZV92aG9zdF9kcml2ZXJfZ2V0X3Byb3RvY29sX2ZlYXR1cmVzKGRldi0+aWZuYW1l LA0KPiAmcHJvdG9jb2xfZmVhdHVyZXMpOw0KPiA+DQo+ID4gICAJLyoNCj4gPiAgIAkgKiBSRVBM WV9BQ0sgcHJvdG9jb2wgZmVhdHVyZSBpcyBvbmx5IG1hbmRhdG9yeSBmb3Igbm93DQo+ID4gQEAg LTEwOTksNiArMTEzMCw3IEBAIHN0YXRpYyBpbnQNCj4gPiAgIHZob3N0X3VzZXJfc2VuZF9yYXJw KHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsIHN0cnVjdCBWaG9zdFVzZXJNc2cgKm1zZykNCj4gPiAg IHsNCj4gPiAgIAl1aW50OF90ICptYWMgPSAodWludDhfdCAqKSZtc2ctPnBheWxvYWQudTY0Ow0K PiA+ICsJaW50IGRpZCA9IGRldi0+ZGlkOw0KPiA+DQo+ID4gICAJUlRFX0xPRyhERUJVRywgVkhP U1RfQ09ORklHLA0KPiA+ICAgCQkiOjogbWFjOiAlMDJ4OiUwMng6JTAyeDolMDJ4OiUwMng6JTAy eFxuIiwNCj4gPiBAQCAtMTExNCw2ICsxMTQ2LDggQEAgdmhvc3RfdXNlcl9zZW5kX3JhcnAoc3Ry dWN0IHZpcnRpb19uZXQgKmRldiwNCj4gc3RydWN0IFZob3N0VXNlck1zZyAqbXNnKQ0KPiA+ICAg CSAqLw0KPiA+ICAgCXJ0ZV9zbXBfd21iKCk7DQo+ID4gICAJcnRlX2F0b21pYzE2X3NldCgmZGV2 LT5icm9hZGNhc3RfcmFycCwgMSk7DQo+ID4gKwlpZiAoZGlkID49IDAgJiYgdmRwYV9kZXZpY2Vz W2RpZF0tPm9wcy0+bWlncmF0aW9uX2RvbmUpDQo+ID4gKwkJdmRwYV9kZXZpY2VzW2RpZF0tPm9w cy0+bWlncmF0aW9uX2RvbmUoZGV2LT52aWQpOw0KPiA+DQo+ID4gICAJcmV0dXJuIDA7DQo+ID4g ICB9DQo+ID4gQEAgLTEzNzUsNiArMTQwOSw3IEBAIHZob3N0X3VzZXJfbXNnX2hhbmRsZXIoaW50 IHZpZCwgaW50IGZkKQ0KPiA+ICAgew0KPiA+ICAgCXN0cnVjdCB2aXJ0aW9fbmV0ICpkZXY7DQo+ ID4gICAJc3RydWN0IFZob3N0VXNlck1zZyBtc2c7DQo+ID4gKwlpbnQgZGlkOw0KPiA+ICAgCWlu dCByZXQ7DQo+ID4gICAJaW50IHVubG9ja19yZXF1aXJlZCA9IDA7DQo+ID4NCj4gPiBAQCAtMTUy Nyw3ICsxNTYyLDcgQEAgdmhvc3RfdXNlcl9tc2dfaGFuZGxlcihpbnQgdmlkLCBpbnQgZmQpDQo+ ID4gICAJCWJyZWFrOw0KPiA+DQo+ID4gICAJY2FzZSBWSE9TVF9VU0VSX0dFVF9RVUVVRV9OVU06 DQo+ID4gLQkJbXNnLnBheWxvYWQudTY0ID0gVkhPU1RfTUFYX1FVRVVFX1BBSVJTOw0KPiA+ICsJ CW1zZy5wYXlsb2FkLnU2NCA9DQo+ICh1aW50NjRfdCl2aG9zdF91c2VyX2dldF9xdWV1ZV9udW0o ZGV2KTsNCj4gPiAgIAkJbXNnLnNpemUgPSBzaXplb2YobXNnLnBheWxvYWQudTY0KTsNCj4gPiAg IAkJc2VuZF92aG9zdF9yZXBseShmZCwgJm1zZyk7DQo+ID4gICAJCWJyZWFrOw0KPiA+IEBAIC0x NTgwLDYgKzE2MTUsMTUgQEAgdmhvc3RfdXNlcl9tc2dfaGFuZGxlcihpbnQgdmlkLCBpbnQgZmQp DQo+ID4gICAJCX0NCj4gPiAgIAl9DQo+ID4NCj4gPiArCWRpZCA9IGRldi0+ZGlkOw0KPiA+ICsJ aWYgKGRpZCA+PSAwICYmIHZpcnRpb19pc19yZWFkeShkZXYpICYmDQo+ID4gKwkJCSEoZGV2LT5m bGFncyAmIFZJUlRJT19ERVZfVkRQQV9DT05GSUdVUkVEKQ0KPiAmJg0KPiA+ICsJCQltc2cucmVx dWVzdC5tYXN0ZXIgPT0NCj4gVkhPU1RfVVNFUl9TRVRfVlJJTkdfRU5BQkxFKSB7DQo+ID4gKwkJ aWYgKHZkcGFfZGV2aWNlc1tkaWRdLT5vcHMtPmRldl9jb25mKQ0KPiA+ICsJCQl2ZHBhX2Rldmlj ZXNbZGlkXS0+b3BzLT5kZXZfY29uZih2aWQpOw0KPiA+ICsJCWRldi0+ZmxhZ3MgfD0gVklSVElP X0RFVl9WRFBBX0NPTkZJR1VSRUQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICAgCXJldHVybiAwOw0K PiA+ICAgfQ0KPiA+DQo+ID4NCj4gDQo+IE90aGVyIHRoYW4gdGhlIGNvZGUgcmVmYWN0b3Jpbmcg SSBwcm9wb3NlLCB0aGUgcGF0Y2ggbG9va3MgZ29vZCB0byBtZS4NCg0KUmVhbGx5IGFwcHJlY2lh dGUgeW91ciBkZXRhaWxlZCByZXZpZXcgYW5kIGNvbW1lbnRzIQ0KSSdsbCBzZW5kIG91dCB2NSBz b29uLg0KDQotWmhpaG9uZw0KDQo+IA0KPiBUaGFua3MhDQo+IE1heGltZQ0K