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 D40DEA04B7; Mon, 21 Sep 2020 09:47:10 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 38E331D92D; Mon, 21 Sep 2020 09:47:10 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 5124D1D8E0 for ; Mon, 21 Sep 2020 09:47:06 +0200 (CEST) IronPort-SDR: 48QU3ZtoASWf2PRH+LLHcIBKOndKB/TOSXTDKHNkx45fZvLaNUGg271eIi+Yh0Es2vDMufeD/m bGHJVXViERxg== X-IronPort-AV: E=McAfee;i="6000,8403,9750"; a="147984578" X-IronPort-AV: E=Sophos;i="5.77,286,1596524400"; d="scan'208";a="147984578" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Sep 2020 00:47:05 -0700 IronPort-SDR: AWITIUo8kI5C2vKgpLEFvab0m0BAkCh6gD2HzpFchUUxwaiMHr9y7ivHJXywRK4OkJCTBH1P0I sc+3FazFW56g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,286,1596524400"; d="scan'208";a="453897147" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga004.jf.intel.com with ESMTP; 21 Sep 2020 00:47:04 -0700 Received: from shsmsx601.ccr.corp.intel.com (10.109.6.141) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 21 Sep 2020 00:47:04 -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; Mon, 21 Sep 2020 15:47:02 +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; Mon, 21 Sep 2020 15:47:02 +0800 From: "Liu, Yong" To: Maxime Coquelin , "Xia, Chenbo" , "Wang, Zhihong" CC: "dev@dpdk.org" Thread-Topic: [PATCH v1 4/5] vhost: add packed ring vectorized dequeue Thread-Index: AQHWddiCQDM+UfYsh0OKK8LHgVgsKaluEfUAgAS8KVCAABx3EA== Date: Mon, 21 Sep 2020 07:47:02 +0000 Message-ID: <0da52623500a44eca4c9367802043cd4@intel.com> References: <20200819032414.51430-1-yong.liu@intel.com> <20200819032414.51430-5-yong.liu@intel.com> <0605c461-d96a-0996-8dc4-b9097cdea9e6@redhat.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.239.127.36] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v1 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" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGl1LCBZb25nDQo+IFNl bnQ6IE1vbmRheSwgU2VwdGVtYmVyIDIxLCAyMDIwIDI6MjcgUE0NCj4gVG86ICdNYXhpbWUgQ29x dWVsaW4nIDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT47IFhpYSwgQ2hlbmJvDQo+IDxjaGVu Ym8ueGlhQGludGVsLmNvbT47IFdhbmcsIFpoaWhvbmcgPHpoaWhvbmcud2FuZ0BpbnRlbC5jb20+ DQo+IENjOiBkZXZAZHBkay5vcmcNCj4gU3ViamVjdDogUkU6IFtQQVRDSCB2MSA0LzVdIHZob3N0 OiBhZGQgcGFja2VkIHJpbmcgdmVjdG9yaXplZCBkZXF1ZXVlDQo+IA0KPiANCj4gDQo+ID4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBNYXhpbWUgQ29xdWVsaW4gPG1heGlt ZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiA+IFNlbnQ6IEZyaWRheSwgU2VwdGVtYmVyIDE4LCAy MDIwIDk6NDUgUE0NCj4gPiBUbzogTGl1LCBZb25nIDx5b25nLmxpdUBpbnRlbC5jb20+OyBYaWEs IENoZW5ibyA8Y2hlbmJvLnhpYUBpbnRlbC5jb20+Ow0KPiA+IFdhbmcsIFpoaWhvbmcgPHpoaWhv bmcud2FuZ0BpbnRlbC5jb20+DQo+ID4gQ2M6IGRldkBkcGRrLm9yZw0KPiA+IFN1YmplY3Q6IFJl OiBbUEFUQ0ggdjEgNC81XSB2aG9zdDogYWRkIHBhY2tlZCByaW5nIHZlY3Rvcml6ZWQgZGVxdWV1 ZQ0KPiA+DQo+ID4NCj4gPg0KPiA+IE9uIDgvMTkvMjAgNToyNCBBTSwgTWFydmluIExpdSB3cm90 ZToNCj4gPiA+IE9wdGltaXplIHZob3N0IHBhY2tlZCByaW5nIGRlcXVldWUgcGF0aCB3aXRoIFNJ TUQgaW5zdHJ1Y3Rpb25zLiBGb3VyDQo+ID4gPiBkZXNjcmlwdG9ycyBzdGF0dXMgY2hlY2sgYW5k IHdyaXRlYmFjayBhcmUgYmF0Y2hlZCBoYW5kbGVkIHdpdGgNCj4gQVZYNTEyDQo+ID4gPiBpbnN0 cnVjdGlvbnMuIEFkZHJlc3MgdHJhbnNsYXRpb24gb3BlcmF0aW9ucyBhcmUgYWxzbyBhY2NlbGVy YXRlZCBieQ0KPiA+ID4gQVZYNTEyIGluc3RydWN0aW9ucy4NCj4gPiA+DQo+ID4gPiBJZiBwbGF0 Zm9ybSBvciBjb21waWxlciBub3Qgc3VwcG9ydCB2ZWN0b3JpemF0aW9uLCB3aWxsIGZhbGxiYWNr IHRvDQo+ID4gPiBkZWZhdWx0IHBhdGguDQo+ID4gPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogTWFy dmluIExpdSA8eW9uZy5saXVAaW50ZWwuY29tPg0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9s aWIvbGlicnRlX3Zob3N0L01ha2VmaWxlIGIvbGliL2xpYnJ0ZV92aG9zdC9NYWtlZmlsZQ0KPiA+ ID4gaW5kZXggNGYyZjNlNDdkYS4uYzBjZDdkNDk4ZiAxMDA2NDQNCj4gPiA+IC0tLSBhL2xpYi9s aWJydGVfdmhvc3QvTWFrZWZpbGUNCj4gPiA+ICsrKyBiL2xpYi9saWJydGVfdmhvc3QvTWFrZWZp bGUNCj4gPiA+IEBAIC0zMSw2ICszMSwxMyBAQCBDRkxBR1MgKz0gLURWSE9TVF9JQ0NfVU5ST0xM X1BSQUdNQQ0KPiA+ID4gIGVuZGlmDQo+ID4gPiAgZW5kaWYNCj4gPiA+DQo+ID4gPiAraWZuZXEg KCQoRk9SQ0VfRElTQUJMRV9BVlg1MTIpLCB5KQ0KPiA+ID4gKyAgICAgICAgQ0NfQVZYNTEyX1NV UFBPUlQ9XA0KPiA+ID4gKyAgICAgICAgJChzaGVsbCAkKENDKSAtbWFyY2g9bmF0aXZlIC1kTSAt RSAtIDwvZGV2L251bGwgMj4mMSB8IFwNCj4gPiA+ICsgICAgICAgIHNlZCAnLy4ve0g7JCQhZH0g OyB4IDsgL0FWWDUxMkYvIWQ7IC9BVlg1MTJCVy8hZDsgL0FWWDUxMlZMLyFkJyB8DQo+IFwNCj4g PiA+ICsgICAgICAgIGdyZXAgLXEgQVZYNTEyICYmIGVjaG8gMSkNCj4gPiA+ICtlbmRpZg0KPiA+ ID4gKw0KPiA+ID4gIGlmZXEgKCQoQ09ORklHX1JURV9MSUJSVEVfVkhPU1RfTlVNQSkseSkNCj4g PiA+ICBMRExJQlMgKz0gLWxudW1hDQo+ID4gPiAgZW5kaWYNCj4gPiA+IEBAIC00MCw2ICs0Nywx MiBAQCBMRExJQlMgKz0gLWxydGVfZWFsIC1scnRlX21lbXBvb2wgLWxydGVfbWJ1ZiAtDQo+ID4g bHJ0ZV9ldGhkZXYgLWxydGVfbmV0DQo+ID4gPiAgU1JDUy0kKENPTkZJR19SVEVfTElCUlRFX1ZI T1NUKSA6PSBmZF9tYW4uYyBpb3RsYi5jIHNvY2tldC5jIHZob3N0LmMNCj4gXA0KPiA+ID4gIAkJ CQkJdmhvc3RfdXNlci5jIHZpcnRpb19uZXQuYyB2ZHBhLmMNCj4gPiA+DQo+ID4gPiAraWZlcSAo JChDQ19BVlg1MTJfU1VQUE9SVCksIDEpDQo+ID4gPiArQ0ZMQUdTICs9IC1EQ0NfQVZYNTEyX1NV UFBPUlQNCj4gPiA+ICtTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVfVkhPU1QpICs9IHZob3N0X3Zl Y19hdnguYw0KPiA+ID4gK0NGTEFHU192aG9zdF92ZWNfYXZ4Lm8gKz0gLW1hdng1MTJmIC1tYXZ4 NTEyYncgLW1hdng1MTJ2bA0KPiA+ID4gK2VuZGlmDQo+ID4gPiArDQo+ID4gPiAgIyBpbnN0YWxs IGluY2x1ZGVzDQo+ID4gPiAgU1lNTElOSy0kKENPTkZJR19SVEVfTElCUlRFX1ZIT1NUKS1pbmNs dWRlICs9IHJ0ZV92aG9zdC5oDQo+ID4gcnRlX3ZkcGEuaCBcDQo+ID4gPiAgCQkJCQkJcnRlX3Zk cGFfZGV2LmgNCj4gPiBydGVfdmhvc3RfYXN5bmMuaA0KPiA+ID4gZGlmZiAtLWdpdCBhL2xpYi9s aWJydGVfdmhvc3QvbWVzb24uYnVpbGQgYi9saWIvbGlicnRlX3Zob3N0L21lc29uLmJ1aWxkDQo+ ID4gPiBpbmRleCBjYzlhYTY1YzY3Li5jMTQ4MTgwMmQ3IDEwMDY0NA0KPiA+ID4gLS0tIGEvbGli L2xpYnJ0ZV92aG9zdC9tZXNvbi5idWlsZA0KPiA+ID4gKysrIGIvbGliL2xpYnJ0ZV92aG9zdC9t ZXNvbi5idWlsZA0KPiA+ID4gQEAgLTgsNiArOCwyMiBAQCBlbmRpZg0KPiA+ID4gIGlmIGhhc19s aWJudW1hID09IDENCj4gPiA+ICAJZHBka19jb25mLnNldDEwKCdSVEVfTElCUlRFX1ZIT1NUX05V TUEnLCB0cnVlKQ0KPiA+ID4gIGVuZGlmDQo+ID4gPiArDQo+ID4gPiAraWYgYXJjaF9zdWJkaXIg PT0gJ3g4NicNCj4gPiA+ICsgICAgICAgIGlmIG5vdCBtYWNoaW5lX2FyZ3MuY29udGFpbnMoJy1t bm8tYXZ4NTEyZicpDQo+ID4gPiArICAgICAgICAgICAgICAgIGlmIGNjLmhhc19hcmd1bWVudCgn LW1hdng1MTJmJykgYW5kIGNjLmhhc19hcmd1bWVudCgnLQ0KPiA+IG1hdng1MTJ2bCcpIGFuZCBj Yy5oYXNfYXJndW1lbnQoJy1tYXZ4NTEyYncnKQ0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGNmbGFncyArPSBbJy1EQ0NfQVZYNTEyX1NVUFBPUlQnXQ0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIHZob3N0X2F2eDUxMl9saWIgPSBzdGF0aWNfbGlicmFyeSgndmhvc3RfYXZ4 NTEyX2xpYicsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICd2aG9zdF92ZWNfYXZ4LmMnLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXM6IFtzdGF0aWNfcnRlX2VhbCwNCj4g PiBzdGF0aWNfcnRlX21lbXBvb2wsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfcnRlX21idWYsIHN0YXRpY19ydGVfZXRoZGV2 LA0KPiA+IHN0YXRpY19ydGVfbmV0XSwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJlY3RvcmllczogaW5jbHVkZXMsDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfYXJnczog W2NmbGFncywgJy1tYXZ4NTEyZicsICctbWF2eDUxMmJ3JywgJy0NCj4gPiBtYXZ4NTEydmwnXSkN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBvYmpzICs9DQo+IHZob3N0X2F2eDUxMl9s aWIuZXh0cmFjdF9vYmplY3RzKCd2aG9zdF92ZWNfYXZ4LmMnKQ0KPiA+ID4gKyAgICAgICAgICAg ICAgICBlbmRpZg0KPiA+ID4gKyAgICAgICAgZW5kaWYNCj4gPiA+ICtlbmRpZg0KPiA+ID4gKw0K PiA+ID4gIGlmICh0b29sY2hhaW4gPT0gJ2djYycgYW5kIGNjLnZlcnNpb24oKS52ZXJzaW9uX2Nv bXBhcmUoJz49OC4zLjAnKSkNCj4gPiA+ICAJY2ZsYWdzICs9ICctRFZIT1NUX0dDQ19VTlJPTExf UFJBR01BJw0KPiA+ID4gIGVsaWYgKHRvb2xjaGFpbiA9PSAnY2xhbmcnIGFuZCBjYy52ZXJzaW9u KCkudmVyc2lvbl9jb21wYXJlKCc+PTMuNy4wJykpDQo+ID4gPiBkaWZmIC0tZ2l0IGEvbGliL2xp YnJ0ZV92aG9zdC92aG9zdC5oIGIvbGliL2xpYnJ0ZV92aG9zdC92aG9zdC5oDQo+ID4gPiBpbmRl eCA0YTgxZjE4ZjAxLi5mYzdkYWYyMTQ1IDEwMDY0NA0KPiA+ID4gLS0tIGEvbGliL2xpYnJ0ZV92 aG9zdC92aG9zdC5oDQo+ID4gPiArKysgYi9saWIvbGlicnRlX3Zob3N0L3Zob3N0LmgNCj4gPiA+ IEBAIC0xMTI0LDQgKzExMjQsMTIgQEAgdmlydGlvX2Rldl9wa3RtYnVmX2FsbG9jKHN0cnVjdCB2 aXJ0aW9fbmV0DQo+ID4gKmRldiwgc3RydWN0IHJ0ZV9tZW1wb29sICptcCwNCj4gPiA+ICAJcmV0 dXJuIE5VTEw7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+ICtpbnQNCj4gPiA+ICt2aG9zdF9yZXNl cnZlX2F2YWlsX2JhdGNoX3BhY2tlZF9hdngoc3RydWN0IHZpcnRpb19uZXQgKmRldiwNCj4gPiA+ ICsJCQkJIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLA0KPiA+ID4gKwkJCQkgc3RydWN0IHJ0 ZV9tZW1wb29sICptYnVmX3Bvb2wsDQo+ID4gPiArCQkJCSBzdHJ1Y3QgcnRlX21idWYgKipwa3Rz LA0KPiA+ID4gKwkJCQkgdWludDE2X3QgYXZhaWxfaWR4LA0KPiA+ID4gKwkJCQkgdWludHB0cl90 ICpkZXNjX2FkZHJzLA0KPiA+ID4gKwkJCQkgdWludDE2X3QgKmlkcyk7DQo+ID4gPiAgI2VuZGlm IC8qIF9WSE9TVF9ORVRfQ0RFVl9IXyAqLw0KPiA+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVf dmhvc3Qvdmhvc3RfdmVjX2F2eC5jDQo+ID4gYi9saWIvbGlicnRlX3Zob3N0L3Zob3N0X3ZlY19h dnguYw0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGluZGV4IDAwMDAwMDAwMDAu LmU4MzYxZDE4ZmENCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL2xpYi9saWJydGVf dmhvc3Qvdmhvc3RfdmVjX2F2eC5jDQo+ID4gPiBAQCAtMCwwICsxLDE1MiBAQA0KPiA+ID4gKy8q IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiA+ICsgKiBDb3B5cmln aHQoYykgMjAxMC0yMDE2IEludGVsIENvcnBvcmF0aW9uDQo+ID4gPiArICovDQo+ID4gPiArI2lu Y2x1ZGUgPHN0ZGludC5oPg0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlICJ2aG9zdC5oIg0KPiA+ ID4gKw0KPiA+ID4gKyNkZWZpbmUgQllURV9TSVpFIDgNCj4gPiA+ICsvKiByZWZlcmVuY2UgY291 bnQgb2Zmc2V0IGluIG1idWYgcmVhcm0gZGF0YSAqLw0KPiA+ID4gKyNkZWZpbmUgUkVGQ05UX0JJ VFNfT0ZGU0VUICgob2Zmc2V0b2Yoc3RydWN0IHJ0ZV9tYnVmLCByZWZjbnQpIC0gXA0KPiA+ID4g KwlvZmZzZXRvZihzdHJ1Y3QgcnRlX21idWYsIHJlYXJtX2RhdGEpKSAqIEJZVEVfU0laRSkNCj4g PiA+ICsvKiBzZWdtZW50IG51bWJlciBvZmZzZXQgaW4gbWJ1ZiByZWFybSBkYXRhICovDQo+ID4g PiArI2RlZmluZSBTRUdfTlVNX0JJVFNfT0ZGU0VUICgob2Zmc2V0b2Yoc3RydWN0IHJ0ZV9tYnVm LCBuYl9zZWdzKSAtIFwNCj4gPiA+ICsJb2Zmc2V0b2Yoc3RydWN0IHJ0ZV9tYnVmLCByZWFybV9k YXRhKSkgKiBCWVRFX1NJWkUpDQo+ID4gPiArDQo+ID4gPiArLyogZGVmYXVsdCByZWFybSBkYXRh ICovDQo+ID4gPiArI2RlZmluZSBERUZBVUxUX1JFQVJNX0RBVEEgKDFVTEwgPDwgU0VHX05VTV9C SVRTX09GRlNFVCB8IFwNCj4gPiA+ICsJMVVMTCA8PCBSRUZDTlRfQklUU19PRkZTRVQpDQo+ID4g PiArDQo+ID4gPiArI2RlZmluZSBERVNDX0ZMQUdTX1NIT1JUX09GRlNFVCAob2Zmc2V0b2Yoc3Ry dWN0DQo+IHZyaW5nX3BhY2tlZF9kZXNjLA0KPiA+IGZsYWdzKSAvIFwNCj4gPiA+ICsJc2l6ZW9m KHVpbnQxNl90KSkNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIERFU0NfRkxBR1NfU0hPUlRfU0la RSAoc2l6ZW9mKHN0cnVjdCB2cmluZ19wYWNrZWRfZGVzYykgLyBcDQo+ID4gPiArCXNpemVvZih1 aW50MTZfdCkpDQo+ID4gPiArI2RlZmluZSBCQVRDSF9GTEFHU19NQVNLICgxIDw8IERFU0NfRkxB R1NfU0hPUlRfT0ZGU0VUIHwgXA0KPiA+ID4gKwkxIDw8IChERVNDX0ZMQUdTX1NIT1JUX09GRlNF VCArIERFU0NfRkxBR1NfU0hPUlRfU0laRSkgfCBcDQo+ID4gPiArCTEgPDwgKERFU0NfRkxBR1Nf U0hPUlRfT0ZGU0VUICsgREVTQ19GTEFHU19TSE9SVF9TSVpFICogMikgIHwNCj4gPiBcDQo+ID4g PiArCTEgPDwgKERFU0NfRkxBR1NfU0hPUlRfT0ZGU0VUICsgREVTQ19GTEFHU19TSE9SVF9TSVpF ICogMykpDQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBGTEFHU19CSVRTX09GRlNFVCAoKG9mZnNl dG9mKHN0cnVjdCB2cmluZ19wYWNrZWRfZGVzYywgZmxhZ3MpIC0NCj4gXA0KPiA+ID4gKwlvZmZz ZXRvZihzdHJ1Y3QgdnJpbmdfcGFja2VkX2Rlc2MsIGxlbikpICogQllURV9TSVpFKQ0KPiA+ID4g Kw0KPiA+ID4gKyNkZWZpbmUgUEFDS0VEX0ZMQUdTX01BU0sgKCgwVUxMIHwgVlJJTkdfREVTQ19G X0FWQUlMIHwNCj4gPiBWUklOR19ERVNDX0ZfVVNFRCkgXA0KPiA+ID4gKwk8PCBGTEFHU19CSVRT X09GRlNFVCkNCj4gPiA+ICsjZGVmaW5lIFBBQ0tFRF9BVkFJTF9GTEFHICgoMFVMTCB8IFZSSU5H X0RFU0NfRl9BVkFJTCkgPDwNCj4gPiBGTEFHU19CSVRTX09GRlNFVCkNCj4gPiA+ICsjZGVmaW5l IFBBQ0tFRF9BVkFJTF9GTEFHX1dSQVAgKCgwVUxMIHwgVlJJTkdfREVTQ19GX1VTRUQpIDw8DQo+ IFwNCj4gPiA+ICsJRkxBR1NfQklUU19PRkZTRVQpDQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBE RVNDX0ZMQUdTX1BPUyAweGFhDQo+ID4gPiArI2RlZmluZSBNQlVGX0xFTlNfUE9TIDB4NjY2Ng0K PiA+ID4gKw0KPiA+ID4gK2ludA0KPiA+ID4gK3Zob3N0X3Jlc2VydmVfYXZhaWxfYmF0Y2hfcGFj a2VkX2F2eChzdHJ1Y3QgdmlydGlvX25ldCAqZGV2LA0KPiA+ID4gKwkJCQkgc3RydWN0IHZob3N0 X3ZpcnRxdWV1ZSAqdnEsDQo+ID4gPiArCQkJCSBzdHJ1Y3QgcnRlX21lbXBvb2wgKm1idWZfcG9v bCwNCj4gPiA+ICsJCQkJIHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMsDQo+ID4gPiArCQkJCSB1aW50 MTZfdCBhdmFpbF9pZHgsDQo+ID4gPiArCQkJCSB1aW50cHRyX3QgKmRlc2NfYWRkcnMsDQo+ID4g PiArCQkJCSB1aW50MTZfdCAqaWRzKQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IHZyaW5nX3Bh Y2tlZF9kZXNjICpkZXNjcyA9IHZxLT5kZXNjX3BhY2tlZDsNCj4gPiA+ICsJdWludDMyX3QgZGVz Y3Nfc3RhdHVzOw0KPiA+ID4gKwl2b2lkICpkZXNjX2FkZHI7DQo+ID4gPiArCXVpbnQxNl90IGk7 DQo+ID4gPiArCXVpbnQ4X3QgY21wX2xvdywgY21wX2hpZ2gsIGNtcF9yZXN1bHQ7DQo+ID4gPiAr CXVpbnQ2NF90IGxlbnNbUEFDS0VEX0JBVENIX1NJWkVdOw0KPiA+ID4gKw0KPiA+ID4gKwlpZiAo dW5saWtlbHkoYXZhaWxfaWR4ICYgUEFDS0VEX0JBVENIX01BU0spKQ0KPiA+ID4gKwkJcmV0dXJu IC0xOw0KPiA+ID4gKw0KPiA+ID4gKwkvKiBsb2FkIDQgZGVzY3MgKi8NCj4gPiA+ICsJZGVzY19h ZGRyID0gJnZxLT5kZXNjX3BhY2tlZFthdmFpbF9pZHhdOw0KPiA+ID4gKwlfX201MTJpIGRlc2Nf dmVjID0gX21tNTEyX2xvYWR1X3NpNTEyKGRlc2NfYWRkcik7DQo+ID4gPiArDQo+ID4gPiArCS8q IGJ1cnN0IGNoZWNrIGZvdXIgc3RhdHVzICovDQo+ID4gPiArCV9fbTUxMmkgYXZhaWxfZmxhZ192 ZWM7DQo+ID4gPiArCWlmICh2cS0+YXZhaWxfd3JhcF9jb3VudGVyKQ0KPiA+ID4gKyNpZiBkZWZp bmVkKFJURV9BUkNIX0k2ODYpDQo+ID4gPiArCQlhdmFpbF9mbGFnX3ZlYyA9IF9tbTUxMl9zZXQ0 X2VwaTY0KFBBQ0tFRF9BVkFJTF9GTEFHLA0KPiA+IDB4MCwNCj4gPiA+ICsJCQkJCVBBQ0tFRF9G TEFHU19NQVNLLCAweDApOw0KPiA+ID4gKyNlbHNlDQo+ID4gPiArCQlhdmFpbF9mbGFnX3ZlYyA9 DQo+ID4gX21tNTEyX21hc2t6X3NldDFfZXBpNjQoREVTQ19GTEFHU19QT1MsDQo+ID4gPiArCQkJ CQlQQUNLRURfQVZBSUxfRkxBRyk7DQo+ID4gPiArDQo+ID4gPiArI2VuZGlmDQo+ID4gPiArCWVs c2UNCj4gPiA+ICsjaWYgZGVmaW5lZChSVEVfQVJDSF9JNjg2KQ0KPiA+ID4gKwkJYXZhaWxfZmxh Z192ZWMgPQ0KPiA+IF9tbTUxMl9zZXQ0X2VwaTY0KFBBQ0tFRF9BVkFJTF9GTEFHX1dSQVAsDQo+ ID4gPiArCQkJCQkweDAsIFBBQ0tFRF9BVkFJTF9GTEFHX1dSQVAsDQo+ID4gMHgwKTsNCj4gPiA+ ICsjZWxzZQ0KPiA+ID4gKwkJYXZhaWxfZmxhZ192ZWMgPQ0KPiA+IF9tbTUxMl9tYXNrel9zZXQx X2VwaTY0KERFU0NfRkxBR1NfUE9TLA0KPiA+ID4gKwkJCQkJUEFDS0VEX0FWQUlMX0ZMQUdfV1JB UCk7DQo+ID4gPiArI2VuZGlmDQo+ID4gPiArDQo+ID4gPiArCWRlc2NzX3N0YXR1cyA9IF9tbTUx Ml9jbXBfZXB1MTZfbWFzayhkZXNjX3ZlYywgYXZhaWxfZmxhZ192ZWMsDQo+ID4gPiArCQlfTU1f Q01QSU5UX05FKTsNCj4gPiA+ICsJaWYgKGRlc2NzX3N0YXR1cyAmIEJBVENIX0ZMQUdTX01BU0sp DQo+ID4gPiArCQlyZXR1cm4gLTE7DQo+ID4gPiArDQo+ID4gPiArCS8qIGNoZWNrIGJ1ZmZlciBm aXQgaW50byBvbmUgcmVnaW9uICYgdHJhbnNsYXRlIGFkZHJlc3MgKi8NCj4gPiA+ICsJX19tNTEy aSByZWdpb25zX2xvd19hZGRycyA9DQo+ID4gPiArCQlfbW01MTJfbG9hZHVfc2k1MTIoKHZvaWQg KikmZGV2LT5yZWdpb25zX2xvd19hZGRycyk7DQo+ID4gPiArCV9fbTUxMmkgcmVnaW9uc19oaWdo X2FkZHJzID0NCj4gPiA+ICsJCV9tbTUxMl9sb2FkdV9zaTUxMigodm9pZCAqKSZkZXYtPnJlZ2lv bnNfaGlnaF9hZGRycyk7DQo+ID4gPiArCXZob3N0X2Zvcl9lYWNoX3RyeV91bnJvbGwoaSwgMCwg UEFDS0VEX0JBVENIX1NJWkUpIHsNCj4gPiA+ICsJCXVpbnQ2NF90IGFkZHJfbG93ID0gZGVzY3Nb YXZhaWxfaWR4ICsgaV0uYWRkcjsNCj4gPiA+ICsJCXVpbnQ2NF90IGFkZHJfaGlnaCA9IGFkZHJf bG93ICsgZGVzY3NbYXZhaWxfaWR4ICsgaV0ubGVuOw0KPiA+ID4gKwkJX19tNTEyaSBsb3dfYWRk cl92ZWMgPSBfbW01MTJfc2V0MV9lcGk2NChhZGRyX2xvdyk7DQo+ID4gPiArCQlfX201MTJpIGhp Z2hfYWRkcl92ZWMgPSBfbW01MTJfc2V0MV9lcGk2NChhZGRyX2hpZ2gpOw0KPiA+ID4gKw0KPiA+ ID4gKwkJY21wX2xvdyA9IF9tbTUxMl9jbXBfZXBpNjRfbWFzayhsb3dfYWRkcl92ZWMsDQo+ID4g PiArCQkJCXJlZ2lvbnNfbG93X2FkZHJzLCBfTU1fQ01QSU5UX05MVCk7DQo+ID4gPiArCQljbXBf aGlnaCA9IF9tbTUxMl9jbXBfZXBpNjRfbWFzayhoaWdoX2FkZHJfdmVjLA0KPiA+ID4gKwkJCQly ZWdpb25zX2hpZ2hfYWRkcnMsIF9NTV9DTVBJTlRfTFQpOw0KPiA+ID4gKwkJY21wX3Jlc3VsdCA9 IGNtcF9sb3cgJiBjbXBfaGlnaDsNCj4gPiA+ICsJCWludCBpbmRleCA9IF9fYnVpbHRpbl9jdHoo Y21wX3Jlc3VsdCk7DQo+ID4gPiArCQlpZiAodW5saWtlbHkoKHVpbnQzMl90KWluZGV4ID49IGRl di0+bWVtLT5ucmVnaW9ucykpDQo+ID4gPiArCQkJZ290byBmcmVlX2J1ZjsNCj4gPiA+ICsNCj4g PiA+ICsJCWRlc2NfYWRkcnNbaV0gPSBhZGRyX2xvdyArDQo+ID4gPiArCQkJZGV2LT5tZW0tPnJl Z2lvbnNbaW5kZXhdLmhvc3RfdXNlcl9hZGRyIC0NCj4gPiA+ICsJCQlkZXYtPm1lbS0+cmVnaW9u c1tpbmRleF0uZ3Vlc3RfcGh5c19hZGRyOw0KPiA+ID4gKwkJbGVuc1tpXSA9IGRlc2NzW2F2YWls X2lkeCArIGldLmxlbjsNCj4gPiA+ICsJCXJ0ZV9wcmVmZXRjaDAoKHZvaWQgKikodWludHB0cl90 KWRlc2NfYWRkcnNbaV0pOw0KPiA+ID4gKw0KPiA+ID4gKwkJcGt0c1tpXSA9IHZpcnRpb19kZXZf cGt0bWJ1Zl9hbGxvYyhkZXYsIG1idWZfcG9vbCwgbGVuc1tpXSk7DQo+ID4gPiArCQlpZiAoIXBr dHNbaV0pDQo+ID4gPiArCQkJZ290byBmcmVlX2J1ZjsNCj4gPiA+ICsJfQ0KPiA+DQo+ID4gVGhl IGFib3ZlIGRvZXMgbm90IHN1cHBvcnQgdklPTU1VLCBpc24ndCBpdD8NCj4gPg0KPiA+IFRoZSBt b3JlIHRoZSBwYWNrZWQgZGF0YXBhdGggZXZvbHZlcywgdGhlIG1vcmUgaXQgZ2V0cyBvcHRpbWl6 ZWQgZm9yIGENCj4gPiB2ZXJ5IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24uDQo+ID4NCj4gPiBJbiB2 MTkuMTEsIGluZGlyZWN0IGRlc2NyaXB0b3JzIGFuZCBjaGFpbmVkIGJ1ZmZlcnMgYXJlIGhhbmRs ZWQgYXMgYQ0KPiA+IGZhbGxiYWNrLiBBbmQgbm93IHZJT01NVSBzdXBwb3J0IGlzIGhhbmRsZWQg YXMgYSBmYWxsYmFjay4NCj4gPg0KPiANCj4gSGkgTWF4aW1lLA0KPiBUaGFua3MgZm9yIGZpZ3Vy aW5nIG91dCB0aGUgZmVhdHVyZSBtaXNzLiBGaXJzdCB2ZXJzaW9uIHBhdGNoIGlzIGxhY2sgb2YN Cj4gdklPTU1VIHN1cHBvcnRpbmcuDQo+IFYyIHBhdGNoIHdpbGwgZml4IHRoZSBmZWF0dXJlIGdh cCBiZXR3ZWVuIHZlY3Rvcml6ZWQgZnVuY3Rpb24gYW5kIG9yaWdpbmFsDQo+IGJhdGNoIGZ1bmN0 aW9uLg0KPiBTbyB0aGVyZSB3aWxsIGJlIG5vIGFkZGl0aW9uYWwgZmFsbGJhY2sgaW50cm9kdWNl ZCBpbiB2ZWN0b3JpemVkIHBhdGNoIHNldC4NCj4gDQo+IElNSE8sIGN1cnJlbnQgcGFja2VkIG9w dGltaXphdGlvbiBpbnRyb2R1Y2VkIGNvbXBsZXhpdHkgaXMgZm9yIGhhbmRsaW5nDQo+IHRoYXQg Z2FwIGJldHdlZW4gcGVyZm9ybWFuY2UgYWltZWQgZnJvbnRlbmQgKGxpa2UgUE1EKSBhbmQgbm9y bWFsDQo+IG5ldHdvcmsgdHJhZmZpYyAobGlrZSBUQ1ApLg0KPiBWZWN0b3JpemVkIGRhdGFwYXRo IGlzIGZvY3VzaW5nIGluIGVuaGFuY2luZyB0aGUgcGVyZm9ybWFuY2Ugb2YgYmF0Y2hlZA0KPiBm dW5jdGlvbi4gIEZyb20gZnVuY3Rpb24gcG9pbnQgb2YgdmlldywgdGhlcmUgd2lsbCBubyBkaWZm ZXJlbmNlIGJldHdlZW4NCj4gdmVjdG9yaXplZCBiYXRjaGVkIGZ1bmN0aW9uIGFuZCBvcmlnaW5h bCBiYXRjaGVkIGZ1bmN0aW9uLg0KPiBDdXJyZW50IHBhY2tlZCByaW5nIHBhdGggd2lsbCByZW1h aW4gdGhlIHNhbWUgaWYgdmVjdG9yaXplZCBvcHRpb24gaXMgbm90DQo+IGVuYWJsZS4gU28gSSB0 aGluayB0aGUgY29tcGxleGl0eSB3b24ndCBpbmNyZWFzZSB0b28gbXVjaC4gSWYgdGhlcmUncyBh bnkNCj4gY29uY2VybiwgcGxlYXNlIGxldCBtZSBrbm93bi4NCj4gDQo+IEJUVywgdmVjdG9yaXpl ZCBwYXRoIGNhbiBoZWxwIHBlcmZvcm1hbmNlIGEgbG90IHdoZW4gdklPTU1VIGVuYWJsZWQuDQo+ IA0KDQpBZnRlciBkb3VibGUgY2hlY2ssIG1vc3QgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZSBjYW1l IGZyb20gcnVudGltZSBzZXR0aW5nLiANClBlcmZvcm1hbmNlIGdhaW4gb2YgdmVjdG9yaXplZCBw YXRoIGlzIG5vdCBzbyBvYnZpb3VzLiANCg0KPiBSZWdhcmRzLA0KPiBNYXJ2aW4NCj4gDQo+ID4g SSBwZXJzb25uYWxseSBkb24ndCBsaWtlIHRoZSBwYXRoIGl0IGlzIHRha2luZyBhcyBpdCBpcyBh ZGRpbmcgYSBsb3Qgb2YNCj4gPiBjb21wbGV4aXR5IG9uIHRvcCBvZiB0aGF0Lg0KPiA+DQoNCg==