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 AD4EBA2EF9 for ; Mon, 16 Sep 2019 03:21:40 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 701E41C12D; Mon, 16 Sep 2019 03:21:40 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 3CF041C129 for ; Mon, 16 Sep 2019 03:21:38 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Sep 2019 18:21:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,510,1559545200"; d="scan'208";a="211002054" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by fmsmga004.fm.intel.com with ESMTP; 15 Sep 2019 18:21:36 -0700 Received: from FMSMSX109.amr.corp.intel.com (10.18.116.9) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 15 Sep 2019 18:21:37 -0700 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by fmsmsx109.amr.corp.intel.com (10.18.116.9) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 15 Sep 2019 18:21:36 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.92]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.132]) with mapi id 14.03.0439.000; Mon, 16 Sep 2019 09:21:34 +0800 From: "Yu, Jin" To: Maxime Coquelin , "dev@dpdk.org" CC: "Liu, Changpeng" , "Bie, Tiwei" , "Wang, Zhihong" , Lin Li , Xun Ni , Yu Zhang Thread-Topic: [PATCH v6 06/10] vhost: add the APIs to operate inflight ring Thread-Index: AQHVXjLWz/E1SILhnEO2/ImlXFUVK6cnVeaAgAZHmHA= Date: Mon, 16 Sep 2019 01:21:34 +0000 Message-ID: References: <20190806182500.22320> <20190829141224.49700-1-jin.yu@intel.com> <20190829141224.49700-7-jin.yu@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNmMwMzVmOWEtZDE4ZC00MmU2LWI0MjYtNDY2NjdmOGFjNzExIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiUjc1NnErNGNsYkQ1eklLdlNubkg1bkJwdEdISjJHUDhKV1VCVjlaZElITUF4SUg0N0tSZ2RKdlk3OGRIZDd0MyJ9 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 v6 06/10] vhost: add the APIs to operate inflight ring 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" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNYXhpbWUgQ29xdWVsaW4gW21h aWx0bzptYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbV0NCj4gU2VudDogVGh1cnNkYXksIFNlcHRl bWJlciAxMiwgMjAxOSA1OjI3IFBNDQo+IFRvOiBZdSwgSmluIDxqaW4ueXVAaW50ZWwuY29tPjsg ZGV2QGRwZGsub3JnDQo+IENjOiBMaXUsIENoYW5ncGVuZyA8Y2hhbmdwZW5nLmxpdUBpbnRlbC5j b20+OyBCaWUsIFRpd2VpDQo+IDx0aXdlaS5iaWVAaW50ZWwuY29tPjsgV2FuZywgWmhpaG9uZyA8 emhpaG9uZy53YW5nQGludGVsLmNvbT47IExpbiBMaQ0KPiA8bGlsaW4yNEBiYWlkdS5jb20+OyBY dW4gTmkgPG5peHVuQGJhaWR1LmNvbT47IFl1IFpoYW5nDQo+IDx6aGFuZ3l1MzFAYmFpZHUuY29t Pg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHY2IDA2LzEwXSB2aG9zdDogYWRkIHRoZSBBUElzIHRv IG9wZXJhdGUgaW5mbGlnaHQgcmluZw0KPiANCj4gDQo+IA0KPiBPbiA4LzI5LzE5IDQ6MTIgUE0s IEppbll1IHdyb3RlOg0KPiA+IFRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aHJlZSBBUElzIHRvIG9w ZXJhdGUgdGhlIGluZmxpZ2h0IHJpbmcuIFRocmVlDQo+ID4gQVBJcyBhcmUgc2V0LCBzZXQgbGFz dCBhbmQgY2xlYXIuIEl0IGluY2x1ZGVzIHNwbGl0IGFuZCBwYWNrZWQgcmluZy4NCj4gPg0KPiA+ IFNpZ25lZC1vZmYtYnk6IExpbiBMaSA8bGlsaW4yNEBiYWlkdS5jb20+DQo+ID4gU2lnbmVkLW9m Zi1ieTogWHVuIE5pIDxuaXh1bkBiYWlkdS5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogWXUgWmhh bmcgPHpoYW5neXUzMUBiYWlkdS5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogSmluIFl1IDxqaW4u eXVAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBsaWIvbGlicnRlX3Zob3N0L3J0ZV92aG9zdC5o IHwgMTE2ICsrKysrKysrKysrKysrKysNCj4gPiAgbGliL2xpYnJ0ZV92aG9zdC92aG9zdC5jICAg ICB8IDI1MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICAyIGZpbGVz IGNoYW5nZWQsIDM2OCBpbnNlcnRpb25zKCspDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2xp YnJ0ZV92aG9zdC9ydGVfdmhvc3QuaA0KPiA+IGIvbGliL2xpYnJ0ZV92aG9zdC9ydGVfdmhvc3Qu aCBpbmRleCBlMDkwY2RmZWUuLmQzYjZlZGEyMSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvbGlicnRl X3Zob3N0L3J0ZV92aG9zdC5oDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV92aG9zdC9ydGVfdmhvc3Qu aA0KPiA+IEBAIC02OTMsNiArNjkzLDEyMiBAQCBpbnQgcnRlX3Zob3N0X2dldF9tZW1fdGFibGUo aW50IHZpZCwgc3RydWN0DQo+ID4gcnRlX3Zob3N0X21lbW9yeSAqKm1lbSk7ICBpbnQgcnRlX3Zo b3N0X2dldF92aG9zdF92cmluZyhpbnQgdmlkLCB1aW50MTZfdA0KPiB2cmluZ19pZHgsDQo+ID4g IAkJCSAgICAgIHN0cnVjdCBydGVfdmhvc3RfdnJpbmcgKnZyaW5nKTsNCj4gPg0KPiA+ICsvKioN Cj4gPiArICogU2V0IHNwbGl0IGluZmxpZ2h0IGRlc2NyaXB0b3IuDQo+ID4gKyAqDQo+ID4gKyAq IFRoaXMgZnVuY3Rpb24gc2F2ZSBkZXNjcmlwdG9ycyB0aGF0IGhhcyBiZWVuIGNvbXN1bWVkIGlu IGF2YWlsYWJsZQ0KPiA+ICsgKiByaW5nDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSB2aWQNCj4g PiArICogIHZob3N0IGRldmljZSBJRA0KPiA+ICsgKiBAcGFyYW0gdnJpbmdfaWR4DQo+ID4gKyAq ICB2cmluZyBpbmRleA0KPiA+ICsgKiBAcGFyYW0gaWR4DQo+ID4gKyAqICBpbmZsaWdodCBlbnRy eSBpbmRleA0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGZh aWx1cmUNCj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtpbnQNCj4gPiAr cnRlX3Zob3N0X3NldF9pbmZsaWdodF9kZXNjX3NwbGl0KGludCB2aWQsIHVpbnQxNl90IHZyaW5n X2lkeCwNCj4gPiArCXVpbnQxNl90IGlkeCk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogU2V0 IHBhY2tlZCBpbmZsaWdodCBkZXNjcmlwdG9yIGFuZCBnZXQgY29ycmVzcG9uZGluZyBpbmZsaWdo dA0KPiA+ICtlbnRyeQ0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHNhdmUgZGVzY3Jp cHRvcnMgdGhhdCBoYXMgYmVlbiBjb21zdW1lZA0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gdmlk DQo+ID4gKyAqICB2aG9zdCBkZXZpY2UgSUQNCj4gPiArICogQHBhcmFtIHZyaW5nX2lkeA0KPiA+ ICsgKiAgdnJpbmcgaW5kZXgNCj4gPiArICogQHBhcmFtIGhlYWQNCj4gPiArICogIGhlYWQgb2Yg ZGVzY3JpcHRvcnMNCj4gPiArICogQHBhcmFtIGxhc3QNCj4gPiArICogIGxhc3Qgb2YgZGVzY3Jp cHRvcnMNCj4gPiArICogQHBhcmFtIGluZmxpZ2h0X2VudHJ5DQo+ID4gKyAqICBjb3JyZXNwb25k aW5nIGluZmxpZ2h0IGVudHJ5DQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogIDAgb24gc3VjY2Vz cywgLTEgb24gZmFpbHVyZQ0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4g K2ludA0KPiA+ICtydGVfdmhvc3Rfc2V0X2luZmxpZ2h0X2Rlc2NfcGFja2VkKGludCB2aWQsIHVp bnQxNl90IHZyaW5nX2lkeCwNCj4gPiArCXVpbnQxNl90IGhlYWQsIHVpbnQxNl90IGxhc3QsIHVp bnQxNl90ICppbmZsaWdodF9lbnRyeSk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogU2F2ZSB0 aGUgaGVhZCBvZiBsaXN0IHRoYXQgdGhlIGxhc3QgYmF0Y2ggb2YgdXNlZCBkZXNjcmlwdG9ycy4N Cj4gPiArICoNCj4gPiArICogQHBhcmFtIHZpZA0KPiA+ICsgKiAgdmhvc3QgZGV2aWNlIElEDQo+ ID4gKyAqIEBwYXJhbSB2cmluZ19pZHgNCj4gPiArICogIHZyaW5nIGluZGV4DQo+ID4gKyAqIEBw YXJhbSBpZHgNCj4gPiArICogIGRlc2NyaXB0b3IgZW50cnkgaW5kZXgNCj4gPiArICogQHJldHVy bg0KPiA+ICsgKiAgMCBvbiBzdWNjZXNzLCAtMSBvbiBmYWlsdXJlDQo+ID4gKyAqLw0KPiA+ICtf X3J0ZV9leHBlcmltZW50YWwNCj4gPiAraW50DQo+ID4gK3J0ZV92aG9zdF9zZXRfbGFzdF9pbmZs aWdodF9pb19zcGxpdChpbnQgdmlkLA0KPiA+ICsJdWludDE2X3QgdnJpbmdfaWR4LCB1aW50MTZf dCBpZHgpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIFVwZGF0ZSB0aGUgaW5mbGlnaHQgZnJl ZV9oZWFkLCB1c2VkX2lkeCBhbmQgdXNlZF93cmFwX2NvdW50ZXIuDQo+ID4gKyAqDQo+ID4gKyAq IFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgc3RhdHVzIGZpcnN0IGJlZm9yZSB1cGRhdGluZyBk ZXNjcmlwdG9ycw0KPiA+ICsgKiB0byB1c2VkDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSB2aWQN Cj4gPiArICogIHZob3N0IGRldmljZSBJRA0KPiA+ICsgKiBAcGFyYW0gdnJpbmdfaWR4DQo+ID4g KyAqICB2cmluZyBpbmRleA0KPiA+ICsgKiBAcGFyYW0gaGVhZA0KPiA+ICsgKiAgaGVhZCBvZiBk ZXNjcmlwdG9ycw0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAwIG9uIHN1Y2Nlc3MsIC0xIG9u IGZhaWx1cmUNCj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtpbnQNCj4g PiArcnRlX3Zob3N0X3NldF9sYXN0X2luZmxpZ2h0X2lvX3BhY2tlZChpbnQgdmlkLA0KPiA+ICsJ dWludDE2X3QgdnJpbmdfaWR4LCB1aW50MTZfdCBoZWFkKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgKiBDbGVhciB0aGUgc3BsaXQgaW5mbGlnaHQgc3RhdHVzLg0KPiA+ICsgKg0KPiA+ICsgKiBA cGFyYW0gdmlkDQo+ID4gKyAqICB2aG9zdCBkZXZpY2UgSUQNCj4gPiArICogQHBhcmFtIHZyaW5n X2lkeA0KPiA+ICsgKiAgdnJpbmcgaW5kZXgNCj4gPiArICogQHBhcmFtIGxhc3RfdXNlZF9pZHgN Cj4gPiArICogIGxhc3QgdXNlZCBpZHggb2YgdXNlZCByaW5nDQo+ID4gKyAqIEBwYXJhbSBpZHgN Cj4gPiArICogIGluZmxpZ2h0IGVudHJ5IGluZGV4DQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICog IDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZQ0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJp bWVudGFsDQo+ID4gK2ludA0KPiA+ICtydGVfdmhvc3RfY2xyX2luZmxpZ2h0X2Rlc2Nfc3BsaXQo aW50IHZpZCwgdWludDE2X3QgdnJpbmdfaWR4LA0KPiA+ICsJdWludDE2X3QgbGFzdF91c2VkX2lk eCwgdWludDE2X3QgaWR4KTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBDbGVhciB0aGUgcGFj a2VkIGluZmxpZ2h0IHN0YXR1cy4NCj4gPiArICoNCj4gPiArICogQHBhcmFtIHZpZA0KPiA+ICsg KiAgdmhvc3QgZGV2aWNlIElEDQo+ID4gKyAqIEBwYXJhbSB2cmluZ19pZHgNCj4gPiArICogIHZy aW5nIGluZGV4DQo+ID4gKyAqIEBwYXJhbSBoZWFkDQo+ID4gKyAqICBpbmZsaWdodCBlbnRyeSBp bmRleA0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGZhaWx1 cmUNCj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtpbnQNCj4gPiArcnRl X3Zob3N0X2Nscl9pbmZsaWdodF9kZXNjX3BhY2tlZChpbnQgdmlkLCB1aW50MTZfdCB2cmluZ19p ZHgsDQo+ID4gKwl1aW50MTZfdCBoZWFkKTsNCj4gPiArDQo+ID4gIC8qKg0KPiA+ICAgKiBOb3Rp ZnkgdGhlIGd1ZXN0IHRoYXQgdXNlZCBkZXNjcmlwdG9ycyBoYXZlIGJlZW4gYWRkZWQgdG8gdGhl IHZyaW5nLiAgVGhpcw0KPiA+ICAgKiBmdW5jdGlvbiBhY3RzIGFzIGEgbWVtb3J5IGJhcnJpZXIu DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfdmhvc3Qvdmhvc3QuYyBiL2xpYi9saWJydGVf dmhvc3Qvdmhvc3QuYyBpbmRleA0KPiA+IDY2MGFjMmEwNy4uNTg5NDAxNTJmIDEwMDY0NA0KPiA+ IC0tLSBhL2xpYi9saWJydGVfdmhvc3Qvdmhvc3QuYw0KPiA+ICsrKyBiL2xpYi9saWJydGVfdmhv c3Qvdmhvc3QuYw0KPiA+IEBAIC03ODMsNiArNzgzLDI1OCBAQCBydGVfdmhvc3RfZ2V0X3Zob3N0 X3ZyaW5nKGludCB2aWQsIHVpbnQxNl90DQo+IHZyaW5nX2lkeCwNCj4gPiAgCXJldHVybiAwOw0K PiA+ICB9DQo+ID4NCj4gPiAraW50DQo+ID4gK3J0ZV92aG9zdF9zZXRfaW5mbGlnaHRfZGVzY19z cGxpdChpbnQgdmlkLCB1aW50MTZfdCB2cmluZ19pZHgsDQo+ID4gKwl1aW50MTZfdCBpZHgpDQo+ ID4gK3sNCj4gPiArCXN0cnVjdCB2aXJ0aW9fbmV0ICpkZXY7DQo+ID4gKwlzdHJ1Y3Qgdmhvc3Rf dmlydHF1ZXVlICp2cTsNCj4gPiArDQo+ID4gKwlkZXYgPSBnZXRfZGV2aWNlKHZpZCk7DQo+ID4g KwlpZiAodW5saWtlbHkoIWRldikpDQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsNCj4gPiArCWlm ICh1bmxpa2VseSghKGRldi0+cHJvdG9jb2xfZmVhdHVyZXMgJg0KPiA+ICsJCSgxVUxMIDw8IFZI T1NUX1VTRVJfUFJPVE9DT0xfRl9JTkZMSUdIVF9TSE1GRCkpKSkNCj4gPiArCQlyZXR1cm4gMDsN Cj4gPiArDQo+ID4gKwlpZiAodW5saWtlbHkodnFfaXNfcGFja2VkKGRldikpKQ0KPiA+ICsJCXJl dHVybiAtMTsNCj4gPiArDQo+ID4gKwlpZiAodW5saWtlbHkodnJpbmdfaWR4ID49IFZIT1NUX01B WF9WUklORykpDQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsNCj4gPiArCXZxID0gZGV2LT52aXJ0 cXVldWVbdnJpbmdfaWR4XTsNCj4gPiArCWlmICh1bmxpa2VseSghdnEpKQ0KPiA+ICsJCXJldHVy biAtMTsNCj4gPiArDQo+ID4gKwlpZiAodW5saWtlbHkoIXZxLT5pbmZsaWdodF9zcGxpdCkpDQo+ ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsNCj4gPiArCXZxLT5pbmZsaWdodF9zcGxpdC0+ZGVzY1tp ZHhdLmNvdW50ZXIgPSB2cS0+Z2xvYmFsX2NvdW50ZXIrKzsNCj4gPiArCXZxLT5pbmZsaWdodF9z cGxpdC0+ZGVzY1tpZHhdLmluZmxpZ2h0ID0gMTsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtpbnQNCj4gPiArcnRlX3Zob3N0X3NldF9pbmZsaWdodF9kZXNjX3BhY2tlZChp bnQgdmlkLCB1aW50MTZfdCB2cmluZ19pZHgsDQo+ID4gKwl1aW50MTZfdCBoZWFkLCB1aW50MTZf dCBsYXN0LCB1aW50MTZfdCAqaW5mbGlnaHRfZW50cnkpIHsNCj4gPiArCXN0cnVjdCB2aXJ0aW9f bmV0ICpkZXY7DQo+ID4gKwlzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cTsNCj4gPiArCXN0cnVj dCBpbmZsaWdodF9pbmZvX3BhY2tlZCAqaW5mbGlnaHRfaW5mbzsNCj4gPiArCXN0cnVjdCB2cmlu Z19wYWNrZWRfZGVzYyAqZGVzYzsNCj4gPiArCXVpbnQxNl90IG9sZF9mcmVlX2hlYWQsIGZyZWVf aGVhZDsNCj4gPiArDQo+ID4gKwlkZXYgPSBnZXRfZGV2aWNlKHZpZCk7DQo+ID4gKwlpZiAodW5s aWtlbHkoIWRldikpDQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsNCj4gPiArCWlmICh1bmxpa2Vs eSghKGRldi0+cHJvdG9jb2xfZmVhdHVyZXMgJg0KPiA+ICsJCSgxVUxMIDw8IFZIT1NUX1VTRVJf UFJPVE9DT0xfRl9JTkZMSUdIVF9TSE1GRCkpKSkNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArDQo+ ID4gKwlpZiAodW5saWtlbHkoIXZxX2lzX3BhY2tlZChkZXYpKSkNCj4gPiArCQlyZXR1cm4gLTE7 DQo+ID4gKw0KPiA+ICsJaWYgKHVubGlrZWx5KHZyaW5nX2lkeCA+PSBWSE9TVF9NQVhfVlJJTkcp KQ0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiArDQo+ID4gKwl2cSA9IGRldi0+dmlydHF1ZXVlW3Zy aW5nX2lkeF07DQo+ID4gKwlpZiAodW5saWtlbHkoIXZxKSkNCj4gPiArCQlyZXR1cm4gLTE7DQo+ ID4gKw0KPiA+ICsJaW5mbGlnaHRfaW5mbyA9IHZxLT5pbmZsaWdodF9wYWNrZWQ7DQo+ID4gKwlp ZiAodW5saWtlbHkoIWluZmxpZ2h0X2luZm8pKQ0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiArDQo+ ID4gKwlkZXNjID0gdnEtPmRlc2NfcGFja2VkOw0KPiA+ICsJb2xkX2ZyZWVfaGVhZCA9IGluZmxp Z2h0X2luZm8tPm9sZF9mcmVlX2hlYWQ7DQo+ID4gKwlmcmVlX2hlYWQgPSBvbGRfZnJlZV9oZWFk Ow0KPiA+ICsNCj4gPiArCS8qIGluaXQgaGVhZGVyIGRlc2NyaXB0b3IgKi8NCj4gPiArCWluZmxp Z2h0X2luZm8tPmRlc2Nbb2xkX2ZyZWVfaGVhZF0ubnVtID0gMDsNCj4gPiArCWluZmxpZ2h0X2lu Zm8tPmRlc2Nbb2xkX2ZyZWVfaGVhZF0uY291bnRlciA9IHZxLT5nbG9iYWxfY291bnRlcisrOw0K PiA+ICsJaW5mbGlnaHRfaW5mby0+ZGVzY1tvbGRfZnJlZV9oZWFkXS5pbmZsaWdodCA9IDE7DQo+ IA0KPiBJIHRoaW5rIGhlYWQgaGFzIHRvIGJlIHZhbGlkYXRlZCBzbyB0aGF0IGl0IGRvZXMgbm90 IGNhdXNlcyBvdXQgb2YgYm91bmRzDQo+IGFjY2Vzc2VzLg0KR290IGl0Lg0KPiANCj4gPiArCS8q IHNhdmUgZGVzYyBlbnRyeSBpbiBmbGlnaHQgZW50cnkgKi8NCj4gPiArCXdoaWxlIChoZWFkICE9 ICgobGFzdCArIDEpICUgdnEtPnNpemUpKSB7DQo+ID4gKwkJaW5mbGlnaHRfaW5mby0+ZGVzY1tv bGRfZnJlZV9oZWFkXS5udW0rKzsNCj4gPiArCQlpbmZsaWdodF9pbmZvLT5kZXNjW2ZyZWVfaGVh ZF0uYWRkciA9IGRlc2NbaGVhZF0uYWRkcjsNCj4gPiArCQlpbmZsaWdodF9pbmZvLT5kZXNjW2Zy ZWVfaGVhZF0ubGVuID0gZGVzY1toZWFkXS5sZW47DQo+ID4gKwkJaW5mbGlnaHRfaW5mby0+ZGVz Y1tmcmVlX2hlYWRdLmZsYWdzID0gZGVzY1toZWFkXS5mbGFnczsNCj4gPiArCQlpbmZsaWdodF9p bmZvLT5kZXNjW2ZyZWVfaGVhZF0uaWQgPSBkZXNjW2hlYWRdLmlkOw0KPiA+ICsNCj4gPiArCQlp bmZsaWdodF9pbmZvLT5kZXNjW29sZF9mcmVlX2hlYWRdLmxhc3QgPSBmcmVlX2hlYWQ7DQo+ID4g KwkJZnJlZV9oZWFkID0gaW5mbGlnaHRfaW5mby0+ZGVzY1tmcmVlX2hlYWRdLm5leHQ7DQo+ID4g KwkJaW5mbGlnaHRfaW5mby0+ZnJlZV9oZWFkID0gZnJlZV9oZWFkOw0KPiA+ICsJCWhlYWQgPSAo aGVhZCArIDEpICUgdnEtPnNpemU7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaW5mbGlnaHRfaW5m by0+b2xkX2ZyZWVfaGVhZCA9IGZyZWVfaGVhZDsNCj4gPiArCSppbmZsaWdodF9lbnRyeSA9IG9s ZF9mcmVlX2hlYWQ7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4g K2ludA0KPiA+ICtydGVfdmhvc3RfY2xyX2luZmxpZ2h0X2Rlc2Nfc3BsaXQoaW50IHZpZCwgdWlu dDE2X3QgdnJpbmdfaWR4LA0KPiA+ICsJdWludDE2X3QgbGFzdF91c2VkX2lkeCwgdWludDE2X3Qg aWR4KSB7DQo+ID4gKwlzdHJ1Y3QgdmlydGlvX25ldCAqZGV2Ow0KPiA+ICsJc3RydWN0IHZob3N0 X3ZpcnRxdWV1ZSAqdnE7DQo+ID4gKw0KPiA+ICsJZGV2ID0gZ2V0X2RldmljZSh2aWQpOw0KPiA+ ICsJaWYgKHVubGlrZWx5KCFkZXYpKQ0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiArDQo+ID4gKwlp ZiAodW5saWtlbHkoIShkZXYtPnByb3RvY29sX2ZlYXR1cmVzICYNCj4gPiArCQkoMVVMTCA8PCBW SE9TVF9VU0VSX1BST1RPQ09MX0ZfSU5GTElHSFRfU0hNRkQpKSkpDQo+ID4gKwkJcmV0dXJuIDA7 DQo+ID4gKw0KPiA+ICsJaWYgKHVubGlrZWx5KHZxX2lzX3BhY2tlZChkZXYpKSkNCj4gPiArCQly ZXR1cm4gLTE7DQo+ID4gKw0KPiA+ICsJaWYgKHVubGlrZWx5KHZyaW5nX2lkeCA+PSBWSE9TVF9N QVhfVlJJTkcpKQ0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiArDQo+ID4gKwl2cSA9IGRldi0+dmly dHF1ZXVlW3ZyaW5nX2lkeF07DQo+ID4gKwlpZiAodW5saWtlbHkoIXZxKSkNCj4gPiArCQlyZXR1 cm4gLTE7DQo+ID4gKw0KPiA+ICsJaWYgKHVubGlrZWx5KCF2cS0+aW5mbGlnaHRfc3BsaXQpKQ0K PiA+ICsJCXJldHVybiAtMTsNCj4gPiArDQo+ID4gKwlydGVfY29tcGlsZXJfYmFycmllcigpOw0K PiA+ICsNCj4gPiArCXZxLT5pbmZsaWdodF9zcGxpdC0+ZGVzY1tpZHhdLmluZmxpZ2h0ID0gMDsN Cj4gDQo+IA0KPiBNYXliZSBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2hlY2sgaWR4IHZhbHVlLCBz byB0aGF0IGl0IGRvZXMgbm90IGNhdXNlcyBvdXQtb2YtDQo+IGJvdW5kIGFjY2Vzc2VzLg0KPiAN CkdvdCBpdC4NCj4gPiArDQo+ID4gKwlydGVfY29tcGlsZXJfYmFycmllcigpOw0KPiA+ICsNCj4g PiArCXZxLT5pbmZsaWdodF9zcGxpdC0+dXNlZF9pZHggPSBsYXN0X3VzZWRfaWR4Ow0KPiA+ICsJ cmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludA0KPiA+ICtydGVfdmhvc3RfY2xyX2lu ZmxpZ2h0X2Rlc2NfcGFja2VkKGludCB2aWQsIHVpbnQxNl90IHZyaW5nX2lkeCwNCj4gPiArCXVp bnQxNl90IGhlYWQpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCB2aXJ0aW9fbmV0ICpkZXY7DQo+ID4g KwlzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cTsNCj4gPiArCXN0cnVjdCBpbmZsaWdodF9pbmZv X3BhY2tlZCAqaW5mbGlnaHRfaW5mbzsNCj4gPiArDQo+ID4gKwlkZXYgPSBnZXRfZGV2aWNlKHZp ZCk7DQo+ID4gKwlpZiAodW5saWtlbHkoIWRldikpDQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsN Cj4gPiArCWlmICh1bmxpa2VseSghKGRldi0+cHJvdG9jb2xfZmVhdHVyZXMgJg0KPiA+ICsJCSgx VUxMIDw8IFZIT1NUX1VTRVJfUFJPVE9DT0xfRl9JTkZMSUdIVF9TSE1GRCkpKSkNCj4gPiArCQly ZXR1cm4gMDsNCj4gPiArDQo+ID4gKwlpZiAodW5saWtlbHkoIXZxX2lzX3BhY2tlZChkZXYpKSkN Cj4gPiArCQlyZXR1cm4gLTE7DQo+ID4gKw0KPiA+ICsJaWYgKHVubGlrZWx5KHZyaW5nX2lkeCA+ PSBWSE9TVF9NQVhfVlJJTkcpKQ0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiArDQo+ID4gKwl2cSA9 IGRldi0+dmlydHF1ZXVlW3ZyaW5nX2lkeF07DQo+ID4gKwlpZiAodW5saWtlbHkoIXZxKSkNCj4g PiArCQlyZXR1cm4gLTE7DQo+ID4gKw0KPiA+ICsJaW5mbGlnaHRfaW5mbyA9IHZxLT5pbmZsaWdo dF9wYWNrZWQ7DQo+ID4gKwlpZiAodW5saWtlbHkoIWluZmxpZ2h0X2luZm8pKQ0KPiA+ICsJCXJl dHVybiAtMTsNCj4gPiArDQo+ID4gKwlydGVfY29tcGlsZXJfYmFycmllcigpOw0KPiA+ICsNCj4g PiArCWluZmxpZ2h0X2luZm8tPmRlc2NbaGVhZF0uaW5mbGlnaHQgPSAwOw0KPiANCj4gDQo+IE1h eWJlIGl0IHdvdWxkIGJlIGJldHRlciB0byBjaGVjayBoZWFkIHZhbHVlLCBzbyB0aGF0IGl0IGRv ZXMgbm90IGNhdXNlcyBvdXQtb2YtDQo+IGJvdW5kIGFjY2Vzc2VzLg0KPiANCkdvdCBpdC4NCj4g DQo+ID4gKwlydGVfY29tcGlsZXJfYmFycmllcigpOw0KPiA+ICsNCj4gPiArCWluZmxpZ2h0X2lu Zm8tPm9sZF9mcmVlX2hlYWQgPSBpbmZsaWdodF9pbmZvLT5mcmVlX2hlYWQ7DQo+ID4gKwlpbmZs aWdodF9pbmZvLT5vbGRfdXNlZF9pZHggPSBpbmZsaWdodF9pbmZvLT51c2VkX2lkeDsNCj4gPiAr CWluZmxpZ2h0X2luZm8tPm9sZF91c2VkX3dyYXBfY291bnRlciA9DQo+ID4gK2luZmxpZ2h0X2lu Zm8tPnVzZWRfd3JhcF9jb3VudGVyOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtpbnQNCj4gPiArcnRlX3Zob3N0X3NldF9sYXN0X2luZmxpZ2h0X2lvX3NwbGl0 KGludCB2aWQsIHVpbnQxNl90IHZyaW5nX2lkeCwNCj4gPiArCXVpbnQxNl90IGlkeCkNCj4gPiAr ew0KPiA+ICsJc3RydWN0IHZpcnRpb19uZXQgKmRldjsNCj4gPiArCXN0cnVjdCB2aG9zdF92aXJ0 cXVldWUgKnZxOw0KPiA+ICsNCj4gPiArCWRldiA9IGdldF9kZXZpY2UodmlkKTsNCj4gPiArCWlm ICh1bmxpa2VseSghZGV2KSkNCj4gPiArCQlyZXR1cm4gLTE7DQo+ID4gKw0KPiA+ICsJaWYgKHVu bGlrZWx5KCEoZGV2LT5wcm90b2NvbF9mZWF0dXJlcyAmDQo+ID4gKwkJKDFVTEwgPDwgVkhPU1Rf VVNFUl9QUk9UT0NPTF9GX0lORkxJR0hUX1NITUZEKSkpKQ0KPiA+ICsJCXJldHVybiAwOw0KPiA+ ICsNCj4gPiArCWlmICh1bmxpa2VseSh2cV9pc19wYWNrZWQoZGV2KSkpDQo+ID4gKwkJcmV0dXJu IC0xOw0KPiA+ICsNCj4gPiArCWlmICh1bmxpa2VseSh2cmluZ19pZHggPj0gVkhPU1RfTUFYX1ZS SU5HKSkNCj4gPiArCQlyZXR1cm4gLTE7DQo+ID4gKw0KPiA+ICsJdnEgPSBkZXYtPnZpcnRxdWV1 ZVt2cmluZ19pZHhdOw0KPiA+ICsJaWYgKHVubGlrZWx5KCF2cSkpDQo+ID4gKwkJcmV0dXJuIC0x Ow0KPiA+ICsNCj4gPiArCWlmICh1bmxpa2VseSghdnEtPmluZmxpZ2h0X3NwbGl0KSkNCj4gPiAr CQlyZXR1cm4gLTE7DQo+ID4gKw0KPiA+ICsJdnEtPmluZmxpZ2h0X3NwbGl0LT5sYXN0X2luZmxp Z2h0X2lvID0gaWR4Ow0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludA0K PiA+ICtydGVfdmhvc3Rfc2V0X2xhc3RfaW5mbGlnaHRfaW9fcGFja2VkKGludCB2aWQsIHVpbnQx Nl90IHZyaW5nX2lkeCwNCj4gPiArCXVpbnQxNl90IGhlYWQpDQo+ID4gK3sNCj4gPiArCXN0cnVj dCB2aXJ0aW9fbmV0ICpkZXY7DQo+ID4gKwlzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cTsNCj4g PiArCXN0cnVjdCBpbmZsaWdodF9pbmZvX3BhY2tlZCAqaW5mbGlnaHRfaW5mbzsNCj4gPiArCXVp bnQxNl90IGxhc3Q7DQo+ID4gKw0KPiA+ICsJZGV2ID0gZ2V0X2RldmljZSh2aWQpOw0KPiA+ICsJ aWYgKHVubGlrZWx5KCFkZXYpKQ0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiArDQo+ID4gKwlpZiAo dW5saWtlbHkoIShkZXYtPnByb3RvY29sX2ZlYXR1cmVzICYNCj4gPiArCQkoMVVMTCA8PCBWSE9T VF9VU0VSX1BST1RPQ09MX0ZfSU5GTElHSFRfU0hNRkQpKSkpDQo+ID4gKwkJcmV0dXJuIDA7DQo+ ID4gKw0KPiA+ICsJaWYgKHVubGlrZWx5KCF2cV9pc19wYWNrZWQoZGV2KSkpDQo+ID4gKwkJcmV0 dXJuIC0xOw0KPiA+ICsNCj4gPiArCWlmICh1bmxpa2VseSh2cmluZ19pZHggPj0gVkhPU1RfTUFY X1ZSSU5HKSkNCj4gPiArCQlyZXR1cm4gLTE7DQo+ID4gKw0KPiA+ICsJdnEgPSBkZXYtPnZpcnRx dWV1ZVt2cmluZ19pZHhdOw0KPiA+ICsJaWYgKHVubGlrZWx5KCF2cSkpDQo+ID4gKwkJcmV0dXJu IC0xOw0KPiA+ICsNCj4gPiArCWluZmxpZ2h0X2luZm8gPSB2cS0+aW5mbGlnaHRfcGFja2VkOw0K PiA+ICsJaWYgKHVubGlrZWx5KCFpbmZsaWdodF9pbmZvKSkNCj4gPiArCQlyZXR1cm4gLTE7DQo+ ID4gKw0KPiA+ICsJbGFzdCA9IGluZmxpZ2h0X2luZm8tPmRlc2NbaGVhZF0ubGFzdDsNCj4gDQo+ IERpdHRvDQpHb3QgaXQuDQo+ID4gKwlpbmZsaWdodF9pbmZvLT5kZXNjW2xhc3RdLm5leHQgPSBp bmZsaWdodF9pbmZvLT5mcmVlX2hlYWQ7DQo+ID4gKwlpbmZsaWdodF9pbmZvLT5mcmVlX2hlYWQg PSBoZWFkOw0KPiA+ICsJaW5mbGlnaHRfaW5mby0+dXNlZF9pZHggKz0gaW5mbGlnaHRfaW5mby0+ ZGVzY1toZWFkXS5udW07DQo+ID4gKwlpZiAoaW5mbGlnaHRfaW5mby0+dXNlZF9pZHggPj0gaW5m bGlnaHRfaW5mby0+ZGVzY19udW0pIHsNCj4gPiArCQlpbmZsaWdodF9pbmZvLT51c2VkX2lkeCAt PSBpbmZsaWdodF9pbmZvLT5kZXNjX251bTsNCj4gPiArCQlpbmZsaWdodF9pbmZvLT51c2VkX3dy YXBfY291bnRlciA9DQo+ID4gKwkJCSFpbmZsaWdodF9pbmZvLT51c2VkX3dyYXBfY291bnRlcjsN Cj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgaW50 DQo+ID4gIHJ0ZV92aG9zdF92cmluZ19jYWxsKGludCB2aWQsIHVpbnQxNl90IHZyaW5nX2lkeCkg IHsNCj4gPg0KVGhhbmtzLg0KSmluDQo=