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 94D47A0613 for ; Thu, 26 Sep 2019 17:52:29 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 807F93195; Thu, 26 Sep 2019 17:52:28 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 21AF62C60 for ; Thu, 26 Sep 2019 17:52:25 +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 fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 26 Sep 2019 08:52:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,552,1559545200"; d="scan'208";a="183662566" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga008.jf.intel.com with ESMTP; 26 Sep 2019 08:52:22 -0700 Received: from fmsmsx157.amr.corp.intel.com (10.18.116.73) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 26 Sep 2019 08:52:22 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by FMSMSX157.amr.corp.intel.com (10.18.116.73) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 26 Sep 2019 08:52:21 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.92]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.32]) with mapi id 14.03.0439.000; Thu, 26 Sep 2019 23:52:20 +0800 From: "Yu, Jin" To: "Bie, Tiwei" CC: "dev@dpdk.org" , "Liu, Changpeng" , "maxime.coquelin@redhat.com" , "Wang, Zhihong" , Lin Li , Xun Ni , Yu Zhang Thread-Topic: [PATCH v7 05/10] vhost: checkout the resubmit inflight information Thread-Index: AQHVb2p2EfqC1VBEcEiYPo6wudYmg6c9HSYAgAD+hXA= Date: Thu, 26 Sep 2019 15:52:20 +0000 Message-ID: References: <20190917145234.16951> <20190920120102.29828-1-jin.yu@intel.com> <20190920120102.29828-6-jin.yu@intel.com> <20190926080440.GA17894@___> In-Reply-To: <20190926080440.GA17894@___> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNjg5ZjQwMTItNzJmZi00ZmUyLTgyODgtZWFlZDk0MzY3MDQ1IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiS2FyTGRtNEdMYUR0YitUMXlMR0JqQWZRWktzV2o5cXJ6UWdzankrRDBvZ3ZJd0dvRFwvOWZnZjlBa1NRKys2Mm4ifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action 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 v7 05/10] vhost: checkout the resubmit inflight information 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" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBCaWUsIFRpd2VpDQo+IFNlbnQ6 IFRodXJzZGF5LCBTZXB0ZW1iZXIgMjYsIDIwMTkgNDowNSBQTQ0KPiBUbzogWXUsIEppbiA8amlu Lnl1QGludGVsLmNvbT4NCj4gQ2M6IGRldkBkcGRrLm9yZzsgTGl1LCBDaGFuZ3BlbmcgPGNoYW5n cGVuZy5saXVAaW50ZWwuY29tPjsNCj4gbWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb207IFdhbmcs IFpoaWhvbmcgPHpoaWhvbmcud2FuZ0BpbnRlbC5jb20+OyBMaW4NCj4gTGkgPGxpbGluMjRAYmFp ZHUuY29tPjsgWHVuIE5pIDxuaXh1bkBiYWlkdS5jb20+OyBZdSBaaGFuZw0KPiA8emhhbmd5dTMx QGJhaWR1LmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2NyAwNS8xMF0gdmhvc3Q6IGNoZWNr b3V0IHRoZSByZXN1Ym1pdCBpbmZsaWdodCBpbmZvcm1hdGlvbg0KPiANCj4gT24gRnJpLCBTZXAg MjAsIDIwMTkgYXQgMDg6MDA6NTdQTSArMDgwMCwgSmluIFl1IHdyb3RlOg0KPiA+IEBAIC0xNDU4 LDYgKzE0NzIsMTg4IEBAIHN0YXRpYyBpbnQgdmhvc3RfdXNlcl9zZXRfdnJpbmdfZXJyKHN0cnVj dA0KPiB2aXJ0aW9fbmV0ICoqcGRldiBfX3J0ZV91bnVzZWQsDQo+ID4gIAlyZXR1cm4gUlRFX1ZI T1NUX01TR19SRVNVTFRfT0s7DQo+ID4gIH0NCj4gPg0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK3Jl c3VibWl0X2Rlc2NfY29tcGFyZShjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKSB7DQo+ID4g Kwljb25zdCBzdHJ1Y3QgcnRlX3Zob3N0X3Jlc3VibWl0X2Rlc2MgKmRlc2MwID0NCj4gPiArCQko Y29uc3Qgc3RydWN0IHJ0ZV92aG9zdF9yZXN1Ym1pdF9kZXNjICopYTsNCj4gPiArCWNvbnN0IHN0 cnVjdCBydGVfdmhvc3RfcmVzdWJtaXRfZGVzYyAqZGVzYzEgPQ0KPiA+ICsJCShjb25zdCBzdHJ1 Y3QgcnRlX3Zob3N0X3Jlc3VibWl0X2Rlc2MgKiliOw0KPiA+ICsNCj4gPiArCWlmIChkZXNjMS0+ Y291bnRlciA+IGRlc2MwLT5jb3VudGVyICYmDQo+ID4gKwkJKGRlc2MxLT5jb3VudGVyIC0gZGVz YzAtPmNvdW50ZXIpIDwgVklSVFFVRVVFX01BWF9TSVpFICogMikNCj4gDQo+IFdoeSBpcyB0aGlz IGhhcmRjb2RlZCB0byAxMDI0ICogMiBoZXJlPw0KSSB3aWxsIGNoZWNrIHRoaXMuIFRoYW5rcy4N Cj4gDQo+ID4gKwkJcmV0dXJuIDE7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIC0xOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK3Zob3N0X2NoZWNrX3F1ZXVlX2luZmxpZ2h0c19z cGxpdChzdHJ1Y3QgdmlydGlvX25ldCAqZGV2LA0KPiA+ICsJc3RydWN0IHZob3N0X3ZpcnRxdWV1 ZSAqdnEpDQo+ID4gK3sNCj4gPiArCXVpbnQxNl90IGkgPSAwOw0KPiA+ICsJdWludDE2X3QgcmVz dWJtaXRfbnVtID0gMCwgbGFzdF9pbywgbnVtOw0KPiA+ICsJc3RydWN0IHZyaW5nX3VzZWQgKnVz ZWQgPSB2cS0+dXNlZDsNCj4gPiArCXN0cnVjdCBydGVfdmhvc3RfcmVzdWJtaXRfaW5mbyAqcmVz dWJtaXQgPSBOVUxMOw0KPiA+ICsJc3RydWN0IHJ0ZV92aG9zdF9pbmZsaWdodF9pbmZvX3NwbGl0 ICppbmZsaWdodF9zcGxpdDsNCj4gPiArDQo+ID4gKwlpZiAoIShkZXYtPnByb3RvY29sX2ZlYXR1 cmVzICYNCj4gPiArCQkoMVVMTCA8PCBWSE9TVF9VU0VSX1BST1RPQ09MX0ZfSU5GTElHSFRfU0hN RkQpKSkNCj4gPiArCQlyZXR1cm4gUlRFX1ZIT1NUX01TR19SRVNVTFRfT0s7DQo+ID4gKw0KPiA+ ICsJaWYgKCghdnEtPmluZmxpZ2h0X3NwbGl0KSkNCj4gPiArCQlyZXR1cm4gUlRFX1ZIT1NUX01T R19SRVNVTFRfRVJSOw0KPiA+ICsNCj4gPiArCWlmICghdnEtPmluZmxpZ2h0X3NwbGl0LT52ZXJz aW9uKSB7DQo+ID4gKwkJdnEtPmluZmxpZ2h0X3NwbGl0LT52ZXJzaW9uID0gSU5GTElHSFRfVkVS U0lPTjsNCj4gPiArCQlyZXR1cm4gUlRFX1ZIT1NUX01TR19SRVNVTFRfT0s7DQo+ID4gKwl9DQo+ ID4gKw0KPiA+ICsJaW5mbGlnaHRfc3BsaXQgPSB2cS0+aW5mbGlnaHRfc3BsaXQ7DQo+ID4gKwl2 cS0+cmVzdWJtaXRfaW5mbGlnaHQgPSBOVUxMOw0KPiANCj4gVGhpcyBpcyBpbnZva2VkIGluIHZo b3N0IG1lc3NhZ2UgaGFuZGxlciwgeW91IG5lZWQgdG8gY2hlY2sgd2hldGhlciBpdCBoYXMgYmVl bg0KPiBhbGxvY2F0ZWQgZmlyc3QuDQpHb3QgaXQsIFRoYW5rcy4NCj4gDQo+IA0KPiA+ICsJdnEt Pmdsb2JhbF9jb3VudGVyID0gMDsNCj4gPiArCWxhc3RfaW8gPSBpbmZsaWdodF9zcGxpdC0+bGFz dF9pbmZsaWdodF9pbzsNCj4gPiArDQo+ID4gKwlpZiAoaW5mbGlnaHRfc3BsaXQtPnVzZWRfaWR4 ICE9IHVzZWQtPmlkeCkgew0KPiA+ICsJCWluZmxpZ2h0X3NwbGl0LT5kZXNjW2xhc3RfaW9dLmlu ZmxpZ2h0ID0gMDsNCj4gPiArCQlydGVfY29tcGlsZXJfYmFycmllcigpOw0KPiA+ICsJCWluZmxp Z2h0X3NwbGl0LT51c2VkX2lkeCA9IHVzZWQtPmlkeDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlm b3IgKGkgPSAwOyBpIDwgaW5mbGlnaHRfc3BsaXQtPmRlc2NfbnVtOyBpKyspIHsNCj4gPiArCQlp ZiAoaW5mbGlnaHRfc3BsaXQtPmRlc2NbaV0uaW5mbGlnaHQgPT0gMSkNCj4gPiArCQkJcmVzdWJt aXRfbnVtKys7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJdnEtPmxhc3RfYXZhaWxfaWR4ICs9IHJl c3VibWl0X251bTsNCj4gPiArDQo+ID4gKwlpZiAocmVzdWJtaXRfbnVtKSB7DQo+ID4gKwkJcmVz dWJtaXQgID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgcnRlX3Zob3N0X3Jlc3VibWl0X2luZm8p KTsNCj4gPiArCQlpZiAoIXJlc3VibWl0KSB7DQo+ID4gKwkJCVJURV9MT0coRVJSLCBWSE9TVF9D T05GSUcsDQo+ID4gKwkJCSAiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgcmVzdWJtaXQg aW5mby5cbiIpOw0KPiA+ICsJCQlyZXR1cm4gUlRFX1ZIT1NUX01TR19SRVNVTFRfRVJSOw0KPiA+ ICsJCX0NCj4gPiArDQo+ID4gKwkJcmVzdWJtaXQtPnJlc3VibWl0X2xpc3QgPSBjYWxsb2MocmVz dWJtaXRfbnVtLA0KPiA+ICsJCQlzaXplb2Yoc3RydWN0IHJ0ZV92aG9zdF9yZXN1Ym1pdF9kZXNj KSk7DQo+ID4gKwkJaWYgKCFyZXN1Ym1pdC0+cmVzdWJtaXRfbGlzdCkgew0KPiA+ICsJCQlSVEVf TE9HKEVSUiwgVkhPU1RfQ09ORklHLA0KPiA+ICsJCQkgIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1v cnkgZm9yIGluZmxpZ2h0IGRlc2MuXG4iKTsNCj4gPiArCQkJcmV0dXJuIFJURV9WSE9TVF9NU0df UkVTVUxUX0VSUjsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCW51bSA9IDA7DQo+ID4gKwkJZm9y IChpID0gMDsgaSA8IHZxLT5pbmZsaWdodF9zcGxpdC0+ZGVzY19udW07IGkrKykgew0KPiA+ICsJ CQlpZiAodnEtPmluZmxpZ2h0X3NwbGl0LT5kZXNjW2ldLmluZmxpZ2h0ID09IDEpIHsNCj4gPiAr CQkJCXJlc3VibWl0LT5yZXN1Ym1pdF9saXN0W251bV0uaW5kZXggPSBpOw0KPiA+ICsJCQkJcmVz dWJtaXQtPnJlc3VibWl0X2xpc3RbbnVtXS5jb3VudGVyID0NCj4gPiArCQkJCQlpbmZsaWdodF9z cGxpdC0+ZGVzY1tpXS5jb3VudGVyOw0KPiA+ICsJCQkJbnVtKys7DQo+ID4gKwkJCX0NCj4gPiAr CQl9DQo+ID4gKwkJcmVzdWJtaXQtPnJlc3VibWl0X251bSA9IG51bTsNCj4gPiArDQo+ID4gKwkJ aWYgKHJlc3VibWl0LT5yZXN1Ym1pdF9udW0gPiAxKQ0KPiA+ICsJCQlxc29ydChyZXN1Ym1pdC0+ cmVzdWJtaXRfbGlzdCwgcmVzdWJtaXQtDQo+ID5yZXN1Ym1pdF9udW0sDQo+ID4gKwkJCQlzaXpl b2Yoc3RydWN0IHJ0ZV92aG9zdF9yZXN1Ym1pdF9kZXNjKSwNCj4gPiArCQkJCXJlc3VibWl0X2Rl c2NfY29tcGFyZSk7DQo+ID4gKw0KPiA+ICsJCXZxLT5nbG9iYWxfY291bnRlciA9IHJlc3VibWl0 LT5yZXN1Ym1pdF9saXN0WzBdLmNvdW50ZXIgKyAxOw0KPiA+ICsJCXZxLT5yZXN1Ym1pdF9pbmZs aWdodCA9IHJlc3VibWl0Ow0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiBSVEVfVkhPU1Rf TVNHX1JFU1VMVF9PSzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludA0KPiA+ICt2aG9z dF9jaGVja19xdWV1ZV9pbmZsaWdodHNfcGFja2VkKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsDQo+ ID4gKwkJCQkJCSBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSkNCj4gPiArew0KPiA+ICsJdWlu dDE2X3QgaSA9IDA7DQo+ID4gKwl1aW50MTZfdCByZXN1Ym1pdF9udW0gPSAwLCBvbGRfdXNlZF9p ZHgsIG51bTsNCj4gPiArCXN0cnVjdCBydGVfdmhvc3RfcmVzdWJtaXRfaW5mbyAqcmVzdWJtaXQg PSBOVUxMOw0KPiA+ICsJc3RydWN0IHJ0ZV92aG9zdF9pbmZsaWdodF9pbmZvX3BhY2tlZCAqaW5m bGlnaHRfcGFja2VkOw0KPiA+ICsNCj4gPiArCWlmICghKGRldi0+cHJvdG9jb2xfZmVhdHVyZXMg Jg0KPiA+ICsJCSgxVUxMIDw8IFZIT1NUX1VTRVJfUFJPVE9DT0xfRl9JTkZMSUdIVF9TSE1GRCkp KQ0KPiA+ICsJCXJldHVybiBSVEVfVkhPU1RfTVNHX1JFU1VMVF9PSzsNCj4gPiArDQo+ID4gKwlp ZiAoKCF2cS0+aW5mbGlnaHRfcGFja2VkKSkNCj4gPiArCQlyZXR1cm4gUlRFX1ZIT1NUX01TR19S RVNVTFRfRVJSOw0KPiA+ICsNCj4gPiArCWlmICghdnEtPmluZmxpZ2h0X3BhY2tlZC0+dmVyc2lv bikgew0KPiA+ICsJCXZxLT5pbmZsaWdodF9wYWNrZWQtPnZlcnNpb24gPSBJTkZMSUdIVF9WRVJT SU9OOw0KPiA+ICsJCXJldHVybiBSVEVfVkhPU1RfTVNHX1JFU1VMVF9PSzsNCj4gPiArCX0NCj4g PiArDQo+ID4gKwlpbmZsaWdodF9wYWNrZWQgPSB2cS0+aW5mbGlnaHRfcGFja2VkOw0KPiA+ICsJ dnEtPnJlc3VibWl0X2luZmxpZ2h0ID0gTlVMTDsNCj4gDQo+IERpdHRvLg0KPiANCj4gDQo+ID4g Kwl2cS0+Z2xvYmFsX2NvdW50ZXIgPSAwOw0KPiA+ICsJb2xkX3VzZWRfaWR4ID0gaW5mbGlnaHRf cGFja2VkLT5vbGRfdXNlZF9pZHg7DQo+ID4gKw0KPiA+ICsJaWYgKGluZmxpZ2h0X3BhY2tlZC0+ dXNlZF9pZHggIT0gb2xkX3VzZWRfaWR4KSB7DQo+ID4gKwkJaWYgKGluZmxpZ2h0X3BhY2tlZC0+ ZGVzY1tvbGRfdXNlZF9pZHhdLmluZmxpZ2h0ID09IDApIHsNCj4gPiArCQkJaW5mbGlnaHRfcGFj a2VkLT5vbGRfdXNlZF9pZHggPQ0KPiA+ICsJCQkJaW5mbGlnaHRfcGFja2VkLT51c2VkX2lkeDsN Cj4gPiArCQkJaW5mbGlnaHRfcGFja2VkLT5vbGRfdXNlZF93cmFwX2NvdW50ZXIgPQ0KPiA+ICsJ CQkJaW5mbGlnaHRfcGFja2VkLT51c2VkX3dyYXBfY291bnRlcjsNCj4gPiArCQkJaW5mbGlnaHRf cGFja2VkLT5vbGRfZnJlZV9oZWFkID0NCj4gPiArCQkJCWluZmxpZ2h0X3BhY2tlZC0+ZnJlZV9o ZWFkOw0KPiA+ICsJCX0gZWxzZSB7DQo+ID4gKwkJCWluZmxpZ2h0X3BhY2tlZC0+dXNlZF9pZHgg PQ0KPiA+ICsJCQkJaW5mbGlnaHRfcGFja2VkLT5vbGRfdXNlZF9pZHg7DQo+ID4gKwkJCWluZmxp Z2h0X3BhY2tlZC0+dXNlZF93cmFwX2NvdW50ZXIgPQ0KPiA+ICsJCQkJaW5mbGlnaHRfcGFja2Vk LT5vbGRfdXNlZF93cmFwX2NvdW50ZXI7DQo+ID4gKwkJCWluZmxpZ2h0X3BhY2tlZC0+ZnJlZV9o ZWFkID0NCj4gPiArCQkJCWluZmxpZ2h0X3BhY2tlZC0+b2xkX2ZyZWVfaGVhZDsNCj4gPiArCQl9 DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IGluZmxpZ2h0X3BhY2tlZC0+ ZGVzY19udW07IGkrKykgew0KPiA+ICsJCWlmIChpbmZsaWdodF9wYWNrZWQtPmRlc2NbaV0uaW5m bGlnaHQgPT0gMSkNCj4gPiArCQkJcmVzdWJtaXRfbnVtKys7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ ICsJaWYgKHJlc3VibWl0X251bSkgew0KPiA+ICsJCXJlc3VibWl0ID0gY2FsbG9jKDEsIHNpemVv ZihzdHJ1Y3QgcnRlX3Zob3N0X3Jlc3VibWl0X2luZm8pKTsNCj4gPiArCQlpZiAocmVzdWJtaXQg PT0gTlVMTCkgew0KPiA+ICsJCQlSVEVfTE9HKEVSUiwgVkhPU1RfQ09ORklHLA0KPiA+ICsJCQkg IkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHJlc3VibWl0IGluZm8uXG4iKTsNCj4gPiAr CQkJcmV0dXJuIFJURV9WSE9TVF9NU0dfUkVTVUxUX0VSUjsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ ICsJCXJlc3VibWl0LT5yZXN1Ym1pdF9saXN0ID0gY2FsbG9jKHJlc3VibWl0X251bSwNCj4gPiAr CQkJc2l6ZW9mKHN0cnVjdCBydGVfdmhvc3RfcmVzdWJtaXRfZGVzYykpOw0KPiA+ICsJCWlmIChy ZXN1Ym1pdC0+cmVzdWJtaXRfbGlzdCA9PSBOVUxMKSB7DQo+ID4gKwkJCVJURV9MT0coRVJSLCBW SE9TVF9DT05GSUcsDQo+ID4gKwkJCSAiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgcmVz dWJtaXQgZGVzYy5cbiIpOw0KPiA+ICsJCQlyZXR1cm4gUlRFX1ZIT1NUX01TR19SRVNVTFRfRVJS Ow0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJbnVtID0gMDsNCj4gPiArCQlmb3IgKGkgPSAwOyBp IDwgaW5mbGlnaHRfcGFja2VkLT5kZXNjX251bTsgaSsrKSB7DQo+ID4gKwkJCWlmICh2cS0+aW5m bGlnaHRfcGFja2VkLT5kZXNjW2ldLmluZmxpZ2h0ID09IDEpIHsNCj4gPiArCQkJCXJlc3VibWl0 LT5yZXN1Ym1pdF9saXN0W251bV0uaW5kZXggPSBpOw0KPiA+ICsJCQkJcmVzdWJtaXQtPnJlc3Vi bWl0X2xpc3RbbnVtXS5jb3VudGVyID0NCj4gPiArCQkJCQlpbmZsaWdodF9wYWNrZWQtPmRlc2Nb aV0uY291bnRlcjsNCj4gPiArCQkJCW51bSsrOw0KPiA+ICsJCQl9DQo+ID4gKwkJfQ0KPiA+ICsJ CXJlc3VibWl0LT5yZXN1Ym1pdF9udW0gPSBudW07DQo+ID4gKw0KPiA+ICsJCWlmIChyZXN1Ym1p dC0+cmVzdWJtaXRfbnVtID4gMSkNCj4gPiArCQkJcXNvcnQocmVzdWJtaXQtPnJlc3VibWl0X2xp c3QsIHJlc3VibWl0LQ0KPiA+cmVzdWJtaXRfbnVtLA0KPiA+ICsJCQkJc2l6ZW9mKHN0cnVjdCBy dGVfdmhvc3RfcmVzdWJtaXRfZGVzYyksDQo+ID4gKwkJCQlyZXN1Ym1pdF9kZXNjX2NvbXBhcmUp Ow0KPiA+ICsNCj4gPiArCQl2cS0+Z2xvYmFsX2NvdW50ZXIgPSByZXN1Ym1pdC0+cmVzdWJtaXRf bGlzdFswXS5jb3VudGVyICsgMTsNCj4gPiArCQl2cS0+cmVzdWJtaXRfaW5mbGlnaHQgPSByZXN1 Ym1pdDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4gUlRFX1ZIT1NUX01TR19SRVNVTFRf T0s7DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyBpbnQNCj4gPiAgdmhvc3RfdXNlcl9zZXRf dnJpbmdfa2ljayhzdHJ1Y3QgdmlydGlvX25ldCAqKnBkZXYsIHN0cnVjdCBWaG9zdFVzZXJNc2cN Cj4gKm1zZywNCj4gPiAgCQkJaW50IG1haW5fZmQgX19ydGVfdW51c2VkKQ0KPiA+IEBAIC0xNDk5 LDYgKzE2OTUsMjAgQEAgdmhvc3RfdXNlcl9zZXRfdnJpbmdfa2ljayhzdHJ1Y3QgdmlydGlvX25l dA0KPiAqKnBkZXYsIHN0cnVjdCBWaG9zdFVzZXJNc2cgKm1zZywNCj4gPiAgCQljbG9zZSh2cS0+ a2lja2ZkKTsNCj4gPiAgCXZxLT5raWNrZmQgPSBmaWxlLmZkOw0KPiA+DQo+ID4gKwlpZiAodnFf aXNfcGFja2VkKGRldikpIHsNCj4gPiArCQlpZiAodmhvc3RfY2hlY2tfcXVldWVfaW5mbGlnaHRz X3BhY2tlZChkZXYsIHZxKSkgew0KPiA+ICsJCQlSVEVfTE9HKEVSUiwgVkhPU1RfQ09ORklHLA0K PiA+ICsJCQkJIkZhaWxlZCB0byBpbmZsaWdodHMgZm9yIHZxOiAlZFxuIiwgZmlsZS5pbmRleCk7 DQo+ID4gKwkJCXJldHVybiBSVEVfVkhPU1RfTVNHX1JFU1VMVF9FUlI7DQo+ID4gKwkJfQ0KPiA+ ICsJfSBlbHNlIHsNCj4gPiArCQlpZiAodmhvc3RfY2hlY2tfcXVldWVfaW5mbGlnaHRzX3NwbGl0 KGRldiwgdnEpKSB7DQo+ID4gKwkJCVJURV9MT0coRVJSLCBWSE9TVF9DT05GSUcsDQo+ID4gKwkJ CQkiRmFpbGVkIHRvIGluZmxpZ2h0cyBmb3IgdnE6ICVkXG4iLCBmaWxlLmluZGV4KTsNCj4gPiAr CQkJcmV0dXJuIFJURV9WSE9TVF9NU0dfUkVTVUxUX0VSUjsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ ID4gKw0KPiA+ICAJcmV0dXJuIFJURV9WSE9TVF9NU0dfUkVTVUxUX09LOw0KPiA+ICB9DQo+ID4N Cj4gPiAtLQ0KPiA+IDIuMTcuMg0KPiA+DQo=