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 DB33DA04BC; Fri, 9 Oct 2020 10:00:07 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D46241C19C; Fri, 9 Oct 2020 10:00:05 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 4334C1BF19 for ; Fri, 9 Oct 2020 10:00:03 +0200 (CEST) IronPort-SDR: KkMBj7vD3Orj/UdILX8ucgxBs+VkIyohrDPW8fov5a5Bjewi391DWC+zoYwvrcrGYJOr3H2ji5 jH2/O3Hpc9Vg== X-IronPort-AV: E=McAfee;i="6000,8403,9768"; a="250150284" X-IronPort-AV: E=Sophos;i="5.77,354,1596524400"; d="scan'208";a="250150284" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Oct 2020 01:00:01 -0700 IronPort-SDR: BFP+/aU+jWvF7OMe0civ4xJc9DfSGLarVfsq8AD75G7bdymWRmYRBjZd56mz7pKI0OAM1tNu03 7FD5Ke08Dxcw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,354,1596524400"; d="scan'208";a="419346153" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga001.fm.intel.com with ESMTP; 09 Oct 2020 01:00:01 -0700 Received: from shsmsx602.ccr.corp.intel.com (10.109.6.142) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 9 Oct 2020 01:00:00 -0700 Received: from shsmsx601.ccr.corp.intel.com (10.109.6.141) by SHSMSX602.ccr.corp.intel.com (10.109.6.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 9 Oct 2020 15:59:58 +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; Fri, 9 Oct 2020 15:59:58 +0800 From: "Liu, Yong" To: Maxime Coquelin , "Xia, Chenbo" , "Wang, Zhihong" CC: "dev@dpdk.org" Thread-Topic: [PATCH v2 4/5] vhost: add packed ring vectorized dequeue Thread-Index: AQHWj+PZI29HI6giYk+tJlaZHgUyPKmKQhmAgATBaEA= Date: Fri, 9 Oct 2020 07:59:58 +0000 Message-ID: <51ab0e51e93649e69cfae6ce9ba9cfd0@intel.com> References: <20200819032414.51430-2-yong.liu@intel.com> <20200921064837.15957-1-yong.liu@intel.com> <20200921064837.15957-5-yong.liu@intel.com> <623bd2a5-9ab7-0f64-7099-f64c350cfeba@redhat.com> In-Reply-To: <623bd2a5-9ab7-0f64-7099-f64c350cfeba@redhat.com> 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.239.127.36] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2 4/5] vhost: add packed ring vectorized dequeue 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 LCAyMDIwIDExOjE5IFBNDQo+IFRvOiBMaXUsIFlvbmcgPHlvbmcubGl1QGludGVsLmNvbT47IFhp YSwgQ2hlbmJvIDxjaGVuYm8ueGlhQGludGVsLmNvbT47DQo+IFdhbmcsIFpoaWhvbmcgPHpoaWhv bmcud2FuZ0BpbnRlbC5jb20+DQo+IENjOiBkZXZAZHBkay5vcmcNCj4gU3ViamVjdDogUmU6IFtQ QVRDSCB2MiA0LzVdIHZob3N0OiBhZGQgcGFja2VkIHJpbmcgdmVjdG9yaXplZCBkZXF1ZXVlDQo+ IA0KPiANCj4gDQo+IE9uIDkvMjEvMjAgODo0OCBBTSwgTWFydmluIExpdSB3cm90ZToNCj4gPiBP cHRpbWl6ZSB2aG9zdCBwYWNrZWQgcmluZyBkZXF1ZXVlIHBhdGggd2l0aCBTSU1EIGluc3RydWN0 aW9ucy4gRm91cg0KPiA+IGRlc2NyaXB0b3JzIHN0YXR1cyBjaGVjayBhbmQgd3JpdGViYWNrIGFy ZSBiYXRjaGVkIGhhbmRsZWQgd2l0aCBBVlg1MTINCj4gPiBpbnN0cnVjdGlvbnMuIEFkZHJlc3Mg dHJhbnNsYXRpb24gb3BlcmF0aW9ucyBhcmUgYWxzbyBhY2NlbGVyYXRlZCBieQ0KPiA+IEFWWDUx MiBpbnN0cnVjdGlvbnMuDQo+ID4NCj4gPiBJZiBwbGF0Zm9ybSBvciBjb21waWxlciBub3Qgc3Vw cG9ydCB2ZWN0b3JpemF0aW9uLCB3aWxsIGZhbGxiYWNrIHRvDQo+ID4gZGVmYXVsdCBwYXRoLg0K PiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogTWFydmluIExpdSA8eW9uZy5saXVAaW50ZWwuY29tPg0K PiA+DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfdmhvc3QvbWVzb24uYnVpbGQgYi9saWIv bGlicnRlX3Zob3N0L21lc29uLmJ1aWxkDQo+ID4gaW5kZXggY2M5YWE2NWM2Ny4uYzE0ODE4MDJk NyAxMDA2NDQNCj4gPiAtLS0gYS9saWIvbGlicnRlX3Zob3N0L21lc29uLmJ1aWxkDQo+ID4gKysr IGIvbGliL2xpYnJ0ZV92aG9zdC9tZXNvbi5idWlsZA0KPiA+IEBAIC04LDYgKzgsMjIgQEAgZW5k aWYNCj4gPiAgaWYgaGFzX2xpYm51bWEgPT0gMQ0KPiA+ICAJZHBka19jb25mLnNldDEwKCdSVEVf TElCUlRFX1ZIT1NUX05VTUEnLCB0cnVlKQ0KPiA+ICBlbmRpZg0KPiA+ICsNCj4gPiAraWYgYXJj aF9zdWJkaXIgPT0gJ3g4NicNCj4gPiArICAgICAgICBpZiBub3QgbWFjaGluZV9hcmdzLmNvbnRh aW5zKCctbW5vLWF2eDUxMmYnKQ0KPiA+ICsgICAgICAgICAgICAgICAgaWYgY2MuaGFzX2FyZ3Vt ZW50KCctbWF2eDUxMmYnKSBhbmQgY2MuaGFzX2FyZ3VtZW50KCctDQo+IG1hdng1MTJ2bCcpIGFu ZCBjYy5oYXNfYXJndW1lbnQoJy1tYXZ4NTEyYncnKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBjZmxhZ3MgKz0gWyctRENDX0FWWDUxMl9TVVBQT1JUJ10NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgdmhvc3RfYXZ4NTEyX2xpYiA9IHN0YXRpY19saWJyYXJ5KCd2aG9zdF9hdng1 MTJfbGliJywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICd2aG9zdF92ZWNfYXZ4LmMnLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiBbc3RhdGljX3J0ZV9lYWwsDQo+IHN0YXRp Y19ydGVfbWVtcG9vbCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdGF0aWNfcnRlX21idWYsIHN0YXRpY19ydGVfZXRoZGV2LA0KPiBzdGF0 aWNfcnRlX25ldF0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzOiBpbmNsdWRlcywNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfYXJnczogW2NmbGFncywgJy1tYXZ4 NTEyZicsICctbWF2eDUxMmJ3JywgJy0NCj4gbWF2eDUxMnZsJ10pDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIG9ianMgKz0gdmhvc3RfYXZ4NTEyX2xpYi5leHRyYWN0X29iamVjdHMoJ3Zo b3N0X3ZlY19hdnguYycpDQo+ID4gKyAgICAgICAgICAgICAgICBlbmRpZg0KPiA+ICsgICAgICAg IGVuZGlmDQo+ID4gK2VuZGlmDQo+ID4gKw0KPiA+ICBpZiAodG9vbGNoYWluID09ICdnY2MnIGFu ZCBjYy52ZXJzaW9uKCkudmVyc2lvbl9jb21wYXJlKCc+PTguMy4wJykpDQo+ID4gIAljZmxhZ3Mg Kz0gJy1EVkhPU1RfR0NDX1VOUk9MTF9QUkFHTUEnDQo+ID4gIGVsaWYgKHRvb2xjaGFpbiA9PSAn Y2xhbmcnIGFuZCBjYy52ZXJzaW9uKCkudmVyc2lvbl9jb21wYXJlKCc+PTMuNy4wJykpDQo+ID4g ZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfdmhvc3Qvdmhvc3QuaCBiL2xpYi9saWJydGVfdmhvc3Qv dmhvc3QuaA0KPiA+IGluZGV4IDRhODFmMThmMDEuLmZjN2RhZjIxNDUgMTAwNjQ0DQo+ID4gLS0t IGEvbGliL2xpYnJ0ZV92aG9zdC92aG9zdC5oDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV92aG9zdC92 aG9zdC5oDQo+ID4gQEAgLTExMjQsNCArMTEyNCwxMiBAQCB2aXJ0aW9fZGV2X3BrdG1idWZfYWxs b2Moc3RydWN0IHZpcnRpb19uZXQNCj4gKmRldiwgc3RydWN0IHJ0ZV9tZW1wb29sICptcCwNCj4g PiAgCXJldHVybiBOVUxMOw0KPiA+ICB9DQo+ID4NCj4gPiAraW50DQo+ID4gK3Zob3N0X3Jlc2Vy dmVfYXZhaWxfYmF0Y2hfcGFja2VkX2F2eChzdHJ1Y3QgdmlydGlvX25ldCAqZGV2LA0KPiA+ICsJ CQkJIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLA0KPiA+ICsJCQkJIHN0cnVjdCBydGVfbWVt cG9vbCAqbWJ1Zl9wb29sLA0KPiA+ICsJCQkJIHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMsDQo+ID4g KwkJCQkgdWludDE2X3QgYXZhaWxfaWR4LA0KPiA+ICsJCQkJIHVpbnRwdHJfdCAqZGVzY19hZGRy cywNCj4gPiArCQkJCSB1aW50MTZfdCAqaWRzKTsNCj4gPiAgI2VuZGlmIC8qIF9WSE9TVF9ORVRf Q0RFVl9IXyAqLw0KPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX3Zob3N0L3Zob3N0X3ZlY19h dnguYw0KPiBiL2xpYi9saWJydGVfdmhvc3Qvdmhvc3RfdmVjX2F2eC5jDQo+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi5kYzUzMjJkMDAyDQo+ID4gLS0tIC9k ZXYvbnVsbA0KPiA+ICsrKyBiL2xpYi9saWJydGVfdmhvc3Qvdmhvc3RfdmVjX2F2eC5jDQo+ID4g QEAgLTAsMCArMSwxODEgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0z LUNsYXVzZQ0KPiA+ICsgKiBDb3B5cmlnaHQoYykgMjAxMC0yMDE2IEludGVsIENvcnBvcmF0aW9u DQo+ID4gKyAqLw0KPiA+ICsjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVk ZSAidmhvc3QuaCINCj4gPiArDQo+ID4gKyNkZWZpbmUgQllURV9TSVpFIDgNCj4gPiArLyogcmVm ZXJlbmNlIGNvdW50IG9mZnNldCBpbiBtYnVmIHJlYXJtIGRhdGEgKi8NCj4gPiArI2RlZmluZSBS RUZDTlRfQklUU19PRkZTRVQgKChvZmZzZXRvZihzdHJ1Y3QgcnRlX21idWYsIHJlZmNudCkgLSBc DQo+ID4gKwlvZmZzZXRvZihzdHJ1Y3QgcnRlX21idWYsIHJlYXJtX2RhdGEpKSAqIEJZVEVfU0la RSkNCj4gPiArLyogc2VnbWVudCBudW1iZXIgb2Zmc2V0IGluIG1idWYgcmVhcm0gZGF0YSAqLw0K PiA+ICsjZGVmaW5lIFNFR19OVU1fQklUU19PRkZTRVQgKChvZmZzZXRvZihzdHJ1Y3QgcnRlX21i dWYsIG5iX3NlZ3MpIC0gXA0KPiA+ICsJb2Zmc2V0b2Yoc3RydWN0IHJ0ZV9tYnVmLCByZWFybV9k YXRhKSkgKiBCWVRFX1NJWkUpDQo+ID4gKw0KPiA+ICsvKiBkZWZhdWx0IHJlYXJtIGRhdGEgKi8N Cj4gPiArI2RlZmluZSBERUZBVUxUX1JFQVJNX0RBVEEgKDFVTEwgPDwgU0VHX05VTV9CSVRTX09G RlNFVCB8IFwNCj4gPiArCTFVTEwgPDwgUkVGQ05UX0JJVFNfT0ZGU0VUKQ0KPiA+ICsNCj4gPiAr I2RlZmluZSBERVNDX0ZMQUdTX1NIT1JUX09GRlNFVCAob2Zmc2V0b2Yoc3RydWN0IHZyaW5nX3Bh Y2tlZF9kZXNjLA0KPiBmbGFncykgLyBcDQo+ID4gKwlzaXplb2YodWludDE2X3QpKQ0KPiA+ICsN Cj4gPiArI2RlZmluZSBERVNDX0ZMQUdTX1NIT1JUX1NJWkUgKHNpemVvZihzdHJ1Y3QgdnJpbmdf cGFja2VkX2Rlc2MpIC8gXA0KPiA+ICsJc2l6ZW9mKHVpbnQxNl90KSkNCj4gPiArI2RlZmluZSBC QVRDSF9GTEFHU19NQVNLICgxIDw8IERFU0NfRkxBR1NfU0hPUlRfT0ZGU0VUIHwgXA0KPiA+ICsJ MSA8PCAoREVTQ19GTEFHU19TSE9SVF9PRkZTRVQgKyBERVNDX0ZMQUdTX1NIT1JUX1NJWkUpIHwg XA0KPiA+ICsJMSA8PCAoREVTQ19GTEFHU19TSE9SVF9PRkZTRVQgKyBERVNDX0ZMQUdTX1NIT1JU X1NJWkUgKiAyKSAgfA0KPiBcDQo+ID4gKwkxIDw8IChERVNDX0ZMQUdTX1NIT1JUX09GRlNFVCAr IERFU0NfRkxBR1NfU0hPUlRfU0laRSAqIDMpKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBGTEFHU19C SVRTX09GRlNFVCAoKG9mZnNldG9mKHN0cnVjdCB2cmluZ19wYWNrZWRfZGVzYywgZmxhZ3MpIC0g XA0KPiA+ICsJb2Zmc2V0b2Yoc3RydWN0IHZyaW5nX3BhY2tlZF9kZXNjLCBsZW4pKSAqIEJZVEVf U0laRSkNCj4gPiArDQo+ID4gKyNkZWZpbmUgUEFDS0VEX0ZMQUdTX01BU0sgKCgwVUxMIHwgVlJJ TkdfREVTQ19GX0FWQUlMIHwNCj4gVlJJTkdfREVTQ19GX1VTRUQpIFwNCj4gPiArCTw8IEZMQUdT X0JJVFNfT0ZGU0VUKQ0KPiA+ICsjZGVmaW5lIFBBQ0tFRF9BVkFJTF9GTEFHICgoMFVMTCB8IFZS SU5HX0RFU0NfRl9BVkFJTCkgPDwNCj4gRkxBR1NfQklUU19PRkZTRVQpDQo+ID4gKyNkZWZpbmUg UEFDS0VEX0FWQUlMX0ZMQUdfV1JBUCAoKDBVTEwgfCBWUklOR19ERVNDX0ZfVVNFRCkgPDwgXA0K PiA+ICsJRkxBR1NfQklUU19PRkZTRVQpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIERFU0NfRkxBR1Nf UE9TIDB4YWENCj4gPiArI2RlZmluZSBNQlVGX0xFTlNfUE9TIDB4NjY2Ng0KPiA+ICsNCj4gPiAr aW50DQo+ID4gK3Zob3N0X3Jlc2VydmVfYXZhaWxfYmF0Y2hfcGFja2VkX2F2eChzdHJ1Y3Qgdmly dGlvX25ldCAqZGV2LA0KPiA+ICsJCQkJIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLA0KPiA+ ICsJCQkJIHN0cnVjdCBydGVfbWVtcG9vbCAqbWJ1Zl9wb29sLA0KPiA+ICsJCQkJIHN0cnVjdCBy dGVfbWJ1ZiAqKnBrdHMsDQo+ID4gKwkJCQkgdWludDE2X3QgYXZhaWxfaWR4LA0KPiA+ICsJCQkJ IHVpbnRwdHJfdCAqZGVzY19hZGRycywNCj4gPiArCQkJCSB1aW50MTZfdCAqaWRzKQ0KPiA+ICt7 DQo+ID4gKwlzdHJ1Y3QgdnJpbmdfcGFja2VkX2Rlc2MgKmRlc2NzID0gdnEtPmRlc2NfcGFja2Vk Ow0KPiA+ICsJdWludDMyX3QgZGVzY3Nfc3RhdHVzOw0KPiA+ICsJdm9pZCAqZGVzY19hZGRyOw0K PiA+ICsJdWludDE2X3QgaTsNCj4gPiArCXVpbnQ4X3QgY21wX2xvdywgY21wX2hpZ2gsIGNtcF9y ZXN1bHQ7DQo+ID4gKwl1aW50NjRfdCBsZW5zW1BBQ0tFRF9CQVRDSF9TSVpFXTsNCj4gPiArCXN0 cnVjdCB2aXJ0aW9fbmV0X2hkciAqaGRyOw0KPiA+ICsNCj4gPiArCWlmICh1bmxpa2VseShhdmFp bF9pZHggJiBQQUNLRURfQkFUQ0hfTUFTSykpDQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsNCj4g PiArCS8qIGxvYWQgNCBkZXNjcyAqLw0KPiA+ICsJZGVzY19hZGRyID0gJnZxLT5kZXNjX3BhY2tl ZFthdmFpbF9pZHhdOw0KPiA+ICsJX19tNTEyaSBkZXNjX3ZlYyA9IF9tbTUxMl9sb2FkdV9zaTUx MihkZXNjX2FkZHIpOw0KPiA+ICsNCj4gPiArCS8qIGJ1cnN0IGNoZWNrIGZvdXIgc3RhdHVzICov DQo+ID4gKwlfX201MTJpIGF2YWlsX2ZsYWdfdmVjOw0KPiA+ICsJaWYgKHZxLT5hdmFpbF93cmFw X2NvdW50ZXIpDQo+ID4gKyNpZiBkZWZpbmVkKFJURV9BUkNIX0k2ODYpDQo+ID4gKwkJYXZhaWxf ZmxhZ192ZWMgPSBfbW01MTJfc2V0NF9lcGk2NChQQUNLRURfQVZBSUxfRkxBRywNCj4gMHgwLA0K PiA+ICsJCQkJCVBBQ0tFRF9GTEFHU19NQVNLLCAweDApOw0KPiA+ICsjZWxzZQ0KPiA+ICsJCWF2 YWlsX2ZsYWdfdmVjID0NCj4gX21tNTEyX21hc2t6X3NldDFfZXBpNjQoREVTQ19GTEFHU19QT1Ms DQo+ID4gKwkJCQkJUEFDS0VEX0FWQUlMX0ZMQUcpOw0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4g KwllbHNlDQo+ID4gKyNpZiBkZWZpbmVkKFJURV9BUkNIX0k2ODYpDQo+ID4gKwkJYXZhaWxfZmxh Z192ZWMgPQ0KPiBfbW01MTJfc2V0NF9lcGk2NChQQUNLRURfQVZBSUxfRkxBR19XUkFQLA0KPiA+ ICsJCQkJCTB4MCwgUEFDS0VEX0FWQUlMX0ZMQUdfV1JBUCwNCj4gMHgwKTsNCj4gPiArI2Vsc2UN Cj4gPiArCQlhdmFpbF9mbGFnX3ZlYyA9DQo+IF9tbTUxMl9tYXNrel9zZXQxX2VwaTY0KERFU0Nf RkxBR1NfUE9TLA0KPiA+ICsJCQkJCVBBQ0tFRF9BVkFJTF9GTEFHX1dSQVApOw0KPiA+ICsjZW5k aWYNCj4gPiArDQo+ID4gKwlkZXNjc19zdGF0dXMgPSBfbW01MTJfY21wX2VwdTE2X21hc2soZGVz Y192ZWMsIGF2YWlsX2ZsYWdfdmVjLA0KPiA+ICsJCV9NTV9DTVBJTlRfTkUpOw0KPiA+ICsJaWYg KGRlc2NzX3N0YXR1cyAmIEJBVENIX0ZMQUdTX01BU0spDQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ ICsNCj4gDQo+IA0KPiBBbHNvLCBwbGVhc2UgdHJ5IHRvIGZhY3Rvcml6ZSBjb2RlIHRvIGF2b2lk IGR1cGxpY2F0aW9uIGJldHdlZW4gVHggYW5kDQo+IFJ4IHBhdGhzIGZvciBkZXNjIGFkZHJlc3Mg dHJhbnNsYXRpb246DQoNCkhpIE1heGltZSwNCkkgIGhhdmUgZmFjdG9yaXplZCB0aGUgdHJhbnNs YXRpb24gZnVuY3Rpb24gaW4gUnggYW5kIFR4IHBhdGhzLCBidXQgdGhlcmUncyBhIGZldyBwZXJm b3JtYW5jZSBkcm9wIGFmdGVyIHRoZSBjaGFuZ2UuDQpTaW5jZSB2ZWN0b3JpemVkIGRhdGFwYXRo IGlzIGZvY3VzaW5nIG9uIHBlcmZvcm1hbmNlLCBJJ2QgbGlrZSB0byBrZWVwIGN1cnJlbnQgaW1w bGVtZW50YXRpb24uIA0KDQpUaGFua3MsDQpNYXJ2aW4NCg0KPiA+ICsJaWYgKGRldi0+ZmVhdHVy ZXMgJiAoMVVMTCA8PCBWSVJUSU9fRl9JT01NVV9QTEFURk9STSkpIHsNCj4gPiArCQl2aG9zdF9m b3JfZWFjaF90cnlfdW5yb2xsKGksIDAsIFBBQ0tFRF9CQVRDSF9TSVpFKSB7DQo+ID4gKwkJCXVp bnQ2NF90IHNpemUgPSAodWludDY0X3QpZGVzY3NbYXZhaWxfaWR4ICsgaV0ubGVuOw0KPiA+ICsJ CQlkZXNjX2FkZHJzW2ldID0gX192aG9zdF9pb3ZhX3RvX3Z2YShkZXYsIHZxLA0KPiA+ICsJCQkJ ZGVzY3NbYXZhaWxfaWR4ICsgaV0uYWRkciwgJnNpemUsDQo+ID4gKwkJCQlWSE9TVF9BQ0NFU1Nf Uk8pOw0KPiA+ICsNCj4gPiArCQkJaWYgKCFkZXNjX2FkZHJzW2ldKQ0KPiA+ICsJCQkJZ290byBm cmVlX2J1ZjsNCj4gPiArCQkJbGVuc1tpXSA9IGRlc2NzW2F2YWlsX2lkeCArIGldLmxlbjsNCj4g PiArCQkJcnRlX3ByZWZldGNoMCgodm9pZCAqKSh1aW50cHRyX3QpZGVzY19hZGRyc1tpXSk7DQo+ ID4gKw0KPiA+ICsJCQlwa3RzW2ldID0gdmlydGlvX2Rldl9wa3RtYnVmX2FsbG9jKGRldiwgbWJ1 Zl9wb29sLA0KPiA+ICsJCQkJCWxlbnNbaV0pOw0KPiA+ICsJCQlpZiAoIXBrdHNbaV0pDQo+ID4g KwkJCQlnb3RvIGZyZWVfYnVmOw0KPiA+ICsJCX0NCj4gPiArCX0gZWxzZSB7PiArCQkvKiBjaGVj ayBidWZmZXIgZml0IGludG8gb25lIHJlZ2lvbiAmDQo+IHRyYW5zbGF0ZSBhZGRyZXNzICovDQo+ ID4gKwkJX19tNTEyaSByZWdpb25zX2xvd19hZGRycyA9DQo+ID4gKwkJCV9tbTUxMl9sb2FkdV9z aTUxMigodm9pZCAqKSZkZXYtDQo+ID5yZWdpb25zX2xvd19hZGRycyk7DQo+ID4gKwkJX19tNTEy aSByZWdpb25zX2hpZ2hfYWRkcnMgPQ0KPiA+ICsJCQlfbW01MTJfbG9hZHVfc2k1MTIoKHZvaWQg KikmZGV2LQ0KPiA+cmVnaW9uc19oaWdoX2FkZHJzKTsNCj4gPiArCQl2aG9zdF9mb3JfZWFjaF90 cnlfdW5yb2xsKGksIDAsIFBBQ0tFRF9CQVRDSF9TSVpFKSB7DQo+ID4gKwkJCXVpbnQ2NF90IGFk ZHJfbG93ID0gZGVzY3NbYXZhaWxfaWR4ICsgaV0uYWRkcjsNCj4gPiArCQkJdWludDY0X3QgYWRk cl9oaWdoID0gYWRkcl9sb3cgKw0KPiA+ICsJCQkJCQlkZXNjc1thdmFpbF9pZHggKyBpXS5sZW47 DQo+ID4gKwkJCV9fbTUxMmkgbG93X2FkZHJfdmVjID0NCj4gX21tNTEyX3NldDFfZXBpNjQoYWRk cl9sb3cpOw0KPiA+ICsJCQlfX201MTJpIGhpZ2hfYWRkcl92ZWMgPQ0KPiBfbW01MTJfc2V0MV9l cGk2NChhZGRyX2hpZ2gpOw0KPiA+ICsNCj4gPiArCQkJY21wX2xvdyA9DQo+IF9tbTUxMl9jbXBf ZXBpNjRfbWFzayhsb3dfYWRkcl92ZWMsDQo+ID4gKwkJCQkJcmVnaW9uc19sb3dfYWRkcnMsDQo+ IF9NTV9DTVBJTlRfTkxUKTsNCj4gPiArCQkJY21wX2hpZ2ggPQ0KPiBfbW01MTJfY21wX2VwaTY0 X21hc2soaGlnaF9hZGRyX3ZlYywNCj4gPiArCQkJCQlyZWdpb25zX2hpZ2hfYWRkcnMsDQo+IF9N TV9DTVBJTlRfTFQpOw0KPiA+ICsJCQljbXBfcmVzdWx0ID0gY21wX2xvdyAmIGNtcF9oaWdoOw0K PiA+ICsJCQlpbnQgaW5kZXggPSBfX2J1aWx0aW5fY3R6KGNtcF9yZXN1bHQpOw0KPiA+ICsJCQlp ZiAodW5saWtlbHkoKHVpbnQzMl90KWluZGV4ID49IGRldi0+bWVtLT5ucmVnaW9ucykpDQo+ID4g KwkJCQlnb3RvIGZyZWVfYnVmOw0KPiA+ICsNCj4gPiArCQkJZGVzY19hZGRyc1tpXSA9IGFkZHJf bG93ICsNCj4gPiArCQkJCWRldi0+bWVtLT5yZWdpb25zW2luZGV4XS5ob3N0X3VzZXJfYWRkciAt DQo+ID4gKwkJCQlkZXYtPm1lbS0+cmVnaW9uc1tpbmRleF0uZ3Vlc3RfcGh5c19hZGRyOw0KPiA+ ICsJCQlsZW5zW2ldID0gZGVzY3NbYXZhaWxfaWR4ICsgaV0ubGVuOw0KPiA+ICsJCQlydGVfcHJl ZmV0Y2gwKCh2b2lkICopKHVpbnRwdHJfdClkZXNjX2FkZHJzW2ldKTsNCj4gPiArDQo+ID4gKwkJ CXBrdHNbaV0gPSB2aXJ0aW9fZGV2X3BrdG1idWZfYWxsb2MoZGV2LCBtYnVmX3Bvb2wsDQo+ID4g KwkJCQkJbGVuc1tpXSk7DQo+ID4gKwkJCWlmICghcGt0c1tpXSkNCj4gPiArCQkJCWdvdG8gZnJl ZV9idWY7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmICh2aXJ0aW9fbmV0X3dp dGhfaG9zdF9vZmZsb2FkKGRldikpIHsNCj4gPiArCQl2aG9zdF9mb3JfZWFjaF90cnlfdW5yb2xs KGksIDAsIFBBQ0tFRF9CQVRDSF9TSVpFKSB7DQo+ID4gKwkJCWhkciA9IChzdHJ1Y3QgdmlydGlv X25ldF9oZHIgKikoZGVzY19hZGRyc1tpXSk7DQo+ID4gKwkJCXZob3N0X2RlcXVldWVfb2ZmbG9h ZChoZHIsIHBrdHNbaV0pOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAodW5s aWtlbHkodmlydGlvX25ldF9pc19pbm9yZGVyKGRldikpKSB7DQo+ID4gKwkJaWRzW1BBQ0tFRF9C QVRDSF9TSVpFIC0gMV0gPQ0KPiA+ICsJCQlkZXNjc1thdmFpbF9pZHggKyBQQUNLRURfQkFUQ0hf U0laRSAtIDFdLmlkOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQl2aG9zdF9mb3JfZWFjaF90cnlf dW5yb2xsKGksIDAsIFBBQ0tFRF9CQVRDSF9TSVpFKQ0KPiA+ICsJCQlpZHNbaV0gPSBkZXNjc1th dmFpbF9pZHggKyBpXS5pZDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwl1aW50NjRfdCBhZGRyc1tQ QUNLRURfQkFUQ0hfU0laRSA8PCAxXTsNCj4gPiArCS8qIHN0b3JlIG1idWYgZGF0YV9sZW4sIHBr dF9sZW4gKi8NCj4gPiArCXZob3N0X2Zvcl9lYWNoX3RyeV91bnJvbGwoaSwgMCwgUEFDS0VEX0JB VENIX1NJWkUpIHsNCj4gPiArCQlhZGRyc1tpIDw8IDFdID0gKHVpbnQ2NF90KXBrdHNbaV0tPnJ4 X2Rlc2NyaXB0b3JfZmllbGRzMTsNCj4gPiArCQlhZGRyc1soaSA8PCAxKSArIDFdID0gKHVpbnQ2 NF90KXBrdHNbaV0tPnJ4X2Rlc2NyaXB0b3JfZmllbGRzMQ0KPiA+ICsJCQkJCSsgc2l6ZW9mKHVp bnQ2NF90KTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBzYXZlIHBrdF9sZW4gYW5kIGRhdGFf bGVuIGludG8gbWJ1ZnMgKi8NCj4gPiArCV9fbTUxMmkgdmFsdWVfdmVjID0NCj4gX21tNTEyX21h c2t6X3NodWZmbGVfZXBpMzIoTUJVRl9MRU5TX1BPUywgZGVzY192ZWMsDQo+ID4gKwkJCQkJMHhB QSk7DQo+ID4gKwlfX201MTJpIG9mZnNldHNfdmVjID0gX21tNTEyX21hc2t6X3NldDFfZXBpMzIo TUJVRl9MRU5TX1BPUywNCj4gPiArCQkJCQkodWludDMyX3QpLTEyKTsNCj4gPiArCXZhbHVlX3Zl YyA9IF9tbTUxMl9hZGRfZXBpMzIodmFsdWVfdmVjLCBvZmZzZXRzX3ZlYyk7DQo+ID4gKwlfX201 MTJpIHZpbmRleCA9IF9tbTUxMl9sb2FkdV9zaTUxMigodm9pZCAqKWFkZHJzKTsNCj4gPiArCV9t bTUxMl9pNjRzY2F0dGVyX2VwaTY0KDAsIHZpbmRleCwgdmFsdWVfdmVjLCAxKTsNCj4gPiArDQo+ ID4gKwlyZXR1cm4gMDsNCj4gPiArZnJlZV9idWY6DQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgUEFD S0VEX0JBVENIX1NJWkU7IGkrKykNCj4gPiArCQlydGVfcGt0bWJ1Zl9mcmVlKHBrdHNbaV0pOw0K PiA+ICsNCj4gPiArCXJldHVybiAtMTsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQgYS9saWIvbGli cnRlX3Zob3N0L3ZpcnRpb19uZXQuYyBiL2xpYi9saWJydGVfdmhvc3QvdmlydGlvX25ldC5jDQo+ ID4gaW5kZXggNjEwNzY2MjY4NS4uZTRkMmUyZTdkNiAxMDA2NDQNCj4gPiAtLS0gYS9saWIvbGli cnRlX3Zob3N0L3ZpcnRpb19uZXQuYw0KPiA+ICsrKyBiL2xpYi9saWJydGVfdmhvc3QvdmlydGlv X25ldC5jDQo+ID4gQEAgLTIyNDksNiArMjI0OSwyOCBAQCB2aG9zdF9yZXNlcnZlX2F2YWlsX2Jh dGNoX3BhY2tlZChzdHJ1Y3QNCj4gdmlydGlvX25ldCAqZGV2LA0KPiA+ICAJcmV0dXJuIC0xOw0K PiA+ICB9DQo+ID4NCj4gPiArc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgaW50DQo+ID4gK3Zo b3N0X2hhbmRsZV9hdmFpbF9iYXRjaF9wYWNrZWQoc3RydWN0IHZpcnRpb19uZXQgKmRldiwNCj4g PiArCQkJCSBzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cSwNCj4gPiArCQkJCSBzdHJ1Y3QgcnRl X21lbXBvb2wgKm1idWZfcG9vbCwNCj4gPiArCQkJCSBzdHJ1Y3QgcnRlX21idWYgKipwa3RzLA0K PiA+ICsJCQkJIHVpbnQxNl90IGF2YWlsX2lkeCwNCj4gPiArCQkJCSB1aW50cHRyX3QgKmRlc2Nf YWRkcnMsDQo+ID4gKwkJCQkgdWludDE2X3QgKmlkcykNCj4gPiArew0KPiA+ICsJaWYgKHVubGlr ZWx5KGRldi0+dmVjdG9yaXplZCkpDQo+ID4gKyNpZmRlZiBDQ19BVlg1MTJfU1VQUE9SVA0KPiA+ ICsJCXJldHVybiB2aG9zdF9yZXNlcnZlX2F2YWlsX2JhdGNoX3BhY2tlZF9hdngoZGV2LCB2cSwN Cj4gbWJ1Zl9wb29sLA0KPiA+ICsJCQkJcGt0cywgYXZhaWxfaWR4LCBkZXNjX2FkZHJzLCBpZHMp Ow0KPiA+ICsjZWxzZQ0KPiA+ICsJCXJldHVybiB2aG9zdF9yZXNlcnZlX2F2YWlsX2JhdGNoX3Bh Y2tlZChkZXYsIHZxLA0KPiBtYnVmX3Bvb2wsDQo+ID4gKwkJCQlwa3RzLCBhdmFpbF9pZHgsIGRl c2NfYWRkcnMsIGlkcyk7DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiArCXJldHVybiB2aG9zdF9y ZXNlcnZlX2F2YWlsX2JhdGNoX3BhY2tlZChkZXYsIHZxLCBtYnVmX3Bvb2wsIHBrdHMsDQo+ID4g KwkJCWF2YWlsX2lkeCwgZGVzY19hZGRycywgaWRzKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgc3Rh dGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgaW50DQo+ID4gIHZpcnRpb19kZXZfdHhfYmF0Y2hfcGFj a2VkKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsDQo+ID4gIAkJCSAgIHN0cnVjdCB2aG9zdF92aXJ0 cXVldWUgKnZxLA0KPiA+IEBAIC0yMjYxLDggKzIyODMsOSBAQCB2aXJ0aW9fZGV2X3R4X2JhdGNo X3BhY2tlZChzdHJ1Y3QgdmlydGlvX25ldA0KPiAqZGV2LA0KPiA+ICAJdWludDE2X3QgaWRzW1BB Q0tFRF9CQVRDSF9TSVpFXTsNCj4gPiAgCXVpbnQxNl90IGk7DQo+ID4NCj4gPiAtCWlmICh2aG9z dF9yZXNlcnZlX2F2YWlsX2JhdGNoX3BhY2tlZChkZXYsIHZxLCBtYnVmX3Bvb2wsIHBrdHMsDQo+ ID4gLQkJCQkJICAgICBhdmFpbF9pZHgsIGRlc2NfYWRkcnMsIGlkcykpDQo+ID4gKw0KPiA+ICsJ aWYgKHZob3N0X2hhbmRsZV9hdmFpbF9iYXRjaF9wYWNrZWQoZGV2LCB2cSwgbWJ1Zl9wb29sLCBw a3RzLA0KPiA+ICsJCWF2YWlsX2lkeCwgZGVzY19hZGRycywgaWRzKSkNCj4gPiAgCQlyZXR1cm4g LTE7DQo+ID4NCj4gPiAgCXZob3N0X2Zvcl9lYWNoX3RyeV91bnJvbGwoaSwgMCwgUEFDS0VEX0JB VENIX1NJWkUpDQo+ID4NCg0K