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 76036A04BC; Thu, 8 Oct 2020 09:09:33 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6ADE11B819; Thu, 8 Oct 2020 09:09:31 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 40AE21B709 for ; Thu, 8 Oct 2020 09:09:30 +0200 (CEST) IronPort-SDR: 5d8RrYX1vK8xaNE016mPVvRlNyaUU1mjRGbks8+GKzrBH+u6URR7u91OOcNCFLTTLerWkAYs0t WjlEFAMRfzAg== X-IronPort-AV: E=McAfee;i="6000,8403,9767"; a="182712085" X-IronPort-AV: E=Sophos;i="5.77,350,1596524400"; d="scan'208";a="182712085" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Oct 2020 00:09:28 -0700 IronPort-SDR: It/DXZPpXvNcHoc01YFR+ljEp2yQd8tSmzROcREfpt+jiWsEk1ck9li8p0/CEp3+MAHugPVzg8 cw22diFfTQzA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,350,1596524400"; d="scan'208";a="355289573" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by orsmga007.jf.intel.com with ESMTP; 08 Oct 2020 00:09:27 -0700 Received: from shsmsx601.ccr.corp.intel.com (10.109.6.141) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 8 Oct 2020 00:09:27 -0700 Received: from shsmsx601.ccr.corp.intel.com (10.109.6.141) by SHSMSX601.ccr.corp.intel.com (10.109.6.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 8 Oct 2020 15:09:25 +0800 Received: from shsmsx601.ccr.corp.intel.com ([10.109.6.141]) by SHSMSX601.ccr.corp.intel.com ([10.109.6.141]) with mapi id 15.01.1713.004; Thu, 8 Oct 2020 15:09:25 +0800 From: "Liu, Yong" To: Maxime Coquelin , "Xia, Chenbo" , "Wang, Zhihong" CC: "dev@dpdk.org" Thread-Topic: [PATCH v2 5/5] vhost: add packed ring vectorized enqueue Thread-Index: AQHWj+Pac1at1FTx+U28yHDcj9BmGqmKPNmAgAMmJ2A= Date: Thu, 8 Oct 2020 07:09:25 +0000 Message-ID: <6c4c18ea376943a8bcf92dc4bbac9ce3@intel.com> References: <20200819032414.51430-2-yong.liu@intel.com> <20200921064837.15957-1-yong.liu@intel.com> <20200921064837.15957-6-yong.liu@intel.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.5.1.3 dlp-product: dlpe-windows x-originating-ip: [10.22.254.132] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2 5/5] vhost: add packed ring vectorized enqueue 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" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWF4aW1lIENvcXVlbGlu IDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gU2VudDogVHVlc2RheSwgT2N0b2JlciA2 LCAyMDIwIDExOjAwIFBNDQo+IFRvOiBMaXUsIFlvbmcgPHlvbmcubGl1QGludGVsLmNvbT47IFhp YSwgQ2hlbmJvIDxjaGVuYm8ueGlhQGludGVsLmNvbT47DQo+IFdhbmcsIFpoaWhvbmcgPHpoaWhv bmcud2FuZ0BpbnRlbC5jb20+DQo+IENjOiBkZXZAZHBkay5vcmcNCj4gU3ViamVjdDogUmU6IFtQ QVRDSCB2MiA1LzVdIHZob3N0OiBhZGQgcGFja2VkIHJpbmcgdmVjdG9yaXplZCBlbnF1ZXVlDQo+ IA0KPiANCj4gDQo+IE9uIDkvMjEvMjAgODo0OCBBTSwgTWFydmluIExpdSB3cm90ZToNCj4gPiBP cHRpbWl6ZSB2aG9zdCBwYWNrZWQgcmluZyBlbnF1ZXVlIHBhdGggd2l0aCBTSU1EIGluc3RydWN0 aW9ucy4gRm91cg0KPiA+IGRlc2NyaXB0b3JzIHN0YXR1cyBhbmQgbGVuZ3RoIGFyZSBiYXRjaGVk IGhhbmRsZWQgd2l0aCBBVlg1MTINCj4gPiBpbnN0cnVjdGlvbnMuIEFkZHJlc3MgdHJhbnNsYXRp b24gb3BlcmF0aW9ucyBhcmUgYWxzbyBhY2NlbGVyYXRlZA0KPiA+IGJ5IEFWWDUxMiBpbnN0cnVj dGlvbnMuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBNYXJ2aW4gTGl1IDx5b25nLmxpdUBpbnRl bC5jb20+DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV92aG9zdC92aG9zdC5oIGIv bGliL2xpYnJ0ZV92aG9zdC92aG9zdC5oDQo+ID4gaW5kZXggZmM3ZGFmMjE0NS4uYjc4YjJjNWMx YiAxMDA2NDQNCj4gPiAtLS0gYS9saWIvbGlicnRlX3Zob3N0L3Zob3N0LmgNCj4gPiArKysgYi9s aWIvbGlicnRlX3Zob3N0L3Zob3N0LmgNCj4gPiBAQCAtMTEzMiw0ICsxMTMyLDEwIEBAIHZob3N0 X3Jlc2VydmVfYXZhaWxfYmF0Y2hfcGFja2VkX2F2eChzdHJ1Y3QNCj4gdmlydGlvX25ldCAqZGV2 LA0KPiA+ICAJCQkJIHVpbnQxNl90IGF2YWlsX2lkeCwNCj4gPiAgCQkJCSB1aW50cHRyX3QgKmRl c2NfYWRkcnMsDQo+ID4gIAkJCQkgdWludDE2X3QgKmlkcyk7DQo+ID4gKw0KPiA+ICtpbnQNCj4g PiArdmlydGlvX2Rldl9yeF9iYXRjaF9wYWNrZWRfYXZ4KHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYs DQo+ID4gKwkJCSAgICAgICBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwNCj4gPiArCQkJICAg ICAgIHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMpOw0KPiA+ICsNCj4gPiAgI2VuZGlmIC8qIF9WSE9T VF9ORVRfQ0RFVl9IXyAqLw0KPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX3Zob3N0L3Zob3N0 X3ZlY19hdnguYw0KPiBiL2xpYi9saWJydGVfdmhvc3Qvdmhvc3RfdmVjX2F2eC5jDQo+ID4gaW5k ZXggZGM1MzIyZDAwMi4uN2QyMjUwZWQ4NiAxMDA2NDQNCj4gPiAtLS0gYS9saWIvbGlicnRlX3Zo b3N0L3Zob3N0X3ZlY19hdnguYw0KPiA+ICsrKyBiL2xpYi9saWJydGVfdmhvc3Qvdmhvc3RfdmVj X2F2eC5jDQo+ID4gQEAgLTM1LDkgKzM1LDE1IEBADQo+ID4gICNkZWZpbmUgUEFDS0VEX0FWQUlM X0ZMQUcgKCgwVUxMIHwgVlJJTkdfREVTQ19GX0FWQUlMKSA8PA0KPiBGTEFHU19CSVRTX09GRlNF VCkNCj4gPiAgI2RlZmluZSBQQUNLRURfQVZBSUxfRkxBR19XUkFQICgoMFVMTCB8IFZSSU5HX0RF U0NfRl9VU0VEKSA8PCBcDQo+ID4gIAlGTEFHU19CSVRTX09GRlNFVCkNCj4gPiArI2RlZmluZSBQ QUNLRURfV1JJVEVfQVZBSUxfRkxBRyAoUEFDS0VEX0FWQUlMX0ZMQUcgfCBcDQo+ID4gKwkoKDBV TEwgfCBWUklOR19ERVNDX0ZfV1JJVEUpIDw8IEZMQUdTX0JJVFNfT0ZGU0VUKSkNCj4gPiArI2Rl ZmluZSBQQUNLRURfV1JJVEVfQVZBSUxfRkxBR19XUkFQDQo+IChQQUNLRURfQVZBSUxfRkxBR19X UkFQIHwgXA0KPiA+ICsJKCgwVUxMIHwgVlJJTkdfREVTQ19GX1dSSVRFKSA8PCBGTEFHU19CSVRT X09GRlNFVCkpDQo+ID4NCj4gPiAgI2RlZmluZSBERVNDX0ZMQUdTX1BPUyAweGFhDQo+ID4gICNk ZWZpbmUgTUJVRl9MRU5TX1BPUyAweDY2NjYNCj4gPiArI2RlZmluZSBERVNDX0xFTlNfUE9TIDB4 NDQ0NA0KPiA+ICsjZGVmaW5lIERFU0NfTEVOU19GTEFHU19QT1MgMHhCMEIwQjBCMA0KPiA+DQo+ ID4gIGludA0KPiA+ICB2aG9zdF9yZXNlcnZlX2F2YWlsX2JhdGNoX3BhY2tlZF9hdngoc3RydWN0 IHZpcnRpb19uZXQgKmRldiwNCj4gPiBAQCAtMTc5LDMgKzE4NSwxNTQgQEAgdmhvc3RfcmVzZXJ2 ZV9hdmFpbF9iYXRjaF9wYWNrZWRfYXZ4KHN0cnVjdA0KPiB2aXJ0aW9fbmV0ICpkZXYsDQo+ID4N Cj4gPiAgCXJldHVybiAtMTsNCj4gPiAgfQ0KPiA+ICsNCj4gPiAraW50DQo+ID4gK3ZpcnRpb19k ZXZfcnhfYmF0Y2hfcGFja2VkX2F2eChzdHJ1Y3QgdmlydGlvX25ldCAqZGV2LA0KPiA+ICsJCQkg ICAgICAgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsDQo+ID4gKwkJCSAgICAgICBzdHJ1Y3Qg cnRlX21idWYgKipwa3RzKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgdnJpbmdfcGFja2VkX2Rlc2Mg KmRlc2NzID0gdnEtPmRlc2NfcGFja2VkOw0KPiA+ICsJdWludDE2X3QgYXZhaWxfaWR4ID0gdnEt Pmxhc3RfYXZhaWxfaWR4Ow0KPiA+ICsJdWludDY0X3QgZGVzY19hZGRyc1tQQUNLRURfQkFUQ0hf U0laRV07DQo+ID4gKwl1aW50MzJfdCBidWZfb2Zmc2V0ID0gZGV2LT52aG9zdF9obGVuOw0KPiA+ ICsJdWludDMyX3QgZGVzY19zdGF0dXM7DQo+ID4gKwl1aW50NjRfdCBsZW5zW1BBQ0tFRF9CQVRD SF9TSVpFXTsNCj4gPiArCXVpbnQxNl90IGk7DQo+ID4gKwl2b2lkICpkZXNjX2FkZHI7DQo+ID4g Kwl1aW50OF90IGNtcF9sb3csIGNtcF9oaWdoLCBjbXBfcmVzdWx0Ow0KPiA+ICsNCj4gPiArCWlm ICh1bmxpa2VseShhdmFpbF9pZHggJiBQQUNLRURfQkFUQ0hfTUFTSykpDQo+ID4gKwkJcmV0dXJu IC0xOw0KPiANCj4gU2FtZSBjb21tZW50IGFzIGZvciBwYXRjaCA0LiBQYWNrZWQgcmluZyBzaXpl IG1heSBub3QgYmUgYSBwb3cyLg0KPiANClRoYW5rcywgd2lsbCBmaXggaW4gbmV4dCB2ZXJzaW9u Lg0KDQo+ID4gKwkvKiBjaGVjayByZWZjbnQgYW5kIG5iX3NlZ3MgKi8NCj4gPiArCV9fbTI1Nmkg bWJ1Zl9yZWYgPSBfbW0yNTZfc2V0MV9lcGk2NHgoREVGQVVMVF9SRUFSTV9EQVRBKTsNCj4gPiAr DQo+ID4gKwkvKiBsb2FkIGZvdXIgbWJ1ZnMgcmVhcm0gZGF0YSAqLw0KPiA+ICsJX19tMjU2aSBt YnVmcyA9IF9tbTI1Nl9zZXRfZXBpNjR4KA0KPiA+ICsJCQkJKnBrdHNbM10tPnJlYXJtX2RhdGEs DQo+ID4gKwkJCQkqcGt0c1syXS0+cmVhcm1fZGF0YSwNCj4gPiArCQkJCSpwa3RzWzFdLT5yZWFy bV9kYXRhLA0KPiA+ICsJCQkJKnBrdHNbMF0tPnJlYXJtX2RhdGEpOw0KPiA+ICsNCj4gPiArCXVp bnQxNl90IGNtcCA9IF9tbTI1Nl9jbXBuZXFfZXB1MTZfbWFzayhtYnVmcywgbWJ1Zl9yZWYpOw0K PiA+ICsJaWYgKGNtcCAmIE1CVUZfTEVOU19QT1MpDQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsN Cj4gPiArCS8qIGNoZWNrIGRlc2Mgc3RhdHVzICovDQo+ID4gKwlkZXNjX2FkZHIgPSAmdnEtPmRl c2NfcGFja2VkW2F2YWlsX2lkeF07DQo+ID4gKwlfX201MTJpIGRlc2NfdmVjID0gX21tNTEyX2xv YWR1X3NpNTEyKGRlc2NfYWRkcik7DQo+ID4gKw0KPiA+ICsJX19tNTEyaSBhdmFpbF9mbGFnX3Zl YzsNCj4gPiArCV9fbTUxMmkgdXNlZF9mbGFnX3ZlYzsNCj4gPiArCWlmICh2cS0+YXZhaWxfd3Jh cF9jb3VudGVyKSB7DQo+ID4gKyNpZiBkZWZpbmVkKFJURV9BUkNIX0k2ODYpDQo+IA0KPiBJcyBz dXBwb3J0aW5nIEFWWDUxMiBvbiBpNjg2IHJlYWxseSB1c2VmdWwvbmVjZXNzYXJ5Pw0KPiANCkl0 IGlzIHVzZWxlc3MgZm9yIGZ1bmN0aW9uIHBvaW50IG9mIHZpZXcuICBIZXJlIGlzIGZvciBzdWNj ZXNzZnVsIGNvbXBpbGF0aW9uIGlmIGVuYWJsZWQgaTY4NiBidWlsZC4gDQoNCj4gPiArCQlhdmFp bF9mbGFnX3ZlYyA9DQo+IF9tbTUxMl9zZXQ0X2VwaTY0KFBBQ0tFRF9XUklURV9BVkFJTF9GTEFH LA0KPiA+ICsJCQkJCTB4MCwgUEFDS0VEX1dSSVRFX0FWQUlMX0ZMQUcsDQo+IDB4MCk7DQo+ID4g KwkJdXNlZF9mbGFnX3ZlYyA9IF9tbTUxMl9zZXQ0X2VwaTY0KFBBQ0tFRF9GTEFHU19NQVNLLA0K PiAweDAsDQo+ID4gKwkJCQkJUEFDS0VEX0ZMQUdTX01BU0ssIDB4MCk7DQo+ID4gKyNlbHNlDQo+ ID4gKwkJYXZhaWxfZmxhZ192ZWMgPQ0KPiBfbW01MTJfbWFza3pfc2V0MV9lcGk2NChERVNDX0ZM QUdTX1BPUywNCj4gPiArCQkJCQlQQUNLRURfV1JJVEVfQVZBSUxfRkxBRyk7DQo+ID4gKwkJdXNl ZF9mbGFnX3ZlYyA9DQo+IF9tbTUxMl9tYXNrel9zZXQxX2VwaTY0KERFU0NfRkxBR1NfUE9TLA0K PiA+ICsJCQkJCVBBQ0tFRF9GTEFHU19NQVNLKTsNCj4gPiArI2VuZGlmDQo+ID4gKwl9IGVsc2Ug ew0KPiA+ICsjaWYgZGVmaW5lZChSVEVfQVJDSF9JNjg2KQ0KPiA+ICsJCWF2YWlsX2ZsYWdfdmVj ID0gX21tNTEyX3NldDRfZXBpNjQoDQo+ID4gKwkJCQkJUEFDS0VEX1dSSVRFX0FWQUlMX0ZMQUdf V1JBUCwNCj4gMHgwLA0KPiA+ICsJCQkJCVBBQ0tFRF9XUklURV9BVkFJTF9GTEFHLCAweDApOw0K PiA+ICsJCXVzZWRfZmxhZ192ZWMgPSBfbW01MTJfc2V0NF9lcGk2NCgweDAsIDB4MCwgMHgwLCAw eDApOw0KPiA+ICsjZWxzZQ0KPiA+ICsJCWF2YWlsX2ZsYWdfdmVjID0NCj4gX21tNTEyX21hc2t6 X3NldDFfZXBpNjQoREVTQ19GTEFHU19QT1MsDQo+ID4gKwkJCQkJUEFDS0VEX1dSSVRFX0FWQUlM X0ZMQUdfV1JBUCk7DQo+ID4gKwkJdXNlZF9mbGFnX3ZlYyA9IF9tbTUxMl9zZXR6ZXJvX2VwaTMy KCk7DQo+ID4gKyNlbmRpZg0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWRlc2Nfc3RhdHVzID0NCj4g X21tNTEyX21hc2tfY21wX2VwdTE2X21hc2soQkFUQ0hfRkxBR1NfTUFTSywgZGVzY192ZWMsDQo+ ID4gKwkJCQlhdmFpbF9mbGFnX3ZlYywgX01NX0NNUElOVF9ORSk7DQo+ID4gKwlpZiAoZGVzY19z dGF0dXMpDQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsNCj4gPiArCWlmIChkZXYtPmZlYXR1cmVz ICYgKDFVTEwgPDwgVklSVElPX0ZfSU9NTVVfUExBVEZPUk0pKSB7DQo+ID4gKwkJdmhvc3RfZm9y X2VhY2hfdHJ5X3Vucm9sbChpLCAwLCBQQUNLRURfQkFUQ0hfU0laRSkgew0KPiA+ICsJCQl1aW50 NjRfdCBzaXplID0gKHVpbnQ2NF90KWRlc2NzW2F2YWlsX2lkeCArIGldLmxlbjsNCj4gPiArCQkJ ZGVzY19hZGRyc1tpXSA9IF9fdmhvc3RfaW92YV90b192dmEoZGV2LCB2cSwNCj4gPiArCQkJCWRl c2NzW2F2YWlsX2lkeCArIGldLmFkZHIsICZzaXplLA0KPiA+ICsJCQkJVkhPU1RfQUNDRVNTX1JX KTsNCj4gPiArDQo+ID4gKwkJCWlmICghZGVzY19hZGRyc1tpXSkNCj4gPiArCQkJCXJldHVybiAt MTsNCj4gPiArDQo+ID4gKwkJCXJ0ZV9wcmVmZXRjaDAocnRlX3BrdG1idWZfbXRvZF9vZmZzZXQo cGt0c1tpXSwgdm9pZA0KPiAqLA0KPiA+ICsJCQkJCTApKTsNCj4gPiArCQl9DQo+ID4gKwl9IGVs c2Ugew0KPiA+ICsJCS8qIGNoZWNrIGJ1ZmZlciBmaXQgaW50byBvbmUgcmVnaW9uICYgdHJhbnNs YXRlIGFkZHJlc3MgKi8NCj4gPiArCQlfX201MTJpIHJlZ2lvbnNfbG93X2FkZHJzID0NCj4gPiAr CQkJX21tNTEyX2xvYWR1X3NpNTEyKCh2b2lkICopJmRldi0NCj4gPnJlZ2lvbnNfbG93X2FkZHJz KTsNCj4gPiArCQlfX201MTJpIHJlZ2lvbnNfaGlnaF9hZGRycyA9DQo+ID4gKwkJCV9tbTUxMl9s b2FkdV9zaTUxMigodm9pZCAqKSZkZXYtDQo+ID5yZWdpb25zX2hpZ2hfYWRkcnMpOw0KPiA+ICsJ CXZob3N0X2Zvcl9lYWNoX3RyeV91bnJvbGwoaSwgMCwgUEFDS0VEX0JBVENIX1NJWkUpIHsNCj4g PiArCQkJdWludDY0X3QgYWRkcl9sb3cgPSBkZXNjc1thdmFpbF9pZHggKyBpXS5hZGRyOw0KPiA+ ICsJCQl1aW50NjRfdCBhZGRyX2hpZ2ggPSBhZGRyX2xvdyArDQo+ID4gKwkJCQkJCWRlc2NzW2F2 YWlsX2lkeCArIGldLmxlbjsNCj4gPiArCQkJX19tNTEyaSBsb3dfYWRkcl92ZWMgPQ0KPiBfbW01 MTJfc2V0MV9lcGk2NChhZGRyX2xvdyk7DQo+ID4gKwkJCV9fbTUxMmkgaGlnaF9hZGRyX3ZlYyA9 DQo+IF9tbTUxMl9zZXQxX2VwaTY0KGFkZHJfaGlnaCk7DQo+ID4gKw0KPiA+ICsJCQljbXBfbG93 ID0NCj4gX21tNTEyX2NtcF9lcGk2NF9tYXNrKGxvd19hZGRyX3ZlYywNCj4gPiArCQkJCQlyZWdp b25zX2xvd19hZGRycywNCj4gX01NX0NNUElOVF9OTFQpOw0KPiA+ICsJCQljbXBfaGlnaCA9DQo+ IF9tbTUxMl9jbXBfZXBpNjRfbWFzayhoaWdoX2FkZHJfdmVjLA0KPiA+ICsJCQkJCXJlZ2lvbnNf aGlnaF9hZGRycywNCj4gX01NX0NNUElOVF9MVCk7DQo+ID4gKwkJCWNtcF9yZXN1bHQgPSBjbXBf bG93ICYgY21wX2hpZ2g7DQo+ID4gKwkJCWludCBpbmRleCA9IF9fYnVpbHRpbl9jdHooY21wX3Jl c3VsdCk7DQo+ID4gKwkJCWlmICh1bmxpa2VseSgodWludDMyX3QpaW5kZXggPj0gZGV2LT5tZW0t Pm5yZWdpb25zKSkNCj4gPiArCQkJCXJldHVybiAtMTsNCj4gPiArDQo+ID4gKwkJCWRlc2NfYWRk cnNbaV0gPSBhZGRyX2xvdyArDQo+ID4gKwkJCQlkZXYtPm1lbS0+cmVnaW9uc1tpbmRleF0uaG9z dF91c2VyX2FkZHIgLQ0KPiA+ICsJCQkJZGV2LT5tZW0tPnJlZ2lvbnNbaW5kZXhdLmd1ZXN0X3Bo eXNfYWRkcjsNCj4gPiArCQkJcnRlX3ByZWZldGNoMChydGVfcGt0bWJ1Zl9tdG9kX29mZnNldChw a3RzW2ldLCB2b2lkDQo+ICosDQo+ID4gKwkJCQkJMCkpOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4g PiArDQo+ID4gKwkvKiBjaGVjayBsZW5ndGggaXMgZW5vdWdoICovDQo+ID4gKwlfX201MTJpIHBr dF9sZW5zID0gX21tNTEyX3NldF9lcGkzMigNCj4gPiArCQkJMCwgcGt0c1szXS0+cGt0X2xlbiwg MCwgMCwNCj4gPiArCQkJMCwgcGt0c1syXS0+cGt0X2xlbiwgMCwgMCwNCj4gPiArCQkJMCwgcGt0 c1sxXS0+cGt0X2xlbiwgMCwgMCwNCj4gPiArCQkJMCwgcGt0c1swXS0+cGt0X2xlbiwgMCwgMCk7 DQo+ID4gKw0KPiA+ICsJX19tNTEyaSBtYnVmX2xlbl9vZmZzZXQgPQ0KPiBfbW01MTJfbWFza3pf c2V0MV9lcGkzMihERVNDX0xFTlNfUE9TLA0KPiA+ICsJCQkJCWRldi0+dmhvc3RfaGxlbik7DQo+ ID4gKwlfX201MTJpIGJ1Zl9sZW5fdmVjID0gX21tNTEyX2FkZF9lcGkzMihwa3RfbGVucywNCj4g bWJ1Zl9sZW5fb2Zmc2V0KTsNCj4gPiArCXVpbnQxNl90IGxlbnNfY21wID0NCj4gX21tNTEyX21h c2tfY21wX2VwdTMyX21hc2soREVTQ19MRU5TX1BPUywNCj4gPiArCQkJCWRlc2NfdmVjLCBidWZf bGVuX3ZlYywgX01NX0NNUElOVF9MVCk7DQo+ID4gKwlpZiAobGVuc19jbXApDQo+ID4gKwkJcmV0 dXJuIC0xOw0KPiA+ICsNCj4gPiArCXZob3N0X2Zvcl9lYWNoX3RyeV91bnJvbGwoaSwgMCwgUEFD S0VEX0JBVENIX1NJWkUpIHsNCj4gPiArCQlydGVfbWVtY3B5KCh2b2lkICopKHVpbnRwdHJfdCko ZGVzY19hZGRyc1tpXSArIGJ1Zl9vZmZzZXQpLA0KPiA+ICsJCQkgICBydGVfcGt0bWJ1Zl9tdG9k X29mZnNldChwa3RzW2ldLCB2b2lkICosIDApLA0KPiA+ICsJCQkgICBwa3RzW2ldLT5wa3RfbGVu KTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAodW5saWtlbHkoKGRldi0+ZmVhdHVyZXMgJiAo MVVMTCA8PCBWSE9TVF9GX0xPR19BTEwpKSkpIHsNCj4gPiArCQl2aG9zdF9mb3JfZWFjaF90cnlf dW5yb2xsKGksIDAsIFBBQ0tFRF9CQVRDSF9TSVpFKSB7DQo+ID4gKwkJCWxlbnNbaV0gPSBkZXNj c1thdmFpbF9pZHggKyBpXS5sZW47DQo+ID4gKwkJCXZob3N0X2xvZ19jYWNoZV93cml0ZV9pb3Zh KGRldiwgdnEsDQo+ID4gKwkJCQlkZXNjc1thdmFpbF9pZHggKyBpXS5hZGRyLCBsZW5zW2ldKTsN Cj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJdnFfaW5jX2xhc3RfYXZhaWxfcGFja2Vk KHZxLCBQQUNLRURfQkFUQ0hfU0laRSk7DQo+ID4gKwl2cV9pbmNfbGFzdF91c2VkX3BhY2tlZCh2 cSwgUEFDS0VEX0JBVENIX1NJWkUpOw0KPiA+ICsJLyogc2F2ZSBsZW4gYW5kIGZsYWdzLCBza2lw IGFkZHIgYW5kIGlkICovDQo+ID4gKwlfX201MTJpIGRlc2NfdXBkYXRlZCA9IF9tbTUxMl9tYXNr X2FkZF9lcGkxNihkZXNjX3ZlYywNCj4gPiArCQkJCQlERVNDX0xFTlNfRkxBR1NfUE9TLCBidWZf bGVuX3ZlYywNCj4gPiArCQkJCQl1c2VkX2ZsYWdfdmVjKTsNCj4gPiArCV9tbTUxMl9zdG9yZXVf c2k1MTIoZGVzY19hZGRyLCBkZXNjX3VwZGF0ZWQpOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0K PiA+ICt9DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfdmhvc3QvdmlydGlvX25ldC5jIGIv bGliL2xpYnJ0ZV92aG9zdC92aXJ0aW9fbmV0LmMNCj4gPiBpbmRleCBlNGQyZTJlN2Q2Li41YzU2 YThkNmZmIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfdmhvc3QvdmlydGlvX25ldC5jDQo+ ID4gKysrIGIvbGliL2xpYnJ0ZV92aG9zdC92aXJ0aW9fbmV0LmMNCj4gPiBAQCAtMTM1NCw2ICsx MzU0LDIxIEBAIHZpcnRpb19kZXZfcnhfc2luZ2xlX3BhY2tlZChzdHJ1Y3QgdmlydGlvX25ldA0K PiAqZGV2LA0KPiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPg0KPiA+ICtzdGF0aWMgX19ydGVf YWx3YXlzX2lubGluZSBpbnQNCj4gPiArdmlydGlvX2Rldl9yeF9oYW5kbGVfYmF0Y2hfcGFja2Vk KHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsDQo+ID4gKwkJCSAgIHN0cnVjdCB2aG9zdF92aXJ0cXVl dWUgKnZxLA0KPiA+ICsJCQkgICBzdHJ1Y3QgcnRlX21idWYgKipwa3RzKQ0KPiA+ICsNCj4gPiAr ew0KPiA+ICsJaWYgKHVubGlrZWx5KGRldi0+dmVjdG9yaXplZCkpDQo+ID4gKyNpZmRlZiBDQ19B Vlg1MTJfU1VQUE9SVA0KPiA+ICsJCXJldHVybiB2aXJ0aW9fZGV2X3J4X2JhdGNoX3BhY2tlZF9h dngoZGV2LCB2cSwgcGt0cyk7DQo+ID4gKyNlbHNlDQo+ID4gKwkJcmV0dXJuIHZpcnRpb19kZXZf cnhfYmF0Y2hfcGFja2VkKGRldiwgdnEsIHBrdHMpOw0KPiA+ICsjZW5kaWYNCj4gPiArCXJldHVy biB2aXJ0aW9fZGV2X3J4X2JhdGNoX3BhY2tlZChkZXYsIHZxLCBwa3RzKTsNCj4gDQo+IEl0IHNo b3VsZCBiZSBhcyBiZWxvdyB0byBub3QgaGF2ZSBhbnkgcGVyZm9ybWFuY2UgaW1wYWN0IHdoZW4N Cj4gQ0NfQVZYNTEyX1NVUFBPUlQgaXMgbm90IHNldDoNCj4gDQo+ICNpZmRlZiBDQ19BVlg1MTJf U1VQUE9SVA0KPiAJaWYgKHVubGlrZWx5KGRldi0+dmVjdG9yaXplZCkpDQo+IAkJcmV0dXJuIHZp cnRpb19kZXZfcnhfYmF0Y2hfcGFja2VkX2F2eChkZXYsIHZxLCBwa3RzKTsNCj4gI2Vsc2UNCj4g CXJldHVybiB2aXJ0aW9fZGV2X3J4X2JhdGNoX3BhY2tlZChkZXYsIHZxLCBwa3RzKTsNCj4gI2Vu ZGlmDQo+IA0KR290LCB3aWxsIGZpeCBpbiBuZXh0IHZlcnNpb24uDQoNCj4gPiArfQ0KPiA+ICsN Cj4gPiAgc3RhdGljIF9fcnRlX25vaW5saW5lIHVpbnQzMl90DQo+ID4gIHZpcnRpb19kZXZfcnhf cGFja2VkKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsDQo+ID4gIAkJICAgICBzdHJ1Y3Qgdmhvc3Rf dmlydHF1ZXVlICpfX3J0ZV9yZXN0cmljdCB2cSwNCj4gPiBAQCAtMTM2Nyw4ICsxMzgyLDggQEAg dmlydGlvX2Rldl9yeF9wYWNrZWQoc3RydWN0IHZpcnRpb19uZXQgKmRldiwNCj4gPiAgCQlydGVf cHJlZmV0Y2gwKCZ2cS0+ZGVzY19wYWNrZWRbdnEtPmxhc3RfYXZhaWxfaWR4XSk7DQo+ID4NCj4g PiAgCQlpZiAocmVtYWluZWQgPj0gUEFDS0VEX0JBVENIX1NJWkUpIHsNCj4gPiAtCQkJaWYgKCF2 aXJ0aW9fZGV2X3J4X2JhdGNoX3BhY2tlZChkZXYsIHZxLA0KPiA+IC0JCQkJCQkJJnBrdHNbcGt0 X2lkeF0pKSB7DQo+ID4gKwkJCWlmICghdmlydGlvX2Rldl9yeF9oYW5kbGVfYmF0Y2hfcGFja2Vk KGRldiwgdnEsDQo+ID4gKwkJCQkmcGt0c1twa3RfaWR4XSkpIHsNCj4gPiAgCQkJCXBrdF9pZHgg Kz0gUEFDS0VEX0JBVENIX1NJWkU7DQo+ID4gIAkJCQlyZW1haW5lZCAtPSBQQUNLRURfQkFUQ0hf U0laRTsNCj4gPiAgCQkJCWNvbnRpbnVlOw0KPiA+DQoNCg==