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 33966A00BE; Wed, 8 Jul 2020 05:19:20 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 070FA1DD04; Wed, 8 Jul 2020 05:19:20 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 026B51D91D for ; Wed, 8 Jul 2020 05:19:17 +0200 (CEST) IronPort-SDR: zTF8Sf0s+kx8W40ZNj9b0ycJhcPphtE6dzvWydb/aU4DseTYSGMiUX22xKZ9Sl1d1KSmnu/AfN Cl9H8K/9XxnA== X-IronPort-AV: E=McAfee;i="6000,8403,9675"; a="145232153" X-IronPort-AV: E=Sophos;i="5.75,326,1589266800"; d="scan'208";a="145232153" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jul 2020 20:19:16 -0700 IronPort-SDR: EQjreLs8A4u9zdjSyd/L4ka0EOJvlqIRZLabTUZXAqoti4dGHiZmH3OFeQTO0yKNJLf+DpO7ND 7UJdopjA5o+Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,326,1589266800"; d="scan'208";a="357976453" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga001.jf.intel.com with ESMTP; 07 Jul 2020 20:19:16 -0700 Received: from orsmsx604.amr.corp.intel.com (10.22.229.17) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 7 Jul 2020 20:19:15 -0700 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by orsmsx604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 7 Jul 2020 20:19:15 -0700 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.36.59) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 7 Jul 2020 20:19:15 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mW5MztMmBZnK/mgVEyEftEKJ6JV/QueiEzTwSJU7sojs2dCtOFupuvQvhwvgyx98XEWdnSnyFMdT0gSRi/EstchUvyklLwm8igekI7FbjqUChdTNRMH4WF6/1ecLcBtdmnCgGGtvmODIsKB2Su0VmwvzRlxfGmW2HEPMQgy+mzOMiDmpRXshri3/3H2YAAbUPj5GM5gAxuHRTTD6dbZbsVLmFLuVhzDYR8NdodBzCelft10cVuyBU9T0rXynUeaQ5k78hjBofoccidwgMrAVQibivPvZsEK1V+zUdENey7RaxbBIu1Tr4p3l6zLqfXR6L6xDrkwNeGd3z67HY73BhQ== 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=OObNiuvL6dgKXw9CYTlnk6nrrqBRGqlyb8gTGIAhWZM=; b=oOgLiy91216kt3f7O1p7tLcf/g8EP5obEzHLB9+QiFklMPHtNvszl1jtRTyOueSuDMnPV3Qe0gPg8zOERUb82ta/neruBgzixOC0p1OK/lhJqE7TSPz6AXIv0PzGnSVMrTQnxKZTCm8K1KlZsRNEdxPu0fNz1PD1F4SgYZDScTgBu+U3skBREWFmJvkQ5bQVAI2HrcWCR4UDttzfF5fbjYsnVBYG3dWKRS/oh+C0p3csBswK2lyJsyGGIU7wbVqIIVfm6745vO7q2XqIxZbNvEZdEvZ1KhybPwg0ku413rdCrJVybtsOy024kpBdi3Rhw88/OzteccVn2VRoOD3Tyw== 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=OObNiuvL6dgKXw9CYTlnk6nrrqBRGqlyb8gTGIAhWZM=; b=qu8qDHZFZW2aOdkEK+th9Uv75I79mgzCspFhmunfJUMjvvIGuP+k73/putKK8TSkxcVMSW9Rv8nI0K56B6NBeCHe/yD99cS88l/ai4Cv8anOLCS0dlYOGnRUvID0VL6tOHQcnfN1m1FZjDjyyqMJgCl9YzYBcf+t1hG/Hm6Dj4c= Received: from CY4PR11MB1639.namprd11.prod.outlook.com (2603:10b6:910:f::11) by CY4PR11MB1510.namprd11.prod.outlook.com (2603:10b6:910:c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3153.24; Wed, 8 Jul 2020 03:19:13 +0000 Received: from CY4PR11MB1639.namprd11.prod.outlook.com ([fe80::b1c1:facd:8976:d8d8]) by CY4PR11MB1639.namprd11.prod.outlook.com ([fe80::b1c1:facd:8976:d8d8%11]) with mapi id 15.20.3153.029; Wed, 8 Jul 2020 03:19:13 +0000 From: "Jiang, Cheng1" To: "Xia, Chenbo" , "maxime.coquelin@redhat.com" , "Wang, Zhihong" CC: "dev@dpdk.org" , "Fu, Patrick" , "Liang, Cunming" Thread-Topic: [RFC] example/vhost: add support for vhost async data path Thread-Index: AQHWSEHYPROMmgEf70KgHByHOoWNL6jlceMAgBeeYOA= Date: Wed, 8 Jul 2020 03:19:13 +0000 Message-ID: References: <20200622025914.85175-1-Cheng1.jiang@intel.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.102.204.45] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f882aa29-5ff1-4d5f-50bb-08d822edb0ab x-ms-traffictypediagnostic: CY4PR11MB1510: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-forefront-prvs: 04583CED1A x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: WZaef/wXzeQX9ifZcpW+W08pgmR4YXutXi5KSq2t+YkzLDJewvaMBYek9JBsztGEY2SXb1Ldkl43MKoG3EkWHxH9fgrAgWs+uTvB+Hx0DTyWZzaF/tWi77EdpK825ZWwtnYeh/VJBgHT1BVo7nO+XOkU1eaGUcqoHxQdVLcMFqKFwJIMQ+SL5peZW3Ev3Zkz7UPcj+66XpNsfA6eARRYp5zUVMXZGlPyxC2/sdUJO9t8llBhBEX8JLulTnNmYEg977RTUch7x927ILiHpNtWHnrfGYU8rNX3vjuVU9dY1Z1pGVISsj6KWH5CsC4Na5KSxHKjXd9CUU6BFUqNn2FaALSuqTFJa0AN3G745B4nRY3xTgHFUzX8eULsFFGS1pmEmEsd9yVn/d8HZ2eWWco4lQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY4PR11MB1639.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(376002)(346002)(366004)(39860400002)(396003)(136003)(26005)(76116006)(966005)(66476007)(66946007)(64756008)(66556008)(66446008)(8676002)(86362001)(83380400001)(5660300002)(8936002)(30864003)(52536014)(33656002)(6636002)(55016002)(4326008)(316002)(6506007)(9686003)(107886003)(478600001)(110136005)(71200400001)(53546011)(54906003)(2906002)(186003)(7696005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: veK++sK4BXdDxh79TEUEHo98J5cwamNWqTH6XC5B9QfMkRjpRzXC5Sv+SYe5rmnEPtRo13quFVWjnaGzbExQkq3xRl5SWLDdImrjyIZQb4HWKOqhYp16DD+1OzNZXbnZtQa930OhEvO3WPzxiYHllH7yt+7YLztzLF+Fqj0j3ho/jeKwLRnqTFNO9myN241vbiwVlkYHejkPrykJTJEvLd0Tr1W6LTHhChCWjsGtKLedW4C9E3DL9Ec1uy5XYKaXT4apqB6vrCt9o6fJgtUjN4mdYsLDyhryJJn3fcSphJZvhc4J2ol4FJmB6MXyxmkSuSwH1gja8qlnP9p4hKC/dMwVwVJwukJdqjT1NMeUpCNaUAijjnMvXOND8DYCC38EkzcpofgV4F6q34TX9O3ZkBlCEFveg6kGW6v/mVNnv2AJLLEjcOrGfrMXwWxx7trPPVKOLouwQwGucRayyvsNyKWOeMPg0IaW9ZaI06fi5kKhH9gTzHNHB59A9pFL3pQ4 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: CY4PR11MB1639.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f882aa29-5ff1-4d5f-50bb-08d822edb0ab X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jul 2020 03:19:13.8406 (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: fs+6yvmcZ49Y2o8nfxMpldHezDUTJrw6b4k3B8qnZR+OIAxMg6CxyYvymdX6iRMhYg8mvwyeptPbQ6veB5ogxg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR11MB1510 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [RFC] example/vhost: add support for vhost async data path 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" SGkgQ2hlbmJvLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFhpYSwg Q2hlbmJvIDxjaGVuYm8ueGlhQGludGVsLmNvbT4NCj4gU2VudDogVHVlc2RheSwgSnVuZSAyMywg MjAyMCA5OjU0IEFNDQo+IFRvOiBKaWFuZywgQ2hlbmcxIDxjaGVuZzEuamlhbmdAaW50ZWwuY29t PjsgbWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb207DQo+IFdhbmcsIFpoaWhvbmcgPHpoaWhvbmcu d2FuZ0BpbnRlbC5jb20+DQo+IENjOiBkZXZAZHBkay5vcmc7IEZ1LCBQYXRyaWNrIDxwYXRyaWNr LmZ1QGludGVsLmNvbT47IExpYW5nLCBDdW5taW5nDQo+IDxjdW5taW5nLmxpYW5nQGludGVsLmNv bT4NCj4gU3ViamVjdDogUkU6IFtSRkNdIGV4YW1wbGUvdmhvc3Q6IGFkZCBzdXBwb3J0IGZvciB2 aG9zdCBhc3luYyBkYXRhIHBhdGgNCj4gDQo+IEhpIENoZW5nLA0KPiANCj4gPiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IEppYW5nLCBDaGVuZzEgPGNoZW5nMS5qaWFuZ0Bp bnRlbC5jb20+DQo+ID4gU2VudDogTW9uZGF5LCBKdW5lIDIyLCAyMDIwIDEwOjU5IEFNDQo+ID4g VG86IG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tOyBYaWEsIENoZW5ibyA8Y2hlbmJvLnhpYUBp bnRlbC5jb20+Ow0KPiA+IFdhbmcsIFpoaWhvbmcgPHpoaWhvbmcud2FuZ0BpbnRlbC5jb20+DQo+ ID4gQ2M6IGRldkBkcGRrLm9yZzsgRnUsIFBhdHJpY2sgPHBhdHJpY2suZnVAaW50ZWwuY29tPjsg TGlhbmcsIEN1bm1pbmcNCj4gPiA8Y3VubWluZy5saWFuZ0BpbnRlbC5jb20+OyBKaWFuZywgQ2hl bmcxIDxjaGVuZzEuamlhbmdAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFtSRkNdIGV4YW1wbGUv dmhvc3Q6IGFkZCBzdXBwb3J0IGZvciB2aG9zdCBhc3luYyBkYXRhIHBhdGgNCj4gPg0KPiA+IFRo aXMgcGF0Y2ggbWFrZXMgdmhvc3QtdnN3aXRjaCBiZSBhYmxlIHRvIHVzZSB2aG9zdCBhc3luY2hy b25vdXMgYXBpDQo+ID4gZm9yIGVucXVldWUgb3BlcmF0aW9ucy4gRGVtb25zdHJhdGVkIGhvdyB0 aGUgYXBwbGljYXRpb24gbGV2ZXJhZ2UgSU9BVA0KPiA+IERNQSBjaGFubmVsIHdpdGggdmhvc3Qg YXN5bmMgYXBpLiBTaW5jZSB0aGlzIGlzIGFuIGVhcmx5IHByZXZpZXcNCj4gPiBwYXRjaCwgdGhl IHBlcmZvcm1hbmNlIGhhcyBub3QgYmVlbiBmdWxseSBvcHRpbWl6ZWQgYW5kIGl0J3Mgbm90DQo+ ID4gc3VnZ2VzdGVkIHRvIHVzZSB0aGlzIHBhdGNoIGFzIGEgdG9vbCBmb3IgYmVuY2htYXJrLg0K PiA+DQo+ID4gV2UgaW50cm9kdWNlIHR3byBwYXJhbWV0ZXJzIHRvIGVuYWJsZSBETUEgYWNjZWxl cmF0aW9uIGZvciBUeA0KPiA+IG9wZXJhdGlvbnMgb2YNCj4gPiBxdWV1ZXM6DQo+ID4g4oCTYXN5 bmNfdmhvc3RfZHJpdmVyIEFzeW5jIHZob3N0LXVzZXIgbmV0IGRyaXZlciB3aGljaCBkZW1vbnN0 cmF0ZXMgaG93DQo+ID4gdG8gdXNlIHRoZSBhc3luYyB2aG9zdCBBUElzIHdpbGwgYmUgdXNlZCB3 aGVuIHRoaXMgb3B0aW9uIGlzIGdpdmVuLiBJdA0KPiA+IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQu DQo+ID4NCj4gPiAtZG1hcyBUaGlzIHBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGFz c2lnbmVkIERNQSBkZXZpY2Ugb2YgYQ0KPiBxdWV1ZS4NCj4gPg0KPiA+IFRoaXMgcGF0Y2ggZGVw ZW5kcyBvbiBmb2xsb3dpbmcgcGF0Y2ggc2V0Og0KPiA+IGh0dHA6Ly9wYXRjaGVzLmRwZGsub3Jn L2NvdmVyLzcxMjY1Lw0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogQ2hlbmcgSmlhbmcgPENoZW5n MS5qaWFuZ0BpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gIGV4YW1wbGVzL3Zob3N0L21haW4uYyB8 IDI0Ng0KPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQ0KPiA+ ICBleGFtcGxlcy92aG9zdC9tYWluLmggfCAgIDEgKw0KPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDI0 MyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2V4 YW1wbGVzL3Zob3N0L21haW4uYyBiL2V4YW1wbGVzL3Zob3N0L21haW4uYyBpbmRleA0KPiA+IGFi NjQ5YmYxNC4uNDZkZDI4MmUwIDEwMDY0NA0KPiA+IC0tLSBhL2V4YW1wbGVzL3Zob3N0L21haW4u Yw0KPiA+ICsrKyBiL2V4YW1wbGVzL3Zob3N0L21haW4uYw0KPiA+IEBAIC0yNCwxMSArMjQsMTUg QEANCj4gPiAgI2luY2x1ZGUgPHJ0ZV9pcC5oPg0KPiA+ICAjaW5jbHVkZSA8cnRlX3RjcC5oPg0K PiA+ICAjaW5jbHVkZSA8cnRlX3BhdXNlLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfdmhvc3RfYXN5 bmMuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9yYXdkZXYuaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9p b2F0X3Jhd2Rldi5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX3BjaS5oPg0KPiA+DQo+ID4gICNpbmNs dWRlICJtYWluLmgiDQo+ID4NCj4gPiAgI2lmbmRlZiBNQVhfUVVFVUVTDQo+ID4gLSNkZWZpbmUg TUFYX1FVRVVFUyAxMjgNCj4gPiArI2RlZmluZSBNQVhfUVVFVUVTIDUxMg0KPiA+ICAjZW5kaWYN Cj4gPg0KPiA+ICAvKiB0aGUgbWF4aW11bSBudW1iZXIgb2YgZXh0ZXJuYWwgcG9ydHMgc3VwcG9y dGVkICovIEBAIC01OCw2ICs2MiwxMA0KPiA+IEBADQo+ID4gIC8qIE1heGltdW0gbG9uZyBvcHRp b24gbGVuZ3RoIGZvciBvcHRpb24gcGFyc2luZy4gKi8gICNkZWZpbmUNCj4gPiBNQVhfTE9OR19P UFRfU1ogNjQNCj4gPg0KPiA+ICsjZGVmaW5lIElPQVRfUklOR19TSVpFIDQwOTYNCj4gPiArDQo+ ID4gKyNkZWZpbmUgTUFYX0VOUVVFVUVEX1NJWkUgMjA0OA0KPiA+ICsNCj4gPiAgLyogbWFzayBv ZiBlbmFibGVkIHBvcnRzICovDQo+ID4gIHN0YXRpYyB1aW50MzJfdCBlbmFibGVkX3BvcnRfbWFz ayA9IDA7DQo+ID4NCj4gPiBAQCAtOTYsNiArMTA0LDIwIEBAIHN0YXRpYyBpbnQgZGVxdWV1ZV96 ZXJvX2NvcHk7DQo+ID4NCj4gPiAgc3RhdGljIGludCBidWlsdGluX25ldF9kcml2ZXI7DQo+ID4N Cj4gPiArc3RhdGljIGludCBhc3luY192aG9zdF9kcml2ZXI7DQo+ID4gKw0KPiA+ICtzdHJ1Y3Qg ZG1hX2luZm8gew0KPiA+ICsJc3RydWN0IHJ0ZV9wY2lfYWRkciBhZGRyOw0KPiA+ICsJdWludDE2 X3QgZGV2X2lkOw0KPiA+ICsJYm9vbCBpc192YWxpZDsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0 cnVjdCBkbWFfaW5mb19pbnB1dCB7DQo+ID4gKwlzdHJ1Y3QgZG1hX2luZm8gZG1hc1tSVEVfTUFY X1FVRVVFU19QRVJfUE9SVCAqIDJdOw0KPiA+ICsJdWludDE2X3QgbnI7DQo+ID4gK307DQo+ID4g Kw0KPiA+ICtzdGF0aWMgc3RydWN0IGRtYV9pbmZvX2lucHV0IGRtYV9iaW5kWzIwXTsNCj4gDQo+ IFNob3VsZCAnMjAnIGJlIE1BWF9WSE9TVF9ERVZJQ0UgYXMgdGhpcyBpcyBpbmRleGVkIGJ5IHZp ZD8NCj4gDQpTdXJlLCB5b3UgYXJlIHJpZ2h0LCBNQVhfVkhPU1RfREVWSUNFIHdpbGwgYmUgdXNl ZCBpbiB0aGUgbmV4dCB2ZXJzaW9uLg0KDQo+ID4gIC8qIFNwZWNpZnkgdGltZW91dCAoaW4gdXNl Y29uZHMpIGJldHdlZW4gcmV0cmllcyBvbiBSWC4gKi8gIHN0YXRpYw0KPiA+IHVpbnQzMl90IGJ1 cnN0X3J4X2RlbGF5X3RpbWUgPSBCVVJTVF9SWF9XQUlUX1VTOw0KPiA+ICAvKiBTcGVjaWZ5IHRo ZSBudW1iZXIgb2YgcmV0cmllcyBvbiBSWC4gKi8gQEAgLTE0MSw2ICsxNjMsNjEgQEANCj4gPiBz dGF0aWMgc3RydWN0IHJ0ZV9ldGhfY29uZiB2bWRxX2NvbmZfZGVmYXVsdCA9IHsNCj4gPiAgCX0s DQo+ID4gIH07DQo+ID4NCj4gPiArc3RhdGljIGludA0KPiA+ICtpb2F0X3RyYW5zZmVyX2RhdGFf Y2IoaW50IHZpZCwgdWludDE2X3QgcXVldWVfaWQsIHN0cnVjdA0KPiA+ICtkbWFfdHJhbnNfZGVz Yw0KPiA+ICpkZXNjcywNCj4gPiArCQlzdHJ1Y3QgZG1hX3RyYW5zX3N0YXR1cyAqb3BhcXVlX2Rh dGEsIHVpbnQxNl90IGNvdW50KSB7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsJdWludDE2X3QgaV9k ZXNjOw0KPiA+ICsNCj4gPiArCXN0cnVjdCBpb3ZfaXQgKnNyYyA9IE5VTEw7DQo+ID4gKwlzdHJ1 Y3QgaW92X2l0ICpkc3QgPSBOVUxMOw0KPiA+ICsJdW5zaWduZWQgbG9uZyBpX3NlZzsNCj4gPiAr DQo+ID4gKwlpbnQgZGV2X2lkID0gZG1hX2JpbmRbdmlkXS5kbWFzW3F1ZXVlX2lkICogMiArDQo+ IFZJUlRJT19SWFFdLmRldl9pZDsNCj4gPiArCWlmIChsaWtlbHkoIW9wYXF1ZV9kYXRhKSkgew0K PiA+ICsJCWZvciAoaV9kZXNjID0gMDsgaV9kZXNjIDwgY291bnQ7IGlfZGVzYysrKSB7DQo+ID4g KwkJCXNyYyA9IGRlc2NzW2lfZGVzY10uc3JjOw0KPiA+ICsJCQlkc3QgPSBkZXNjc1tpX2Rlc2Nd LmRzdDsNCj4gPiArCQkJaV9zZWcgPSAwOw0KPiA+ICsJCQl3aGlsZSAoaV9zZWcgPCBzcmMtPm5y X3NlZ3MpIHsNCj4gPiArCQkJCXJldCA9IHJ0ZV9pb2F0X2VucXVldWVfY29weShkZXZfaWQsDQo+ ID4gKwkJCQkJKHVpbnRwdHJfdCkoc3JjLT5pb3ZbaV9zZWddLmlvdl9iYXNlKQ0KPiA+ICsJCQkJ CQkrIHNyYy0+b2Zmc2V0LA0KPiA+ICsJCQkJCSh1aW50cHRyX3QpKGRzdC0+aW92W2lfc2VnXS5p b3ZfYmFzZSkNCj4gPiArCQkJCQkJKyBkc3QtPm9mZnNldCwNCj4gPiArCQkJCQlzcmMtPmlvdltp X3NlZ10uaW92X2xlbiwNCj4gPiArCQkJCQkwLA0KPiA+ICsJCQkJCTAsDQo+ID4gKwkJCQkJMCk7 DQo+ID4gKwkJCQlpZiAocmV0ICE9IDEpDQo+ID4gKwkJCQkJYnJlYWs7DQo+ID4gKwkJCQlpX3Nl ZysrOw0KPiA+ICsJCQl9DQo+ID4gKwkJfQ0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQkvKiBPcGFx dWUgZGF0YSBpcyBub3Qgc3VwcG9ydGVkICovDQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsJfQ0K PiA+ICsJLyogcmluZyB0aGUgZG9vbGJlbGwgKi8NCj4gDQo+IHMvZG9vbGJlbGwvZG9vcmJlbGwN Cj4gDQpJJ2xsIGZpeCBpbiB0aGUgbmV4dCB2ZXJzaW9uLg0KDQo+ID4gKwlydGVfaW9hdF9kb19j b3BpZXMoZGV2X2lkKTsNCj4gPiArCXJldHVybiBpX2Rlc2M7DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyBpbnQNCj4gPiAraW9hdF9jaGVja19jb21wbGV0ZWRfY29waWVzX2NiKGludCB2aWQs IHVpbnQxNl90IHF1ZXVlX2lkLA0KPiA+ICsJCXN0cnVjdCBkbWFfdHJhbnNfc3RhdHVzICpvcGFx dWVfZGF0YSwNCj4gPiArCQl1aW50MTZfdCBtYXhfcGFja2V0cyBfX3J0ZV91bnVzZWQpDQo+ID4g K3sNCj4gPiArCWlmICghb3BhcXVlX2RhdGEpIHsNCj4gPiArCQl1aW50cHRyX3QgZHVtcFsyNTVd Ow0KPiA+ICsJCXJldHVybg0KPiA+IHJ0ZV9pb2F0X2NvbXBsZXRlZF9jb3BpZXMoZG1hX2JpbmRb dmlkXS5kbWFzW3F1ZXVlX2lkICogMg0KPiA+ICsJCQkrIFZJUlRJT19SWFFdLmRldl9pZCwgMjU1 LCBkdW1wLCBkdW1wKTsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJLyogT3BhcXVlIGRhdGEgaXMg bm90IHN1cHBvcnRlZCAqLw0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiArCX0NCj4gPiArfQ0KPiA+ DQo+ID4gIHN0YXRpYyB1bnNpZ25lZCBsY29yZV9pZHNbUlRFX01BWF9MQ09SRV07ICBzdGF0aWMg dWludDE2X3QNCj4gPiBwb3J0c1tSVEVfTUFYX0VUSFBPUlRTXTsgQEAgLTE4Niw2ICsyNjMsOTQg QEAgc3RydWN0IG1idWZfdGFibGUNCj4gPiBsY29yZV90eF9xdWV1ZVtSVEVfTUFYX0xDT1JFXTsN Cj4gPiAgICogQnVpbGRzIHVwIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gZm9yIFZNRFEgVkxB TiBwb29sIG1hcA0KPiA+ICAgKiBhY2NvcmRpbmcgdG8gdGhlIHBvb2wgJiBxdWV1ZSBsaW1pdHMu DQo+ID4gICAqLw0KPiA+ICsNCj4gPiArc3RhdGljIGlubGluZSBpbnQNCj4gPiArb3Blbl9kbWEo Y29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmRtYV9iaW5kX2luZm8pIHsNCj4gPiArCXN0cnVjdCBk bWFfaW5mb19pbnB1dCAqZG1hX2luZm8gPSBkbWFfYmluZF9pbmZvOw0KPiA+ICsJY2hhciAqaW5w dXQgPSBzdHJuZHVwKHZhbHVlLCBzdHJsZW4odmFsdWUpICsgMSk7DQo+ID4gKwljaGFyICphZGRy cyA9IGlucHV0Ow0KPiA+ICsJY2hhciAqcHRyc1syXTsNCj4gPiArCWNoYXIgKnN0YXJ0LCAqZW5k LCAqc3Vic3RyOw0KPiA+ICsJaW50NjRfdCBxaWQsIHZyaW5nX2lkOw0KPiA+ICsJc3RydWN0IHJ0 ZV9pb2F0X3Jhd2Rldl9jb25maWcgY29uZmlnOw0KPiA+ICsJc3RydWN0IHJ0ZV9yYXdkZXZfaW5m byBpbmZvID0geyAuZGV2X3ByaXZhdGUgPSAmY29uZmlnIH07DQo+ID4gKwljaGFyIG5hbWVbMzJd Ow0KPiA+ICsJaW50IGRldl9pZDsNCj4gPiArCWludCByZXQgPSAwOw0KPiA+ICsNCj4gPiArCXdo aWxlIChpc2JsYW5rKCphZGRycykpDQo+ID4gKwkJYWRkcnMrKzsNCj4gPiArCWlmICgqYWRkcnMg PT0gJ1wwJykgew0KPiA+ICsJCXJldCA9IC0xOw0KPiA+ICsJCWdvdG8gb3V0Ow0KPiA+ICsJfQ0K PiA+ICsNCj4gPiArCS8qIHByb2Nlc3MgRE1BIGRldmljZXMgd2l0aGluIGJyYWNrZXQuICovDQo+ ID4gKwlhZGRycysrOw0KPiA+ICsJc3Vic3RyID0gc3RydG9rKGFkZHJzLCAiO10iKTsNCj4gPiAr CWlmICghc3Vic3RyKSB7DQo+ID4gKwkJcmV0ID0gLTE7DQo+ID4gKwkJZ290byBvdXQ7DQo+ID4g Kwl9DQo+ID4gKw0KPiA+ICsJZG8gew0KPiA+ICsJCXJ0ZV9zdHJzcGxpdChzdWJzdHIsIHN0cmxl bihzdWJzdHIpLCBwdHJzLCAyLCAnQCcpOw0KPiA+ICsNCj4gPiArCQlzdGFydCA9IHN0cnN0cihw dHJzWzBdLCAidHhxIik7DQo+ID4gKwkJaWYgKHN0YXJ0ID09IE5VTEwpIHsNCj4gPiArCQkJcmV0 ID0gLTE7DQo+ID4gKwkJCWdvdG8gb3V0Ow0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJc3RhcnQg Kz0gMzsNCj4gPiArCQlxaWQgPSBzdHJ0b2woc3RhcnQsICZlbmQsIDApOw0KPiA+ICsJCWlmIChl bmQgPT0gc3RhcnQpIHsNCj4gPiArCQkJcmV0ID0gLTE7DQo+ID4gKwkJCWdvdG8gb3V0Ow0KPiA+ ICsJCX0NCj4gPiArDQo+ID4gKwkJdnJpbmdfaWQgPSBxaWQgKiAyICsgVklSVElPX1JYUTsNCj4g PiArCQlpZiAocnRlX3BjaV9hZGRyX3BhcnNlKHB0cnNbMV0sDQo+ID4gKwkJCQkgICAgICAgJmRt YV9pbmZvLT5kbWFzW3ZyaW5nX2lkXS5hZGRyKSA8IDApIHsNCj4gPiArCQkJcmV0ID0gLTE7DQo+ ID4gKwkJCWdvdG8gb3V0Ow0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJcnRlX3BjaV9kZXZpY2Vf bmFtZSgmZG1hX2luZm8tPmRtYXNbdnJpbmdfaWRdLmFkZHIsDQo+ID4gKwkJCQkgICAgbmFtZSwg c2l6ZW9mKG5hbWUpKTsNCj4gPiArCQlkZXZfaWQgPSBydGVfcmF3ZGV2X2dldF9kZXZfaWQobmFt ZSk7DQo+ID4gKwkJaWYgKGRldl9pZCA9PSAodWludDE2X3QpKC1FTk9ERVYpIHx8DQo+ID4gKwkJ ICAgIGRldl9pZCA9PSAodWludDE2X3QpKC1FSU5WQUwpKSB7DQo+ID4gKwkJCXJldCA9IC0xOw0K PiA+ICsJCQlnb3RvIG91dDsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCWlmIChydGVfcmF3ZGV2 X2luZm9fZ2V0KGRldl9pZCwgJmluZm8pIDwgMCB8fA0KPiA+ICsJCSAgICBzdHJzdHIoaW5mby5k cml2ZXJfbmFtZSwgImlvYXQiKSA9PSBOVUxMKSB7DQo+ID4gKwkJCXJldCA9IC0xOw0KPiA+ICsJ CQlnb3RvIG91dDsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCWRtYV9pbmZvLT5kbWFzW3ZyaW5n X2lkXS5kZXZfaWQgPSBkZXZfaWQ7DQo+ID4gKwkJZG1hX2luZm8tPmRtYXNbdnJpbmdfaWRdLmlz X3ZhbGlkID0gdHJ1ZTsNCj4gPiArCQljb25maWcucmluZ19zaXplID0gSU9BVF9SSU5HX1NJWkU7 DQo+ID4gKwkJaWYgKHJ0ZV9yYXdkZXZfY29uZmlndXJlKGRldl9pZCwgJmluZm8pIDwgMCkgew0K PiA+ICsJCQlyZXQgPSAtMTsNCj4gPiArCQkJZ290byBvdXQ7DQo+ID4gKwkJfQ0KPiA+ICsJCXJ0 ZV9yYXdkZXZfc3RhcnQoZGV2X2lkKTsNCj4gPiArDQo+ID4gKwkJZG1hX2luZm8tPm5yKys7DQo+ ID4gKw0KPiA+ICsJCXN1YnN0ciA9IHN0cnRvayhOVUxMLCAiO10iKTsNCj4gPiArCX0gd2hpbGUg KHN1YnN0cik7DQo+ID4gKw0KPiA+ICtvdXQ6DQo+ID4gKwlmcmVlKGlucHV0KTsNCj4gPiArCXJl dHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyBpbmxpbmUgaW50DQo+ID4gIGdl dF9ldGhfY29uZihzdHJ1Y3QgcnRlX2V0aF9jb25mICpldGhfY29uZiwgdWludDMyX3QgbnVtX2Rl dmljZXMpICB7DQo+ID4gQEAgLQ0KPiA+IDQ4OCw2ICs2NTMsOCBAQCB1c192aG9zdF9wYXJzZV9h cmdzKGludCBhcmdjLCBjaGFyICoqYXJndikNCj4gPiAgCQl7ImNsaWVudCIsIG5vX2FyZ3VtZW50 LCAmY2xpZW50X21vZGUsIDF9LA0KPiA+ICAJCXsiZGVxdWV1ZS16ZXJvLWNvcHkiLCBub19hcmd1 bWVudCwNCj4gJmRlcXVldWVfemVyb19jb3B5LCAxfSwNCj4gPiAgCQl7ImJ1aWx0aW4tbmV0LWRy aXZlciIsIG5vX2FyZ3VtZW50LCAmYnVpbHRpbl9uZXRfZHJpdmVyLCAxfSwNCj4gPiArCQl7ImFz eW5jX3Zob3N0X2RyaXZlciIsIG5vX2FyZ3VtZW50LCAmYXN5bmNfdmhvc3RfZHJpdmVyLA0KPiAx fSwNCj4gPiArCQl7ImRtYXMiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMH0sDQo+ID4gIAkJ e05VTEwsIDAsIDAsIDB9LA0KPiA+ICAJfTsNCj4gPg0KPiA+IEBAIC02MjMsMTMgKzc5MCwyNSBA QCB1c192aG9zdF9wYXJzZV9hcmdzKGludCBhcmdjLCBjaGFyICoqYXJndikNCj4gPiAgCQkJCQkJ InNvY2tldC1maWxlIiwNCj4gPiBNQVhfTE9OR19PUFRfU1opKSB7DQo+ID4gIAkJCQlpZiAodXNf dmhvc3RfcGFyc2Vfc29ja2V0X3BhdGgob3B0YXJnKSA9PSAtDQo+IDEpIHsNCj4gPiAgCQkJCQlS VEVfTE9HKElORk8sIFZIT1NUX0NPTkZJRywNCj4gPiAtCQkJCQkiSW52YWxpZCBhcmd1bWVudCBm b3Igc29ja2V0IG5hbWUNCj4gPiAoTWF4ICVkIGNoYXJhY3RlcnMpXG4iLA0KPiA+IC0JCQkJCVBB VEhfTUFYKTsNCj4gPiArCQkJCQkJIkludmFsaWQgYXJndW1lbnQgZm9yIHNvY2tldA0KPiA+IG5h bWUgKE1heCAlZCBjaGFyYWN0ZXJzKVxuIiwNCj4gPiArCQkJCQkJUEFUSF9NQVgpOw0KPiA+ICAJ CQkJCXVzX3Zob3N0X3VzYWdlKHByZ25hbWUpOw0KPiA+ICAJCQkJCXJldHVybiAtMTsNCj4gPiAg CQkJCX0NCj4gPiAgCQkJfQ0KPiA+DQo+ID4gKwkJCWlmICghc3RybmNtcChsb25nX29wdGlvbltv cHRpb25faW5kZXhdLm5hbWUsDQo+ID4gKwkJCQkJCSJkbWFzIiwNCj4gTUFYX0xPTkdfT1BUX1Na KSkNCj4gPiB7DQo+ID4gKwkJCQlpZiAob3Blbl9kbWEob3B0YXJnLCAmKGRtYV9iaW5kWzBdKSkg PT0gLTEpDQo+IHsNCj4gPiArCQkJCQlpZiAoKm9wdGFyZyA9PSAtMSkgew0KPiA+ICsJCQkJCQlS VEVfTE9HKElORk8sDQo+ID4gVkhPU1RfQ09ORklHLA0KPiA+ICsJCQkJCQkJIldyb25nIERNQSBh cmdzXG4iKTsNCj4gPiArCQkJCQkJdXNfdmhvc3RfdXNhZ2UocHJnbmFtZSk7DQo+ID4gKwkJCQkJ CXJldHVybiAtMTsNCj4gPiArCQkJCQl9DQo+ID4gKwkJCQl9DQo+ID4gKwkJCX0NCj4gPiArDQo+ ID4gIAkJCWJyZWFrOw0KPiA+DQo+ID4gIAkJCS8qIEludmFsaWQgb3B0aW9uIC0gcHJpbnQgb3B0 aW9ucy4gKi8gQEAgLTc4NSw5DQo+ICs5NjQsMjYgQEANCj4gPiB2aXJ0aW9feG1pdChzdHJ1Y3Qg dmhvc3RfZGV2ICpkc3RfdmRldiwgc3RydWN0IHZob3N0X2RldiAqc3JjX3ZkZXYsDQo+ID4gIAkg ICAgc3RydWN0IHJ0ZV9tYnVmICptKQ0KPiA+ICB7DQo+ID4gIAl1aW50MTZfdCByZXQ7DQo+ID4g KwlzdHJ1Y3QgcnRlX21idWYgKm1fY3BsWzFdOw0KPiA+DQo+ID4gIAlpZiAoYnVpbHRpbl9uZXRf ZHJpdmVyKSB7DQo+ID4gIAkJcmV0ID0gdnNfZW5xdWV1ZV9wa3RzKGRzdF92ZGV2LCBWSVJUSU9f UlhRLCAmbSwgMSk7DQo+ID4gKwl9IGVsc2UgaWYgKGFzeW5jX3Zob3N0X2RyaXZlcikgew0KPiA+ ICsJCXJldCA9IHJ0ZV92aG9zdF9zdWJtaXRfZW5xdWV1ZV9idXJzdChkc3RfdmRldi0+dmlkLA0K PiA+IFZJUlRJT19SWFEsDQo+ID4gKwkJCQkJCSZtLCAxKTsNCj4gPiArDQo+ID4gKwkJaWYgKGxp a2VseShyZXQpKSB7DQo+ID4gKwkJCWRzdF92ZGV2LT5ucl9hc3luY19wa3RzKys7DQo+ID4gKwkJ CXJ0ZV9tYnVmX3JlZmNudF91cGRhdGUobSwgMSk7DQo+ID4gKwkJfQ0KPiA+ICsNCj4gPiArCQl3 aGlsZSAobGlrZWx5KGRzdF92ZGV2LT5ucl9hc3luY19wa3RzKSkgew0KPiA+ICsJCQlkc3RfdmRl di0+bnJfYXN5bmNfcGt0cyA9DQo+ID4gKw0KPiAJcnRlX3Zob3N0X3BvbGxfZW5xdWV1ZV9jb21w bGV0ZWQoZHN0X3ZkZXYtDQo+ID4gPnZpZCwNCj4gPiArCQkJCQlWSVJUSU9fUlhRLCBtX2NwbCwg MSk7DQo+IA0KPiBJIHRoaW5rIG5yX2FzeW5jX3BrdHMgc2hvdWxkIGJlIGNoYW5nZWQgb25seSB3 aGVuDQo+IHJ0ZV92aG9zdF9wb2xsX2VucXVldWVfY29tcGxldGVkIHN1Y2NlZWQ/DQo+IA0KPiBU aGFua3MhDQo+IENoZW5ibw0KPiANClllcywgbWFrZSBzZW5zZSwgSSdsbCB1cGRhdGUgaW4gdGhl IG5leHQgdmVyc2lvbi4NCg0KVGhhbmtzLA0KQ2hlbmcNCg0KPiA+ICsJCQlkc3RfdmRldi0+bnJf YXN5bmNfcGt0cy0tOw0KPiA+ICsJCQlydGVfcGt0bWJ1Zl9mcmVlKCptX2NwbCk7DQo+ID4gKwkJ fQ0KPiA+ICAJfSBlbHNlIHsNCj4gPiAgCQlyZXQgPSBydGVfdmhvc3RfZW5xdWV1ZV9idXJzdChk c3RfdmRldi0+dmlkLCBWSVJUSU9fUlhRLA0KPiAmbSwgMSk7DQo+ID4gIAl9DQo+ID4gQEAgLTEw MzYsNiArMTIzMiwxOSBAQCBkcmFpbl9tYnVmX3RhYmxlKHN0cnVjdCBtYnVmX3RhYmxlICp0eF9x KQ0KPiA+ICAJfQ0KPiA+ICB9DQo+ID4NCj4gPiArc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUg dm9pZA0KPiA+ICtjb21wbGV0ZV9hc3luY19wa3RzKHN0cnVjdCB2aG9zdF9kZXYgKnZkZXYsIHVp bnQxNl90IHFpZCkgew0KPiA+ICsJc3RydWN0IHJ0ZV9tYnVmICpwX2NwbFtNQVhfUEtUX0JVUlNU XTsNCj4gPiArCXVpbnQxNl90IGNvbXBsZXRlX2NvdW50Ow0KPiA+ICsNCj4gPiArCWNvbXBsZXRl X2NvdW50ID0gcnRlX3Zob3N0X3BvbGxfZW5xdWV1ZV9jb21wbGV0ZWQodmRldi0+dmlkLA0KPiA+ ICsJCQkJCQlxaWQsIHBfY3BsLCBNQVhfUEtUX0JVUlNUKTsNCj4gPiArCXZkZXYtPm5yX2FzeW5j X3BrdHMgLT0gY29tcGxldGVfY291bnQ7DQo+ID4gKwlpZiAoY29tcGxldGVfY291bnQpDQo+ID4g KwkJZnJlZV9wa3RzKHBfY3BsLCBjb21wbGV0ZV9jb3VudCk7DQo+ID4gK30NCj4gPiArDQo+ID4g IHN0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIHZvaWQNCj4gPiAgZHJhaW5fZXRoX3J4KHN0cnVj dCB2aG9zdF9kZXYgKnZkZXYpDQo+ID4gIHsNCj4gPiBAQCAtMTA0NCw2ICsxMjUzLDEwIEBAIGRy YWluX2V0aF9yeChzdHJ1Y3Qgdmhvc3RfZGV2ICp2ZGV2KQ0KPiA+DQo+ID4gIAlyeF9jb3VudCA9 IHJ0ZV9ldGhfcnhfYnVyc3QocG9ydHNbMF0sIHZkZXYtPnZtZHFfcnhfcSwNCj4gPiAgCQkJCSAg ICBwa3RzLCBNQVhfUEtUX0JVUlNUKTsNCj4gPiArDQo+ID4gKwl3aGlsZSAobGlrZWx5KHZkZXYt Pm5yX2FzeW5jX3BrdHMpKQ0KPiA+ICsJCWNvbXBsZXRlX2FzeW5jX3BrdHModmRldiwgVklSVElP X1JYUSk7DQo+ID4gKw0KPiA+ICAJaWYgKCFyeF9jb3VudCkNCj4gPiAgCQlyZXR1cm47DQo+ID4N Cj4gPiBAQCAtMTA2OCwxNiArMTI4MSwyMiBAQCBkcmFpbl9ldGhfcngoc3RydWN0IHZob3N0X2Rl diAqdmRldikNCj4gPiAgCWlmIChidWlsdGluX25ldF9kcml2ZXIpIHsNCj4gPiAgCQllbnF1ZXVl X2NvdW50ID0gdnNfZW5xdWV1ZV9wa3RzKHZkZXYsIFZJUlRJT19SWFEsDQo+ID4gIAkJCQkJCXBr dHMsIHJ4X2NvdW50KTsNCj4gPiArCX0gZWxzZSBpZiAoYXN5bmNfdmhvc3RfZHJpdmVyKSB7DQo+ ID4gKwkJZW5xdWV1ZV9jb3VudCA9IHJ0ZV92aG9zdF9zdWJtaXRfZW5xdWV1ZV9idXJzdCh2ZGV2 LQ0KPiA+dmlkLA0KPiA+ICsJCQkJCVZJUlRJT19SWFEsIHBrdHMsIHJ4X2NvdW50KTsNCj4gPiAr CQl2ZGV2LT5ucl9hc3luY19wa3RzICs9IGVucXVldWVfY291bnQ7DQo+ID4gIAl9IGVsc2Ugew0K PiA+ICAJCWVucXVldWVfY291bnQgPSBydGVfdmhvc3RfZW5xdWV1ZV9idXJzdCh2ZGV2LT52aWQs DQo+ID4gVklSVElPX1JYUSwNCj4gPiAgCQkJCQkJcGt0cywgcnhfY291bnQpOw0KPiA+ICAJfQ0K PiA+ICsNCj4gPiAgCWlmIChlbmFibGVfc3RhdHMpIHsNCj4gPiAgCQlydGVfYXRvbWljNjRfYWRk KCZ2ZGV2LT5zdGF0cy5yeF90b3RhbF9hdG9taWMsIHJ4X2NvdW50KTsNCj4gPiAgCQlydGVfYXRv bWljNjRfYWRkKCZ2ZGV2LT5zdGF0cy5yeF9hdG9taWMsDQo+IGVucXVldWVfY291bnQpOw0KPiA+ ICAJfQ0KPiA+DQo+ID4gLQlmcmVlX3BrdHMocGt0cywgcnhfY291bnQpOw0KPiA+ICsJaWYgKCFh c3luY192aG9zdF9kcml2ZXIpDQo+ID4gKwkJZnJlZV9wa3RzKHBrdHMsIHJ4X2NvdW50KTsNCj4g PiAgfQ0KPiA+DQo+ID4gIHN0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIHZvaWQNCj4gPiBAQCAt MTIyNCw2ICsxNDQzLDkgQEAgZGVzdHJveV9kZXZpY2UoaW50IHZpZCkNCj4gPiAgCQkiKCVkKSBk ZXZpY2UgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGRhdGEgY29yZVxuIiwNCj4gPiAgCQl2ZGV2LT52 aWQpOw0KPiA+DQo+ID4gKwlpZiAoYXN5bmNfdmhvc3RfZHJpdmVyKQ0KPiA+ICsJCXJ0ZV92aG9z dF9hc3luY19jaGFubmVsX3VucmVnaXN0ZXIodmlkLCBWSVJUSU9fUlhRKTsNCj4gPiArDQo+ID4g IAlydGVfZnJlZSh2ZGV2KTsNCj4gPiAgfQ0KPiA+DQo+ID4gQEAgLTEyMzgsNiArMTQ2MCwxMiBA QCBuZXdfZGV2aWNlKGludCB2aWQpDQo+ID4gIAl1aW50MzJfdCBkZXZpY2VfbnVtX21pbiA9IG51 bV9kZXZpY2VzOw0KPiA+ICAJc3RydWN0IHZob3N0X2RldiAqdmRldjsNCj4gPg0KPiA+ICsJc3Ry dWN0IHJ0ZV92aG9zdF9hc3luY19jaGFubmVsX29wcyBjaGFubmVsX29wcyA9IHsNCj4gPiArCQku dHJhbnNmZXJfZGF0YSA9IGlvYXRfdHJhbnNmZXJfZGF0YV9jYiwNCj4gPiArCQkuY2hlY2tfY29t cGxldGVkX2NvcGllcyA9DQo+IGlvYXRfY2hlY2tfY29tcGxldGVkX2NvcGllc19jYg0KPiA+ICsJ fTsNCj4gPiArCXN0cnVjdCBkbWFfY2hhbm5lbF9mZWF0dXJlcyBmOw0KPiA+ICsNCj4gPiAgCXZk ZXYgPSBydGVfem1hbGxvYygidmhvc3QgZGV2aWNlIiwgc2l6ZW9mKCp2ZGV2KSwNCj4gPiBSVEVf Q0FDSEVfTElORV9TSVpFKTsNCj4gPiAgCWlmICh2ZGV2ID09IE5VTEwpIHsNCj4gPiAgCQlSVEVf TE9HKElORk8sIFZIT1NUX0RBVEEsDQo+ID4gQEAgLTEyNzgsNiArMTUwNiwxMyBAQCBuZXdfZGV2 aWNlKGludCB2aWQpDQo+ID4gIAkJIiglZCkgZGV2aWNlIGhhcyBiZWVuIGFkZGVkIHRvIGRhdGEg Y29yZSAlZFxuIiwNCj4gPiAgCQl2aWQsIHZkZXYtPmNvcmVpZCk7DQo+ID4NCj4gPiArCWlmIChh c3luY192aG9zdF9kcml2ZXIpIHsNCj4gPiArCQlmLmlub3JkZXIgPSAxOw0KPiA+ICsJCWYudGhy ZXNob2xkID0gMjU2Ow0KPiA+ICsJCXJldHVybiBydGVfdmhvc3RfYXN5bmNfY2hhbm5lbF9yZWdp c3Rlcih2aWQsIFZJUlRJT19SWFEsDQo+ID4gKwkJCWYuaW50dmFsLCAmY2hhbm5lbF9vcHMpOw0K PiA+ICsJfQ0KPiA+ICsNCj4gPiAgCXJldHVybiAwOw0KPiA+ICB9DQo+ID4NCj4gPiBAQCAtMTUx Nyw2ICsxNzUyLDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQ0KPiA+ICAJLyogUmVn aXN0ZXIgdmhvc3QgdXNlciBkcml2ZXIgdG8gaGFuZGxlIHZob3N0IG1lc3NhZ2VzLiAqLw0KPiA+ ICAJZm9yIChpID0gMDsgaSA8IG5iX3NvY2tldHM7IGkrKykgew0KPiA+ICAJCWNoYXIgKmZpbGUg PSBzb2NrZXRfZmlsZXMgKyBpICogUEFUSF9NQVg7DQo+ID4gKwkJaWYgKGFzeW5jX3Zob3N0X2Ry aXZlcikNCj4gPiArCQkJZmxhZ3MgPSBmbGFncyB8IFJURV9WSE9TVF9VU0VSX0FTWU5DX0NPUFk7 DQo+ID4gKw0KPiA+ICAJCXJldCA9IHJ0ZV92aG9zdF9kcml2ZXJfcmVnaXN0ZXIoZmlsZSwgZmxh Z3MpOw0KPiA+ICAJCWlmIChyZXQgIT0gMCkgew0KPiA+ICAJCQl1bnJlZ2lzdGVyX2RyaXZlcnMo aSk7DQo+ID4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3Zob3N0L21haW4uaCBiL2V4YW1wbGVzL3Zo b3N0L21haW4uaCBpbmRleA0KPiA+IDdjYmEwZWRiZi4uNDMxN2I2YWU4IDEwMDY0NA0KPiA+IC0t LSBhL2V4YW1wbGVzL3Zob3N0L21haW4uaA0KPiA+ICsrKyBiL2V4YW1wbGVzL3Zob3N0L21haW4u aA0KPiA+IEBAIC01MSw2ICs1MSw3IEBAIHN0cnVjdCB2aG9zdF9kZXYgew0KPiA+ICAJdWludDY0 X3QgZmVhdHVyZXM7DQo+ID4gIAlzaXplX3QgaGRyX2xlbjsNCj4gPiAgCXVpbnQxNl90IG5yX3Zy aW5nczsNCj4gPiArCXVpbnQxNl90IG5yX2FzeW5jX3BrdHM7DQo+ID4gIAlzdHJ1Y3QgcnRlX3Zo b3N0X21lbW9yeSAqbWVtOw0KPiA+ICAJc3RydWN0IGRldmljZV9zdGF0aXN0aWNzIHN0YXRzOw0K PiA+ICAJVEFJTFFfRU5UUlkodmhvc3RfZGV2KSBnbG9iYWxfdmRldl9lbnRyeTsNCj4gPiAtLQ0K PiA+IDIuMjYuMg0KDQo=