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 F0593A04B1; Wed, 23 Sep 2020 07:44:23 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D31711DBE5; Wed, 23 Sep 2020 07:44:23 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 504931DBDE for ; Wed, 23 Sep 2020 07:44:21 +0200 (CEST) IronPort-SDR: ZrNXihK8I1XqSOLaDxSAchm1WdU2ZsUeM1tRBVihsLP39egtYm2lJsU3WfH8buVtFuraLXa6qk seM3aCrYaP7A== X-IronPort-AV: E=McAfee;i="6000,8403,9752"; a="158181591" X-IronPort-AV: E=Sophos;i="5.77,293,1596524400"; d="scan'208";a="158181591" 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/ECDHE-RSA-AES256-GCM-SHA384; 22 Sep 2020 22:44:18 -0700 IronPort-SDR: Z9yw+LHuSRdOW8ROeXlkRrFQapHJHGiRZ7IGqUMRVE9TgezRiwOMYNVZT9kODQ9TI3PEuWimWL Lw8Gfw+kRhwg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,293,1596524400"; d="scan'208";a="335329465" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga004.fm.intel.com with ESMTP; 22 Sep 2020 22:44:18 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) 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; Tue, 22 Sep 2020 22:44:17 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 22 Sep 2020 22:44:17 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.103) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Tue, 22 Sep 2020 22:44:17 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ves8tZf41IgGiD5ZDRhmFRZFUytlrGP0HaDwvfHtYmfWFathjDtMkQopFeEY/YtuDWL0zZLcHRzSJX3vuXAtRDYGB/Bea1dsaK/uONVkvCrQqC3uuKZt2Vt8H4CW6DghwzMSqZ5dJMgf0Hc6Cmov1iK4DR6g1fefSe1D/uIjYUNw+XkxOV11c0o+v6Fe5QKY8qlEMQZY9b1l0zJpX0qTEh4Xk93rNyjvKUapHTJea0s7rTI/qq38AE2AOEimo4a42DEkatty0ffMeALpD/iKdF0YmzzZWpHxK6xjGAVUvnvG5JZ8J7qjzF/gARDktYD2TLiy46r1eqeLSb3QDja0oA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dOw/Q/6U7jDjV4jojJ7uC3O3IdoIJ9ZLrCV/fCQUydo=; b=FkIEY2T6XhWr5RL3Av7syVMUN3iGelOc2Cae7ouDyv7jxy2umsFBH4V7mAZWvozNyYKMelt78FtPEa4JW6VTlpPuthIUYEZJhVso/wxygawWSRuPjs+4AgR6ZrkpikD3LN97h33AJx4jWLv+hYkfHx6PghlObk9mXCwM+SbHsynfgc1t49stquOX7O7wz7LzxpdMEzDbZtNwoiw0uvC8c8Te+SEPXWgN0kaMIjpbMgxNBFp0eZbgwB3898EdocuWZ/sUcNmdkUHJhg5ZNkDs6N/r+g0u5G4wIKeDFXqmSuAZsOoAsrOssej8h/h9TWuTPiI70ONiwnMZjxec1qjydw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dOw/Q/6U7jDjV4jojJ7uC3O3IdoIJ9ZLrCV/fCQUydo=; b=qWcox4awelD7wE8lazeWLr3Qvm8qU+0yXxh5V1oNHgAAA5yxPFDQYNMlLBupqHhuLBpjd1phY+u8zdQoa+CNLxcm6MtJuPf9Y4BHuEAcWkhDqxvftTlWUMB2i6htvACyd0LRWpnsyL9R18eE3nD1KvdZ4VbMVSNL2Y0Ek1E8GYw= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22) by MN2PR11MB4645.namprd11.prod.outlook.com (2603:10b6:208:269::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.11; Wed, 23 Sep 2020 05:44:14 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::b898:36f5:61cb:42ca]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::b898:36f5:61cb:42ca%7]) with mapi id 15.20.3391.027; Wed, 23 Sep 2020 05:44:14 +0000 From: "Xia, Chenbo" To: Maxime Coquelin , "dev@dpdk.org" , "Stokes, Ian" Thread-Topic: [PATCH 4/4] vhost: remove dequeue zero-copy support Thread-Index: AQHWi2U+7gnl2iSjG0KOyUgCa31SE6l1vVBQ Date: Wed, 23 Sep 2020 05:44:14 +0000 Message-ID: References: <20200915133558.210639-1-maxime.coquelin@redhat.com> <20200915133558.210639-5-maxime.coquelin@redhat.com> In-Reply-To: <20200915133558.210639-5-maxime.coquelin@redhat.com> Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.102.204.37] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d7f73d85-0676-43b7-150f-08d85f83b44d x-ms-traffictypediagnostic: MN2PR11MB4645: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: iHRBpLsUb7ii2vvOND+ap4Lo71vUgb3NxLaVWhUd0A/e3NNzY7IGQOza7ewSmJ3RQnuqXB0nLBamo0KSDqr8jgFF5jzLc/WuS0NN5QrXwW5t4FXtwJwq+6rqF/Ja4l1py/BTd5SRtKsBUxz5omX96IkxzFvopk6FUH2ftSq4b1qfMBJ0L6KvK3Ncs9JjZUIfDRx/RSDvgjhxKA0lebf0+C5b3+xgxKDSZ8zcKAmwlnxN7ct54MLKC9cBGsCGJD7bKLgpakDQXVglpTq0PzlswLI1D3bKqFYKTqIwQhJ1TiJ7gCUluKSIrYnz1vG6UqLhC+N2c8mu6/r3rF70oX7FsK7Cij4VzlDZGcF52kzmtFbVHnMdd8HwWabka3RtV4qD x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR11MB4063.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(136003)(366004)(346002)(376002)(396003)(30864003)(66476007)(64756008)(110136005)(316002)(26005)(71200400001)(478600001)(5660300002)(186003)(7696005)(66946007)(66556008)(6506007)(76116006)(52536014)(66446008)(53546011)(9686003)(83380400001)(33656002)(86362001)(6636002)(8676002)(55016002)(8936002)(2906002)(559001)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: N3Bafz/79TGJFzXpgtq6JsLJprrKHgC+LRNvJC9oIyW/pusfdrb2M8YknG6hdP/97TseVjjFV2BKeD63YxuzvB31M5BAqDN86icLxUBe/XUI1QyR07LGtRU47X8eEtbDwb4TTJSlJEpupRiMiYNa1AMzYfsKkLmOGtcg2hLyFQ4vt3i3iBMxPglbPO2pCtxKqpUed8LT8G0/cchArvfr8zS6jveYXXy3+gjTQAcuE3mwP/h5mVPRI2WaMljaVG2Tmn+bsqizDgVX8P/CN11qrpr9ovPpJgSk2s5lGAAxpmZKmtVW9uEmr5vFJSQ9e+uJ5XCqPx7Ojs30rbbSnhkx4yU8ZsJ99t531Ls6fnnS5zaySdwe2O2ZezrIAY5aaIBalL9FKkKmyiNe3lNXDe0+A7HSO4dyDYBEqw9naE+BkyoK+A7hjbm1fE4tCNYkLIkHIo7MCf3DZDt4FTBbDmr1zDGTlbuRF+tXaUZHZMRJocXycoDnwww3LbTD1+naIUWxs/E2gK2dgYhNn0jfn/Za8w51hpwcM4NPTURhqT4PQHDjnoYenT1YtZ8zulQHwNWp1FAsbwSLWsHyiNVAMqGWvLdEqY69IjHFwPHXPOshDDl1bz7Z5iI7iNxVatkqINFukL4cc+JDvuDRKsfMV74dzg== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB4063.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d7f73d85-0676-43b7-150f-08d85f83b44d X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Sep 2020 05:44:14.1891 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Qrte+TImsOArU8ebMCEmYg8Q0KzscTEZnl3tCltkbx+J+V4TK02CjyNEBa+vhIHklR1aSlZmYgU+bjQ/XF586w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4645 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH 4/4] vhost: remove dequeue zero-copy support 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" SGkgTWF4aW1lLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1heGlt ZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+IFNlbnQ6IFR1ZXNkYXks IFNlcHRlbWJlciAxNSwgMjAyMCA5OjM2IFBNDQo+IFRvOiBkZXZAZHBkay5vcmc7IFhpYSwgQ2hl bmJvIDxjaGVuYm8ueGlhQGludGVsLmNvbT47IFN0b2tlcywgSWFuDQo+IDxpYW4uc3Rva2VzQGlu dGVsLmNvbT4NCj4gQ2M6IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5j b20+DQo+IFN1YmplY3Q6IFtQQVRDSCA0LzRdIHZob3N0OiByZW1vdmUgZGVxdWV1ZSB6ZXJvLWNv cHkgc3VwcG9ydA0KPiANCj4gRGVxdWV1ZSB6ZXJvLWNvcHkgcmVtb3ZhbCB3YXMgYW5ub3VuY2Vk IGluIERQREsgdjIwLjA4Lg0KPiBUaGlzIGZlYXR1cmUgYnJpbmdzIGNvbnN0cmFpbnRzIHdoaWNo IG1ha2VzIHRoZSBtYWludGVuYW5jZQ0KPiBvZiB0aGUgVmhvc3QgbGlicmFyeSBkaWZmaWN1bHQu IEl0cyBsaW1pdGF0aW9ucyBtYWtlcyBpdCBhbHNvDQo+IGRpZmZjdWx0IHRvIHVzZSBieSB0aGUg YXBwbGljYXRpb25zIChUeCB2cmluZyBzdGFydmF0aW9uKS4NCg0Kcy9kaWZmY3VsdC9kaWZmaWN1 bHQNCg0KQmVzaWRlcywgdGhlcmUncyBzb21lIHpjb3B5LXJlbGF0ZWQgc3RydWN0IGFuZCBmdW5j dGlvbiBpbiB2aG9zdC5oLg0KU2hvdWxkIGNsZWFuIHRoZW0gdXAgdG9vIPCfmIouDQoNCkFuZCBp biBmdW5jICdmcmVlX21lbV9yZWdpb24nLCB5b3UgY2FuIGRlbGV0ZSAnc3RydWN0IHZob3N0X3Zp cnRxdWV1ZSAqdnE7Jw0KQmVjYXVzZSBpdCdzIG5vdCBpbiB1c2Ugbm93LiANCg0KVGhhbmtzIQ0K Q2hlbmJvDQoNCj4gDQo+IFJlbW92aW5nIGl0IG1ha2VzIGl0IGVhc2llciB0byBhZGQgbmV3IGZl YXR1cmVzLCBhbmQgYWxzbyByZW1vdmUNCj4gc29tZSBjb2RlIGluIHRoZSBob3QgcGF0aCwgd2hp Y2ggc2hvdWxkIGJyaW5nIGEgcGVyZm9ybWFuY2UNCj4gaW1wcm92ZW1lbnQgZm9yIHRoZSBzdGFu ZGFyZCBwYXRoLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTWF4aW1lIENvcXVlbGluIDxtYXhpbWUu Y29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gLS0tDQo+ICBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvdmhv c3RfbGliLnJzdCB8ICA1MiArLS0tLQ0KPiAgbGliL2xpYnJ0ZV92aG9zdC9ydGVfdmhvc3QuaCAg ICAgICAgfCAgIDIgKy0NCj4gIGxpYi9saWJydGVfdmhvc3Qvc29ja2V0LmMgICAgICAgICAgIHwg IDQ3IC0tLS0NCj4gIGxpYi9saWJydGVfdmhvc3Qvdmhvc3QuYyAgICAgICAgICAgIHwgIDE0IC0t DQo+ICBsaWIvbGlicnRlX3Zob3N0L3Zob3N0LmggICAgICAgICAgICB8ICAgNyAtDQo+ICBsaWIv bGlicnRlX3Zob3N0L3Zob3N0X3VzZXIuYyAgICAgICB8ICA3OSArLS0tLS0tDQo+ICBsaWIvbGli cnRlX3Zob3N0L3ZpcnRpb19uZXQuYyAgICAgICB8IDMyNiArKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+ICA3IGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDQ5NCBkZWxldGlv bnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvdmhvc3RfbGli LnJzdA0KPiBiL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS92aG9zdF9saWIucnN0DQo+IGluZGV4IGI4 OTJlZWM2N2EuLmJhNGM2MmFlYjggMTAwNjQ0DQo+IC0tLSBhL2RvYy9ndWlkZXMvcHJvZ19ndWlk ZS92aG9zdF9saWIucnN0DQo+ICsrKyBiL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS92aG9zdF9saWIu cnN0DQo+IEBAIC01MSw1MCArNTEsNiBAQCBUaGUgZm9sbG93aW5nIGlzIGFuIG92ZXJ2aWV3IG9m IHNvbWUga2V5IFZob3N0IEFQSQ0KPiBmdW5jdGlvbnM6DQo+ICAgICAgVGhpcyByZWNvbm5lY3Qg b3B0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gSG93ZXZlciwgaXQgY2FuIGJlDQo+IHR1cm5l ZCBvZmYNCj4gICAgICBieSBzZXR0aW5nIHRoaXMgZmxhZy4NCj4gDQo+IC0gIC0gYGBSVEVfVkhP U1RfVVNFUl9ERVFVRVVFX1pFUk9fQ09QWWBgDQo+IC0NCj4gLSAgICBEZXF1ZXVlIHplcm8gY29w eSB3aWxsIGJlIGVuYWJsZWQgd2hlbiB0aGlzIGZsYWcgaXMgc2V0LiBJdCBpcw0KPiBkaXNhYmxl ZCBieQ0KPiAtICAgIGRlZmF1bHQuDQo+IC0NCj4gLSAgICBUaGVyZSBhcmUgc29tZSB0cnV0aHMg KGluY2x1ZGluZyBsaW1pdGF0aW9ucykgeW91IG1pZ2h0IHdhbnQgdG8ga25vdw0KPiB3aGlsZQ0K PiAtICAgIHNldHRpbmcgdGhpcyBmbGFnOg0KPiAtDQo+IC0gICAgKiB6ZXJvIGNvcHkgaXMgbm90 IGdvb2QgZm9yIHNtYWxsIHBhY2tldHMgKHR5cGljYWxseSBmb3IgcGFja2V0IHNpemUNCj4gYmVs b3cNCj4gLSAgICAgIDUxMikuDQo+IC0NCj4gLSAgICAqIHplcm8gY29weSBpcyByZWFsbHkgZ29v ZCBmb3IgVk0yVk0gY2FzZS4gRm9yIGlwZXJmIGJldHdlZW4gdHdvIFZNcywNCj4gdGhlDQo+IC0g ICAgICBib29zdCBjb3VsZCBiZSBhYm92ZSA3MCUgKHdoZW4gVFNPIGlzIGVuYWJsZWQpLg0KPiAt DQo+IC0gICAgKiBGb3IgemVybyBjb3B5IGluIFZNMk5JQyBjYXNlLCBndWVzdCBUeCB1c2VkIHZy aW5nIG1heSBiZSBzdGFydmVkIGlmDQo+IHRoZQ0KPiAtICAgICAgUE1EIGRyaXZlciBjb25zdW1l IHRoZSBtYnVmIGJ1dCBub3QgcmVsZWFzZSB0aGVtIHRpbWVseS4NCj4gLQ0KPiAtICAgICAgRm9y IGV4YW1wbGUsIGk0MGUgZHJpdmVyIGhhcyBhbiBvcHRpbWl6YXRpb24gdG8gbWF4aW11bSBOSUMN Cj4gcGlwZWxpbmUgd2hpY2gNCj4gLSAgICAgIHBvc3Rwb25lcyByZXR1cm5pbmcgdHJhbnNtaXR0 ZWQgbWJ1ZiB1bnRpbCBvbmx5IHR4X2ZyZWVfdGhyZXNob2xkDQo+IGZyZWUNCj4gLSAgICAgIGRl c2NzIGxlZnQuIFRoZSB2aXJ0aW8gVFggdXNlZCByaW5nIHdpbGwgYmUgc3RhcnZlZCBpZiB0aGUg Zm9ybXVsYQ0KPiAtICAgICAgKG51bV9pNDBlX3R4X2Rlc2MgLSBudW1fdmlydGlvX3R4X2Rlc2Mg PiB0eF9mcmVlX3RocmVzaG9sZCkgaXMgdHJ1ZSwNCj4gc2luY2UNCj4gLSAgICAgIGk0MGUgd2ls bCBub3QgcmV0dXJuIGJhY2sgbWJ1Zi4NCj4gLQ0KPiAtICAgICAgQSBwZXJmb3JtYW5jZSB0aXAg Zm9yIHR1bmluZyB6ZXJvIGNvcHkgaW4gVk0yTklDIGNhc2UgaXMgdG8gYWRqdXN0DQo+IHRoZQ0K PiAtICAgICAgZnJlcXVlbmN5IG9mIG1idWYgZnJlZSAoaS5lLiBhZGp1c3QgdHhfZnJlZV90aHJl c2hvbGQgb2YgaTQwZQ0KPiBkcml2ZXIpIHRvDQo+IC0gICAgICBiYWxhbmNlIGNvbnN1bWVyIGFu ZCBwcm9kdWNlci4NCj4gLQ0KPiAtICAgICogR3Vlc3QgbWVtb3J5IHNob3VsZCBiZSBiYWNrZW5k ZWQgd2l0aCBodWdlIHBhZ2VzIHRvIGFjaGlldmUgYmV0dGVyDQo+IC0gICAgICBwZXJmb3JtYW5j ZS4gVXNpbmcgMUcgcGFnZSBzaXplIGlzIHRoZSBiZXN0Lg0KPiAtDQo+IC0gICAgICBXaGVuIGRl cXVldWUgemVybyBjb3B5IGlzIGVuYWJsZWQsIHRoZSBndWVzdCBwaHlzIGFkZHJlc3MgYW5kIGhv c3QNCj4gcGh5cw0KPiAtICAgICAgYWRkcmVzcyBtYXBwaW5nIGhhcyB0byBiZSBlc3RhYmxpc2hl ZC4gVXNpbmcgbm9uLWh1Z2UgcGFnZXMgbWVhbnMNCj4gZmFyDQo+IC0gICAgICBtb3JlIHBhZ2Ug c2VnbWVudHMuIFRvIG1ha2UgaXQgc2ltcGxlLCBEUERLIHZob3N0IGRvZXMgYSBsaW5lYXINCj4g c2VhcmNoDQo+IC0gICAgICBvZiB0aG9zZSBzZWdtZW50cywgdGh1cyB0aGUgZmV3ZXIgdGhlIHNl Z21lbnRzLCB0aGUgcXVpY2tlciB3ZSB3aWxsDQo+IGdldA0KPiAtICAgICAgdGhlIG1hcHBpbmcu IE5PVEU6IHdlIG1heSBzcGVlZCBpdCBieSB1c2luZyB0cmVlIHNlYXJjaGluZyBpbg0KPiBmdXR1 cmUuDQo+IC0NCj4gLSAgICAqIHplcm8gY29weSBjYW4gbm90IHdvcmsgd2hlbiB1c2luZyB2Zmlv LXBjaSB3aXRoIGlvbW11IG1vZGUNCj4gY3VycmVudGx5LCB0aGlzDQo+IC0gICAgICBpcyBiZWNh dXNlIHdlIGRvbid0IHNldHVwIGlvbW11IGRtYSBtYXBwaW5nIGZvciBndWVzdCBtZW1vcnkuIElm DQo+IHlvdSBoYXZlDQo+IC0gICAgICB0byB1c2UgdmZpby1wY2kgZHJpdmVyLCBwbGVhc2UgaW5z ZXJ0IHZmaW8tcGNpIGtlcm5lbCBtb2R1bGUgaW4NCj4gbm9pb21tdQ0KPiAtICAgICAgbW9kZS4N Cj4gLQ0KPiAtICAgICogVGhlIGNvbnN1bWVyIG9mIHplcm8gY29weSBtYnVmcyBzaG91bGQgY29u c3VtZSB0aGVzZSBtYnVmcyBhcyBzb29uDQo+IGFzDQo+IC0gICAgICBwb3NzaWJsZSwgb3RoZXJ3 aXNlIGl0IG1heSBibG9jayB0aGUgb3BlcmF0aW9ucyBpbiB2aG9zdC4NCj4gLQ0KPiAgICAtIGBg UlRFX1ZIT1NUX1VTRVJfSU9NTVVfU1VQUE9SVGBgDQo+IA0KPiAgICAgIElPTU1VIHN1cHBvcnQg d2lsbCBiZSBlbmFibGVkIHdoZW4gdGhpcyBmbGFnIGlzIHNldC4gSXQgaXMgZGlzYWJsZWQNCj4g YnkNCj4gQEAgLTM2MiwxNiArMzE4LDE2IEBAIEd1ZXN0IG1lbW9yeSByZXF1aXJlbWVudA0KPiAN Cj4gICogTWVtb3J5IHByZS1hbGxvY2F0aW9uDQo+IA0KPiAtICBGb3Igbm9uLXplcm9jb3B5IG5v bi1hc3luYyBkYXRhIHBhdGgsIGd1ZXN0IG1lbW9yeSBwcmUtYWxsb2NhdGlvbiBpcw0KPiBub3Qg YQ0KPiArICBGb3Igbm9uLWFzeW5jIGRhdGEgcGF0aCwgZ3Vlc3QgbWVtb3J5IHByZS1hbGxvY2F0 aW9uIGlzIG5vdCBhDQo+ICAgIG11c3QuIFRoaXMgY2FuIGhlbHAgc2F2ZSBvZiBtZW1vcnkuIElm IHVzZXJzIHJlYWxseSB3YW50IHRoZSBndWVzdA0KPiBtZW1vcnkNCj4gICAgdG8gYmUgcHJlLWFs bG9jYXRlZCAoZS5nLiwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbiksIHdlIGNhbiBhZGQgb3B0aW9u DQo+ICAgIGBgLW1lbS1wcmVhbGxvY2BgIHdoZW4gc3RhcnRpbmcgUUVNVS4gT3IsIHdlIGNhbiBs b2NrIGFsbCBtZW1vcnkgYXQNCj4gdmhvc3QNCj4gICAgc2lkZSB3aGljaCB3aWxsIGZvcmNlIG1l bW9yeSB0byBiZSBhbGxvY2F0ZWQgd2hlbiBtbWFwIGF0IHZob3N0IHNpZGU7DQo+ICAgIG9wdGlv biAtLW1sb2NrYWxsIGluIG92cy1kcGRrIGlzIGFuIGV4YW1wbGUgaW4gaGFuZC4NCj4gDQo+IC0g IEZvciBhc3luYyBhbmQgemVyb2NvcHkgZGF0YSBwYXRoLCB3ZSBmb3JjZSB0aGUgVk0gbWVtb3J5 IHRvIGJlDQo+IC0gIHByZS1hbGxvY2F0ZWQgYXQgdmhvc3QgbGliIHdoZW4gbWFwcGluZyB0aGUg Z3Vlc3QgbWVtb3J5OyBhbmQgYWxzbyB3ZQ0KPiBuZWVkDQo+IC0gIHRvIGxvY2sgdGhlIG1lbW9y eSB0byBwcmV2ZW50IHBhZ2VzIGJlaW5nIHN3YXBwZWQgb3V0IHRvIGRpc2suDQo+ICsgIEZvciBh c3luYyBkYXRhIHBhdGgsIHdlIGZvcmNlIHRoZSBWTSBtZW1vcnkgdG8gYmUgcHJlLWFsbG9jYXRl ZCBhdA0KPiB2aG9zdA0KPiArICBsaWIgd2hlbiBtYXBwaW5nIHRoZSBndWVzdCBtZW1vcnk7IGFu ZCBhbHNvIHdlIG5lZWQgdG8gbG9jayB0aGUgbWVtb3J5DQo+IHRvDQo+ICsgIHByZXZlbnQgcGFn ZXMgYmVpbmcgc3dhcHBlZCBvdXQgdG8gZGlzay4NCj4gDQo+ICAqIE1lbW9yeSBzaGFyaW5nDQo+ IA0KPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV92aG9zdC9ydGVfdmhvc3QuaCBiL2xpYi9saWJy dGVfdmhvc3QvcnRlX3Zob3N0LmgNCj4gaW5kZXggYTk0Yzg0MTM0ZC4uNDYwMTlkZjZmZSAxMDA2 NDQNCj4gLS0tIGEvbGliL2xpYnJ0ZV92aG9zdC9ydGVfdmhvc3QuaA0KPiArKysgYi9saWIvbGli cnRlX3Zob3N0L3J0ZV92aG9zdC5oDQo+IEBAIC0yOCw3ICsyOCw3IEBAIGV4dGVybiAiQyIgew0K PiANCj4gICNkZWZpbmUgUlRFX1ZIT1NUX1VTRVJfQ0xJRU5UCQkoMVVMTCA8PCAwKQ0KPiAgI2Rl ZmluZSBSVEVfVkhPU1RfVVNFUl9OT19SRUNPTk5FQ1QJKDFVTEwgPDwgMSkNCj4gLSNkZWZpbmUg UlRFX1ZIT1NUX1VTRVJfREVRVUVVRV9aRVJPX0NPUFkJKDFVTEwgPDwgMikNCj4gKyNkZWZpbmUg UlRFX1ZIT1NUX1VTRVJfUkVTRVJWRURfMQkoMVVMTCA8PCAyKQ0KPiAgI2RlZmluZSBSVEVfVkhP U1RfVVNFUl9JT01NVV9TVVBQT1JUCSgxVUxMIDw8IDMpDQo+ICAjZGVmaW5lIFJURV9WSE9TVF9V U0VSX1BPU1RDT1BZX1NVUFBPUlQJCSgxVUxMIDw8IDQpDQo+ICAvKiBzdXBwb3J0IG1idWYgd2l0 aCBleHRlcm5hbCBidWZmZXIgYXR0YWNoZWQgKi8NCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVf dmhvc3Qvc29ja2V0LmMgYi9saWIvbGlicnRlX3Zob3N0L3NvY2tldC5jDQo+IGluZGV4IDczZTFk Y2E5NWUuLjAxNjlkMzY0ODEgMTAwNjQ0DQo+IC0tLSBhL2xpYi9saWJydGVfdmhvc3Qvc29ja2V0 LmMNCj4gKysrIGIvbGliL2xpYnJ0ZV92aG9zdC9zb2NrZXQuYw0KPiBAQCAtMzcsNyArMzcsNiBA QCBzdHJ1Y3Qgdmhvc3RfdXNlcl9zb2NrZXQgew0KPiAgCXN0cnVjdCBzb2NrYWRkcl91biB1bjsN Cj4gIAlib29sIGlzX3NlcnZlcjsNCj4gIAlib29sIHJlY29ubmVjdDsNCj4gLQlib29sIGRlcXVl dWVfemVyb19jb3B5Ow0KPiAgCWJvb2wgaW9tbXVfc3VwcG9ydDsNCj4gIAlib29sIHVzZV9idWls dGluX3ZpcnRpb19uZXQ7DQo+ICAJYm9vbCBleHRidWY7DQo+IEBAIC0yMjksOSArMjI4LDYgQEAg dmhvc3RfdXNlcl9hZGRfY29ubmVjdGlvbihpbnQgZmQsIHN0cnVjdA0KPiB2aG9zdF91c2VyX3Nv Y2tldCAqdnNvY2tldCkNCj4gDQo+ICAJdmhvc3RfYXR0YWNoX3ZkcGFfZGV2aWNlKHZpZCwgdnNv Y2tldC0+dmRwYV9kZXYpOw0KPiANCj4gLQlpZiAodnNvY2tldC0+ZGVxdWV1ZV96ZXJvX2NvcHkp DQo+IC0JCXZob3N0X2VuYWJsZV9kZXF1ZXVlX3plcm9fY29weSh2aWQpOw0KPiAtDQo+ICAJaWYg KHZzb2NrZXQtPmV4dGJ1ZikNCj4gIAkJdmhvc3RfZW5hYmxlX2V4dGJ1Zih2aWQpOw0KPiANCj4g QEAgLTg3OCwxOCArODc0LDggQEAgcnRlX3Zob3N0X2RyaXZlcl9yZWdpc3Rlcihjb25zdCBjaGFy ICpwYXRoLCB1aW50NjRfdA0KPiBmbGFncykNCj4gIAkJZ290byBvdXRfZnJlZTsNCj4gIAl9DQo+ ICAJdnNvY2tldC0+dmRwYV9kZXYgPSBOVUxMOw0KPiAtCXZzb2NrZXQtPmRlcXVldWVfemVyb19j b3B5ID0gZmxhZ3MgJg0KPiBSVEVfVkhPU1RfVVNFUl9ERVFVRVVFX1pFUk9fQ09QWTsNCj4gIAl2 c29ja2V0LT5leHRidWYgPSBmbGFncyAmIFJURV9WSE9TVF9VU0VSX0VYVEJVRl9TVVBQT1JUOw0K PiAgCXZzb2NrZXQtPmxpbmVhcmJ1ZiA9IGZsYWdzICYgUlRFX1ZIT1NUX1VTRVJfTElORUFSQlVG X1NVUFBPUlQ7DQo+IC0NCj4gLQlpZiAodnNvY2tldC0+ZGVxdWV1ZV96ZXJvX2NvcHkgJiYNCj4g LQkgICAgKGZsYWdzICYgUlRFX1ZIT1NUX1VTRVJfSU9NTVVfU1VQUE9SVCkpIHsNCj4gLQkJVkhP U1RfTE9HX0NPTkZJRyhFUlIsDQo+IC0JCQkiZXJyb3I6IGVuYWJsaW5nIGRlcXVldWUgemVybyBj b3B5IGFuZCBJT01NVSBmZWF0dXJlcyAiDQo+IC0JCQkic2ltdWx0YW5lb3VzbHkgaXMgbm90IHN1 cHBvcnRlZFxuIik7DQo+IC0JCWdvdG8gb3V0X211dGV4Ow0KPiAtCX0NCj4gLQ0KPiAgCXZzb2Nr ZXQtPmFzeW5jX2NvcHkgPSBmbGFncyAmIFJURV9WSE9TVF9VU0VSX0FTWU5DX0NPUFk7DQo+IA0K PiAgCWlmICh2c29ja2V0LT5hc3luY19jb3B5ICYmDQo+IEBAIC05MTgsMzkgKzkwNCw2IEBAIHJ0 ZV92aG9zdF9kcml2ZXJfcmVnaXN0ZXIoY29uc3QgY2hhciAqcGF0aCwgdWludDY0X3QNCj4gZmxh Z3MpDQo+ICAJdnNvY2tldC0+ZmVhdHVyZXMgICAgICAgICAgID0gVklSVElPX05FVF9TVVBQT1JU RURfRkVBVFVSRVM7DQo+ICAJdnNvY2tldC0+cHJvdG9jb2xfZmVhdHVyZXMgID0gVkhPU1RfVVNF Ul9QUk9UT0NPTF9GRUFUVVJFUzsNCj4gDQo+IC0JLyoNCj4gLQkgKiBEZXF1ZXVlIHplcm8gY29w eSBjYW4ndCBhc3N1cmUgZGVzY3JpcHRvcnMgcmV0dXJuZWQgaW4gb3JkZXIuDQo+IC0JICogQWxz bywgaXQgcmVxdWlyZXMgdGhhdCB0aGUgZ3Vlc3QgbWVtb3J5IGlzIHBvcHVsYXRlZCwgd2hpY2gg aXMNCj4gLQkgKiBub3QgY29tcGF0aWJsZSB3aXRoIHBvc3Rjb3B5Lg0KPiAtCSAqLw0KPiAtCWlm ICh2c29ja2V0LT5kZXF1ZXVlX3plcm9fY29weSkgew0KPiAtCQlpZiAodnNvY2tldC0+ZXh0YnVm KSB7DQo+IC0JCQlWSE9TVF9MT0dfQ09ORklHKEVSUiwNCj4gLQkJCSJlcnJvcjogemVybyBjb3B5 IGlzIGluY29tcGF0aWJsZSB3aXRoIGV4dGVybmFsDQo+IGJ1ZmZlcnNcbiIpOw0KPiAtCQkJcmV0 ID0gLTE7DQo+IC0JCQlnb3RvIG91dF9tdXRleDsNCj4gLQkJfQ0KPiAtCQlpZiAodnNvY2tldC0+ bGluZWFyYnVmKSB7DQo+IC0JCQlWSE9TVF9MT0dfQ09ORklHKEVSUiwNCj4gLQkJCSJlcnJvcjog emVybyBjb3B5IGlzIGluY29tcGF0aWJsZSB3aXRoIGxpbmVhcg0KPiBidWZmZXJzXG4iKTsNCj4g LQkJCXJldCA9IC0xOw0KPiAtCQkJZ290byBvdXRfbXV0ZXg7DQo+IC0JCX0NCj4gLQkJaWYgKChm bGFncyAmIFJURV9WSE9TVF9VU0VSX0NMSUVOVCkgIT0gMCkgew0KPiAtCQkJVkhPU1RfTE9HX0NP TkZJRyhFUlIsDQo+IC0JCQkiZXJyb3I6IHplcm8gY29weSBpcyBpbmNvbXBhdGlibGUgd2l0aCB2 aG9zdCBjbGllbnQNCj4gbW9kZVxuIik7DQo+IC0JCQlyZXQgPSAtMTsNCj4gLQkJCWdvdG8gb3V0 X211dGV4Ow0KPiAtCQl9DQo+IC0JCXZzb2NrZXQtPnN1cHBvcnRlZF9mZWF0dXJlcyAmPSB+KDFV TEwgPDwgVklSVElPX0ZfSU5fT1JERVIpOw0KPiAtCQl2c29ja2V0LT5mZWF0dXJlcyAmPSB+KDFV TEwgPDwgVklSVElPX0ZfSU5fT1JERVIpOw0KPiAtDQo+IC0JCVZIT1NUX0xPR19DT05GSUcoSU5G TywNCj4gLQkJCSJEZXF1ZXVlIHplcm8gY29weSByZXF1ZXN0ZWQsIGRpc2FibGluZyBwb3N0Y29w eQ0KPiBzdXBwb3J0XG4iKTsNCj4gLQkJdnNvY2tldC0+cHJvdG9jb2xfZmVhdHVyZXMgJj0NCj4g LQkJCX4oMVVMTCA8PCBWSE9TVF9VU0VSX1BST1RPQ09MX0ZfUEFHRUZBVUxUKTsNCj4gLQl9DQo+ IC0NCj4gIAlpZiAodnNvY2tldC0+YXN5bmNfY29weSkgew0KPiAgCQl2c29ja2V0LT5zdXBwb3J0 ZWRfZmVhdHVyZXMgJj0gfigxVUxMIDw8IFZIT1NUX0ZfTE9HX0FMTCk7DQo+ICAJCXZzb2NrZXQt PmZlYXR1cmVzICY9IH4oMVVMTCA8PCBWSE9TVF9GX0xPR19BTEwpOw0KPiBkaWZmIC0tZ2l0IGEv bGliL2xpYnJ0ZV92aG9zdC92aG9zdC5jIGIvbGliL2xpYnJ0ZV92aG9zdC92aG9zdC5jDQo+IGlu ZGV4IDhmMjBhMDgxOGYuLmM3Y2QzNGU0MmIgMTAwNjQ0DQo+IC0tLSBhL2xpYi9saWJydGVfdmhv c3Qvdmhvc3QuYw0KPiArKysgYi9saWIvbGlicnRlX3Zob3N0L3Zob3N0LmMNCj4gQEAgLTUzOSw4 ICs1MzksNiBAQCBpbml0X3ZyaW5nX3F1ZXVlKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsIHVpbnQz Ml90DQo+IHZyaW5nX2lkeCkNCj4gIAl2aG9zdF91c2VyX2lvdGxiX2luaXQoZGV2LCB2cmluZ19p ZHgpOw0KPiAgCS8qIEJhY2tlbmRzIGFyZSBzZXQgdG8gLTEgaW5kaWNhdGluZyBhbiBpbmFjdGl2 ZSBkZXZpY2UuICovDQo+ICAJdnEtPmJhY2tlbmQgPSAtMTsNCj4gLQ0KPiAtCVRBSUxRX0lOSVQo JnZxLT56bWJ1Zl9saXN0KTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgdm9pZA0KPiBAQCAtNzA0LDE4 ICs3MDIsNiBAQCB2aG9zdF9zZXRfaWZuYW1lKGludCB2aWQsIGNvbnN0IGNoYXIgKmlmX25hbWUs DQo+IHVuc2lnbmVkIGludCBpZl9sZW4pDQo+ICAJZGV2LT5pZm5hbWVbc2l6ZW9mKGRldi0+aWZu YW1lKSAtIDFdID0gJ1wwJzsNCj4gIH0NCj4gDQo+IC12b2lkDQo+IC12aG9zdF9lbmFibGVfZGVx dWV1ZV96ZXJvX2NvcHkoaW50IHZpZCkNCj4gLXsNCj4gLQlzdHJ1Y3QgdmlydGlvX25ldCAqZGV2 ID0gZ2V0X2RldmljZSh2aWQpOw0KPiAtDQo+IC0JaWYgKGRldiA9PSBOVUxMKQ0KPiAtCQlyZXR1 cm47DQo+IC0NCj4gLQlkZXYtPmRlcXVldWVfemVyb19jb3B5ID0gMTsNCj4gLQlWSE9TVF9MT0df Q09ORklHKElORk8sICJkZXF1ZXVlIHplcm8gY29weSBpcyBlbmFibGVkXG4iKTsNCj4gLX0NCj4g LQ0KPiAgdm9pZA0KPiAgdmhvc3Rfc2V0X2J1aWx0aW5fdmlydGlvX25ldChpbnQgdmlkLCBib29s IGVuYWJsZSkNCj4gIHsNCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfdmhvc3Qvdmhvc3QuaCBi L2xpYi9saWJydGVfdmhvc3Qvdmhvc3QuaA0KPiBpbmRleCA2MzJmNjZkNTMyLi4zMjFjZjZlOTlj IDEwMDY0NA0KPiAtLS0gYS9saWIvbGlicnRlX3Zob3N0L3Zob3N0LmgNCj4gKysrIGIvbGliL2xp YnJ0ZV92aG9zdC92aG9zdC5oDQo+IEBAIC0zNzksNyArMzc5LDYgQEAgc3RydWN0IHZpcnRpb19u ZXQgew0KPiAgCS8qIHRvIHRlbGwgaWYgd2UgbmVlZCBicm9hZGNhc3QgcmFycCBwYWNrZXQgKi8N Cj4gIAlpbnQxNl90CQkJYnJvYWRjYXN0X3JhcnA7DQo+ICAJdWludDMyX3QJCW5yX3ZyaW5nOw0K PiAtCWludAkJCWRlcXVldWVfemVyb19jb3B5Ow0KPiAgCWludAkJCWFzeW5jX2NvcHk7DQo+ICAJ aW50CQkJZXh0YnVmOw0KPiAgCWludAkJCWxpbmVhcmJ1ZjsNCj4gQEAgLTg5NywxMCArODk2LDQg QEAgbWJ1Zl9pc19jb25zdW1lZChzdHJ1Y3QgcnRlX21idWYgKm0pDQo+ICAJcmV0dXJuIHRydWU7 DQo+ICB9DQo+IA0KPiAtc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdm9pZA0KPiAtcHV0X3pt YnVmKHN0cnVjdCB6Y29weV9tYnVmICp6bWJ1ZikNCj4gLXsNCj4gLQl6bWJ1Zi0+aW5fdXNlID0g MDsNCj4gLX0NCj4gLQ0KPiAgI2VuZGlmIC8qIF9WSE9TVF9ORVRfQ0RFVl9IXyAqLw0KPiBkaWZm IC0tZ2l0IGEvbGliL2xpYnJ0ZV92aG9zdC92aG9zdF91c2VyLmMgYi9saWIvbGlicnRlX3Zob3N0 L3Zob3N0X3VzZXIuYw0KPiBpbmRleCBjM2M5MjRmYWVjLi44YWY1ZWEwYTk4IDEwMDY0NA0KPiAt LS0gYS9saWIvbGlicnRlX3Zob3N0L3Zob3N0X3VzZXIuYw0KPiArKysgYi9saWIvbGlicnRlX3Zo b3N0L3Zob3N0X3VzZXIuYw0KPiBAQCAtMTM0LDI5ICsxMzQsNiBAQCBnZXRfYmxrX3NpemUoaW50 IGZkKQ0KPiAgCXJldHVybiByZXQgPT0gLTEgPyAodWludDY0X3QpLTEgOiAodWludDY0X3Qpc3Rh dC5zdF9ibGtzaXplOw0KPiAgfQ0KPiANCj4gLS8qDQo+IC0gKiBSZWNsYWltIGFsbCB0aGUgb3V0 c3RhbmRpbmcgem1idWZzIGZvciBhIHZpcnRxdWV1ZS4NCj4gLSAqLw0KPiAtc3RhdGljIHZvaWQN Cj4gLWRyYWluX3ptYnVmX2xpc3Qoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpDQo+IC17DQo+ IC0Jc3RydWN0IHpjb3B5X21idWYgKnptYnVmLCAqbmV4dDsNCj4gLQ0KPiAtCWZvciAoem1idWYg PSBUQUlMUV9GSVJTVCgmdnEtPnptYnVmX2xpc3QpOw0KPiAtCSAgICAgem1idWYgIT0gTlVMTDsg em1idWYgPSBuZXh0KSB7DQo+IC0JCW5leHQgPSBUQUlMUV9ORVhUKHptYnVmLCBuZXh0KTsNCj4g LQ0KPiAtCQl3aGlsZSAoIW1idWZfaXNfY29uc3VtZWQoem1idWYtPm1idWYpKQ0KPiAtCQkJdXNs ZWVwKDEwMDApOw0KPiAtDQo+IC0JCVRBSUxRX1JFTU9WRSgmdnEtPnptYnVmX2xpc3QsIHptYnVm LCBuZXh0KTsNCj4gLQkJcmVzdG9yZV9tYnVmKHptYnVmLT5tYnVmKTsNCj4gLQkJcnRlX3BrdG1i dWZfZnJlZSh6bWJ1Zi0+bWJ1Zik7DQo+IC0JCXB1dF96bWJ1Zih6bWJ1Zik7DQo+IC0JCXZxLT5u cl96bWJ1ZiAtPSAxOw0KPiAtCX0NCj4gLX0NCj4gLQ0KPiAgc3RhdGljIHZvaWQNCj4gIGZyZWVf bWVtX3JlZ2lvbihzdHJ1Y3QgdmlydGlvX25ldCAqZGV2KQ0KPiAgew0KPiBAQCAtMTY3LDE0ICsx NDQsNiBAQCBmcmVlX21lbV9yZWdpb24oc3RydWN0IHZpcnRpb19uZXQgKmRldikNCj4gIAlpZiAo IWRldiB8fCAhZGV2LT5tZW0pDQo+ICAJCXJldHVybjsNCj4gDQo+IC0JaWYgKGRldi0+ZGVxdWV1 ZV96ZXJvX2NvcHkpIHsNCj4gLQkJZm9yIChpID0gMDsgaSA8IGRldi0+bnJfdnJpbmc7IGkrKykg ew0KPiAtCQkJdnEgPSBkZXYtPnZpcnRxdWV1ZVtpXTsNCj4gLQkJCWlmICh2cSkNCj4gLQkJCQlk cmFpbl96bWJ1Zl9saXN0KHZxKTsNCj4gLQkJfQ0KPiAtCX0NCj4gLQ0KPiAgCWZvciAoaSA9IDA7 IGkgPCBkZXYtPm1lbS0+bnJlZ2lvbnM7IGkrKykgew0KPiAgCQlyZWcgPSAmZGV2LT5tZW0tPnJl Z2lvbnNbaV07DQo+ICAJCWlmIChyZWctPmhvc3RfdXNlcl9hZGRyKSB7DQo+IEBAIC00NTQsMjMg KzQyMyw2IEBAIHZob3N0X3VzZXJfc2V0X3ZyaW5nX251bShzdHJ1Y3QgdmlydGlvX25ldCAqKnBk ZXYsDQo+ICAJCXJldHVybiBSVEVfVkhPU1RfTVNHX1JFU1VMVF9FUlI7DQo+ICAJfQ0KPiANCj4g LQlpZiAoZGV2LT5kZXF1ZXVlX3plcm9fY29weSkgew0KPiAtCQl2cS0+bnJfem1idWYgPSAwOw0K PiAtCQl2cS0+bGFzdF96bWJ1Zl9pZHggPSAwOw0KPiAtCQl2cS0+em1idWZfc2l6ZSA9IHZxLT5z aXplOw0KPiAtCQlpZiAodnEtPnptYnVmcykNCj4gLQkJCXJ0ZV9mcmVlKHZxLT56bWJ1ZnMpOw0K PiAtCQl2cS0+em1idWZzID0gcnRlX3ptYWxsb2MoTlVMTCwgdnEtPnptYnVmX3NpemUgKg0KPiAt CQkJCQkgc2l6ZW9mKHN0cnVjdCB6Y29weV9tYnVmKSwgMCk7DQo+IC0JCWlmICh2cS0+em1idWZz ID09IE5VTEwpIHsNCj4gLQkJCVZIT1NUX0xPR19DT05GSUcoV0FSTklORywNCj4gLQkJCQkiZmFp bGVkIHRvIGFsbG9jYXRlIG1lbSBmb3IgemVybyBjb3B5OyAiDQo+IC0JCQkJInplcm8gY29weSBp cyBmb3JjZSBkaXNhYmxlZFxuIik7DQo+IC0JCQlkZXYtPmRlcXVldWVfemVyb19jb3B5ID0gMDsN Cj4gLQkJfQ0KPiAtCQlUQUlMUV9JTklUKCZ2cS0+em1idWZfbGlzdCk7DQo+IC0JfQ0KPiAtDQo+ ICAJaWYgKHZxX2lzX3BhY2tlZChkZXYpKSB7DQo+ICAJCWlmICh2cS0+c2hhZG93X3VzZWRfcGFj a2VkKQ0KPiAgCQkJcnRlX2ZyZWUodnEtPnNoYWRvd191c2VkX3BhY2tlZCk7DQo+IEBAIC01MjQs NyArNDc2LDYgQEAgbnVtYV9yZWFsbG9jKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsIGludCBpbmRl eCkNCj4gIAlpbnQgb2xkbm9kZSwgbmV3bm9kZTsNCj4gIAlzdHJ1Y3QgdmlydGlvX25ldCAqb2xk X2RldjsNCj4gIAlzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICpvbGRfdnEsICp2cTsNCj4gLQlzdHJ1 Y3QgemNvcHlfbWJ1ZiAqbmV3X3ptYnVmOw0KPiAgCXN0cnVjdCB2cmluZ191c2VkX2VsZW0gKm5l d19zaGFkb3dfdXNlZF9zcGxpdDsNCj4gIAlzdHJ1Y3QgdnJpbmdfdXNlZF9lbGVtX3BhY2tlZCAq bmV3X3NoYWRvd191c2VkX3BhY2tlZDsNCj4gIAlzdHJ1Y3QgYmF0Y2hfY29weV9lbGVtICpuZXdf YmF0Y2hfY29weV9lbGVtczsNCj4gQEAgLTU1NSwxNiArNTA2LDYgQEAgbnVtYV9yZWFsbG9jKHN0 cnVjdCB2aXJ0aW9fbmV0ICpkZXYsIGludCBpbmRleCkNCj4gIAkJCXJldHVybiBkZXY7DQo+IA0K PiAgCQltZW1jcHkodnEsIG9sZF92cSwgc2l6ZW9mKCp2cSkpOw0KPiAtCQlUQUlMUV9JTklUKCZ2 cS0+em1idWZfbGlzdCk7DQo+IC0NCj4gLQkJaWYgKGRldi0+ZGVxdWV1ZV96ZXJvX2NvcHkpIHsN Cj4gLQkJCW5ld196bWJ1ZiA9IHJ0ZV9tYWxsb2Nfc29ja2V0KE5VTEwsIHZxLT56bWJ1Zl9zaXpl ICoNCj4gLQkJCQkJc2l6ZW9mKHN0cnVjdCB6Y29weV9tYnVmKSwgMCwgbmV3bm9kZSk7DQo+IC0J CQlpZiAobmV3X3ptYnVmKSB7DQo+IC0JCQkJcnRlX2ZyZWUodnEtPnptYnVmcyk7DQo+IC0JCQkJ dnEtPnptYnVmcyA9IG5ld196bWJ1ZjsNCj4gLQkJCX0NCj4gLQkJfQ0KPiANCj4gIAkJaWYgKHZx X2lzX3BhY2tlZChkZXYpKSB7DQo+ICAJCQluZXdfc2hhZG93X3VzZWRfcGFja2VkID0gcnRlX21h bGxvY19zb2NrZXQoTlVMTCwNCj4gQEAgLTExNzksOCArMTEyMCw3IEBAIHZob3N0X3VzZXJfc2V0 X21lbV90YWJsZShzdHJ1Y3QgdmlydGlvX25ldCAqKnBkZXYsDQo+IHN0cnVjdCBWaG9zdFVzZXJN c2cgKm1zZywNCj4gIAkJCWdvdG8gZXJyX21tYXA7DQo+ICAJCX0NCj4gDQo+IC0JCXBvcHVsYXRl ID0gKGRldi0+ZGVxdWV1ZV96ZXJvX2NvcHkgfHwgZGV2LT5hc3luY19jb3B5KSA/DQo+IC0JCQlN QVBfUE9QVUxBVEUgOiAwOw0KPiArCQlwb3B1bGF0ZSA9IGRldi0+YXN5bmNfY29weSA/IE1BUF9Q T1BVTEFURSA6IDA7DQo+ICAJCW1tYXBfYWRkciA9IG1tYXAoTlVMTCwgbW1hcF9zaXplLCBQUk9U X1JFQUQgfCBQUk9UX1dSSVRFLA0KPiAgCQkJCSBNQVBfU0hBUkVEIHwgcG9wdWxhdGUsIGZkLCAw KTsNCj4gDQo+IEBAIC0xMTk1LDcgKzExMzUsNyBAQCB2aG9zdF91c2VyX3NldF9tZW1fdGFibGUo c3RydWN0IHZpcnRpb19uZXQgKipwZGV2LA0KPiBzdHJ1Y3QgVmhvc3RVc2VyTXNnICptc2csDQo+ ICAJCXJlZy0+aG9zdF91c2VyX2FkZHIgPSAodWludDY0X3QpKHVpbnRwdHJfdCltbWFwX2FkZHIg Kw0KPiAgCQkJCSAgICAgIG1tYXBfb2Zmc2V0Ow0KPiANCj4gLQkJaWYgKGRldi0+ZGVxdWV1ZV96 ZXJvX2NvcHkgfHwgZGV2LT5hc3luY19jb3B5KQ0KPiArCQlpZiAoZGV2LT5hc3luY19jb3B5KQ0K PiAgCQkJaWYgKGFkZF9ndWVzdF9wYWdlcyhkZXYsIHJlZywgYWxpZ25tZW50KSA8IDApIHsNCj4g IAkJCQlWSE9TVF9MT0dfQ09ORklHKEVSUiwNCj4gIAkJCQkJImFkZGluZyBndWVzdCBwYWdlcyB0 byByZWdpb24gJXUgZmFpbGVkLlxuIiwNCj4gQEAgLTE5MzMsMTUgKzE4NzMsNiBAQCB2aG9zdF91 c2VyX3NldF92cmluZ19raWNrKHN0cnVjdCB2aXJ0aW9fbmV0ICoqcGRldiwNCj4gc3RydWN0IFZo b3N0VXNlck1zZyAqbXNnLA0KPiAgCXJldHVybiBSVEVfVkhPU1RfTVNHX1JFU1VMVF9PSzsNCj4g IH0NCj4gDQo+IC1zdGF0aWMgdm9pZA0KPiAtZnJlZV96bWJ1ZnMoc3RydWN0IHZob3N0X3ZpcnRx dWV1ZSAqdnEpDQo+IC17DQo+IC0JZHJhaW5fem1idWZfbGlzdCh2cSk7DQo+IC0NCj4gLQlydGVf ZnJlZSh2cS0+em1idWZzKTsNCj4gLQl2cS0+em1idWZzID0gTlVMTDsNCj4gLX0NCj4gLQ0KPiAg LyoNCj4gICAqIHdoZW4gdmlydGlvIGlzIHN0b3BwZWQsIHFlbXUgd2lsbCBzZW5kIHVzIHRoZSBH RVRfVlJJTkdfQkFTRSBtZXNzYWdlLg0KPiAgICovDQo+IEBAIC0xOTk2LDggKzE5MjcsNiBAQCB2 aG9zdF91c2VyX2dldF92cmluZ19iYXNlKHN0cnVjdCB2aXJ0aW9fbmV0ICoqcGRldiwNCj4gDQo+ ICAJdnEtPnNpZ25hbGxlZF91c2VkX3ZhbGlkID0gZmFsc2U7DQo+IA0KPiAtCWlmIChkZXYtPmRl cXVldWVfemVyb19jb3B5KQ0KPiAtCQlmcmVlX3ptYnVmcyh2cSk7DQo+ICAJaWYgKHZxX2lzX3Bh Y2tlZChkZXYpKSB7DQo+ICAJCXJ0ZV9mcmVlKHZxLT5zaGFkb3dfdXNlZF9wYWNrZWQpOw0KPiAg CQl2cS0+c2hhZG93X3VzZWRfcGFja2VkID0gTlVMTDsNCj4gQEAgLTIwNTEsMTAgKzE5ODAsNiBA QCB2aG9zdF91c2VyX3NldF92cmluZ19lbmFibGUoc3RydWN0IHZpcnRpb19uZXQNCj4gKipwZGV2 LA0KPiAgCQl9DQo+ICAJfQ0KPiANCj4gLQkvKiBPbiBkaXNhYmxlLCByaW5ncyBoYXZlIHRvIGJl IHN0b3BwZWQgYmVpbmcgcHJvY2Vzc2VkLiAqLw0KPiAtCWlmICghZW5hYmxlICYmIGRldi0+ZGVx dWV1ZV96ZXJvX2NvcHkpDQo+IC0JCWRyYWluX3ptYnVmX2xpc3QoZGV2LT52aXJ0cXVldWVbaW5k ZXhdKTsNCj4gLQ0KPiAgCWRldi0+dmlydHF1ZXVlW2luZGV4XS0+ZW5hYmxlZCA9IGVuYWJsZTsN Cj4gDQo+ICAJcmV0dXJuIFJURV9WSE9TVF9NU0dfUkVTVUxUX09LOw0KPiBkaWZmIC0tZ2l0IGEv bGliL2xpYnJ0ZV92aG9zdC92aXJ0aW9fbmV0LmMgYi9saWIvbGlicnRlX3Zob3N0L3ZpcnRpb19u ZXQuYw0KPiBpbmRleCBiZDkzMDNjOGE5Li4wYTBiZWExYTVhIDEwMDY0NA0KPiAtLS0gYS9saWIv bGlicnRlX3Zob3N0L3ZpcnRpb19uZXQuYw0KPiArKysgYi9saWIvbGlicnRlX3Zob3N0L3ZpcnRp b19uZXQuYw0KPiBAQCAtMTk0Niw3ICsxOTQ2LDcgQEAgY29weV9kZXNjX3RvX21idWYoc3RydWN0 IHZpcnRpb19uZXQgKmRldiwgc3RydWN0DQo+IHZob3N0X3ZpcnRxdWV1ZSAqdnEsDQo+ICAJCSAg c3RydWN0IHJ0ZV9tYnVmICptLCBzdHJ1Y3QgcnRlX21lbXBvb2wgKm1idWZfcG9vbCkNCj4gIHsN Cj4gIAl1aW50MzJfdCBidWZfYXZhaWwsIGJ1Zl9vZmZzZXQ7DQo+IC0JdWludDY0X3QgYnVmX2Fk ZHIsIGJ1Zl9pb3ZhLCBidWZfbGVuOw0KPiArCXVpbnQ2NF90IGJ1Zl9hZGRyLCBidWZfbGVuOw0K PiAgCXVpbnQzMl90IG1idWZfYXZhaWwsIG1idWZfb2Zmc2V0Ow0KPiAgCXVpbnQzMl90IGNweV9s ZW47DQo+ICAJc3RydWN0IHJ0ZV9tYnVmICpjdXIgPSBtLCAqcHJldiA9IG07DQo+IEBAIC0xOTU4 LDcgKzE5NTgsNiBAQCBjb3B5X2Rlc2NfdG9fbWJ1ZihzdHJ1Y3QgdmlydGlvX25ldCAqZGV2LCBz dHJ1Y3QNCj4gdmhvc3RfdmlydHF1ZXVlICp2cSwNCj4gIAlpbnQgZXJyb3IgPSAwOw0KPiANCj4g IAlidWZfYWRkciA9IGJ1Zl92ZWNbdmVjX2lkeF0uYnVmX2FkZHI7DQo+IC0JYnVmX2lvdmEgPSBi dWZfdmVjW3ZlY19pZHhdLmJ1Zl9pb3ZhOw0KPiAgCWJ1Zl9sZW4gPSBidWZfdmVjW3ZlY19pZHhd LmJ1Zl9sZW47DQo+IA0KPiAgCWlmICh1bmxpa2VseShidWZfbGVuIDwgZGV2LT52aG9zdF9obGVu ICYmIG5yX3ZlYyA8PSAxKSkgew0KPiBAQCAtMTk4OCwxNCArMTk4NywxMiBAQCBjb3B5X2Rlc2Nf dG9fbWJ1ZihzdHJ1Y3QgdmlydGlvX25ldCAqZGV2LCBzdHJ1Y3QNCj4gdmhvc3RfdmlydHF1ZXVl ICp2cSwNCj4gIAkJYnVmX29mZnNldCA9IGRldi0+dmhvc3RfaGxlbiAtIGJ1Zl9sZW47DQo+ICAJ CXZlY19pZHgrKzsNCj4gIAkJYnVmX2FkZHIgPSBidWZfdmVjW3ZlY19pZHhdLmJ1Zl9hZGRyOw0K PiAtCQlidWZfaW92YSA9IGJ1Zl92ZWNbdmVjX2lkeF0uYnVmX2lvdmE7DQo+ICAJCWJ1Zl9sZW4g PSBidWZfdmVjW3ZlY19pZHhdLmJ1Zl9sZW47DQo+ICAJCWJ1Zl9hdmFpbCAgPSBidWZfbGVuIC0g YnVmX29mZnNldDsNCj4gIAl9IGVsc2UgaWYgKGJ1Zl9sZW4gPT0gZGV2LT52aG9zdF9obGVuKSB7 DQo+ICAJCWlmICh1bmxpa2VseSgrK3ZlY19pZHggPj0gbnJfdmVjKSkNCj4gIAkJCWdvdG8gb3V0 Ow0KPiAgCQlidWZfYWRkciA9IGJ1Zl92ZWNbdmVjX2lkeF0uYnVmX2FkZHI7DQo+IC0JCWJ1Zl9p b3ZhID0gYnVmX3ZlY1t2ZWNfaWR4XS5idWZfaW92YTsNCj4gIAkJYnVmX2xlbiA9IGJ1Zl92ZWNb dmVjX2lkeF0uYnVmX2xlbjsNCj4gDQo+ICAJCWJ1Zl9vZmZzZXQgPSAwOw0KPiBAQCAtMjAxMiw0 OCArMjAwOSwyMyBAQCBjb3B5X2Rlc2NfdG9fbWJ1ZihzdHJ1Y3QgdmlydGlvX25ldCAqZGV2LCBz dHJ1Y3QNCj4gdmhvc3RfdmlydHF1ZXVlICp2cSwNCj4gIAltYnVmX29mZnNldCA9IDA7DQo+ICAJ bWJ1Zl9hdmFpbCAgPSBtLT5idWZfbGVuIC0gUlRFX1BLVE1CVUZfSEVBRFJPT007DQo+ICAJd2hp bGUgKDEpIHsNCj4gLQkJdWludDY0X3QgaHBhOw0KPiAtDQo+ICAJCWNweV9sZW4gPSBSVEVfTUlO KGJ1Zl9hdmFpbCwgbWJ1Zl9hdmFpbCk7DQo+IA0KPiAtCQkvKg0KPiAtCQkgKiBBIGRlc2MgYnVm IG1pZ2h0IGFjcm9zcyB0d28gaG9zdCBwaHlzaWNhbCBwYWdlcyB0aGF0IGFyZQ0KPiAtCQkgKiBu b3QgY29udGludW91cy4gSW4gc3VjaCBjYXNlIChncGFfdG9faHBhIHJldHVybnMgMCksIGRhdGEN Cj4gLQkJICogd2lsbCBiZSBjb3BpZWQgZXZlbiB0aG91Z2ggemVybyBjb3B5IGlzIGVuYWJsZWQu DQo+IC0JCSAqLw0KPiAtCQlpZiAodW5saWtlbHkoZGV2LT5kZXF1ZXVlX3plcm9fY29weSAmJiAo aHBhID0gZ3BhX3RvX2hwYShkZXYsDQo+IC0JCQkJCWJ1Zl9pb3ZhICsgYnVmX29mZnNldCwgY3B5 X2xlbikpKSkgew0KPiAtCQkJY3VyLT5kYXRhX2xlbiA9IGNweV9sZW47DQo+IC0JCQljdXItPmRh dGFfb2ZmID0gMDsNCj4gLQkJCWN1ci0+YnVmX2FkZHIgPQ0KPiAtCQkJCSh2b2lkICopKHVpbnRw dHJfdCkoYnVmX2FkZHIgKyBidWZfb2Zmc2V0KTsNCj4gLQkJCWN1ci0+YnVmX2lvdmEgPSBocGE7 DQo+IC0NCj4gLQkJCS8qDQo+IC0JCQkgKiBJbiB6ZXJvIGNvcHkgbW9kZSwgb25lIG1idWYgY2Fu IG9ubHkgcmVmZXJlbmNlIGRhdGENCj4gLQkJCSAqIGZvciBvbmUgb3IgcGFydGlhbCBvZiBvbmUg ZGVzYyBidWZmLg0KPiAtCQkJICovDQo+IC0JCQltYnVmX2F2YWlsID0gY3B5X2xlbjsNCj4gLQkJ fSBlbHNlIHsNCj4gLQkJCWlmIChsaWtlbHkoY3B5X2xlbiA+IE1BWF9CQVRDSF9MRU4gfHwNCj4g LQkJCQkgICB2cS0+YmF0Y2hfY29weV9uYl9lbGVtcyA+PSB2cS0+c2l6ZSB8fA0KPiAtCQkJCSAg IChoZHIgJiYgY3VyID09IG0pKSkgew0KPiAtCQkJCXJ0ZV9tZW1jcHkocnRlX3BrdG1idWZfbXRv ZF9vZmZzZXQoY3VyLCB2b2lkICosDQo+IC0JCQkJCQkJCSAgIG1idWZfb2Zmc2V0KSwNCj4gLQkJ CQkJICAgKHZvaWQgKikoKHVpbnRwdHJfdCkoYnVmX2FkZHIgKw0KPiAtCQkJCQkJCSAgIGJ1Zl9v ZmZzZXQpKSwNCj4gLQkJCQkJICAgY3B5X2xlbik7DQo+IC0JCQl9IGVsc2Ugew0KPiAtCQkJCWJh dGNoX2NvcHlbdnEtPmJhdGNoX2NvcHlfbmJfZWxlbXNdLmRzdCA9DQo+IC0JCQkJCXJ0ZV9wa3Rt YnVmX210b2Rfb2Zmc2V0KGN1ciwgdm9pZCAqLA0KPiAtCQkJCQkJCQltYnVmX29mZnNldCk7DQo+ IC0JCQkJYmF0Y2hfY29weVt2cS0+YmF0Y2hfY29weV9uYl9lbGVtc10uc3JjID0NCj4gKwkJaWYg KGxpa2VseShjcHlfbGVuID4gTUFYX0JBVENIX0xFTiB8fA0KPiArCQkJCQl2cS0+YmF0Y2hfY29w eV9uYl9lbGVtcyA+PSB2cS0+c2l6ZSB8fA0KPiArCQkJCQkoaGRyICYmIGN1ciA9PSBtKSkpIHsN Cj4gKwkJCXJ0ZV9tZW1jcHkocnRlX3BrdG1idWZfbXRvZF9vZmZzZXQoY3VyLCB2b2lkICosDQo+ ICsJCQkJCQltYnVmX29mZnNldCksDQo+ICAJCQkJCSh2b2lkICopKCh1aW50cHRyX3QpKGJ1Zl9h ZGRyICsNCj4gLQkJCQkJCQkJYnVmX29mZnNldCkpOw0KPiAtCQkJCWJhdGNoX2NvcHlbdnEtPmJh dGNoX2NvcHlfbmJfZWxlbXNdLmxlbiA9DQo+IC0JCQkJCWNweV9sZW47DQo+IC0JCQkJdnEtPmJh dGNoX2NvcHlfbmJfZWxlbXMrKzsNCj4gLQkJCX0NCj4gKwkJCQkJCQlidWZfb2Zmc2V0KSksIGNw eV9sZW4pOw0KPiArCQl9IGVsc2Ugew0KPiArCQkJYmF0Y2hfY29weVt2cS0+YmF0Y2hfY29weV9u Yl9lbGVtc10uZHN0ID0NCj4gKwkJCQlydGVfcGt0bWJ1Zl9tdG9kX29mZnNldChjdXIsIHZvaWQg KiwNCj4gKwkJCQkJCW1idWZfb2Zmc2V0KTsNCj4gKwkJCWJhdGNoX2NvcHlbdnEtPmJhdGNoX2Nv cHlfbmJfZWxlbXNdLnNyYyA9DQo+ICsJCQkJKHZvaWQgKikoKHVpbnRwdHJfdCkoYnVmX2FkZHIg KyBidWZfb2Zmc2V0KSk7DQo+ICsJCQliYXRjaF9jb3B5W3ZxLT5iYXRjaF9jb3B5X25iX2VsZW1z XS5sZW4gPSBjcHlfbGVuOw0KPiArCQkJdnEtPmJhdGNoX2NvcHlfbmJfZWxlbXMrKzsNCj4gIAkJ fQ0KPiANCj4gIAkJbWJ1Zl9hdmFpbCAgLT0gY3B5X2xlbjsNCj4gQEAgLTIwNjcsNyArMjAzOSw2 IEBAIGNvcHlfZGVzY190b19tYnVmKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsIHN0cnVjdA0KPiB2 aG9zdF92aXJ0cXVldWUgKnZxLA0KPiAgCQkJCWJyZWFrOw0KPiANCj4gIAkJCWJ1Zl9hZGRyID0g YnVmX3ZlY1t2ZWNfaWR4XS5idWZfYWRkcjsNCj4gLQkJCWJ1Zl9pb3ZhID0gYnVmX3ZlY1t2ZWNf aWR4XS5idWZfaW92YTsNCj4gIAkJCWJ1Zl9sZW4gPSBidWZfdmVjW3ZlY19pZHhdLmJ1Zl9sZW47 DQo+IA0KPiAgCQkJYnVmX29mZnNldCA9IDA7DQo+IEBAIC0yMDg5LDggKzIwNjAsNiBAQCBjb3B5 X2Rlc2NfdG9fbWJ1ZihzdHJ1Y3QgdmlydGlvX25ldCAqZGV2LCBzdHJ1Y3QNCj4gdmhvc3Rfdmly dHF1ZXVlICp2cSwNCj4gIAkJCQllcnJvciA9IC0xOw0KPiAgCQkJCWdvdG8gb3V0Ow0KPiAgCQkJ fQ0KPiAtCQkJaWYgKHVubGlrZWx5KGRldi0+ZGVxdWV1ZV96ZXJvX2NvcHkpKQ0KPiAtCQkJCXJ0 ZV9tYnVmX3JlZmNudF91cGRhdGUoY3VyLCAxKTsNCj4gDQo+ICAJCQlwcmV2LT5uZXh0ID0gY3Vy Ow0KPiAgCQkJcHJldi0+ZGF0YV9sZW4gPSBtYnVmX29mZnNldDsNCj4gQEAgLTIxMTQsMzcgKzIw ODMsNiBAQCBjb3B5X2Rlc2NfdG9fbWJ1ZihzdHJ1Y3QgdmlydGlvX25ldCAqZGV2LCBzdHJ1Y3QN Cj4gdmhvc3RfdmlydHF1ZXVlICp2cSwNCj4gIAlyZXR1cm4gZXJyb3I7DQo+ICB9DQo+IA0KPiAt c3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgc3RydWN0IHpjb3B5X21idWYgKg0KPiAtZ2V0X3pt YnVmKHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxKQ0KPiAtew0KPiAtCXVpbnQxNl90IGk7DQo+ IC0JdWludDE2X3QgbGFzdDsNCj4gLQlpbnQgdHJpZXMgPSAwOw0KPiAtDQo+IC0JLyogc2VhcmNo IFtsYXN0X3ptYnVmX2lkeCwgem1idWZfc2l6ZSkgKi8NCj4gLQlpID0gdnEtPmxhc3Rfem1idWZf aWR4Ow0KPiAtCWxhc3QgPSB2cS0+em1idWZfc2l6ZTsNCj4gLQ0KPiAtYWdhaW46DQo+IC0JZm9y ICg7IGkgPCBsYXN0OyBpKyspIHsNCj4gLQkJaWYgKHZxLT56bWJ1ZnNbaV0uaW5fdXNlID09IDAp IHsNCj4gLQkJCXZxLT5sYXN0X3ptYnVmX2lkeCA9IGkgKyAxOw0KPiAtCQkJdnEtPnptYnVmc1tp XS5pbl91c2UgPSAxOw0KPiAtCQkJcmV0dXJuICZ2cS0+em1idWZzW2ldOw0KPiAtCQl9DQo+IC0J fQ0KPiAtDQo+IC0JdHJpZXMrKzsNCj4gLQlpZiAodHJpZXMgPT0gMSkgew0KPiAtCQkvKiBzZWFy Y2ggWzAsIGxhc3Rfem1idWZfaWR4KSAqLw0KPiAtCQlpID0gMDsNCj4gLQkJbGFzdCA9IHZxLT5s YXN0X3ptYnVmX2lkeDsNCj4gLQkJZ290byBhZ2FpbjsNCj4gLQl9DQo+IC0NCj4gLQlyZXR1cm4g TlVMTDsNCj4gLX0NCj4gLQ0KPiAgc3RhdGljIHZvaWQNCj4gIHZpcnRpb19kZXZfZXh0YnVmX2Zy ZWUodm9pZCAqYWRkciBfX3J0ZV91bnVzZWQsIHZvaWQgKm9wYXF1ZSkNCj4gIHsNCj4gQEAgLTIy NDQsMzAgKzIxODIsNiBAQCB2aXJ0aW9fZGV2X3R4X3NwbGl0KHN0cnVjdCB2aXJ0aW9fbmV0ICpk ZXYsIHN0cnVjdA0KPiB2aG9zdF92aXJ0cXVldWUgKnZxLA0KPiAgCXVpbnQxNl90IGRyb3BwZWQg PSAwOw0KPiAgCXN0YXRpYyBib29sIGFsbG9jZXJyX3dhcm5lZDsNCj4gDQo+IC0JaWYgKHVubGlr ZWx5KGRldi0+ZGVxdWV1ZV96ZXJvX2NvcHkpKSB7DQo+IC0JCXN0cnVjdCB6Y29weV9tYnVmICp6 bWJ1ZiwgKm5leHQ7DQo+IC0NCj4gLQkJZm9yICh6bWJ1ZiA9IFRBSUxRX0ZJUlNUKCZ2cS0+em1i dWZfbGlzdCk7DQo+IC0JCSAgICAgem1idWYgIT0gTlVMTDsgem1idWYgPSBuZXh0KSB7DQo+IC0J CQluZXh0ID0gVEFJTFFfTkVYVCh6bWJ1ZiwgbmV4dCk7DQo+IC0NCj4gLQkJCWlmIChtYnVmX2lz X2NvbnN1bWVkKHptYnVmLT5tYnVmKSkgew0KPiAtCQkJCXVwZGF0ZV9zaGFkb3dfdXNlZF9yaW5n X3NwbGl0KHZxLA0KPiAtCQkJCQkJem1idWYtPmRlc2NfaWR4LCAwKTsNCj4gLQkJCQlUQUlMUV9S RU1PVkUoJnZxLT56bWJ1Zl9saXN0LCB6bWJ1ZiwgbmV4dCk7DQo+IC0JCQkJcmVzdG9yZV9tYnVm KHptYnVmLT5tYnVmKTsNCj4gLQkJCQlydGVfcGt0bWJ1Zl9mcmVlKHptYnVmLT5tYnVmKTsNCj4g LQkJCQlwdXRfem1idWYoem1idWYpOw0KPiAtCQkJCXZxLT5ucl96bWJ1ZiAtPSAxOw0KPiAtCQkJ fQ0KPiAtCQl9DQo+IC0NCj4gLQkJaWYgKGxpa2VseSh2cS0+c2hhZG93X3VzZWRfaWR4KSkgew0K PiAtCQkJZmx1c2hfc2hhZG93X3VzZWRfcmluZ19zcGxpdChkZXYsIHZxKTsNCj4gLQkJCXZob3N0 X3ZyaW5nX2NhbGxfc3BsaXQoZGV2LCB2cSk7DQo+IC0JCX0NCj4gLQl9DQo+IC0NCj4gIAkvKg0K PiAgCSAqIFRoZSBvcmRlcmluZyBiZXR3ZWVuIGF2YWlsIGluZGV4IGFuZA0KPiAgCSAqIGRlc2Mg cmVhZHMgbmVlZHMgdG8gYmUgZW5mb3JjZWQuDQo+IEBAIC0yMzAwLDggKzIyMTQsNyBAQCB2aXJ0 aW9fZGV2X3R4X3NwbGl0KHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsIHN0cnVjdA0KPiB2aG9zdF92 aXJ0cXVldWUgKnZxLA0KPiAgCQkJCQkJVkhPU1RfQUNDRVNTX1JPKSA8IDApKQ0KPiAgCQkJYnJl YWs7DQo+IA0KPiAtCQlpZiAobGlrZWx5KGRldi0+ZGVxdWV1ZV96ZXJvX2NvcHkgPT0gMCkpDQo+ IC0JCQl1cGRhdGVfc2hhZG93X3VzZWRfcmluZ19zcGxpdCh2cSwgaGVhZF9pZHgsIDApOw0KPiAr CQl1cGRhdGVfc2hhZG93X3VzZWRfcmluZ19zcGxpdCh2cSwgaGVhZF9pZHgsIDApOw0KPiANCj4g IAkJcGt0c1tpXSA9IHZpcnRpb19kZXZfcGt0bWJ1Zl9hbGxvYyhkZXYsIG1idWZfcG9vbCwgYnVm X2xlbik7DQo+ICAJCWlmICh1bmxpa2VseShwa3RzW2ldID09IE5VTEwpKSB7DQo+IEBAIC0yMzM1 LDQyICsyMjQ4LDE2IEBAIHZpcnRpb19kZXZfdHhfc3BsaXQoc3RydWN0IHZpcnRpb19uZXQgKmRl diwgc3RydWN0DQo+IHZob3N0X3ZpcnRxdWV1ZSAqdnEsDQo+ICAJCQlpKys7DQo+ICAJCQlicmVh azsNCj4gIAkJfQ0KPiAtDQo+IC0JCWlmICh1bmxpa2VseShkZXYtPmRlcXVldWVfemVyb19jb3B5 KSkgew0KPiAtCQkJc3RydWN0IHpjb3B5X21idWYgKnptYnVmOw0KPiAtDQo+IC0JCQl6bWJ1ZiA9 IGdldF96bWJ1Zih2cSk7DQo+IC0JCQlpZiAoIXptYnVmKSB7DQo+IC0JCQkJcnRlX3BrdG1idWZf ZnJlZShwa3RzW2ldKTsNCj4gLQkJCQlkcm9wcGVkICs9IDE7DQo+IC0JCQkJaSsrOw0KPiAtCQkJ CWJyZWFrOw0KPiAtCQkJfQ0KPiAtCQkJem1idWYtPm1idWYgPSBwa3RzW2ldOw0KPiAtCQkJem1i dWYtPmRlc2NfaWR4ID0gaGVhZF9pZHg7DQo+IC0NCj4gLQkJCS8qDQo+IC0JCQkgKiBQaW4gbG9j ayB0aGUgbWJ1Zjsgd2Ugd2lsbCBjaGVjayBsYXRlciB0byBzZWUNCj4gLQkJCSAqIHdoZXRoZXIg dGhlIG1idWYgaXMgZnJlZWQgKHdoZW4gd2UgYXJlIHRoZSBsYXN0DQo+IC0JCQkgKiB1c2VyKSBv ciBub3QuIElmIHRoYXQncyB0aGUgY2FzZSwgd2UgdGhlbiBjb3VsZA0KPiAtCQkJICogdXBkYXRl IHRoZSB1c2VkIHJpbmcgc2FmZWx5Lg0KPiAtCQkJICovDQo+IC0JCQlydGVfbWJ1Zl9yZWZjbnRf dXBkYXRlKHBrdHNbaV0sIDEpOw0KPiAtDQo+IC0JCQl2cS0+bnJfem1idWYgKz0gMTsNCj4gLQkJ CVRBSUxRX0lOU0VSVF9UQUlMKCZ2cS0+em1idWZfbGlzdCwgem1idWYsIG5leHQpOw0KPiAtCQl9 DQo+ICAJfQ0KPiArDQo+ICAJdnEtPmxhc3RfYXZhaWxfaWR4ICs9IGk7DQo+IA0KPiAtCWlmIChs aWtlbHkoZGV2LT5kZXF1ZXVlX3plcm9fY29weSA9PSAwKSkgew0KPiAtCQlkb19kYXRhX2NvcHlf ZGVxdWV1ZSh2cSk7DQo+IC0JCWlmICh1bmxpa2VseShpIDwgY291bnQpKQ0KPiAtCQkJdnEtPnNo YWRvd191c2VkX2lkeCA9IGk7DQo+IC0JCWlmIChsaWtlbHkodnEtPnNoYWRvd191c2VkX2lkeCkp IHsNCj4gLQkJCWZsdXNoX3NoYWRvd191c2VkX3Jpbmdfc3BsaXQoZGV2LCB2cSk7DQo+IC0JCQl2 aG9zdF92cmluZ19jYWxsX3NwbGl0KGRldiwgdnEpOw0KPiAtCQl9DQo+ICsJZG9fZGF0YV9jb3B5 X2RlcXVldWUodnEpOw0KPiArCWlmICh1bmxpa2VseShpIDwgY291bnQpKQ0KPiArCQl2cS0+c2hh ZG93X3VzZWRfaWR4ID0gaTsNCj4gKwlpZiAobGlrZWx5KHZxLT5zaGFkb3dfdXNlZF9pZHgpKSB7 DQo+ICsJCWZsdXNoX3NoYWRvd191c2VkX3Jpbmdfc3BsaXQoZGV2LCB2cSk7DQo+ICsJCXZob3N0 X3ZyaW5nX2NhbGxfc3BsaXQoZGV2LCB2cSk7DQo+ICAJfQ0KPiANCj4gIAlyZXR1cm4gKGkgLSBk cm9wcGVkKTsNCj4gQEAgLTI1NzAsMTYyICsyNDU3LDYgQEAgdmlydGlvX2Rldl90eF9zaW5nbGVf cGFja2VkKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsDQo+ICAJcmV0dXJuIHJldDsNCj4gIH0NCj4g DQo+IC1zdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSBpbnQNCj4gLXZpcnRpb19kZXZfdHhfYmF0 Y2hfcGFja2VkX3ptYnVmKHN0cnVjdCB2aXJ0aW9fbmV0ICpkZXYsDQo+IC0JCQkJIHN0cnVjdCB2 aG9zdF92aXJ0cXVldWUgKnZxLA0KPiAtCQkJCSBzdHJ1Y3QgcnRlX21lbXBvb2wgKm1idWZfcG9v bCwNCj4gLQkJCQkgc3RydWN0IHJ0ZV9tYnVmICoqcGt0cykNCj4gLXsNCj4gLQlzdHJ1Y3QgemNv cHlfbWJ1ZiAqem1idWZzW1BBQ0tFRF9CQVRDSF9TSVpFXTsNCj4gLQl1aW50cHRyX3QgZGVzY19h ZGRyc1tQQUNLRURfQkFUQ0hfU0laRV07DQo+IC0JdWludDE2X3QgaWRzW1BBQ0tFRF9CQVRDSF9T SVpFXTsNCj4gLQl1aW50MTZfdCBpOw0KPiAtDQo+IC0JdWludDE2X3QgYXZhaWxfaWR4ID0gdnEt Pmxhc3RfYXZhaWxfaWR4Ow0KPiAtDQo+IC0JaWYgKHZob3N0X3Jlc2VydmVfYXZhaWxfYmF0Y2hf cGFja2VkKGRldiwgdnEsIG1idWZfcG9vbCwgcGt0cywNCj4gLQkJCQkJICAgICBhdmFpbF9pZHgs IGRlc2NfYWRkcnMsIGlkcykpDQo+IC0JCXJldHVybiAtMTsNCj4gLQ0KPiAtCXZob3N0X2Zvcl9l YWNoX3RyeV91bnJvbGwoaSwgMCwgUEFDS0VEX0JBVENIX1NJWkUpDQo+IC0JCXptYnVmc1tpXSA9 IGdldF96bWJ1Zih2cSk7DQo+IC0NCj4gLQl2aG9zdF9mb3JfZWFjaF90cnlfdW5yb2xsKGksIDAs IFBBQ0tFRF9CQVRDSF9TSVpFKSB7DQo+IC0JCWlmICghem1idWZzW2ldKQ0KPiAtCQkJZ290byBm cmVlX3BrdDsNCj4gLQl9DQo+IC0NCj4gLQl2aG9zdF9mb3JfZWFjaF90cnlfdW5yb2xsKGksIDAs IFBBQ0tFRF9CQVRDSF9TSVpFKSB7DQo+IC0JCXptYnVmc1tpXS0+bWJ1ZiA9IHBrdHNbaV07DQo+ IC0JCXptYnVmc1tpXS0+ZGVzY19pZHggPSBpZHNbaV07DQo+IC0JCXptYnVmc1tpXS0+ZGVzY19j b3VudCA9IDE7DQo+IC0JfQ0KPiAtDQo+IC0Jdmhvc3RfZm9yX2VhY2hfdHJ5X3Vucm9sbChpLCAw LCBQQUNLRURfQkFUQ0hfU0laRSkNCj4gLQkJcnRlX21idWZfcmVmY250X3VwZGF0ZShwa3RzW2ld LCAxKTsNCj4gLQ0KPiAtCXZob3N0X2Zvcl9lYWNoX3RyeV91bnJvbGwoaSwgMCwgUEFDS0VEX0JB VENIX1NJWkUpDQo+IC0JCVRBSUxRX0lOU0VSVF9UQUlMKCZ2cS0+em1idWZfbGlzdCwgem1idWZz W2ldLCBuZXh0KTsNCj4gLQ0KPiAtCXZxLT5ucl96bWJ1ZiArPSBQQUNLRURfQkFUQ0hfU0laRTsN Cj4gLQl2cV9pbmNfbGFzdF9hdmFpbF9wYWNrZWQodnEsIFBBQ0tFRF9CQVRDSF9TSVpFKTsNCj4g LQ0KPiAtCXJldHVybiAwOw0KPiAtDQo+IC1mcmVlX3BrdDoNCj4gLQl2aG9zdF9mb3JfZWFjaF90 cnlfdW5yb2xsKGksIDAsIFBBQ0tFRF9CQVRDSF9TSVpFKQ0KPiAtCQlydGVfcGt0bWJ1Zl9mcmVl KHBrdHNbaV0pOw0KPiAtDQo+IC0JcmV0dXJuIC0xOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgX19y dGVfYWx3YXlzX2lubGluZSBpbnQNCj4gLXZpcnRpb19kZXZfdHhfc2luZ2xlX3BhY2tlZF96bWJ1 ZihzdHJ1Y3QgdmlydGlvX25ldCAqZGV2LA0KPiAtCQkJCSAgc3RydWN0IHZob3N0X3ZpcnRxdWV1 ZSAqdnEsDQo+IC0JCQkJICBzdHJ1Y3QgcnRlX21lbXBvb2wgKm1idWZfcG9vbCwNCj4gLQkJCQkg IHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMpDQo+IC17DQo+IC0JdWludDE2X3QgYnVmX2lkLCBkZXNj X2NvdW50Ow0KPiAtCXN0cnVjdCB6Y29weV9tYnVmICp6bWJ1ZjsNCj4gLQ0KPiAtCWlmICh2aG9z dF9kZXF1ZXVlX3NpbmdsZV9wYWNrZWQoZGV2LCB2cSwgbWJ1Zl9wb29sLCBwa3RzLCAmYnVmX2lk LA0KPiAtCQkJCQkmZGVzY19jb3VudCkpDQo+IC0JCXJldHVybiAtMTsNCj4gLQ0KPiAtCXptYnVm ID0gZ2V0X3ptYnVmKHZxKTsNCj4gLQlpZiAoIXptYnVmKSB7DQo+IC0JCXJ0ZV9wa3RtYnVmX2Zy ZWUoKnBrdHMpOw0KPiAtCQlyZXR1cm4gLTE7DQo+IC0JfQ0KPiAtCXptYnVmLT5tYnVmID0gKnBr dHM7DQo+IC0Jem1idWYtPmRlc2NfaWR4ID0gYnVmX2lkOw0KPiAtCXptYnVmLT5kZXNjX2NvdW50 ID0gZGVzY19jb3VudDsNCj4gLQ0KPiAtCXJ0ZV9tYnVmX3JlZmNudF91cGRhdGUoKnBrdHMsIDEp Ow0KPiAtDQo+IC0JdnEtPm5yX3ptYnVmICs9IDE7DQo+IC0JVEFJTFFfSU5TRVJUX1RBSUwoJnZx LT56bWJ1Zl9saXN0LCB6bWJ1ZiwgbmV4dCk7DQo+IC0NCj4gLQl2cV9pbmNfbGFzdF9hdmFpbF9w YWNrZWQodnEsIGRlc2NfY291bnQpOw0KPiAtCXJldHVybiAwOw0KPiAtfQ0KPiAtDQo+IC1zdGF0 aWMgX19ydGVfYWx3YXlzX2lubGluZSB2b2lkDQo+IC1mcmVlX3ptYnVmKHN0cnVjdCB2aG9zdF92 aXJ0cXVldWUgKnZxKQ0KPiAtew0KPiAtCXN0cnVjdCB6Y29weV9tYnVmICpuZXh0ID0gTlVMTDsN Cj4gLQlzdHJ1Y3QgemNvcHlfbWJ1ZiAqem1idWY7DQo+IC0NCj4gLQlmb3IgKHptYnVmID0gVEFJ TFFfRklSU1QoJnZxLT56bWJ1Zl9saXN0KTsNCj4gLQkgICAgIHptYnVmICE9IE5VTEw7IHptYnVm ID0gbmV4dCkgew0KPiAtCQluZXh0ID0gVEFJTFFfTkVYVCh6bWJ1ZiwgbmV4dCk7DQo+IC0NCj4g LQkJdWludDE2X3QgbGFzdF91c2VkX2lkeCA9IHZxLT5sYXN0X3VzZWRfaWR4Ow0KPiAtDQo+IC0J CWlmIChtYnVmX2lzX2NvbnN1bWVkKHptYnVmLT5tYnVmKSkgew0KPiAtCQkJdWludDE2X3QgZmxh Z3M7DQo+IC0JCQlmbGFncyA9IHZxLT5kZXNjX3BhY2tlZFtsYXN0X3VzZWRfaWR4XS5mbGFnczsN Cj4gLQkJCWlmICh2cS0+dXNlZF93cmFwX2NvdW50ZXIpIHsNCj4gLQkJCQlmbGFncyB8PSBWUklO R19ERVNDX0ZfVVNFRDsNCj4gLQkJCQlmbGFncyB8PSBWUklOR19ERVNDX0ZfQVZBSUw7DQo+IC0J CQl9IGVsc2Ugew0KPiAtCQkJCWZsYWdzICY9IH5WUklOR19ERVNDX0ZfVVNFRDsNCj4gLQkJCQlm bGFncyAmPSB+VlJJTkdfREVTQ19GX0FWQUlMOw0KPiAtCQkJfQ0KPiAtDQo+IC0JCQl2cS0+ZGVz Y19wYWNrZWRbbGFzdF91c2VkX2lkeF0uaWQgPSB6bWJ1Zi0+ZGVzY19pZHg7DQo+IC0JCQl2cS0+ ZGVzY19wYWNrZWRbbGFzdF91c2VkX2lkeF0ubGVuID0gMDsNCj4gLQ0KPiAtCQkJcnRlX3NtcF93 bWIoKTsNCj4gLQkJCXZxLT5kZXNjX3BhY2tlZFtsYXN0X3VzZWRfaWR4XS5mbGFncyA9IGZsYWdz Ow0KPiAtDQo+IC0JCQl2cV9pbmNfbGFzdF91c2VkX3BhY2tlZCh2cSwgem1idWYtPmRlc2NfY291 bnQpOw0KPiAtDQo+IC0JCQlUQUlMUV9SRU1PVkUoJnZxLT56bWJ1Zl9saXN0LCB6bWJ1ZiwgbmV4 dCk7DQo+IC0JCQlyZXN0b3JlX21idWYoem1idWYtPm1idWYpOw0KPiAtCQkJcnRlX3BrdG1idWZf ZnJlZSh6bWJ1Zi0+bWJ1Zik7DQo+IC0JCQlwdXRfem1idWYoem1idWYpOw0KPiAtCQkJdnEtPm5y X3ptYnVmIC09IDE7DQo+IC0JCX0NCj4gLQl9DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBfX3J0ZV9u b2lubGluZSB1aW50MTZfdA0KPiAtdmlydGlvX2Rldl90eF9wYWNrZWRfem1idWYoc3RydWN0IHZp cnRpb19uZXQgKmRldiwNCj4gLQkJCSAgIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKl9fcnRlX3Jl c3RyaWN0IHZxLA0KPiAtCQkJICAgc3RydWN0IHJ0ZV9tZW1wb29sICptYnVmX3Bvb2wsDQo+IC0J CQkgICBzdHJ1Y3QgcnRlX21idWYgKipfX3J0ZV9yZXN0cmljdCBwa3RzLA0KPiAtCQkJICAgdWlu dDMyX3QgY291bnQpDQo+IC17DQo+IC0JdWludDMyX3QgcGt0X2lkeCA9IDA7DQo+IC0JdWludDMy X3QgcmVtYWluZWQgPSBjb3VudDsNCj4gLQ0KPiAtCWZyZWVfem1idWYodnEpOw0KPiAtDQo+IC0J ZG8gew0KPiAtCQlpZiAocmVtYWluZWQgPj0gUEFDS0VEX0JBVENIX1NJWkUpIHsNCj4gLQkJCWlm ICghdmlydGlvX2Rldl90eF9iYXRjaF9wYWNrZWRfem1idWYoZGV2LCB2cSwNCj4gLQkJCQltYnVm X3Bvb2wsICZwa3RzW3BrdF9pZHhdKSkgew0KPiAtCQkJCXBrdF9pZHggKz0gUEFDS0VEX0JBVENI X1NJWkU7DQo+IC0JCQkJcmVtYWluZWQgLT0gUEFDS0VEX0JBVENIX1NJWkU7DQo+IC0JCQkJY29u dGludWU7DQo+IC0JCQl9DQo+IC0JCX0NCj4gLQ0KPiAtCQlpZiAodmlydGlvX2Rldl90eF9zaW5n bGVfcGFja2VkX3ptYnVmKGRldiwgdnEsIG1idWZfcG9vbCwNCj4gLQkJCQkJCSAgICAgICZwa3Rz W3BrdF9pZHhdKSkNCj4gLQkJCWJyZWFrOw0KPiAtCQlwa3RfaWR4Kys7DQo+IC0JCXJlbWFpbmVk LS07DQo+IC0NCj4gLQl9IHdoaWxlIChyZW1haW5lZCk7DQo+IC0NCj4gLQlpZiAocGt0X2lkeCkN Cj4gLQkJdmhvc3RfdnJpbmdfY2FsbF9wYWNrZWQoZGV2LCB2cSk7DQo+IC0NCj4gLQlyZXR1cm4g cGt0X2lkeDsNCj4gLX0NCj4gLQ0KPiAgc3RhdGljIF9fcnRlX25vaW5saW5lIHVpbnQxNl90DQo+ ICB2aXJ0aW9fZGV2X3R4X3BhY2tlZChzdHJ1Y3QgdmlydGlvX25ldCAqZGV2LA0KPiAgCQkgICAg IHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKl9fcnRlX3Jlc3RyaWN0IHZxLA0KPiBAQCAtMjg0MSwx NCArMjU3Miw5IEBAIHJ0ZV92aG9zdF9kZXF1ZXVlX2J1cnN0KGludCB2aWQsIHVpbnQxNl90IHF1 ZXVlX2lkLA0KPiAgCQljb3VudCAtPSAxOw0KPiAgCX0NCj4gDQo+IC0JaWYgKHZxX2lzX3BhY2tl ZChkZXYpKSB7DQo+IC0JCWlmICh1bmxpa2VseShkZXYtPmRlcXVldWVfemVyb19jb3B5KSkNCj4g LQkJCWNvdW50ID0gdmlydGlvX2Rldl90eF9wYWNrZWRfem1idWYoZGV2LCB2cSwgbWJ1Zl9wb29s LA0KPiAtCQkJCQkJCSAgIHBrdHMsIGNvdW50KTsNCj4gLQkJZWxzZQ0KPiAtCQkJY291bnQgPSB2 aXJ0aW9fZGV2X3R4X3BhY2tlZChkZXYsIHZxLCBtYnVmX3Bvb2wsIHBrdHMsDQo+IC0JCQkJCQkg ICAgIGNvdW50KTsNCj4gLQl9IGVsc2UNCj4gKwlpZiAodnFfaXNfcGFja2VkKGRldikpDQo+ICsJ CWNvdW50ID0gdmlydGlvX2Rldl90eF9wYWNrZWQoZGV2LCB2cSwgbWJ1Zl9wb29sLCBwa3RzLCBj b3VudCk7DQo+ICsJZWxzZQ0KPiAgCQljb3VudCA9IHZpcnRpb19kZXZfdHhfc3BsaXQoZGV2LCB2 cSwgbWJ1Zl9wb29sLCBwa3RzLCBjb3VudCk7DQo+IA0KPiAgb3V0Og0KPiAtLQ0KPiAyLjI2LjIN Cg0K