From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 0088B7CB0 for ; Mon, 14 Jan 2019 17:22:26 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Jan 2019 08:22:26 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,478,1539673200"; d="scan'208";a="134468206" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga002.fm.intel.com with ESMTP; 14 Jan 2019 08:22:25 -0800 Received: from fmsmsx124.amr.corp.intel.com (10.18.125.39) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 14 Jan 2019 08:22:25 -0800 Received: from fmsmsx108.amr.corp.intel.com ([169.254.9.99]) by fmsmsx124.amr.corp.intel.com ([169.254.8.80]) with mapi id 14.03.0415.000; Mon, 14 Jan 2019 08:22:25 -0800 From: "Eads, Gage" To: Andrew Rybchenko , "dev@dpdk.org" CC: "olivier.matz@6wind.com" , "Richardson, Bruce" , "Ananyev, Konstantin" Thread-Topic: [PATCH 2/3] mempool/nb_stack: add non-blocking stack mempool Thread-Index: AQHUq0RF5Vk2fTEX3UuWBvWzfqhyQaWu6+cw Date: Mon, 14 Jan 2019 16:22:24 +0000 Message-ID: <9184057F7FC11744A2107296B6B8EB1E541C5A76@FMSMSX108.amr.corp.intel.com> References: <20190110205538.24435-1-gage.eads@intel.com> <20190110205538.24435-3-gage.eads@intel.com> <74affd62-a694-b73a-69b9-28a884f80f61@solarflare.com> In-Reply-To: <74affd62-a694-b73a-69b9-28a884f80f61@solarflare.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZDIzNWYxZjEtZDA3Ny00ZGQxLWFhNzMtMWIwMDMzYmQ1MTUwIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiMUk3WldwMFBZek5qZDJlSkxiQkJyVHpEUGtvajdOc3NGSEo0VlwvSHJRamIxUnRidEZHUW9oNHZCTkdET3UxUnEifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.1.200.107] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH 2/3] mempool/nb_stack: add non-blocking stack mempool 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: , X-List-Received-Date: Mon, 14 Jan 2019 16:22:27 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQW5kcmV3IFJ5YmNoZW5r byBbbWFpbHRvOmFyeWJjaGVua29Ac29sYXJmbGFyZS5jb21dDQo+IFNlbnQ6IFN1bmRheSwgSmFu dWFyeSAxMywgMjAxOSA3OjMxIEFNDQo+IFRvOiBFYWRzLCBHYWdlIDxnYWdlLmVhZHNAaW50ZWwu Y29tPjsgZGV2QGRwZGsub3JnDQo+IENjOiBvbGl2aWVyLm1hdHpANndpbmQuY29tOyBSaWNoYXJk c29uLCBCcnVjZSA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+Ow0KPiBBbmFueWV2LCBLb25z dGFudGluIDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BB VENIIDIvM10gbWVtcG9vbC9uYl9zdGFjazogYWRkIG5vbi1ibG9ja2luZyBzdGFjayBtZW1wb29s DQo+IA0KPiBIaSBHYWdlLA0KPiANCj4gSW4gZ2VuZXJhbCBsb29rcyB2ZXJ5IGdvb2QuDQo+IA0K PiBIYXZlIHlvdSBjb25zaWRlcmVkIHRvIG1ha2UgbmJfbGlmby5oIGEgbGlicmFyeSB0byBiZSBy ZXVzYWJsZSBvdXRzaWRlIG9mIHRoZQ0KPiBtZW1wb29sIGRyaXZlcj8NCg0KSSdtIGNlcnRhaW5s eSBvcGVuIHRvIGl0LCBpZiB0aGUgY29tbXVuaXR5IGNhbiBiZW5lZml0LiBEdWUgdG8gdGhlIGRp ZmZpY3VsdHkgb2YgYWRkaW5nIGEgbmV3IGxpYi8gZGlyZWN0b3J5IChJIGJlbGlldmUgdGhpcyBy ZXF1aXJlcyBUZWNoIEJvYXJkIGFwcHJvdmFsKSwgSSdsbCBkZWZlciB0aGF0IHdvcmsgdG8gYSBz ZXBhcmF0ZSBwYXRjaHNldC4NCg0KPiANCj4gVGhlcmUgYXJlIGZldyBub3RlcyBiZWxvdy4NCj4g DQo+IFRoYW5rcywNCj4gQW5kcmV3Lg0KPiANCj4gT24gMS8xMC8xOSAxMTo1NSBQTSwgR2FnZSBF YWRzIHdyb3RlOg0KPiANCj4gDQo+IAlUaGlzIGNvbW1pdCBhZGRzIHN1cHBvcnQgZm9yIG5vbi1i bG9ja2luZyAobGlua2VkIGxpc3QgYmFzZWQpIHN0YWNrDQo+IG1lbXBvb2wNCj4gCWhhbmRsZXIu IFRoZSBzdGFjayB1c2VzIGEgMTI4LWJpdCBjb21wYXJlLWFuZC1zd2FwIGluc3RydWN0aW9uLCBh bmQNCj4gdGh1cyBpcw0KPiAJbGltaXRlZCB0byB4ODZfNjQuIFRoZSAxMjgtYml0IENBUyBhdG9t aWNhbGx5IHVwZGF0ZXMgdGhlIHN0YWNrIHRvcA0KPiBwb2ludGVyDQo+IAlhbmQgYSBtb2RpZmlj YXRpb24gY291bnRlciwgd2hpY2ggcHJvdGVjdHMgYWdhaW5zdCB0aGUgQUJBIHByb2JsZW0uDQo+ IA0KPiAJSW4gbWVtcG9vbF9wZXJmX2F1dG90ZXN0IHRoZSBsb2NrLWJhc2VkIHN0YWNrIG91dHBl cmZvcm1zIHRoZSBub24tDQo+IGJsb2NraW5nDQo+IAloYW5kbGVyKiwgaG93ZXZlcjoNCj4gCS0g Rm9yIGFwcGxpY2F0aW9ucyB3aXRoIHByZWVtcHRpYmxlIHB0aHJlYWRzLCBhIGxvY2stYmFzZWQg c3RhY2sncw0KPiAJICB3b3JzdC1jYXNlIHBlcmZvcm1hbmNlIChpLmUuIG9uZSB0aHJlYWQgYmVp bmcgcHJlZW1wdGVkIHdoaWxlDQo+IAkgIGhvbGRpbmcgdGhlIHNwaW5sb2NrKSBpcyBtdWNoIHdv cnNlIHRoYW4gdGhlIG5vbi1ibG9ja2luZyBzdGFjaydzLg0KPiAJLSBVc2luZyBwZXItdGhyZWFk IG1lbXBvb2wgY2FjaGVzIHdpbGwgbGFyZ2VseSBtaXRpZ2F0ZSB0aGUNCj4gcGVyZm9ybWFuY2UN Cj4gCSAgZGlmZmVyZW5jZS4NCj4gDQo+IAkqVGVzdCBzZXR1cDogeDg2XzY0IGJ1aWxkIHdpdGgg ZGVmYXVsdCBjb25maWcsIGR1YWwtc29ja2V0IFhlb24gRTUtMjY5OQ0KPiB2NCwNCj4gCXJ1bm5p bmcgb24gaXNvbGNwdXMgY29yZXMgd2l0aCBhIHRpY2tsZXNzIHNjaGVkdWxlci4gVGhlIGxvY2st YmFzZWQNCj4gc3RhY2sncw0KPiAJcmF0ZV9wZXJzZWMgd2FzIDF4LTMuNXggdGhlIG5vbi1ibG9j a2luZyBzdGFjaydzLg0KPiANCj4gCVNpZ25lZC1vZmYtYnk6IEdhZ2UgRWFkcyA8Z2FnZS5lYWRz QGludGVsLmNvbT4NCj4gPG1haWx0bzpnYWdlLmVhZHNAaW50ZWwuY29tPg0KPiAJLS0tDQo+IAkg TUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQg Kw0KPiAJIGNvbmZpZy9jb21tb25fYmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAxICsNCj4gCSBkcml2ZXJzL21lbXBvb2wvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMSArDQo+IAkgZHJpdmVycy9tZW1wb29sL25iX3N0YWNrL01ha2VmaWxlICAg ICAgICAgICAgICAgICAgfCAgMzAgKysrKysNCj4gCSBkcml2ZXJzL21lbXBvb2wvbmJfc3RhY2sv bWVzb24uYnVpbGQgICAgICAgICAgICAgICB8ICAgNCArDQo+IAkgZHJpdmVycy9tZW1wb29sL25i X3N0YWNrL25iX2xpZm8uaCAgICAgICAgICAgICAgICAgfCAxMzINCj4gKysrKysrKysrKysrKysr KysrKysrDQo+IAkgZHJpdmVycy9tZW1wb29sL25iX3N0YWNrL3J0ZV9tZW1wb29sX25iX3N0YWNr LmMgICAgfCAxMjUNCj4gKysrKysrKysrKysrKysrKysrKw0KPiAJIC4uLi9uYl9zdGFjay9ydGVf bWVtcG9vbF9uYl9zdGFja192ZXJzaW9uLm1hcCAgICAgIHwgICA0ICsNCj4gCSBtay9ydGUuYXBw Lm1rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQo+IAkgOSBm aWxlcyBjaGFuZ2VkLCAzMDIgaW5zZXJ0aW9ucygrKQ0KPiAJIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL21lbXBvb2wvbmJfc3RhY2svTWFrZWZpbGUNCj4gCSBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9tZW1wb29sL25iX3N0YWNrL21lc29uLmJ1aWxkDQo+IAkgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvbWVtcG9vbC9uYl9zdGFjay9uYl9saWZvLmgNCj4gCSBjcmVhdGUgbW9kZSAx MDA2NDQNCj4gZHJpdmVycy9tZW1wb29sL25iX3N0YWNrL3J0ZV9tZW1wb29sX25iX3N0YWNrLmMN Cj4gCSBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gZHJpdmVycy9tZW1wb29sL25iX3N0YWNrL3J0ZV9t ZW1wb29sX25iX3N0YWNrX3ZlcnNpb24ubWFwDQo+IA0KPiAJZGlmZiAtLWdpdCBhL01BSU5UQUlO RVJTIGIvTUFJTlRBSU5FUlMNCj4gCWluZGV4IDQ3MGYzNmI5Yy4uNTUxOWQzMzIzIDEwMDY0NA0K PiAJLS0tIGEvTUFJTlRBSU5FUlMNCj4gCSsrKyBiL01BSU5UQUlORVJTDQo+IAlAQCAtNDE2LDYg KzQxNiwxMCBAQCBNOiBBcnRlbSBWLiBBbmRyZWV2DQo+IDxhcnRlbS5hbmRyZWV2QG9rdGV0bGFi cy5ydT4gPG1haWx0bzphcnRlbS5hbmRyZWV2QG9rdGV0bGFicy5ydT4NCj4gCSBNOiBBbmRyZXcg UnliY2hlbmtvIDxhcnliY2hlbmtvQHNvbGFyZmxhcmUuY29tPg0KPiA8bWFpbHRvOmFyeWJjaGVu a29Ac29sYXJmbGFyZS5jb20+DQo+IAkgRjogZHJpdmVycy9tZW1wb29sL2J1Y2tldC8NCj4gDQo+ IAkrTm9uLWJsb2NraW5nIHN0YWNrIG1lbW9yeSBwb29sDQo+IAkrTTogR2FnZSBFYWRzIDxnYWdl LmVhZHNAaW50ZWwuY29tPiA8bWFpbHRvOmdhZ2UuZWFkc0BpbnRlbC5jb20+DQo+IAkrRjogZHJp dmVycy9tZW1wb29sL25iX3N0YWNrLw0KPiAJKw0KPiANCj4gCSBCdXMgRHJpdmVycw0KPiAJIC0t LS0tLS0tLS0tDQo+IAlkaWZmIC0tZ2l0IGEvY29uZmlnL2NvbW1vbl9iYXNlIGIvY29uZmlnL2Nv bW1vbl9iYXNlDQo+IAlpbmRleCA5NjRhNjk1NmUuLjQwY2U0NzMxMiAxMDA2NDQNCj4gCS0tLSBh L2NvbmZpZy9jb21tb25fYmFzZQ0KPiAJKysrIGIvY29uZmlnL2NvbW1vbl9iYXNlDQo+IAlAQCAt NzI4LDYgKzcyOCw3IEBAIENPTkZJR19SVEVfRFJJVkVSX01FTVBPT0xfQlVDS0VUPXkNCj4gCSBD T05GSUdfUlRFX0RSSVZFUl9NRU1QT09MX0JVQ0tFVF9TSVpFX0tCPTY0DQo+IAkgQ09ORklHX1JU RV9EUklWRVJfTUVNUE9PTF9SSU5HPXkNCj4gCSBDT05GSUdfUlRFX0RSSVZFUl9NRU1QT09MX1NU QUNLPXkNCj4gCStDT05GSUdfUlRFX0RSSVZFUl9NRU1QT09MX05CX1NUQUNLPXkNCj4gDQo+IA0K PiBUeXBpY2FsbHkgaXQgaXMgYWxwaGFiZXRpY2FsbHkgc29ydGVkLg0KDQpXaWxsIGZpeC4NCg0K PiANCj4gDQo+IA0KPiAJICMNCj4gCSAjIENvbXBpbGUgUE1EIGZvciBvY3Rlb250eCBmcGEgbWVt cG9vbCBkZXZpY2UNCj4gCWRpZmYgLS1naXQgYS9kcml2ZXJzL21lbXBvb2wvTWFrZWZpbGUgYi9k cml2ZXJzL21lbXBvb2wvTWFrZWZpbGUNCj4gCWluZGV4IDI4YzJlODM2MC4uYWVhZTNhYzEyIDEw MDY0NA0KPiAJLS0tIGEvZHJpdmVycy9tZW1wb29sL01ha2VmaWxlDQo+IAkrKysgYi9kcml2ZXJz L21lbXBvb2wvTWFrZWZpbGUNCj4gCUBAIC0xMyw1ICsxMyw2IEBAIGVuZGlmDQo+IAkgRElSUy0k KENPTkZJR19SVEVfRFJJVkVSX01FTVBPT0xfUklORykgKz0gcmluZw0KPiAJIERJUlMtJChDT05G SUdfUlRFX0RSSVZFUl9NRU1QT09MX1NUQUNLKSArPSBzdGFjaw0KPiAJIERJUlMtJChDT05GSUdf UlRFX0xJQlJURV9PQ1RFT05UWF9NRU1QT09MKSArPSBvY3Rlb250eA0KPiAJK0RJUlMtJChDT05G SUdfUlRFX0RSSVZFUl9NRU1QT09MX05CX1NUQUNLKSArPSBuYl9zdGFjaw0KPiANCj4gDQo+IFR5 cGljYWxseSBpdCBpcyBhbHBoYWJldGljYWxseSBzb3J0ZWQuIFllcywgYWxyZWFkeSBicm9rZW4s IGJ1dCwgcGxlYXNlLCBwdXQgaXQNCj4gYmVmb3JlIHJpbmcuDQo+IA0KDQpTdXJlLCB3aWxsIGRv Lg0KDQo+IA0KPiANCj4gDQo+IAkgaW5jbHVkZSAkKFJURV9TREspL21rL3J0ZS5zdWJkaXIubWsN Cj4gCWRpZmYgLS1naXQgYS9kcml2ZXJzL21lbXBvb2wvbmJfc3RhY2svTWFrZWZpbGUNCj4gYi9k cml2ZXJzL21lbXBvb2wvbmJfc3RhY2svTWFrZWZpbGUNCj4gCW5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+IAlpbmRleCAwMDAwMDAwMDAuLjM4YjQ1ZjRmNQ0KPiAJLS0tIC9kZXYvbnVsbA0KPiAJKysr IGIvZHJpdmVycy9tZW1wb29sL25iX3N0YWNrL01ha2VmaWxlDQo+IAlAQCAtMCwwICsxLDMwIEBA DQo+IAkrIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+IAkrIyBDb3B5 cmlnaHQoYykgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbg0KPiAJKw0KPiAJK2luY2x1ZGUgJChSVEVf U0RLKS9tay9ydGUudmFycy5taw0KPiAJKw0KPiAJKyMgVGhlIG5vbi1ibG9ja2luZyBzdGFjayB1 c2VzIGEgMTI4LWJpdCBjb21wYXJlLWFuZC1zd2FwIGluc3RydWN0aW9uLA0KPiBhbmQgdGh1cw0K PiAJKyMgaXMgbGltaXRlZCB0byB4ODZfNjQuDQo+IAkraWZlcSAoJChDT05GSUdfUlRFX0FSQ0hf WDg2XzY0KSx5KQ0KPiAJKw0KPiAJKyMNCj4gCSsjIGxpYnJhcnkgbmFtZQ0KPiAJKyMNCj4gCStM SUIgPSBsaWJydGVfbWVtcG9vbF9uYl9zdGFjay5hDQo+IAkrDQo+IAkrQ0ZMQUdTICs9IC1PMw0K PiAJK0NGTEFHUyArPSAkKFdFUlJPUl9GTEFHUykNCj4gCSsNCj4gCSsjIEhlYWRlcnMNCj4gCStD RkxBR1MgKz0gLUkkKFJURV9TREspL2xpYi9saWJydGVfbWVtcG9vbA0KPiANCj4gDQo+IEkgZ3Vl c3MgaXQgaXMgZGVyaXZlZCBmcm9tIHN0YWNrLiBJcyBpdCByZWFsbHkgcmVxdWlyZWQ/IFRoZXJl IGlzIG5vIHN1Y2ggbGluZSBpbiByaW5nLA0KPiBidWNrZXQsIG9jdGVvbnR4IGFuZCBkcGFhMi4N Cj4gDQo+IA0KDQpHb29kIGd1ZXNzIDopLiBObywgSSBkb24ndCBiZWxpZXZlIHNvIC0tIEknbGwg cmVtb3ZlIHRoaXMuDQoNCj4gDQo+IAkrTERMSUJTICs9IC1scnRlX2VhbCAtbHJ0ZV9tZW1wb29s DQo+IAkrDQo+IAkrRVhQT1JUX01BUCA6PSBydGVfbWVtcG9vbF9uYl9zdGFja192ZXJzaW9uLm1h cA0KPiAJKw0KPiAJK0xJQkFCSVZFUiA6PSAxDQo+IAkrDQo+IAkrU1JDUy0kKENPTkZJR19SVEVf RFJJVkVSX01FTVBPT0xfTkJfU1RBQ0spICs9DQo+IHJ0ZV9tZW1wb29sX25iX3N0YWNrLmMNCj4g CSsNCj4gCStlbmRpZg0KPiAJKw0KPiAJK2luY2x1ZGUgJChSVEVfU0RLKS9tay9ydGUubGliLm1r DQo+IAlkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZW1wb29sL25iX3N0YWNrL21lc29uLmJ1aWxkDQo+ IGIvZHJpdmVycy9tZW1wb29sL25iX3N0YWNrL21lc29uLmJ1aWxkDQo+IAluZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiAJaW5kZXggMDAwMDAwMDAwLi42NmQ2NGE5YmENCj4gCS0tLSAvZGV2L251bGwN Cj4gCSsrKyBiL2RyaXZlcnMvbWVtcG9vbC9uYl9zdGFjay9tZXNvbi5idWlsZA0KPiAJQEAgLTAs MCArMSw0IEBADQo+IAkrIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ IAkrIyBDb3B5cmlnaHQoYykgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbg0KPiAJKw0KPiAJK3NvdXJj ZXMgPSBmaWxlcygncnRlX21lbXBvb2xfbmJfc3RhY2suYycpDQo+IA0KPiANCj4gSGF2ZSBubyB0 ZXN0ZWQgbWVzb24gYnVpbGQgZm9yIG5vbi14ODZfNjQgdGFyZ2V0Pw0KPiBJIGd1ZXNzIGl0IHNo b3VsZCBiZSBmaXhlZCB0byBza2lwIGl0IG9uIG5vbi14ODZfNjQgYnVpbGRzLg0KPiANCg0KSSBk aWQgbm90IC0tIG15IG1pc3Rha2UuIEknbGwgY29ycmVjdCB0aGlzLg0KDQo+IA0KPiANCj4gDQo+ IAlkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZW1wb29sL25iX3N0YWNrL25iX2xpZm8uaA0KPiBiL2Ry aXZlcnMvbWVtcG9vbC9uYl9zdGFjay9uYl9saWZvLmgNCj4gCW5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+IAlpbmRleCAwMDAwMDAwMDAuLjcwMWQ3NWUzNw0KPiAJLS0tIC9kZXYvbnVsbA0KPiAJKysr IGIvZHJpdmVycy9tZW1wb29sL25iX3N0YWNrL25iX2xpZm8uaA0KPiAJQEAgLTAsMCArMSwxMzIg QEANCj4gCSsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+IAkrICog Q29weXJpZ2h0KGMpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24NCj4gCSsgKi8NCj4gCSsNCj4gCSsj aWZuZGVmIF9OQl9MSUZPX0hfDQo+IAkrI2RlZmluZSBfTkJfTElGT19IXw0KPiAJKw0KPiAJK3N0 cnVjdCBuYl9saWZvX2VsZW0gew0KPiAJKwl2b2lkICpkYXRhOw0KPiAJKwlzdHJ1Y3QgbmJfbGlm b19lbGVtICpuZXh0Ow0KPiAJK307DQo+IAkrDQo+IAkrc3RydWN0IG5iX2xpZm9faGVhZCB7DQo+ IAkrCXN0cnVjdCBuYl9saWZvX2VsZW0gKnRvcDsgLyoqPCBTdGFjayB0b3AgKi8NCj4gCSsJdWlu dDY0X3QgY250OyAvKio8IE1vZGlmaWNhdGlvbiBjb3VudGVyICovDQo+IAkrfTsNCj4gCSsNCj4g CStzdHJ1Y3QgbmJfbGlmbyB7DQo+IAkrCXZvbGF0aWxlIHN0cnVjdCBuYl9saWZvX2hlYWQgaGVh ZCBfX3J0ZV9hbGlnbmVkKDE2KTsNCj4gCSsJcnRlX2F0b21pYzY0X3QgbGVuOw0KPiAJK30gX19y dGVfY2FjaGVfYWxpZ25lZDsNCj4gCSsNCj4gCStzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB2 b2lkDQo+IAkrbmJfbGlmb19pbml0KHN0cnVjdCBuYl9saWZvICpsaWZvKQ0KPiAJK3sNCj4gCSsJ bWVtc2V0KGxpZm8sIDAsIHNpemVvZigqbGlmbykpOw0KPiAJKwlydGVfYXRvbWljNjRfc2V0KCZs aWZvLT5sZW4sIDApOw0KPiAJK30NCj4gCSsNCj4gCStzdGF0aWMgX19ydGVfYWx3YXlzX2lubGlu ZSB1bnNpZ25lZCBpbnQNCj4gCStuYl9saWZvX2xlbihzdHJ1Y3QgbmJfbGlmbyAqbGlmbykNCj4g CSt7DQo+IAkrCXJldHVybiAodW5zaWduZWQgaW50KSBydGVfYXRvbWljNjRfcmVhZCgmbGlmby0+ bGVuKTsNCj4gCSt9DQo+IAkrDQo+IAkrc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdm9pZA0K PiAJK25iX2xpZm9fcHVzaChzdHJ1Y3QgbmJfbGlmbyAqbGlmbywNCj4gCSsJICAgICBzdHJ1Y3Qg bmJfbGlmb19lbGVtICpmaXJzdCwNCj4gCSsJICAgICBzdHJ1Y3QgbmJfbGlmb19lbGVtICpsYXN0 LA0KPiAJKwkgICAgIHVuc2lnbmVkIGludCBudW0pDQo+IAkrew0KPiAJKwl3aGlsZSAoMSkgew0K PiAJKwkJc3RydWN0IG5iX2xpZm9faGVhZCBvbGRfaGVhZCwgbmV3X2hlYWQ7DQo+IAkrDQo+IAkr CQlvbGRfaGVhZCA9IGxpZm8tPmhlYWQ7DQo+IAkrDQo+IAkrCQkvKiBTd2luZyB0aGUgdG9wIHBv aW50ZXIgdG8gdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIGxpc3QNCj4gYW5kDQo+IAkrCQkgKiBt YWtlIHRoZSBsYXN0IGVsZW1lbnQgcG9pbnQgdG8gdGhlIG9sZCB0b3AuDQo+IAkrCQkgKi8NCj4g CSsJCW5ld19oZWFkLnRvcCA9IGZpcnN0Ow0KPiAJKwkJbmV3X2hlYWQuY250ID0gb2xkX2hlYWQu Y250ICsgMTsNCj4gCSsNCj4gCSsJCWxhc3QtPm5leHQgPSBvbGRfaGVhZC50b3A7DQo+IAkrDQo+ IAkrCQlpZiAocnRlX2F0b21pYzEyOF9jbXBzZXQoKHZvbGF0aWxlIHVpbnQ2NF90ICopICZsaWZv LQ0KPiA+aGVhZCwNCj4gCSsJCQkJCSAodWludDY0X3QgKikmb2xkX2hlYWQsDQo+IAkrCQkJCQkg KHVpbnQ2NF90ICopJm5ld19oZWFkKSkNCj4gCSsJCQlicmVhazsNCj4gCSsJfQ0KPiAJKw0KPiAJ KwlydGVfYXRvbWljNjRfYWRkKCZsaWZvLT5sZW4sIG51bSk7DQo+IA0KPiANCj4gSSdkIGxpa2Ug dG8gdW5kZXJzdGFuZCB3aHkgaXQgaXMgbm90IGEgcHJvYmxlbSB0aGF0IGNoYW5nZSBvZiB0aGUg bGlzdCBhbmQgaW5jcmVhc2UNCj4gaXRzIGxlbmd0aCBhcmUgbm90IGF0b21pYy4gU28sIHdlIGNh biBnZXQgd3JvbmcgbGVuZ3RoIG9mIHRoZSBzdGFjayBpbiB0aGUNCj4gbWlkZGxlLiBJdCB3b3Vs ZCBiZSBnb29kIHRvIGV4cGxhaW4gaXQgaW4gdGhlIGNvbW1lbnQuDQo+IA0KDQpJbmRlZWQsIHRo ZXJlIGlzIGEgd2luZG93IGluIHdoaWNoIHRoZSBsaXN0IGFwcGVhcnMgc2hvcnRlciB0aGFuIGl0 IGlzLiBJIGRvbid0IGJlbGlldmUgdGhpcyBhIHByb2JsZW0gYmVjYXVlcyB0aGUgZ2V0X2NvdW50 IGNhbGxiYWNrIGlzIGluaGVyZW50bHkgcmFjeS9hcHByb3hpbWF0ZSAoaWYgaXQgaXMgY2FsbGVk IHdoaWxlIHRoZSBsaXN0IGJlaW5nIGFjY2Vzc2VkKS4gVGhhdCBpcywgZXZlbiBpZiB0aGUgbGlz dCBhbmQgaXRzIHNpemUgd2VyZSB1cGRhdGVkIGF0b21pY2FsbHksIHRoZSBzaXplIGNvdWxkIGNo YW5nZSBiZXR3ZWVuIHdoZW4gZ2V0X2NvdW50IHJlYWRzIHRoZSBzaXplIGFuZCB3aGVuIHRoYXQg dmFsdWUgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxpbmcgdGhyZWFkLg0KDQpJIHBsYWNlZCB0aGUg bGlmby0+bGVuIHVwZGF0ZXMgc3VjaCB0aGF0IHRoZSBsaXN0IG1heSBhcHBlYXIgdG8gaGF2ZSBm ZXdlciBlbGVtZW50cyB0aGFuIGl0IGRvZXMsIGJ1dCB3aWxsIG5ldmVyIGFwcGVhciB0byBoYXZl IG1vcmUgZWxlbWVudHMuIElmIHRoZSBtZW1wb29sIGlzIG5lYXItZW1wdHkgdG8gdGhlIHBvaW50 IHRoYXQgdGhpcyBpcyBhIGNvbmNlcm4sIEkgdGhpbmsgdGhlIGJpZ2dlciBwcm9ibGVtIGlzIHRo ZSBtZW1wb29sIHNpemUuDQoNCklmIHRoYXQgc2VlbXMgcmVhc29uYWJsZSwgSSdsbCBhZGQgdGhh dCBhcyBhIGNvbW1lbnQgaW4gdGhlIGNvZGUuDQoNCj4gDQo+IA0KPiAJK30NCj4gCSsNCj4gCStz dGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB2b2lkDQo+IAkrbmJfbGlmb19wdXNoX3NpbmdsZShz dHJ1Y3QgbmJfbGlmbyAqbGlmbywgc3RydWN0IG5iX2xpZm9fZWxlbSAqZWxlbSkNCj4gCSt7DQo+ IAkrCW5iX2xpZm9fcHVzaChsaWZvLCBlbGVtLCBlbGVtLCAxKTsNCj4gCSt9DQo+IAkrDQo+IAkr c3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgc3RydWN0IG5iX2xpZm9fZWxlbSAqDQo+IAkrbmJf bGlmb19wb3Aoc3RydWN0IG5iX2xpZm8gKmxpZm8sDQo+IAkrCSAgICB1bnNpZ25lZCBpbnQgbnVt LA0KPiAJKwkgICAgdm9pZCAqKm9ial90YWJsZSwNCj4gCSsJICAgIHN0cnVjdCBuYl9saWZvX2Vs ZW0gKipsYXN0KQ0KPiAJK3sNCj4gCSsJc3RydWN0IG5iX2xpZm9faGVhZCBvbGRfaGVhZDsNCj4g CSsNCj4gCSsJLyogUmVzZXJ2ZSBudW0gZWxlbWVudHMsIGlmIGF2YWlsYWJsZSAqLw0KPiAJKwl3 aGlsZSAoMSkgew0KPiAJKwkJdWludDY0X3QgbGVuID0gcnRlX2F0b21pYzY0X3JlYWQoJmxpZm8t Pmxlbik7DQo+IAkrDQo+IAkrCQkvKiBEb2VzIHRoZSBsaXN0IGNvbnRhaW4gZW5vdWdoIGVsZW1l bnRzPyAqLw0KPiAJKwkJaWYgKGxlbiA8IG51bSkNCj4gCSsJCQlyZXR1cm4gTlVMTDsNCj4gCSsN Cj4gCSsJCWlmIChydGVfYXRvbWljNjRfY21wc2V0KCh2b2xhdGlsZSB1aW50NjRfdCAqKSZsaWZv LT5sZW4sDQo+IAkrCQkJCQlsZW4sIGxlbiAtIG51bSkpDQo+IAkrCQkJYnJlYWs7DQo+IAkrCX0N Cj4gCSsNCj4gCSsJLyogUG9wIG51bSBlbGVtZW50cyAqLw0KPiAJKwl3aGlsZSAoMSkgew0KPiAJ KwkJc3RydWN0IG5iX2xpZm9faGVhZCBuZXdfaGVhZDsNCj4gCSsJCXN0cnVjdCBuYl9saWZvX2Vs ZW0gKnRtcDsNCj4gCSsJCXVuc2lnbmVkIGludCBpOw0KPiAJKw0KPiAJKwkJb2xkX2hlYWQgPSBs aWZvLT5oZWFkOw0KPiAJKw0KPiAJKwkJdG1wID0gb2xkX2hlYWQudG9wOw0KPiAJKw0KPiAJKwkJ LyogVHJhdmVyc2UgdGhlIGxpc3QgdG8gZmluZCB0aGUgbmV3IGhlYWQuIEEgbmV4dCBwb2ludGVy DQo+IHdpbGwNCj4gCSsJCSAqIGVpdGhlciBwb2ludCB0byBhbm90aGVyIGVsZW1lbnQgb3IgTlVM TDsgaWYgYSB0aHJlYWQNCj4gCSsJCSAqIGVuY291bnRlcnMgYSBwb2ludGVyIHRoYXQgaGFzIGFs cmVhZHkgYmVlbiBwb3BwZWQsDQo+IHRoZSBDQVMNCj4gCSsJCSAqIHdpbGwgZmFpbC4NCj4gCSsJ CSAqLw0KPiAJKwkJZm9yIChpID0gMDsgaSA8IG51bSAmJiB0bXAgIT0gTlVMTDsgaSsrKSB7DQo+ IAkrCQkJaWYgKG9ial90YWJsZSkNCj4gCSsJCQkJb2JqX3RhYmxlW2ldID0gdG1wLT5kYXRhOw0K PiAJKwkJCWlmIChsYXN0KQ0KPiAJKwkJCQkqbGFzdCA9IHRtcDsNCj4gDQo+IA0KPiBJc24ndCBp dCBiZXR0ZXIgdG8gZG8gb2JqX3RhYmxlIGFuZCBsYXN0IGFzc2lnbm1lbnQgbGF0ZXIgd2hlbiB3 ZSBzdWNjZXNzZnVsbHkNCj4gcmVzZXJ2ZWQgZWxlbWVudHM/IElmIHRoZXJlIGlzIG5vdCByZXRy aWVzLCBjdXJyZW50IHNvbHV0aW9uIGlzIG9wdGltYWwsIGJ1dCBJIGd1ZXNzDQo+IHNvbHV0aW9u IHdpdGggdGhlIHNlY29uZCB0cmF2ZXJzYWwgdG8gZmlsbCBpbiBvYmpfdGFibGUgd2lsbCBzaG93 IG1vcmUgc3RhYmxlDQo+IHBlcmZvcm1hbmNlIHJlc3VsdHMgdW5kZXIgaGlnaCBsb2FkIHdoZW4g bWFueSByZXRyaWVzIGFyZSBkb25lLg0KPiANCg0KSSBzdXNwZWN0IHRoYXQgdGhlIGxhdGVuY3kg b2YgdGhlIHdyaXRlcyB0byBvYmpfdGFibGUgYW5kIGxhc3Qgd291bGQgbGFyZ2VseSBiZSBoaWRk ZW4gYnkgdGhlIHBvaW50ZXIgY2hhc2luZywgc2luY2Ugb2JqX3RhYmxlIChhaWRlZCBieSB0aGUg bmV4dC1saW5lIHByZWZldGNoZXIpIGFuZCBsYXN0IHNob3VsZCBiZSBjYWNoZWQgYnV0IGNoYW5j ZXMgYXJlIHRtcC0+bmV4dCB3b24ndCBiZS4NCg0KQWRtaXR0ZWRseSB0aGlzIGlzIGp1c3QgYSB0 aGVvcnksIEkgaGF2ZW4ndCBleHBlcmltZW50YWxseSBjb25maXJtZWQgYW55dGhpbmc7IGlmIHlv dSBwcmVmZXIsIEknbGwgaW52ZXN0aWdhdGUgdGhpcyBmdXJ0aGVyLg0KDQo+IA0KPiANCj4gCSsJ CQl0bXAgPSB0bXAtPm5leHQ7DQo+IAkrCQl9DQo+IAkrDQo+IAkrCQkvKiBJZiBOVUxMIHdhcyBl bmNvdW50ZXJlZCwgdGhlIGxpc3Qgd2FzIG1vZGlmaWVkIHdoaWxlDQo+IAkrCQkgKiB0cmF2ZXJz aW5nIGl0LiBSZXRyeS4NCj4gCSsJCSAqLw0KPiAJKwkJaWYgKGkgIT0gbnVtKQ0KPiAJKwkJCWNv bnRpbnVlOw0KPiAJKw0KPiAJKwkJbmV3X2hlYWQudG9wID0gdG1wOw0KPiAJKwkJbmV3X2hlYWQu Y250ID0gb2xkX2hlYWQuY250ICsgMTsNCj4gCSsNCj4gCSsJCWlmIChydGVfYXRvbWljMTI4X2Nt cHNldCgodm9sYXRpbGUgdWludDY0X3QgKikgJmxpZm8tDQo+ID5oZWFkLA0KPiAJKwkJCQkJICh1 aW50NjRfdCAqKSZvbGRfaGVhZCwNCj4gCSsJCQkJCSAodWludDY0X3QgKikmbmV3X2hlYWQpKQ0K PiAJKwkJCWJyZWFrOw0KPiAJKwl9DQo+IAkrDQo+IAkrCXJldHVybiBvbGRfaGVhZC50b3A7DQo+ IAkrfQ0KPiAJKw0KPiAJKyNlbmRpZiAvKiBfTkJfTElGT19IXyAqLw0KPiAJZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWVtcG9vbC9uYl9zdGFjay9ydGVfbWVtcG9vbF9uYl9zdGFjay5jDQo+IGIvZHJp dmVycy9tZW1wb29sL25iX3N0YWNrL3J0ZV9tZW1wb29sX25iX3N0YWNrLmMNCj4gCW5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IAlpbmRleCAwMDAwMDAwMDAuLjFiMzA3NzVmNw0KPiAJLS0tIC9kZXYv bnVsbA0KPiAJKysrIGIvZHJpdmVycy9tZW1wb29sL25iX3N0YWNrL3J0ZV9tZW1wb29sX25iX3N0 YWNrLmMNCj4gCUBAIC0wLDAgKzEsMTI1IEBADQo+IAkrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0zLUNsYXVzZQ0KPiAJKyAqIENvcHlyaWdodChjKSAyMDE5IEludGVsIENvcnBvcmF0 aW9uDQo+IAkrICovDQo+IAkrDQo+IAkrI2luY2x1ZGUgPHN0ZGlvLmg+DQo+IAkrI2luY2x1ZGUg PHJ0ZV9tZW1wb29sLmg+DQo+IAkrI2luY2x1ZGUgPHJ0ZV9tYWxsb2MuaD4NCj4gCSsNCj4gCSsj aW5jbHVkZSAibmJfbGlmby5oIg0KPiAJKw0KPiAJK3N0cnVjdCBydGVfbWVtcG9vbF9uYl9zdGFj ayB7DQo+IAkrCXVpbnQ2NF90IHNpemU7DQo+IAkrCXN0cnVjdCBuYl9saWZvIHVzZWRfbGlmbzsg LyoqPCBMSUZPIGNvbnRhaW5pbmcgbWVtcG9vbCBwb2ludGVycw0KPiAqLw0KPiAJKwlzdHJ1Y3Qg bmJfbGlmbyBmcmVlX2xpZm87IC8qKjwgTElGTyBjb250YWluaW5nIHVudXNlZCBMSUZPDQo+IGVs ZW1lbnRzICovDQo+IAkrfTsNCj4gCSsNCj4gCStzdGF0aWMgaW50DQo+IAkrbmJfc3RhY2tfYWxs b2Moc3RydWN0IHJ0ZV9tZW1wb29sICptcCkNCj4gCSt7DQo+IAkrCXN0cnVjdCBydGVfbWVtcG9v bF9uYl9zdGFjayAqczsNCj4gCSsJc3RydWN0IG5iX2xpZm9fZWxlbSAqZWxlbXM7DQo+IAkrCXVu c2lnbmVkIGludCBuID0gbXAtPnNpemU7DQo+IAkrCXVuc2lnbmVkIGludCBzaXplLCBpOw0KPiAJ Kw0KPiAJKwlzaXplID0gc2l6ZW9mKCpzKSArIG4gKiBzaXplb2Yoc3RydWN0IG5iX2xpZm9fZWxl bSk7DQo+IAkrDQo+IAkrCS8qIEFsbG9jYXRlIG91ciBsb2NhbCBtZW1vcnkgc3RydWN0dXJlICov DQo+IAkrCXMgPSBydGVfem1hbGxvY19zb2NrZXQoIm1lbXBvb2wtbmJfc3RhY2siLA0KPiAJKwkJ CSAgICAgICBzaXplLA0KPiAJKwkJCSAgICAgICBSVEVfQ0FDSEVfTElORV9TSVpFLA0KPiAJKwkJ CSAgICAgICBtcC0+c29ja2V0X2lkKTsNCj4gCSsJaWYgKHMgPT0gTlVMTCkgew0KPiAJKwkJUlRF X0xPRyhFUlIsIE1FTVBPT0wsICJDYW5ub3QgYWxsb2NhdGUNCj4gbmJfc3RhY2shXG4iKTsNCj4g CSsJCXJldHVybiAtRU5PTUVNOw0KPiAJKwl9DQo+IAkrDQo+IAkrCXMtPnNpemUgPSBuOw0KPiAJ Kw0KPiAJKwluYl9saWZvX2luaXQoJnMtPnVzZWRfbGlmbyk7DQo+IAkrCW5iX2xpZm9faW5pdCgm cy0+ZnJlZV9saWZvKTsNCj4gCSsNCj4gCSsJZWxlbXMgPSAoc3RydWN0IG5iX2xpZm9fZWxlbSAq KSAmc1sxXTsNCj4gDQo+IA0KPiBEb2VzIGNoZWNrcGF0Y2guc2ggZ2VuZXJhdGUgd2FybmluZyBo ZXJlIGJlY2F1c2Ugb2Ygc3BhY2UgYWZ0ZXIgdHlwZSBjYXN0Pw0KPiBUaGVyZSBhcmUgZmV3IHNp bWlsYXIgY2FzZXMgaW4gdGhlIHBhdGNoLg0KPiANCg0KTm8sIGJlY2F1c2UgdGhhdCdzIGEgLS1z dHJpY3Qgb3B0aW9uLiBSZWdhcmRsZXNzLCBJJ20gc3RhcnRpbmcgdG8gcHJlZmVyIHRoYXQgc3R5 bGUgLS0gSSdsbCBmaXggdGhlc2UgaW5zdGFuY2VzIGluIHYyLg0KDQo+IA0KPiANCj4gCSsJZm9y IChpID0gMDsgaSA8IG47IGkrKykNCj4gCSsJCW5iX2xpZm9fcHVzaF9zaW5nbGUoJnMtPmZyZWVf bGlmbywgJmVsZW1zW2ldKTsNCj4gCSsNCj4gCSsJbXAtPnBvb2xfZGF0YSA9IHM7DQo+IAkrDQo+ IAkrCXJldHVybiAwOw0KPiAJK30NCj4gCSsNCj4gCStzdGF0aWMgaW50DQo+IAkrbmJfc3RhY2tf ZW5xdWV1ZShzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wLCB2b2lkICogY29uc3QgKm9ial90YWJsZSwN Cj4gCSsJCSB1bnNpZ25lZCBpbnQgbikNCj4gCSt7DQo+IAkrCXN0cnVjdCBydGVfbWVtcG9vbF9u Yl9zdGFjayAqcyA9IG1wLT5wb29sX2RhdGE7DQo+IAkrCXN0cnVjdCBuYl9saWZvX2VsZW0gKmZp cnN0LCAqbGFzdCwgKnRtcDsNCj4gCSsJdW5zaWduZWQgaW50IGk7DQo+IAkrDQo+IAkrCWlmICh1 bmxpa2VseShuID09IDApKQ0KPiAJKwkJcmV0dXJuIDA7DQo+IAkrDQo+IAkrCS8qIFBvcCBuIGZy ZWUgZWxlbWVudHMgKi8NCj4gCSsJZmlyc3QgPSBuYl9saWZvX3BvcCgmcy0+ZnJlZV9saWZvLCBu LCBOVUxMLCBOVUxMKTsNCj4gCSsJaWYgKHVubGlrZWx5KCFmaXJzdCkpDQo+IA0KPiANCj4gSnVz dCBhIG5pdCwgYnV0IGFzIGZhciBhcyBJIGtub3cgY29tcGFyaXNvbiB3aXRoIE5VTEwgaXMgdHlw aWNhbGx5IHVzZWQgaW4gRFBESy4NCj4gKGZldyBjYXNlcyBpbiB0aGUgcGF0Y2gpDQo+IA0KDQpM b29rcyBsaWtlIHRoaXMgaXMgZXhwbGljaXRseSBjYWxsZWQgb3V0IGluIHRoZSBzdHlsZSBndWlk ZTogaHR0cHM6Ly9kb2MuZHBkay5vcmcvZ3VpZGVzL2NvbnRyaWJ1dGluZy9jb2Rpbmdfc3R5bGUu aHRtbCNudWxsLXBvaW50ZXJzDQoNCldpbGwgZml4IGluIHYyLg0KDQo+IA0KPiANCj4gCSsJCXJl dHVybiAtRU5PQlVGUzsNCj4gCSsNCj4gCSsJLyogUHJlcGFyZSB0aGUgbGlzdCBlbGVtZW50cyAq Lw0KPiAJKwl0bXAgPSBmaXJzdDsNCj4gCSsJZm9yIChpID0gMDsgaSA8IG47IGkrKykgew0KPiAJ KwkJdG1wLT5kYXRhID0gb2JqX3RhYmxlW2ldOw0KPiAJKwkJbGFzdCA9IHRtcDsNCj4gCSsJCXRt cCA9IHRtcC0+bmV4dDsNCj4gCSsJfQ0KPiAJKw0KPiAJKwkvKiBFbnF1ZXVlIHRoZW0gdG8gdGhl IHVzZWQgbGlzdCAqLw0KPiAJKwluYl9saWZvX3B1c2goJnMtPnVzZWRfbGlmbywgZmlyc3QsIGxh c3QsIG4pOw0KPiAJKw0KPiAJKwlyZXR1cm4gMDsNCj4gCSt9DQo+IAkrDQo+IAkrc3RhdGljIGlu dA0KPiAJK25iX3N0YWNrX2RlcXVldWUoc3RydWN0IHJ0ZV9tZW1wb29sICptcCwgdm9pZCAqKm9i al90YWJsZSwNCj4gCSsJCSB1bnNpZ25lZCBpbnQgbikNCj4gCSt7DQo+IAkrCXN0cnVjdCBydGVf bWVtcG9vbF9uYl9zdGFjayAqcyA9IG1wLT5wb29sX2RhdGE7DQo+IAkrCXN0cnVjdCBuYl9saWZv X2VsZW0gKmZpcnN0LCAqbGFzdDsNCj4gCSsNCj4gCSsJaWYgKHVubGlrZWx5KG4gPT0gMCkpDQo+ IAkrCQlyZXR1cm4gMDsNCj4gCSsNCj4gCSsJLyogUG9wIG4gdXNlZCBlbGVtZW50cyAqLw0KPiAJ KwlmaXJzdCA9IG5iX2xpZm9fcG9wKCZzLT51c2VkX2xpZm8sIG4sIG9ial90YWJsZSwgJmxhc3Qp Ow0KPiAJKwlpZiAodW5saWtlbHkoIWZpcnN0KSkNCj4gCSsJCXJldHVybiAtRU5PRU5UOw0KPiAJ Kw0KPiAJKwkvKiBFbnF1ZXVlIHRoZSBsaXN0IGVsZW1lbnRzIHRvIHRoZSBmcmVlIGxpc3QgKi8N Cj4gCSsJbmJfbGlmb19wdXNoKCZzLT5mcmVlX2xpZm8sIGZpcnN0LCBsYXN0LCBuKTsNCj4gCSsN Cj4gCSsJcmV0dXJuIDA7DQo+IAkrfQ0KPiAJKw0KPiAJK3N0YXRpYyB1bnNpZ25lZA0KPiAJK25i X3N0YWNrX2dldF9jb3VudChjb25zdCBzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wKQ0KPiAJK3sNCj4g CSsJc3RydWN0IHJ0ZV9tZW1wb29sX25iX3N0YWNrICpzID0gbXAtPnBvb2xfZGF0YTsNCj4gCSsN Cj4gCSsJcmV0dXJuIG5iX2xpZm9fbGVuKCZzLT51c2VkX2xpZm8pOw0KPiAJK30NCj4gCSsNCj4g CStzdGF0aWMgdm9pZA0KPiAJK25iX3N0YWNrX2ZyZWUoc3RydWN0IHJ0ZV9tZW1wb29sICptcCkN Cj4gCSt7DQo+IAkrCXJ0ZV9mcmVlKCh2b2lkICopKG1wLT5wb29sX2RhdGEpKTsNCj4gDQo+IA0K PiBJIHRoaW5rIHR5cGUgY2FzdCBpcyBub3QgcmVxdWlyZWQuDQo+IA0KPiANCg0KV2lsbCBmaXgu DQoNCj4gDQo+IA0KPiAJK30NCj4gCSsNCj4gCStzdGF0aWMgc3RydWN0IHJ0ZV9tZW1wb29sX29w cyBvcHNfbmJfc3RhY2sgPSB7DQo+IAkrCS5uYW1lID0gIm5iX3N0YWNrIiwNCj4gCSsJLmFsbG9j ID0gbmJfc3RhY2tfYWxsb2MsDQo+IAkrCS5mcmVlID0gbmJfc3RhY2tfZnJlZSwNCj4gCSsJLmVu cXVldWUgPSBuYl9zdGFja19lbnF1ZXVlLA0KPiAJKwkuZGVxdWV1ZSA9IG5iX3N0YWNrX2RlcXVl dWUsDQo+IAkrCS5nZXRfY291bnQgPSBuYl9zdGFja19nZXRfY291bnQNCj4gCSt9Ow0KPiAJKw0K PiAJK01FTVBPT0xfUkVHSVNURVJfT1BTKG9wc19uYl9zdGFjayk7DQo+IAlkaWZmIC0tZ2l0DQo+ IGEvZHJpdmVycy9tZW1wb29sL25iX3N0YWNrL3J0ZV9tZW1wb29sX25iX3N0YWNrX3ZlcnNpb24u bWFwDQo+IGIvZHJpdmVycy9tZW1wb29sL25iX3N0YWNrL3J0ZV9tZW1wb29sX25iX3N0YWNrX3Zl cnNpb24ubWFwDQo+IAluZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiAJaW5kZXggMDAwMDAwMDAwLi5m YzhjOTVlOTENCj4gCS0tLSAvZGV2L251bGwNCj4gCSsrKyBiL2RyaXZlcnMvbWVtcG9vbC9uYl9z dGFjay9ydGVfbWVtcG9vbF9uYl9zdGFja192ZXJzaW9uLm1hcA0KPiAJQEAgLTAsMCArMSw0IEBA DQo+IAkrRFBES18xOS4wNSB7DQo+IAkrDQo+IAkrCWxvY2FsOiAqOw0KPiAJK307DQo+IAlkaWZm IC0tZ2l0IGEvbWsvcnRlLmFwcC5tayBiL21rL3J0ZS5hcHAubWsNCj4gCWluZGV4IDAyZThiNmYw NS4uMGIxMWQ5NDE3IDEwMDY0NA0KPiAJLS0tIGEvbWsvcnRlLmFwcC5taw0KPiAJKysrIGIvbWsv cnRlLmFwcC5taw0KPiAJQEAgLTEzMyw2ICsxMzMsNyBAQCBpZmVxICgkKENPTkZJR19SVEVfQlVJ TERfU0hBUkVEX0xJQiksbikNCj4gDQo+IAkgX0xETElCUy0kKENPTkZJR19SVEVfRFJJVkVSX01F TVBPT0xfQlVDS0VUKSArPSAtDQo+IGxydGVfbWVtcG9vbF9idWNrZXQNCj4gCSBfTERMSUJTLSQo Q09ORklHX1JURV9EUklWRVJfTUVNUE9PTF9TVEFDSykgICs9IC0NCj4gbHJ0ZV9tZW1wb29sX3N0 YWNrDQo+IAkrX0xETElCUy0kKENPTkZJR19SVEVfRFJJVkVSX01FTVBPT0xfTkJfU1RBQ0spICAr PSAtDQo+IGxydGVfbWVtcG9vbF9uYl9zdGFjaw0KPiANCj4gDQo+IEl0IGlzIGJldHRlciB0byBz b3J0IGl0IGFscGhhYmV0aWNhbGx5Lg0KPiANCg0KV2lsbCBmaXguDQoNCkFwcHJlY2lhdGUgdGhl IGRldGFpbGVkIHJldmlldyENCg0KVGhhbmtzLA0KR2FnZQ0K