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 67E6DA04A4; Sun, 24 May 2020 15:39:27 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E61981D421; Sun, 24 May 2020 15:39:26 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by dpdk.org (Postfix) with ESMTP id B13114C7A for ; Sun, 24 May 2020 15:39:25 +0200 (CEST) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Date: Sun, 24 May 2020 15:37:49 +0200 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35C60FE6@smartserver.smartshare.dk> X-MimeOLE: Produced By Microsoft Exchange V6.5 In-Reply-To: <20200518155245.11380-6-konstantin.ananyev@intel.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [dpdk-dev] [PATCH 5/5] bpf: x86 JIT support for packet data loadinstructions Thread-Index: AdYtLI+42ofjIAaESXWnHASqymu6lAEoInog References: <20200518155245.11380-1-konstantin.ananyev@intel.com> <20200518155245.11380-6-konstantin.ananyev@intel.com> From: =?UTF-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Konstantin Ananyev" , Cc: , Subject: Re: [dpdk-dev] [PATCH 5/5] bpf: x86 JIT support for packet data loadinstructions 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" PiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9mIEtv bnN0YW50aW4gQW5hbnlldg0KPiBTZW50OiBNb25kYXksIE1heSAxOCwgMjAyMCA1OjUzIFBNDQo+ IA0KPiBNYWtlIHg4NiBKSVQgdG8gZ2VuZXJhdGUgbmF0aXZlIGNvZGUgZm9yDQo+IChCUEZfQUJT IHwgPHNpemU+IHwgQlBGX0xEKSBhbmQgKEJQRl9JTkQgfCA8c2l6ZT4gfCBCUEZfTEQpDQo+IGlu c3RydWN0aW9ucy4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEtvbnN0YW50aW4gQW5hbnlldiA8a29u c3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4NCj4gLS0tDQo+ICBsaWIvbGlicnRlX2JwZi9icGZf aml0X3g4Ni5jICB8IDE4MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICBs aWIvbGlicnRlX2JwZi9icGZfdmFsaWRhdGUuYyB8ICAxNyArKystDQo+ICAyIGZpbGVzIGNoYW5n ZWQsIDE5NyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEv bGliL2xpYnJ0ZV9icGYvYnBmX2ppdF94ODYuYyBiL2xpYi9saWJydGVfYnBmL2JwZl9qaXRfeDg2 LmMNCj4gaW5kZXggZjcwY2Q2YmU1Li44YTdhZDQ1YjMgMTAwNjQ0DQo+IC0tLSBhL2xpYi9saWJy dGVfYnBmL2JwZl9qaXRfeDg2LmMNCj4gKysrIGIvbGliL2xpYnJ0ZV9icGYvYnBmX2ppdF94ODYu Yw0KPiBAQCAtODcsNiArODcsMTQgQEAgZW51bSB7DQo+ICAJUkVHX1RNUDEgPSBSMTAsDQo+ICB9 Ow0KPiANCj4gKy8qIExEX0FCUy9MRF9JTU0gb2Zmc2V0cyAqLw0KPiArZW51bSB7DQo+ICsJTERN Ql9GU1BfT0ZTLCAvKiBmYXN0LXBhdGggKi8NCj4gKwlMRE1CX1NMUF9PRlMsIC8qIHNsb3ctcGF0 aCAqLw0KPiArCUxETUJfRklOX09GUywgLyogZmluYWwgcGFydCAqLw0KPiArCUxETUJfT0ZTX05V TQ0KPiArfTsNCj4gKw0KPiAgLyoNCj4gICAqIGNhbGxlZSBzYXZlZCByZWdpc3RlcnMgbGlzdC4N Cj4gICAqIGtlZXAgUkJQIGFzIHRoZSBsYXN0IG9uZS4NCj4gQEAgLTEwMCw2ICsxMDgsOSBAQCBz dHJ1Y3QgYnBmX2ppdF9zdGF0ZSB7DQo+ICAJCXVpbnQzMl90IG51bTsNCj4gIAkJaW50MzJfdCBv ZmY7DQo+ICAJfSBleGl0Ow0KPiArCXN0cnVjdCB7DQo+ICsJCXVpbnQzMl90IHN0YWNrX29mczsN Cj4gKwl9IGxkbWI7DQo+ICAJdWludDMyX3QgcmVndXNlOw0KPiAgCWludDMyX3QgKm9mZjsNCj4g IAl1aW50OF90ICppbnM7DQo+IEBAIC0xMDI0LDYgKzEwMzUsMTY2IEBAIGVtaXRfZGl2KHN0cnVj dCBicGZfaml0X3N0YXRlICpzdCwgdWludDMyX3Qgb3AsDQo+IHVpbnQzMl90IHNyZWcsIHVpbnQz Ml90IGRyZWcsDQo+ICAJCWVtaXRfbW92X3JlZyhzdCwgRUJQRl9BTFU2NCB8IEVCUEZfTU9WIHwg QlBGX1gsIFJFR19UTVAxLCBSRFgpOw0KPiAgfQ0KPiANCj4gKy8qDQo+ICsgKiBoZWxwZXIgZnVu Y3Rpb24sIHVzZWQgYnkgZW1pdF9sZF9tYnVmKCkuDQo+ICsgKiBnZW5lcmF0ZXMgY29kZSBmb3Ig J2Zhc3RfcGF0aCc6DQo+ICsgKiBjYWxjdWxhdGUgbG9hZCBvZmZzZXQgYW5kIGNoZWNrIGlzIGl0 IGluc2lkZSBmaXJzdCBwYWNrZXQgc2VnbWVudC4NCj4gKyAqLw0KPiArc3RhdGljIHZvaWQNCj4g K2VtaXRfbGRtYl9mYXN0X3BhdGgoc3RydWN0IGJwZl9qaXRfc3RhdGUgKnN0LCBjb25zdCB1aW50 MzJfdA0KPiByZ1tFQlBGX1JFR183XSwNCj4gKwl1aW50MzJfdCBzcmVnLCB1aW50MzJfdCBtb2Rl LCB1aW50MzJfdCBzeiwgdWludDMyX3QgaW1tLA0KPiArCWNvbnN0IGludDMyX3Qgb2ZzW0xETUJf T0ZTX05VTV0pDQo+ICt7DQo+ICsJLyogbWFrZSBSMiBjb250YWluICpvZmYqIHZhbHVlICovDQo+ ICsNCj4gKwlpZiAoc3JlZyAhPSByZ1tFQlBGX1JFR18yXSkgew0KPiArCQllbWl0X21vdl9pbW0o c3QsIEVCUEZfQUxVNjQgfCBFQlBGX01PViB8IEJQRl9LLA0KPiArCQkJcmdbRUJQRl9SRUdfMl0s IGltbSk7DQo+ICsJCWlmIChtb2RlID09IEJQRl9JTkQpDQo+ICsJCQllbWl0X2FsdV9yZWcoc3Qs IEVCUEZfQUxVNjQgfCBCUEZfQUREIHwgQlBGX1gsDQo+ICsJCQkJc3JlZywgcmdbRUJQRl9SRUdf Ml0pOw0KPiArCX0gZWxzZQ0KPiArCQkvKiBCUEZfSU5EIHdpdGggc3JlZyA9PSBSMiAqLw0KPiAr CQllbWl0X2FsdV9pbW0oc3QsIEVCUEZfQUxVNjQgfCBCUEZfQUREIHwgQlBGX0ssDQo+ICsJCQly Z1tFQlBGX1JFR18yXSwgaW1tKTsNCj4gKw0KPiArCS8qIFIzID0gbWJ1Zi0+ZGF0YV9sZW4gKi8N Cj4gKwllbWl0X2xkX3JlZyhzdCwgQlBGX0xEWCB8IEJQRl9NRU0gfCBCUEZfSCwNCj4gKwkJcmdb RUJQRl9SRUdfNl0sIHJnW0VCUEZfUkVHXzNdLA0KPiArCQlvZmZzZXRvZihzdHJ1Y3QgcnRlX21i dWYsIGRhdGFfbGVuKSk7DQo+ICsNCj4gKwkvKiBSMyA9IFIzIC0gUjIgKi8NCj4gKwllbWl0X2Fs dV9yZWcoc3QsIEVCUEZfQUxVNjQgfCBCUEZfU1VCIHwgQlBGX1gsDQo+ICsJCXJnW0VCUEZfUkVH XzJdLCByZ1tFQlBGX1JFR18zXSk7DQo+ICsNCj4gKwkvKiBKU0xFIFIzLCA8c3o+IDxzbG93X3Bh dGg+ICovDQo+ICsJZW1pdF9jbXBfaW1tKHN0LCBFQlBGX0FMVTY0LCByZ1tFQlBGX1JFR18zXSwg c3opOw0KPiArCWVtaXRfYWJzX2pjYyhzdCwgQlBGX0pNUCB8IEVCUEZfSlNMRSB8IEJQRl9LLCBv ZnNbTERNQl9TTFBfT0ZTXSk7DQo+ICsNCj4gKwkvKiBSMyA9IG1idWYtPmRhdGFfb2ZmICovDQo+ ICsJZW1pdF9sZF9yZWcoc3QsIEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX0gsDQo+ICsJCXJnW0VC UEZfUkVHXzZdLCByZ1tFQlBGX1JFR18zXSwNCj4gKwkJb2Zmc2V0b2Yoc3RydWN0IHJ0ZV9tYnVm LCBkYXRhX29mZikpOw0KPiArDQo+ICsJLyogUjAgPSBtYnVmLT5idWZfYWRkciAqLw0KPiArCWVt aXRfbGRfcmVnKHN0LCBCUEZfTERYIHwgQlBGX01FTSB8IEVCUEZfRFcsDQo+ICsJCXJnW0VCUEZf UkVHXzZdLCByZ1tFQlBGX1JFR18wXSwNCj4gKwkJb2Zmc2V0b2Yoc3RydWN0IHJ0ZV9tYnVmLCBi dWZfYWRkcikpOw0KPiArDQo+ICsJLyogUjAgPSBSMCArIFIzICovDQo+ICsJZW1pdF9hbHVfcmVn KHN0LCBFQlBGX0FMVTY0IHwgQlBGX0FERCB8IEJQRl9YLA0KPiArCQlyZ1tFQlBGX1JFR18zXSwg cmdbRUJQRl9SRUdfMF0pOw0KPiArDQo+ICsJLyogUjAgPSBSMCArIFIyICovDQo+ICsJZW1pdF9h bHVfcmVnKHN0LCBFQlBGX0FMVTY0IHwgQlBGX0FERCB8IEJQRl9YLA0KPiArCQlyZ1tFQlBGX1JF R18yXSwgcmdbRUJQRl9SRUdfMF0pOw0KPiArDQo+ICsJLyogSk1QIDxmaW5fcGFydD4gKi8NCj4g KwllbWl0X2Fic19qbXAoc3QsIG9mc1tMRE1CX0ZJTl9PRlNdKTsNCj4gK30NCj4gKw0KPiArLyoN Cj4gKyAqIGhlbHBlciBmdW5jdGlvbiwgdXNlZCBieSBlbWl0X2xkX21idWYoKS4NCj4gKyAqIGdl bmVyYXRlcyBjb2RlIGZvciAnc2xvd19wYXRoJzoNCj4gKyAqIGNhbGwgX19ydGVfcGt0bWJ1Zl9y ZWFkKCkgYW5kIGNoZWNrIHJldHVybiB2YWx1ZS4NCj4gKyAqLw0KPiArc3RhdGljIHZvaWQNCj4g K2VtaXRfbGRtYl9zbG93X3BhdGgoc3RydWN0IGJwZl9qaXRfc3RhdGUgKnN0LCBjb25zdCB1aW50 MzJfdA0KPiByZ1tFQlBGX1JFR183XSwNCj4gKwl1aW50MzJfdCBzeikNCj4gK3sNCj4gKwkvKiBt YWtlIFIzIGNvbnRhaW4gKmxlbiogdmFsdWUgKDEvMi80KSAqLw0KPiArDQo+ICsJZW1pdF9tb3Zf aW1tKHN0LCBFQlBGX0FMVTY0IHwgRUJQRl9NT1YgfCBCUEZfSywgcmdbRUJQRl9SRUdfM10sIHN6 KTsNCj4gKw0KPiArCS8qIG1ha2UgUjQgY29udGFpbiAoUkJQIC0gbGRtYi5zdGFja19vZnMpICov DQo+ICsNCj4gKwllbWl0X21vdl9yZWcoc3QsIEVCUEZfQUxVNjQgfCBFQlBGX01PViB8IEJQRl9Y LCBSQlAsIHJnW0VCUEZfUkVHXzRdKTsNCj4gKwllbWl0X2FsdV9pbW0oc3QsIEVCUEZfQUxVNjQg fCBCUEZfU1VCIHwgQlBGX0ssIHJnW0VCUEZfUkVHXzRdLA0KPiArCQlzdC0+bGRtYi5zdGFja19v ZnMpOw0KPiArDQo+ICsJLyogbWFrZSBSMSBjb250YWluIG1idWYgcHRyICovDQo+ICsNCj4gKwll bWl0X21vdl9yZWcoc3QsIEVCUEZfQUxVNjQgfCBFQlBGX01PViB8IEJQRl9YLA0KPiArCQlyZ1tF QlBGX1JFR182XSwgcmdbRUJQRl9SRUdfMV0pOw0KPiArDQo+ICsJLyogY2FsbCBydGVfcGt0bWJ1 Zl9yZWFkICovDQo+ICsJZW1pdF9jYWxsKHN0LCAodWludHB0cl90KV9fcnRlX3BrdG1idWZfcmVh ZCk7DQo+ICsNCj4gKwkvKiBjaGVjayB0aGF0IHJldHVybiB2YWx1ZSAoUjApIGlzIG5vdCB6ZXJv ICovDQo+ICsJZW1pdF90c3RfcmVnKHN0LCBFQlBGX0FMVTY0LCByZ1tFQlBGX1JFR18wXSwgcmdb RUJQRl9SRUdfMF0pOw0KPiArCWVtaXRfYWJzX2pjYyhzdCwgQlBGX0pNUCB8IEJQRl9KRVEgfCBC UEZfSywgc3QtPmV4aXQub2ZmKTsNCj4gK30NCj4gKw0KPiArLyoNCj4gKyAqIGhlbHBlciBmdW5j dGlvbiwgdXNlZCBieSBlbWl0X2xkX21idWYoKS4NCj4gKyAqIGdlbmVyYXRlcyBmaW5hbCBwYXJ0 IG9mIGNvZGUgZm9yIEJQRl9BQlMvQlBGX0lORCBsb2FkOg0KPiArICogcGVyZm9ybSBkYXRhIGxv YWQgYW5kIGVuZGlhbm5lc3MgY29udmVyc2lvbi4NCj4gKyAqIGV4cGVjdHMgZHJlZyB0byBjb250 YWluIHZhbGlkIGRhdGEgcG9pbnRlci4NCj4gKyAqLw0KPiArc3RhdGljIHZvaWQNCj4gK2VtaXRf bGRtYl9maW4oc3RydWN0IGJwZl9qaXRfc3RhdGUgKnN0LCB1aW50MzJfdCBkcmVnLCB1aW50MzJf dCBvcHN6LA0KPiArCXVpbnQzMl90IHN6KQ0KPiArew0KPiArCWVtaXRfbGRfcmVnKHN0LCBCUEZf TERYIHwgQlBGX01FTSB8IG9wc3osIGRyZWcsIGRyZWcsIDApOw0KPiArCWlmIChzeiAhPSBzaXpl b2YodWludDhfdCkpDQo+ICsJCWVtaXRfYmUybGUoc3QsIGRyZWcsIHN6ICogQ0hBUl9CSVQpOw0K PiArfQ0KPiArDQo+ICsvKg0KPiArICogZW1pdCBjb2RlIGZvciBCUEZfQUJTL0JQRl9JTkQgbG9h ZC4NCj4gKyAqIGdlbmVyYXRlcyB0aGUgZm9sbG93aW5nIGNvbnN0cnVjdGlvbjoNCj4gKyAqIGZh c3RfcGF0aDoNCj4gKyAqICAgb2ZmID0gaW5zLT5zcmVnICsgaW5zLT5pbW0NCj4gKyAqICAgaWYg KG9mZiArIGlucy0+b3BzeiA8IG1idWYtPmRhdGFfbGVuKQ0KPiArICogICAgICBnb3RvIHNsb3df cGF0aDsNCg0KSSBhbSBub3QgYW4gZUJQRiBleHBlcnQsIGJ1dCBJIGFtIG5vdCBzdXJlIHRoaXMg aXMgY29ycmVjdC4NCg0KSSB0aGluayBpdCBzaG91bGQgYmUgPiBpbnN0ZWFkIG9mIDwuIEFsc28s IGl0IGxvb2tzIGxpa2UgeW91IGFjdHVhbGx5IGVtaXQ6DQppZiAobWJ1Zi0+ZGF0YV9sZW4gLSBv ZmYgPD0gaW5zLT5vcHN6KQ0KICAgZ290byBzbG93X3BhdGg7DQoNCkNvdWxkIHlvdSBwbGVhc2Ug ZG91YmxlIGNoZWNrIHRoYXQgYm90aCB0aGUgY29tbWVudCBhbmQgdGhlIGVtaXR0ZWQgY29kZSBo YXMgdGhlIGNvbXBhcmlzb24gdHVybmluZyB0aGUgY29ycmVjdCB3YXkuDQoNCj4gKyAqICAgcHRy ID0gbWJ1Zi0+YnVmX2FkZHIgKyBibWYtPmRhdGFfb2ZmICsgb2ZmOw0KPiArICogICBnb3RvIGZp bl9wYXJ0Ow0KPiArICogc2xvd19wYXRoOg0KPiArICogICB0eXBlb2YoaW5zLT5vcHN6KSBidWY7 IC8vYWxsb2NhdGUgc3BhY2Ugb24gdGhlIHN0YWNrDQo+ICsgKiAgIHB0ciA9IF9fcnRlX3BrdG1i dWZfcmVhZChtYnVmLCBvZmYsIGlucy0+b3BzeiwgJmJ1Zik7DQo+ICsgKiAgIGlmIChwdHIgPT0g TlVMTCkNCj4gKyAqICAgICAgZ290byBleGl0X2xhYmVsOw0KPiArICogZmluX3BhcnQ6DQo+ICsg KiAgIHJlcyA9ICoodHlwZW9mKGlucy0+b3BzeikpcHRyOw0KPiArICogICByZXMgPSBic3dhcChy ZXMpOw0KPiArICovDQo+ICtzdGF0aWMgdm9pZA0KPiArZW1pdF9sZF9tYnVmKHN0cnVjdCBicGZf aml0X3N0YXRlICpzdCwgdWludDMyX3Qgb3AsIHVpbnQzMl90IHNyZWcsDQo+IHVpbnQzMl90IGlt bSkNCj4gK3sNCj4gKwl1aW50MzJfdCBpLCBtb2RlLCBvcHN6LCBzejsNCj4gKwl1aW50MzJfdCBy Z1tFQlBGX1JFR183XTsNCj4gKwlpbnQzMl90IG9mc1tMRE1CX09GU19OVU1dOw0KPiArDQo+ICsJ bW9kZSA9IEJQRl9NT0RFKG9wKTsNCj4gKwlvcHN6ID0gQlBGX1NJWkUob3ApOw0KPiArCXN6ID0g YnBmX3NpemUob3Bzeik7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpICE9IFJURV9ESU0ocmcpOyBp KyspDQo+ICsJCXJnW2ldID0gZWJwZjJ4ODZbaV07DQo+ICsNCj4gKwkvKiBmaWxsIHdpdGggZmFr ZSBvZmZzZXRzICovDQo+ICsJZm9yIChpID0gMDsgaSAhPSBSVEVfRElNKG9mcyk7IGkrKykNCj4g KwkJb2ZzW2ldID0gc3QtPnN6ICsgSU5UOF9NQVg7DQo+ICsNCj4gKwkvKiBkcnkgcnVuIGZpcnN0 IHRvIGNhbGN1bGF0ZSBqdW1wIG9mZnNldHMgKi8NCj4gKw0KPiArCW9mc1tMRE1CX0ZTUF9PRlNd ID0gc3QtPnN6Ow0KPiArCWVtaXRfbGRtYl9mYXN0X3BhdGgoc3QsIHJnLCBzcmVnLCBtb2RlLCBz eiwgaW1tLCBvZnMpOw0KPiArCW9mc1tMRE1CX1NMUF9PRlNdID0gc3QtPnN6Ow0KPiArCWVtaXRf bGRtYl9zbG93X3BhdGgoc3QsIHJnLCBzeik7DQo+ICsJb2ZzW0xETUJfRklOX09GU10gPSBzdC0+ c3o7DQo+ICsJZW1pdF9sZG1iX2ZpbihzdCwgcmdbRUJQRl9SRUdfMF0sIG9wc3osIHN6KTsNCj4g Kw0KPiArCVJURV9WRVJJRlkob2ZzW0xETUJfRklOX09GU10gLSBvZnNbTERNQl9GU1BfT0ZTXSA8 PSBJTlQ4X01BWCk7DQo+ICsNCj4gKwkvKiByZXNldCBkcnktcnVuIGNvZGUgYW5kIGRvIGEgcHJv cGVyIHJ1biAqLw0KPiArDQo+ICsJc3QtPnN6ID0gb2ZzW0xETUJfRlNQX09GU107DQo+ICsJZW1p dF9sZG1iX2Zhc3RfcGF0aChzdCwgcmcsIHNyZWcsIG1vZGUsIHN6LCBpbW0sIG9mcyk7DQo+ICsJ ZW1pdF9sZG1iX3Nsb3dfcGF0aChzdCwgcmcsIHN6KTsNCj4gKwllbWl0X2xkbWJfZmluKHN0LCBy Z1tFQlBGX1JFR18wXSwgb3Bzeiwgc3opOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgdm9pZA0KPiAg ZW1pdF9wcm9sb2coc3RydWN0IGJwZl9qaXRfc3RhdGUgKnN0LCBpbnQzMl90IHN0YWNrX3NpemUp DQo+ICB7DQo+IEBAIC0xMTIxLDYgKzEyOTIsNyBAQCBlbWl0KHN0cnVjdCBicGZfaml0X3N0YXRl ICpzdCwgY29uc3Qgc3RydWN0IHJ0ZV9icGYNCj4gKmJwZikNCj4gIAkvKiByZXNldCBzdGF0ZSBm aWVsZHMgKi8NCj4gIAlzdC0+c3ogPSAwOw0KPiAgCXN0LT5leGl0Lm51bSA9IDA7DQo+ICsJc3Qt PmxkbWIuc3RhY2tfb2ZzID0gYnBmLT5zdGFja19zejsNCj4gDQo+ICAJZW1pdF9wcm9sb2coc3Qs IGJwZi0+c3RhY2tfc3opOw0KPiANCj4gQEAgLTEyNDAsNiArMTQxMiwxNSBAQCBlbWl0KHN0cnVj dCBicGZfaml0X3N0YXRlICpzdCwgY29uc3Qgc3RydWN0IHJ0ZV9icGYNCj4gKmJwZikNCj4gIAkJ CWVtaXRfbGRfaW1tNjQoc3QsIGRyLCBpbnNbMF0uaW1tLCBpbnNbMV0uaW1tKTsNCj4gIAkJCWkr KzsNCj4gIAkJCWJyZWFrOw0KPiArCQkvKiBsb2FkIGFic29sdXRlL2luZGlyZWN0IGluc3RydWN0 aW9ucyAqLw0KPiArCQljYXNlIChCUEZfTEQgfCBCUEZfQUJTIHwgQlBGX0IpOg0KPiArCQljYXNl IChCUEZfTEQgfCBCUEZfQUJTIHwgQlBGX0gpOg0KPiArCQljYXNlIChCUEZfTEQgfCBCUEZfQUJT IHwgQlBGX1cpOg0KPiArCQljYXNlIChCUEZfTEQgfCBCUEZfSU5EIHwgQlBGX0IpOg0KPiArCQlj YXNlIChCUEZfTEQgfCBCUEZfSU5EIHwgQlBGX0gpOg0KPiArCQljYXNlIChCUEZfTEQgfCBCUEZf SU5EIHwgQlBGX1cpOg0KPiArCQkJZW1pdF9sZF9tYnVmKHN0LCBvcCwgc3IsIGlucy0+aW1tKTsN Cj4gKwkJCWJyZWFrOw0KPiAgCQkvKiBzdG9yZSBpbnN0cnVjdGlvbnMgKi8NCj4gIAkJY2FzZSAo QlBGX1NUWCB8IEJQRl9NRU0gfCBCUEZfQik6DQo+ICAJCWNhc2UgKEJQRl9TVFggfCBCUEZfTUVN IHwgQlBGX0gpOg0KPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9icGYvYnBmX3ZhbGlkYXRlLmMg Yi9saWIvbGlicnRlX2JwZi9icGZfdmFsaWRhdGUuYw0KPiBpbmRleCBmZWNkZGEwZTEuLjkyMTRm MTUwMyAxMDA2NDQNCj4gLS0tIGEvbGliL2xpYnJ0ZV9icGYvYnBmX3ZhbGlkYXRlLmMNCj4gKysr IGIvbGliL2xpYnJ0ZV9icGYvYnBmX3ZhbGlkYXRlLmMNCj4gQEAgLTcwLDYgKzcwLDcgQEAgc3Ry dWN0IGJwZl92ZXJpZmllciB7DQo+ICAJdWludDY0X3Qgc3RhY2tfc3o7DQo+ICAJdWludDMyX3Qg bmJfbm9kZXM7DQo+ICAJdWludDMyX3QgbmJfamNjX25vZGVzOw0KPiArCXVpbnQzMl90IG5iX2xk bWJfbm9kZXM7DQo+ICAJdWludDMyX3Qgbm9kZV9jb2xvdXJbTUFYX05PREVfQ09MT1VSXTsNCj4g IAl1aW50MzJfdCBlZGdlX3R5cGVbTUFYX0VER0VfVFlQRV07DQo+ICAJc3RydWN0IGJwZl9ldmFs X3N0YXRlICpldnN0Ow0KPiBAQCAtMjAyMCw2ICsyMDIxLDE0IEBAIHZhbGlkYXRlKHN0cnVjdCBi cGZfdmVyaWZpZXIgKmJ2ZikNCj4gIAkJCXJjIHw9IGFkZF9lZGdlKGJ2Ziwgbm9kZSwgaSArIDIp Ow0KPiAgCQkJaSsrOw0KPiAgCQkJYnJlYWs7DQo+ICsJCWNhc2UgKEJQRl9MRCB8IEJQRl9BQlMg fCBCUEZfQik6DQo+ICsJCWNhc2UgKEJQRl9MRCB8IEJQRl9BQlMgfCBCUEZfSCk6DQo+ICsJCWNh c2UgKEJQRl9MRCB8IEJQRl9BQlMgfCBCUEZfVyk6DQo+ICsJCWNhc2UgKEJQRl9MRCB8IEJQRl9J TkQgfCBCUEZfQik6DQo+ICsJCWNhc2UgKEJQRl9MRCB8IEJQRl9JTkQgfCBCUEZfSCk6DQo+ICsJ CWNhc2UgKEJQRl9MRCB8IEJQRl9JTkQgfCBCUEZfVyk6DQo+ICsJCQlidmYtPm5iX2xkbWJfbm9k ZXMrKzsNCj4gKwkJCS8qIGZhbGx0aHJvdWdoICovDQo+ICAJCWRlZmF1bHQ6DQo+ICAJCQlyYyB8 PSBhZGRfZWRnZShidmYsIG5vZGUsIGkgKyAxKTsNCj4gIAkJCWJyZWFrOw0KPiBAQCAtMjMyMCw4 ICsyMzI5LDE0IEBAIGJwZl92YWxpZGF0ZShzdHJ1Y3QgcnRlX2JwZiAqYnBmKQ0KPiAgCWZyZWUo YnZmLmluKTsNCj4gDQo+ICAJLyogY29weSBjb2xsZWN0ZWQgaW5mbyAqLw0KPiAtCWlmIChyYyA9 PSAwKQ0KPiArCWlmIChyYyA9PSAwKSB7DQo+ICAJCWJwZi0+c3RhY2tfc3ogPSBidmYuc3RhY2tf c3o7DQo+IA0KPiArCQkvKiBmb3IgTERfQUJTL0xEX0lORCwgd2UnbGwgbmVlZCBleHRyYSBzcGFj ZSBvbiB0aGUgc3RhY2sgKi8NCj4gKwkJaWYgKGJ2Zi5uYl9sZG1iX25vZGVzICE9IDApDQo+ICsJ CQlicGYtPnN0YWNrX3N6ID0gUlRFX0FMSUdOX0NFSUwoYnBmLT5zdGFja19zeiArDQo+ICsJCQkJ c2l6ZW9mKHVpbnQ2NF90KSwgc2l6ZW9mKHVpbnQ2NF90KSk7DQo+ICsJfQ0KPiArDQo+ICAJcmV0 dXJuIHJjOw0KPiAgfQ0KPiAtLQ0KPiAyLjE3LjENCj4gDQoNCg==