From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2FEB0A04B5; Tue, 12 Jan 2021 05:51:15 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1AB74140D3D; Tue, 12 Jan 2021 05:51:15 +0100 (CET) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mails.dpdk.org (Postfix) with ESMTP id 96962140D1C for ; Tue, 12 Jan 2021 05:51:13 +0100 (CET) IronPort-SDR: iKg17exSq++tLk5739/kWvfX2dX8q+IRZ4rvLwpUddLlH6GxmR4sq3DwQ/cFBGDqD4TLSVq0ad XOkM17fIMm9w== X-IronPort-AV: E=McAfee;i="6000,8403,9861"; a="177209142" X-IronPort-AV: E=Sophos;i="5.79,340,1602572400"; d="scan'208";a="177209142" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jan 2021 20:51:12 -0800 IronPort-SDR: g/LY4fe05Nbzvzi+izhDQytq4eRaxJ6oHIwe9hjkO5+GViGbntLX0sRvkPuNNK3s8Wi6JG/9jh DG4ziKMEg1eQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,340,1602572400"; d="scan'208";a="464392520" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga001.fm.intel.com with ESMTP; 11 Jan 2021 20:51:12 -0800 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 11 Jan 2021 20:51:12 -0800 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 11 Jan 2021 20:51:11 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Mon, 11 Jan 2021 20:51:11 -0800 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.105) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Mon, 11 Jan 2021 20:51:10 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gajH+D+x6sJSkfHVqSGB6uf2YZ4J16P3NPMkNMmH2vlUxrtY8vAjiSbJ1p7xlQ18gEmAR+yfkyLluppbkmG/Ox8BxTpm1zRMnayelvC+FVFPz2Dc90fnsaLuWxF4P3yHGE1gLeKmvbgLvv5HPnWKQcmUnseulVYk5N2NvXU/pXn8a2YDF3OIVJhAvFE/fC+1EDH/4/6V38sJH42Ob5tk3dRGl2w6fkwlI1/HZrjFUSi24x5sD+BfGJgPPZnHnuxvaLL7hm5Z4ziPGBU/yLIrFFQadzr/L7jqWmA+w2XORhmDIXQGK8cBHE9aj0qXxDBpcma8yrX2SGvHhsd0ONm4sg== 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=BwN0V9d923CBgTTblOt2q637YvyzGhXIXXhGK9EGwl0=; b=NzkFOc8oLKHPBXRl2PGIVYEAG5DKgPSVcrvbXxM2x6imN5O8Ui0es34GYm7Qv1nrhDpC9L1od20S9/xqXbCXrH7vpSRzsw6q18/7rhC7eSxUXZ/kTSMsrlvL84UyBH/HmY1aNPTL/n5M9A3PkbPNaT5RDw43yBldnnir22SVjaw6EPSVcmhNQTbEF5m+c8EQxZ8GKa9sfl6Yc8ZuScskhW8o/WHTYW9URERSx27IDBP6kjYZWC/LQMFWnadfcg73Gzk/T4U7yHW0smLBZDqjJdRlsANBlMjyJTqPHPSzFRphm4VMBZpGWhm20pI10dbfF2/pCnMnDtqJgZNUNBOu3A== 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=BwN0V9d923CBgTTblOt2q637YvyzGhXIXXhGK9EGwl0=; b=l8hW2wFT/wCEFw4BJONTPwnyQDUdgfEFpMN4glJjaidpVpEpPxBJGOfPf3bPXak9AlvdeYzOS1nAars7h1unSA7C90MX0hghRCQLgpz1Vxdj9Cylxkhh/SO+MWS0UZiTtgHE/lzp6pPZ8/RMXp0Y0Ed8sFO4mGQRu8i1vN4pux4= Received: from SJ0PR11MB5006.namprd11.prod.outlook.com (2603:10b6:a03:2db::22) by BYAPR11MB3623.namprd11.prod.outlook.com (2603:10b6:a03:b5::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6; Tue, 12 Jan 2021 04:51:01 +0000 Received: from SJ0PR11MB5006.namprd11.prod.outlook.com ([fe80::551c:1427:7611:ee6b]) by SJ0PR11MB5006.namprd11.prod.outlook.com ([fe80::551c:1427:7611:ee6b%3]) with mapi id 15.20.3742.012; Tue, 12 Jan 2021 04:51:01 +0000 From: "Jiang, Cheng1" To: Maxime Coquelin , "Xia, Chenbo" CC: "dev@dpdk.org" , "Hu, Jiayu" , "Yang, YvonneX" , "Wang, Yinan" Thread-Topic: [PATCH v8 2/2] examples/vhost: refactor vhost data path Thread-Index: AQHW59+CAobuTNkrN0uvhU1sRgImuqoie2cAgADtABA= Date: Tue, 12 Jan 2021 04:51:01 +0000 Message-ID: References: <20201218113327.70528-1-Cheng1.jiang@intel.com> <20210111055252.35672-1-Cheng1.jiang@intel.com> <20210111055252.35672-3-Cheng1.jiang@intel.com> <2ba7e5df-1c75-dba3-5f51-9b154658bd08@redhat.com> In-Reply-To: <2ba7e5df-1c75-dba3-5f51-9b154658bd08@redhat.com> Accept-Language: zh-CN, en-US 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.55.46.36] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 46b017eb-396d-47f7-02e4-08d8b6b5a916 x-ms-traffictypediagnostic: BYAPR11MB3623: 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:3044; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: gxfi7g5UTFUt8YmD6rnUF1mark95AdxrLwIlYVUjV1d1xfChp2V7dWFSH9FRP3dTN/0zar8l78wGpzhInTEqsNG+vRZ0gMvZFgYpK0vGLteuTld5Wa0MjrzJb+u5D4d/pTJH4ia796vwkYmwAPl07V+xLLoEZ+yANZAma8eELLs9XOBkb2DL8vWpGXzHxXwAcTOUZl6dFz4nUu6yRm7JQQopMZiBM13Ce6EA7JEXeQLAVixhoUOQemrKAL1SgOlX8ymzcH8dgj/cIHPqHqW50ceMhhGKkcACS6sefuOMLGC10MhI2duD5XuUgtYTaLeFNqVyKHwOrGkbcjqmTeo3WHDXXIY7GOFHpjyiiKYSktwJ8Ihun0jlK+9aSSt3ehM/3MMM5CjU1HVUUTcxfxmO+/x+gDBWwFICU8XMcK/BMyfkH7FiUMxogzPuSb0R7RwF x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR11MB5006.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(39860400002)(346002)(136003)(366004)(396003)(8676002)(316002)(83380400001)(8936002)(186003)(54906003)(7696005)(71200400001)(110136005)(4326008)(66556008)(66946007)(5660300002)(66446008)(76116006)(55016002)(6506007)(66476007)(33656002)(64756008)(30864003)(53546011)(26005)(9686003)(478600001)(6636002)(52536014)(86362001)(107886003)(2906002)(21314003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?eEJKNDVnVytmMjlJdGFYdnE5dXp2OEo4SnVOVUdDZmNvNng5V2dPSGxpZmhh?= =?utf-8?B?Z3l2cEp1K293Mm9RaFVBM09FZHdYRzNGSVFlQmF3Rmw1ejMvZmYxY0doTkdt?= =?utf-8?B?UC9SaWlTNmV5am1IQXp2OEhROGdoZDBVNTkyeUZMQkZaZktHOWFNZzhuMHdt?= =?utf-8?B?Wjl4QUxzWmUzamlsRGk3bGVleWVKRFM5endPaHJnTHpqSW1nbk1zMG9ZaUpB?= =?utf-8?B?MFRhNlNuQ1V3eWsxc2djaExnL0Fxdy9mTzRveCttQ2U4NFVoa1M1eDVPZU9C?= =?utf-8?B?ZUdGazd4OGJwclE4WG9wM2dmOWt1TWZBTGdLOUp3RG1NUUcxek5TYkNwUDRR?= =?utf-8?B?SmdER0xZajZ5QXRYZGwwa082RGFySHJkREJHMFdPMURPSDVteDZxR214eG83?= =?utf-8?B?b1FidmhKREhxY0hTUzVOZDUvSm1peUVLQW5IalJuVmlmWmlTY0pUcFNnbEdm?= =?utf-8?B?Z2dyYUVVcml6dThFQVZFd3JyMEkyYjExSjZPRllsZWNNWUhIcVpUMHJlMzdX?= =?utf-8?B?MDNUdHlYbXZOV3VuMWdSOEVrNXZzb3hQTXhkNzhaVjRMWVcvWVA3aTNya2ZU?= =?utf-8?B?WlpRSjM5NVVGWnpwYmUyMnQ3dGZVR3ZUaDBxdmkrRFFmaTdXakFlSTUxRFYy?= =?utf-8?B?YUloZUI3R1FOUHNoYVpjWmROZTJuc0psTkxmdEswa1dJSVVaK043b1BVK29i?= =?utf-8?B?YmlFZHh5T3VNSUNXZEN2SEx5a0hxa0MyekZQOXpQbjRoMHhxNXFMb0NOc2hs?= =?utf-8?B?cHdreERXYzlqN0Y3M1hJU1VmQkQvUWZ3UkVyWWNIV3duSGFvbGxMbFBTRC9Y?= =?utf-8?B?SVNVRGJVWUVzeXNZR0FkeFFROVd3R2QzblYxcEN1Rzg5MU10VHJmKytkdWtX?= =?utf-8?B?MER2UUd2MG5sVDRpbThkODZDS0t1QjRPT0dCR0FVNlJoZkgrY2ZRLzBNQXdE?= =?utf-8?B?emprdUdFejc1VmZhRFRRUnVLdUJBSkhjczR1R3J1MnlJaW9nRzF0aXMyNEVG?= =?utf-8?B?VXJ4bGFsZUdlbTFBKzhLV1NXLzBwekhwbnI2UGFIVzVzNDFwUzk2b1VtTHFs?= =?utf-8?B?eDlJaVMyd0ZBSXNWOXhSWGZMMzNKM01mc3BFbFBVRktYQ0dKTEdiK1pwMEl2?= =?utf-8?B?MC91WVdtTVdCUktVT2QwU0pYdHYyVWYvUHR4SWg4cEkrd0RQUkE4YmovOCts?= =?utf-8?B?MmpBUnE5bmZxSWhjL0Rxak4xck12d1BsMjhyVGExNkZzWGM0NHF2ekswM3FV?= =?utf-8?B?eXgvNk9aTlpDNlEySllpMmxUTjd0amJzYUZrNjUxVy8wSmdYRzY0VWFoNzVJ?= =?utf-8?Q?KOyd04LKzFgUw=3D?= 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: SJ0PR11MB5006.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 46b017eb-396d-47f7-02e4-08d8b6b5a916 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jan 2021 04:51:01.3450 (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: B94RMD8uv0rTu25r/8nOz6DKGiYp9L3i9TjhQ1SfQOfKOau8+EZAV4ZwFQKn0V9IWsphGRMug161SgLrJEY5JQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3623 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v8 2/2] examples/vhost: refactor vhost data path X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" SGksDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWF4aW1lIENvcXVl bGluIDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gU2VudDogTW9uZGF5LCBKYW51YXJ5 IDExLCAyMDIxIDEwOjI1IFBNDQo+IFRvOiBKaWFuZywgQ2hlbmcxIDxjaGVuZzEuamlhbmdAaW50 ZWwuY29tPjsgWGlhLCBDaGVuYm8NCj4gPGNoZW5iby54aWFAaW50ZWwuY29tPg0KPiBDYzogZGV2 QGRwZGsub3JnOyBIdSwgSmlheXUgPGppYXl1Lmh1QGludGVsLmNvbT47IFlhbmcsIFl2b25uZVgN Cj4gPHl2b25uZXgueWFuZ0BpbnRlbC5jb20+OyBXYW5nLCBZaW5hbiA8eWluYW4ud2FuZ0BpbnRl bC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjggMi8yXSBleGFtcGxlcy92aG9zdDogcmVm YWN0b3Igdmhvc3QgZGF0YSBwYXRoDQo+IA0KPiANCj4gDQo+IE9uIDEvMTEvMjEgNjo1MiBBTSwg Q2hlbmcgSmlhbmcgd3JvdGU6DQo+ID4gQ2hhbmdlIHRoZSB2bTJ2bSBkYXRhIHBhdGggdG8gYmF0 Y2ggZW5xdWV1ZSBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLg0KPiA+IFN1cHBvcnQgbGF0ZXN0IGFz eW5jIHZob3N0IEFQSSwgcmVmYWN0b3Igdmhvc3QgYXN5bmMgZGF0YSBwYXRoLA0KPiA+IHJlcGxh Y2UgcnRlX2F0b21pY05OX3h4eCB0byBhdG9taWNfWFhYIGFuZCBjbGVhbiBzb21lIGNvZGVzLg0K PiANCj4gV291bGRuJ3QgaXQgYmUgYmV0dGVyIHRvIHVzZSBHQ0MvQ2xhbmcgQzExIGF0bW9pYyBi dWlsdC1pbnMgbGlrZSBhbGwgb3RoZXIgY29kZQ0KPiBpcyBiZWluZyBtaWdyYXRlZCB0byBpdD8g KGkuZS4gX19hdG9taWNfWFhYKQ0KDQpTdXJlLCBpdCB3aWxsIGJlIGZpeGVkIGluIHRoZSBuZXh0 IHZlcnNpb24uDQoNClRoYW5rcywNCkNoZW5nDQoNCj4gDQo+ID4gU2lnbmVkLW9mZi1ieTogQ2hl bmcgSmlhbmcgPENoZW5nMS5qaWFuZ0BpbnRlbC5jb20+DQo+ID4gUmV2aWV3ZWQtYnk6IEppYXl1 IEh1IDxqaWF5dS5odUBpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gIGV4YW1wbGVzL3Zob3N0L2lv YXQuaCB8ICAgMiArLQ0KPiA+ICBleGFtcGxlcy92aG9zdC9tYWluLmMgfCAyMjYgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tDQo+IC0tLS0tLQ0KPiA+ICBleGFtcGxlcy92aG9z dC9tYWluLmggfCAgIDcgKy0NCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNjggaW5zZXJ0aW9ucygr KSwgNjcgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvdmhvc3Qv aW9hdC5oIGIvZXhhbXBsZXMvdmhvc3QvaW9hdC5oIGluZGV4DQo+ID4gZDZlMWUyZTA3Li4wYTFk YmI4MTEgMTAwNjQ0DQo+ID4gLS0tIGEvZXhhbXBsZXMvdmhvc3QvaW9hdC5oDQo+ID4gKysrIGIv ZXhhbXBsZXMvdmhvc3QvaW9hdC5oDQo+ID4gQEAgLTExLDcgKzExLDcgQEANCj4gPg0KPiA+ICAj ZGVmaW5lIE1BWF9WSE9TVF9ERVZJQ0UgMTAyNA0KPiA+ICAjZGVmaW5lIElPQVRfUklOR19TSVpF IDQwOTYNCj4gPiAtI2RlZmluZSBNQVhfRU5RVUVVRURfU0laRSAyNTYNCj4gPiArI2RlZmluZSBN QVhfRU5RVUVVRURfU0laRSA1MTINCj4gPg0KPiA+ICBzdHJ1Y3QgZG1hX2luZm8gew0KPiA+ICAJ c3RydWN0IHJ0ZV9wY2lfYWRkciBhZGRyOw0KPiA+IGRpZmYgLS1naXQgYS9leGFtcGxlcy92aG9z dC9tYWluLmMgYi9leGFtcGxlcy92aG9zdC9tYWluLmMgaW5kZXgNCj4gPiAyMjMwOTk3N2MuLjQ1 OTc2YzkzYyAxMDA2NDQNCj4gPiAtLS0gYS9leGFtcGxlcy92aG9zdC9tYWluLmMNCj4gPiArKysg Yi9leGFtcGxlcy92aG9zdC9tYWluLmMNCj4gPiBAQCAtMTc5LDkgKzE3OSwyMiBAQCBzdHJ1Y3Qg bWJ1Zl90YWJsZSB7DQo+ID4gIAlzdHJ1Y3QgcnRlX21idWYgKm1fdGFibGVbTUFYX1BLVF9CVVJT VF07ICB9Ow0KPiA+DQo+ID4gK3N0cnVjdCB2aG9zdF9idWZmdGFibGUgew0KPiA+ICsJdWludDMy X3QgbGVuOw0KPiA+ICsJdWludDY0X3QgcHJlX3RzYzsNCj4gPiArCXN0cnVjdCBydGVfbWJ1ZiAq bV90YWJsZVtNQVhfUEtUX0JVUlNUXTsgfTsNCj4gPiArDQo+ID4gIC8qIFRYIHF1ZXVlIGZvciBl YWNoIGRhdGEgY29yZS4gKi8NCj4gPiAgc3RydWN0IG1idWZfdGFibGUgbGNvcmVfdHhfcXVldWVb UlRFX01BWF9MQ09SRV07DQo+ID4NCj4gPiArLyoNCj4gPiArICogVmhvc3QgVFggYnVmZmVyIGZv ciBlYWNoIGRhdGEgY29yZS4NCj4gPiArICogRXZlcnkgZGF0YSBjb3JlIG1haW50YWlucyBhIFRY IGJ1ZmZlciBmb3IgZXZlcnkgdmhvc3QgZGV2aWNlLA0KPiA+ICsgKiB3aGljaCBpcyB1c2VkIGZv ciBiYXRjaCBwa3RzIGVucXVldWUgZm9yIGhpZ2hlciBwZXJmb3JtYW5jZS4NCj4gPiArICovDQo+ ID4gK3N0cnVjdCB2aG9zdF9idWZmdGFibGUgKnZob3N0X3R4YnVmZltSVEVfTUFYX0xDT1JFICoN Cj4gPiArTUFYX1ZIT1NUX0RFVklDRV07DQo+ID4gKw0KPiA+ICAjZGVmaW5lIE1CVUZfVEFCTEVf RFJBSU5fVFNDCSgocnRlX2dldF90c2NfaHooKSArIFVTX1BFUl9TIC0gMSkgXA0KPiA+ICAJCQkJ IC8gVVNfUEVSX1MgKiBCVVJTVF9UWF9EUkFJTl9VUykNCj4gPiAgI2RlZmluZSBWTEFOX0hMRU4g ICAgICAgNA0KPiA+IEBAIC04MDQsNDMgKzgxNywxMTIgQEAgdW5saW5rX3ZtZHEoc3RydWN0IHZo b3N0X2RldiAqdmRldikNCj4gPiAgCX0NCj4gPiAgfQ0KPiA+DQo+ID4gK3N0YXRpYyBpbmxpbmUg dm9pZA0KPiA+ICtmcmVlX3BrdHMoc3RydWN0IHJ0ZV9tYnVmICoqcGt0cywgdWludDE2X3Qgbikg ew0KPiA+ICsJd2hpbGUgKG4tLSkNCj4gPiArCQlydGVfcGt0bWJ1Zl9mcmVlKHBrdHNbbl0pOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB2b2lkDQo+ID4g LXZpcnRpb194bWl0KHN0cnVjdCB2aG9zdF9kZXYgKmRzdF92ZGV2LCBzdHJ1Y3Qgdmhvc3RfZGV2 ICpzcmNfdmRldiwNCj4gPiArY29tcGxldGVfYXN5bmNfcGt0cyhzdHJ1Y3Qgdmhvc3RfZGV2ICp2 ZGV2KSB7DQo+ID4gKwlzdHJ1Y3QgcnRlX21idWYgKnBfY3BsW01BWF9QS1RfQlVSU1RdOw0KPiA+ ICsJdWludDE2X3QgY29tcGxldGVfY291bnQ7DQo+ID4gKw0KPiA+ICsJY29tcGxldGVfY291bnQg PSBydGVfdmhvc3RfcG9sbF9lbnF1ZXVlX2NvbXBsZXRlZCh2ZGV2LT52aWQsDQo+ID4gKwkJCQkJ VklSVElPX1JYUSwgcF9jcGwsDQo+IE1BWF9QS1RfQlVSU1QpOw0KPiA+ICsJaWYgKGNvbXBsZXRl X2NvdW50KSB7DQo+ID4gKwkJYXRvbWljX2ZldGNoX3N1YigmdmRldi0+bnJfYXN5bmNfcGt0cywg Y29tcGxldGVfY291bnQpOw0KPiA+ICsJCWZyZWVfcGt0cyhwX2NwbCwgY29tcGxldGVfY291bnQp Ow0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgX19ydGVfYWx3YXlzX2lubGlu ZSB2b2lkDQo+ID4gK3N5bmNfdmlydGlvX3htaXQoc3RydWN0IHZob3N0X2RldiAqZHN0X3ZkZXYs IHN0cnVjdCB2aG9zdF9kZXYNCj4gPiArKnNyY192ZGV2LA0KPiA+ICAJICAgIHN0cnVjdCBydGVf bWJ1ZiAqbSkNCj4gPiAgew0KPiA+ICAJdWludDE2X3QgcmV0Ow0KPiA+IC0Jc3RydWN0IHJ0ZV9t YnVmICptX2NwbFsxXSwgKmNvbXBfcGt0Ow0KPiA+IC0JdWludDMyX3QgbnJfY29tcCA9IDA7DQo+ ID4NCj4gPiAgCWlmIChidWlsdGluX25ldF9kcml2ZXIpIHsNCj4gPiAgCQlyZXQgPSB2c19lbnF1 ZXVlX3BrdHMoZHN0X3ZkZXYsIFZJUlRJT19SWFEsICZtLCAxKTsNCj4gPiAtCX0gZWxzZSBpZiAo YXN5bmNfdmhvc3RfZHJpdmVyKSB7DQo+ID4gLQkJcmV0ID0gcnRlX3Zob3N0X3N1Ym1pdF9lbnF1 ZXVlX2J1cnN0KGRzdF92ZGV2LT52aWQsDQo+IFZJUlRJT19SWFEsDQo+ID4gLQkJCQkJCSZtLCAx LCAmY29tcF9wa3QsDQo+ICZucl9jb21wKTsNCj4gPiAtCQlpZiAobnJfY29tcCA9PSAxKQ0KPiA+ IC0JCQlnb3RvIGRvbmU7DQo+ID4gLQ0KPiA+IC0JCWlmIChsaWtlbHkocmV0KSkNCj4gPiAtCQkJ ZHN0X3ZkZXYtPm5yX2FzeW5jX3BrdHMrKzsNCj4gPiAtDQo+ID4gLQkJd2hpbGUgKGxpa2VseShk c3RfdmRldi0+bnJfYXN5bmNfcGt0cykpIHsNCj4gPiAtCQkJaWYgKHJ0ZV92aG9zdF9wb2xsX2Vu cXVldWVfY29tcGxldGVkKGRzdF92ZGV2LQ0KPiA+dmlkLA0KPiA+IC0JCQkJCVZJUlRJT19SWFEs IG1fY3BsLCAxKSkNCj4gPiAtCQkJCWRzdF92ZGV2LT5ucl9hc3luY19wa3RzLS07DQo+ID4gLQkJ fQ0KPiA+ICAJfSBlbHNlIHsNCj4gPiAgCQlyZXQgPSBydGVfdmhvc3RfZW5xdWV1ZV9idXJzdChk c3RfdmRldi0+dmlkLCBWSVJUSU9fUlhRLA0KPiAmbSwgMSk7DQo+ID4gIAl9DQo+ID4NCj4gPiAt ZG9uZToNCj4gPiAgCWlmIChlbmFibGVfc3RhdHMpIHsNCj4gPiAtCQlydGVfYXRvbWljNjRfaW5j KCZkc3RfdmRldi0+c3RhdHMucnhfdG90YWxfYXRvbWljKTsNCj4gPiAtCQlydGVfYXRvbWljNjRf YWRkKCZkc3RfdmRldi0+c3RhdHMucnhfYXRvbWljLCByZXQpOw0KPiA+ICsJCWF0b21pY19mZXRj aF9hZGQoJmRzdF92ZGV2LT5zdGF0cy5yeF90b3RhbF9hdG9taWMsIDEpOw0KPiA+ICsJCWF0b21p Y19mZXRjaF9hZGQoJmRzdF92ZGV2LT5zdGF0cy5yeF9hdG9taWMsIHJldCk7DQo+ID4gIAkJc3Jj X3ZkZXYtPnN0YXRzLnR4X3RvdGFsKys7DQo+ID4gIAkJc3JjX3ZkZXYtPnN0YXRzLnR4ICs9IHJl dDsNCj4gPiAgCX0NCj4gPiAgfQ0KPiA+DQo+ID4gK3N0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5l IHZvaWQNCj4gPiArZHJhaW5fdmhvc3Qoc3RydWN0IHZob3N0X2RldiAqdmRldikNCj4gPiArew0K PiA+ICsJdWludDE2X3QgcmV0Ow0KPiA+ICsJdWludDY0X3QgYnVmZl9pZHggPSBydGVfbGNvcmVf aWQoKSAqIE1BWF9WSE9TVF9ERVZJQ0UgKyB2ZGV2LQ0KPiA+dmlkOw0KPiA+ICsJdWludDE2X3Qg bnJfeG1pdCA9IHZob3N0X3R4YnVmZltidWZmX2lkeF0tPmxlbjsNCj4gPiArCXN0cnVjdCBydGVf bWJ1ZiAqKm0gPSB2aG9zdF90eGJ1ZmZbYnVmZl9pZHhdLT5tX3RhYmxlOw0KPiA+ICsNCj4gPiAr CWlmIChidWlsdGluX25ldF9kcml2ZXIpIHsNCj4gPiArCQlyZXQgPSB2c19lbnF1ZXVlX3BrdHMo dmRldiwgVklSVElPX1JYUSwgbSwgbnJfeG1pdCk7DQo+ID4gKwl9IGVsc2UgaWYgKGFzeW5jX3Zo b3N0X2RyaXZlcikgew0KPiA+ICsJCXVpbnQzMl90IGNwdV9jcGxfbnIgPSAwOw0KPiA+ICsJCXVp bnQxNl90IGVucXVldWVfZmFpbCA9IDA7DQo+ID4gKwkJc3RydWN0IHJ0ZV9tYnVmICptX2NwdV9j cGxbbnJfeG1pdF07DQo+ID4gKw0KPiA+ICsJCWNvbXBsZXRlX2FzeW5jX3BrdHModmRldik7DQo+ ID4gKwkJcmV0ID0gcnRlX3Zob3N0X3N1Ym1pdF9lbnF1ZXVlX2J1cnN0KHZkZXYtPnZpZCwNCj4g VklSVElPX1JYUSwNCj4gPiArCQkJCQltLCBucl94bWl0LCBtX2NwdV9jcGwsDQo+ICZjcHVfY3Bs X25yKTsNCj4gPiArCQlhdG9taWNfZmV0Y2hfYWRkKCZ2ZGV2LT5ucl9hc3luY19wa3RzLCByZXQg LSBjcHVfY3BsX25yKTsNCj4gPiArDQo+ID4gKwkJaWYgKGNwdV9jcGxfbnIpDQo+ID4gKwkJCWZy ZWVfcGt0cyhtX2NwdV9jcGwsIGNwdV9jcGxfbnIpOw0KPiA+ICsNCj4gPiArCQllbnF1ZXVlX2Zh aWwgPSBucl94bWl0IC0gcmV0Ow0KPiA+ICsJCWlmIChlbnF1ZXVlX2ZhaWwpDQo+ID4gKwkJCWZy ZWVfcGt0cygmbVtyZXRdLCBucl94bWl0IC0gcmV0KTsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJ cmV0ID0gcnRlX3Zob3N0X2VucXVldWVfYnVyc3QodmRldi0+dmlkLCBWSVJUSU9fUlhRLA0KPiA+ ICsJCQkJCQltLCBucl94bWl0KTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAoZW5hYmxlX3N0 YXRzKSB7DQo+ID4gKwkJYXRvbWljX2ZldGNoX2FkZCgmdmRldi0+c3RhdHMucnhfdG90YWxfYXRv bWljLCBucl94bWl0KTsNCj4gPiArCQlhdG9taWNfZmV0Y2hfYWRkKCZ2ZGV2LT5zdGF0cy5yeF9h dG9taWMsIHJldCk7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKCFhc3luY192aG9zdF9kcml2 ZXIpDQo+ID4gKwkJZnJlZV9wa3RzKG0sIG5yX3htaXQpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtz dGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB2b2lkDQo+ID4gK2RyYWluX3Zob3N0X3RhYmxlKHZv aWQpDQo+ID4gK3sNCj4gPiArCXVpbnQxNl90IGxjb3JlX2lkID0gcnRlX2xjb3JlX2lkKCk7DQo+ ID4gKwlzdHJ1Y3Qgdmhvc3RfYnVmZnRhYmxlICp2aG9zdF90eHE7DQo+ID4gKwlzdHJ1Y3Qgdmhv c3RfZGV2ICp2ZGV2Ow0KPiA+ICsJdWludDY0X3QgY3VyX3RzYzsNCj4gPiArDQo+ID4gKwlUQUlM UV9GT1JFQUNIKHZkZXYsICZ2aG9zdF9kZXZfbGlzdCwgZ2xvYmFsX3ZkZXZfZW50cnkpIHsNCj4g PiArCQl2aG9zdF90eHEgPSB2aG9zdF90eGJ1ZmZbbGNvcmVfaWQgKiBNQVhfVkhPU1RfREVWSUNF DQo+ID4gKwkJCQkJCSsgdmRldi0+dmlkXTsNCj4gPiArDQo+ID4gKwkJY3VyX3RzYyA9IHJ0ZV9y ZHRzYygpOw0KPiA+ICsJCWlmICh1bmxpa2VseShjdXJfdHNjIC0gdmhvc3RfdHhxLT5wcmVfdHNj DQo+ID4gKwkJCQk+IE1CVUZfVEFCTEVfRFJBSU5fVFNDKSkgew0KPiA+ICsJCQlSVEVfTE9HX0RQ KERFQlVHLCBWSE9TVF9EQVRBLA0KPiA+ICsJCQkJIlZob3N0IFRYIHF1ZXVlIGRyYWluZWQgYWZ0 ZXIgdGltZW91dCB3aXRoDQo+IGJ1cnN0IHNpemUgJXVcbiIsDQo+ID4gKwkJCQl2aG9zdF90eHEt Pmxlbik7DQo+ID4gKwkJCWRyYWluX3Zob3N0KHZkZXYpOw0KPiA+ICsJCQl2aG9zdF90eHEtPmxl biA9IDA7DQo+ID4gKwkJCXZob3N0X3R4cS0+cHJlX3RzYyA9IGN1cl90c2M7DQo+ID4gKwkJfQ0K PiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICAvKg0KPiA+ICAgKiBDaGVjayBpZiB0aGUgcGFj a2V0IGRlc3RpbmF0aW9uIE1BQyBhZGRyZXNzIGlzIGZvciBhIGxvY2FsIGRldmljZS4gSWYgc28N Cj4gdGhlbiBwdXQNCj4gPiAgICogdGhlIHBhY2tldCBvbiB0aGF0IGRldmljZXMgUlggcXVldWUu IElmIG5vdCB0aGVuIHJldHVybi4NCj4gPiBAQCAtODUwLDcgKzkzMiw4IEBAIHZpcnRpb190eF9s b2NhbChzdHJ1Y3Qgdmhvc3RfZGV2ICp2ZGV2LCBzdHJ1Y3QNCj4gPiBydGVfbWJ1ZiAqbSkgIHsN Cj4gPiAgCXN0cnVjdCBydGVfZXRoZXJfaGRyICpwa3RfaGRyOw0KPiA+ICAJc3RydWN0IHZob3N0 X2RldiAqZHN0X3ZkZXY7DQo+ID4gLQ0KPiA+ICsJc3RydWN0IHZob3N0X2J1ZmZ0YWJsZSAqdmhv c3RfdHhxOw0KPiA+ICsJdWludDE2X3QgbGNvcmVfaWQgPSBydGVfbGNvcmVfaWQoKTsNCj4gPiAg CXBrdF9oZHIgPSBydGVfcGt0bWJ1Zl9tdG9kKG0sIHN0cnVjdCBydGVfZXRoZXJfaGRyICopOw0K PiA+DQo+ID4gIAlkc3RfdmRldiA9IGZpbmRfdmhvc3RfZGV2KCZwa3RfaGRyLT5kX2FkZHIpOyBA QCAtODczLDcgKzk1NiwxOQ0KPiBAQA0KPiA+IHZpcnRpb190eF9sb2NhbChzdHJ1Y3Qgdmhvc3Rf ZGV2ICp2ZGV2LCBzdHJ1Y3QgcnRlX21idWYgKm0pDQo+ID4gIAkJcmV0dXJuIDA7DQo+ID4gIAl9 DQo+ID4NCj4gPiAtCXZpcnRpb194bWl0KGRzdF92ZGV2LCB2ZGV2LCBtKTsNCj4gPiArCXZob3N0 X3R4cSA9IHZob3N0X3R4YnVmZltsY29yZV9pZCAqIE1BWF9WSE9TVF9ERVZJQ0UgKw0KPiBkc3Rf dmRldi0+dmlkXTsNCj4gPiArCXZob3N0X3R4cS0+bV90YWJsZVt2aG9zdF90eHEtPmxlbisrXSA9 IG07DQo+ID4gKw0KPiA+ICsJaWYgKGVuYWJsZV9zdGF0cykgew0KPiA+ICsJCXZkZXYtPnN0YXRz LnR4X3RvdGFsKys7DQo+ID4gKwkJdmRldi0+c3RhdHMudHgrKzsNCj4gPiArCX0NCj4gPiArDQo+ ID4gKwlpZiAodW5saWtlbHkodmhvc3RfdHhxLT5sZW4gPT0gTUFYX1BLVF9CVVJTVCkpIHsNCj4g PiArCQlkcmFpbl92aG9zdChkc3RfdmRldik7DQo+ID4gKwkJdmhvc3RfdHhxLT5sZW4gPSAwOw0K PiA+ICsJCXZob3N0X3R4cS0+cHJlX3RzYyA9IHJ0ZV9yZHRzYygpOw0KPiA+ICsJfQ0KPiA+ICAJ cmV0dXJuIDA7DQo+ID4gIH0NCj4gPg0KPiA+IEBAIC05NDQsMTMgKzEwMzksNiBAQCBzdGF0aWMg dm9pZCB2aXJ0aW9fdHhfb2ZmbG9hZChzdHJ1Y3QgcnRlX21idWYgKm0pDQo+ID4gIAl0Y3BfaGRy LT5ja3N1bSA9IGdldF9wc2Rfc3VtKGwzX2hkciwgbS0+b2xfZmxhZ3MpOyAgfQ0KPiA+DQo+ID4g LXN0YXRpYyBpbmxpbmUgdm9pZA0KPiA+IC1mcmVlX3BrdHMoc3RydWN0IHJ0ZV9tYnVmICoqcGt0 cywgdWludDE2X3QgbikgLXsNCj4gPiAtCXdoaWxlIChuLS0pDQo+ID4gLQkJcnRlX3BrdG1idWZf ZnJlZShwa3RzW25dKTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAgc3RhdGljIF9fcnRlX2Fsd2F5c19p bmxpbmUgdm9pZA0KPiA+ICBkb19kcmFpbl9tYnVmX3RhYmxlKHN0cnVjdCBtYnVmX3RhYmxlICp0 eF9xKSAgeyBAQCAtOTgzLDE2ICsxMDcxLDE0DQo+ID4gQEAgdmlydGlvX3R4X3JvdXRlKHN0cnVj dCB2aG9zdF9kZXYgKnZkZXYsIHN0cnVjdCBydGVfbWJ1ZiAqbSwNCj4gPiB1aW50MTZfdCB2bGFu X3RhZykNCj4gPg0KPiA+ICAJCVRBSUxRX0ZPUkVBQ0godmRldjIsICZ2aG9zdF9kZXZfbGlzdCwg Z2xvYmFsX3ZkZXZfZW50cnkpDQo+IHsNCj4gPiAgCQkJaWYgKHZkZXYyICE9IHZkZXYpDQo+ID4g LQkJCQl2aXJ0aW9feG1pdCh2ZGV2MiwgdmRldiwgbSk7DQo+ID4gKwkJCQlzeW5jX3ZpcnRpb194 bWl0KHZkZXYyLCB2ZGV2LCBtKTsNCj4gPiAgCQl9DQo+ID4gIAkJZ290byBxdWV1ZTJuaWM7DQo+ ID4gIAl9DQo+ID4NCj4gPiAgCS8qY2hlY2sgaWYgZGVzdGluYXRpb24gaXMgbG9jYWwgVk0qLw0K PiA+IC0JaWYgKCh2bTJ2bV9tb2RlID09IFZNMlZNX1NPRlRXQVJFKSAmJiAodmlydGlvX3R4X2xv Y2FsKHZkZXYsDQo+IG0pID09IDApKSB7DQo+ID4gLQkJcnRlX3BrdG1idWZfZnJlZShtKTsNCj4g PiArCWlmICgodm0ydm1fbW9kZSA9PSBWTTJWTV9TT0ZUV0FSRSkgJiYgKHZpcnRpb190eF9sb2Nh bCh2ZGV2LA0KPiBtKSA9PQ0KPiA+ICswKSkNCj4gPiAgCQlyZXR1cm47DQo+ID4gLQl9DQo+ID4N Cj4gPiAgCWlmICh1bmxpa2VseSh2bTJ2bV9tb2RlID09IFZNMlZNX0hBUkRXQVJFKSkgew0KPiA+ ICAJCWlmICh1bmxpa2VseShmaW5kX2xvY2FsX2Rlc3QodmRldiwgbSwgJm9mZnNldCwgQEAgLTEw NzcsMzINCj4gKzExNjMsMTUNCj4gPiBAQCBkcmFpbl9tYnVmX3RhYmxlKHN0cnVjdCBtYnVmX3Rh YmxlICp0eF9xKQ0KPiA+ICAJfQ0KPiA+ICB9DQo+ID4NCj4gPiAtc3RhdGljIF9fcnRlX2Fsd2F5 c19pbmxpbmUgdm9pZA0KPiA+IC1jb21wbGV0ZV9hc3luY19wa3RzKHN0cnVjdCB2aG9zdF9kZXYg KnZkZXYsIHVpbnQxNl90IHFpZCkgLXsNCj4gPiAtCXN0cnVjdCBydGVfbWJ1ZiAqcF9jcGxbTUFY X1BLVF9CVVJTVF07DQo+ID4gLQl1aW50MTZfdCBjb21wbGV0ZV9jb3VudDsNCj4gPiAtDQo+ID4g LQljb21wbGV0ZV9jb3VudCA9IHJ0ZV92aG9zdF9wb2xsX2VucXVldWVfY29tcGxldGVkKHZkZXYt PnZpZCwNCj4gPiAtCQkJCQkJcWlkLCBwX2NwbCwgTUFYX1BLVF9CVVJTVCk7DQo+ID4gLQl2ZGV2 LT5ucl9hc3luY19wa3RzIC09IGNvbXBsZXRlX2NvdW50Ow0KPiA+IC0JaWYgKGNvbXBsZXRlX2Nv dW50KQ0KPiA+IC0JCWZyZWVfcGt0cyhwX2NwbCwgY29tcGxldGVfY291bnQpOw0KPiA+IC19DQo+ ID4gLQ0KPiA+ICBzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB2b2lkDQo+ID4gIGRyYWluX2V0 aF9yeChzdHJ1Y3Qgdmhvc3RfZGV2ICp2ZGV2KQ0KPiA+ICB7DQo+ID4gIAl1aW50MTZfdCByeF9j b3VudCwgZW5xdWV1ZV9jb3VudDsNCj4gPiAtCXN0cnVjdCBydGVfbWJ1ZiAqcGt0c1tNQVhfUEtU X0JVUlNUXSwNCj4gKmNvbXBfcGt0c1tNQVhfUEtUX0JVUlNUXTsNCj4gPiAtCXVpbnQzMl90IG5y X2NvbXAgPSAwOw0KPiA+ICsJc3RydWN0IHJ0ZV9tYnVmICpwa3RzW01BWF9QS1RfQlVSU1RdOw0K PiA+DQo+ID4gIAlyeF9jb3VudCA9IHJ0ZV9ldGhfcnhfYnVyc3QocG9ydHNbMF0sIHZkZXYtPnZt ZHFfcnhfcSwNCj4gPiAgCQkJCSAgICBwa3RzLCBNQVhfUEtUX0JVUlNUKTsNCj4gPg0KPiA+IC0J d2hpbGUgKGxpa2VseSh2ZGV2LT5ucl9hc3luY19wa3RzKSkNCj4gPiAtCQljb21wbGV0ZV9hc3lu Y19wa3RzKHZkZXYsIFZJUlRJT19SWFEpOw0KPiA+IC0NCj4gPiAgCWlmICghcnhfY291bnQpDQo+ ID4gIAkJcmV0dXJuOw0KPiA+DQo+ID4gQEAgLTExMjgsMjIgKzExOTcsMzEgQEAgZHJhaW5fZXRo X3J4KHN0cnVjdCB2aG9zdF9kZXYgKnZkZXYpDQo+ID4gIAkJZW5xdWV1ZV9jb3VudCA9IHZzX2Vu cXVldWVfcGt0cyh2ZGV2LCBWSVJUSU9fUlhRLA0KPiA+ICAJCQkJCQlwa3RzLCByeF9jb3VudCk7 DQo+ID4gIAl9IGVsc2UgaWYgKGFzeW5jX3Zob3N0X2RyaXZlcikgew0KPiA+ICsJCXVpbnQzMl90 IGNwdV9jcGxfbnIgPSAwOw0KPiA+ICsJCXVpbnQxNl90IGVucXVldWVfZmFpbCA9IDA7DQo+ID4g KwkJc3RydWN0IHJ0ZV9tYnVmICptX2NwdV9jcGxbTUFYX1BLVF9CVVJTVF07DQo+ID4gKw0KPiA+ ICsJCWNvbXBsZXRlX2FzeW5jX3BrdHModmRldik7DQo+ID4gIAkJZW5xdWV1ZV9jb3VudCA9IHJ0 ZV92aG9zdF9zdWJtaXRfZW5xdWV1ZV9idXJzdCh2ZGV2LQ0KPiA+dmlkLA0KPiA+IC0JCQkJCVZJ UlRJT19SWFEsIHBrdHMsIHJ4X2NvdW50LA0KPiBjb21wX3BrdHMsDQo+ID4gLQkJCQkJJm5yX2Nv bXApOw0KPiA+IC0JCWlmIChucl9jb21wID4gMCkgew0KPiA+IC0JCQlmcmVlX3BrdHMoY29tcF9w a3RzLCBucl9jb21wKTsNCj4gPiAtCQkJZW5xdWV1ZV9jb3VudCAtPSBucl9jb21wOw0KPiA+IC0J CX0NCj4gPiAtCQl2ZGV2LT5ucl9hc3luY19wa3RzICs9IGVucXVldWVfY291bnQ7DQo+ID4gKwkJ CQkJVklSVElPX1JYUSwgcGt0cywgcnhfY291bnQsDQo+ID4gKwkJCQkJbV9jcHVfY3BsLCAmY3B1 X2NwbF9ucik7DQo+ID4gKwkJYXRvbWljX2ZldGNoX2FkZCgmdmRldi0+bnJfYXN5bmNfcGt0cywN Cj4gPiArCQkJCQllbnF1ZXVlX2NvdW50IC0gY3B1X2NwbF9ucik7DQo+ID4gKwkJaWYgKGNwdV9j cGxfbnIpDQo+ID4gKwkJCWZyZWVfcGt0cyhtX2NwdV9jcGwsIGNwdV9jcGxfbnIpOw0KPiA+ICsN Cj4gPiArCQllbnF1ZXVlX2ZhaWwgPSByeF9jb3VudCAtIGVucXVldWVfY291bnQ7DQo+ID4gKwkJ aWYgKGVucXVldWVfZmFpbCkNCj4gPiArCQkJZnJlZV9wa3RzKCZwa3RzW2VucXVldWVfY291bnRd LCBlbnF1ZXVlX2ZhaWwpOw0KPiA+ICsNCj4gPiAgCX0gZWxzZSB7DQo+ID4gIAkJZW5xdWV1ZV9j b3VudCA9IHJ0ZV92aG9zdF9lbnF1ZXVlX2J1cnN0KHZkZXYtPnZpZCwNCj4gVklSVElPX1JYUSwN Cj4gPiAgCQkJCQkJcGt0cywgcnhfY291bnQpOw0KPiA+ICAJfQ0KPiA+DQo+ID4gIAlpZiAoZW5h YmxlX3N0YXRzKSB7DQo+ID4gLQkJcnRlX2F0b21pYzY0X2FkZCgmdmRldi0+c3RhdHMucnhfdG90 YWxfYXRvbWljLCByeF9jb3VudCk7DQo+ID4gLQkJcnRlX2F0b21pYzY0X2FkZCgmdmRldi0+c3Rh dHMucnhfYXRvbWljLA0KPiBlbnF1ZXVlX2NvdW50KTsNCj4gPiArCQlhdG9taWNfZmV0Y2hfYWRk KCZ2ZGV2LT5zdGF0cy5yeF90b3RhbF9hdG9taWMsIHJ4X2NvdW50KTsNCj4gPiArCQlhdG9taWNf ZmV0Y2hfYWRkKCZ2ZGV2LT5zdGF0cy5yeF9hdG9taWMsDQo+IGVucXVldWVfY291bnQpOw0KPiA+ ICAJfQ0KPiA+DQo+ID4gIAlpZiAoIWFzeW5jX3Zob3N0X2RyaXZlcikNCj4gPiBAQCAtMTIxMiw3 ICsxMjkwLDcgQEAgc3dpdGNoX3dvcmtlcih2b2lkICphcmcgX19ydGVfdW51c2VkKQ0KPiA+DQo+ ID4gIAl3aGlsZSgxKSB7DQo+ID4gIAkJZHJhaW5fbWJ1Zl90YWJsZSh0eF9xKTsNCj4gPiAtDQo+ ID4gKwkJZHJhaW5fdmhvc3RfdGFibGUoKTsNCj4gPiAgCQkvKg0KPiA+ICAJCSAqIEluZm9ybSB0 aGUgY29uZmlndXJhdGlvbiBjb3JlIHRoYXQgd2UgaGF2ZSBleGl0ZWQgdGhlDQo+ID4gIAkJICog bGlua2VkIGxpc3QgYW5kIHRoYXQgbm8gZGV2aWNlcyBhcmUgaW4gdXNlIGlmIHJlcXVlc3RlZC4N Cj4gPiBAQCAtMTI1Myw2ICsxMzMxLDcgQEAgZGVzdHJveV9kZXZpY2UoaW50IHZpZCkgIHsNCj4g PiAgCXN0cnVjdCB2aG9zdF9kZXYgKnZkZXYgPSBOVUxMOw0KPiA+ICAJaW50IGxjb3JlOw0KPiA+ ICsJdWludDE2X3QgaTsNCj4gPg0KPiA+ICAJVEFJTFFfRk9SRUFDSCh2ZGV2LCAmdmhvc3RfZGV2 X2xpc3QsIGdsb2JhbF92ZGV2X2VudHJ5KSB7DQo+ID4gIAkJaWYgKHZkZXYtPnZpZCA9PSB2aWQp DQo+ID4gQEAgLTEyNjYsNiArMTM0NSw5IEBAIGRlc3Ryb3lfZGV2aWNlKGludCB2aWQpDQo+ID4g IAkJcnRlX3BhdXNlKCk7DQo+ID4gIAl9DQo+ID4NCj4gPiArCWZvciAoaSA9IDA7IGkgPCBSVEVf TUFYX0xDT1JFOyBpKyspDQo+ID4gKwkJcnRlX2ZyZWUodmhvc3RfdHhidWZmW2kgKiBNQVhfVkhP U1RfREVWSUNFICsgdmlkXSk7DQo+ID4gKw0KPiA+ICAJaWYgKGJ1aWx0aW5fbmV0X2RyaXZlcikN Cj4gPiAgCQl2c192aG9zdF9uZXRfcmVtb3ZlKHZkZXYpOw0KPiA+DQo+ID4gQEAgLTEzMDgsNiAr MTM5MCw3IEBAIHN0YXRpYyBpbnQNCj4gPiAgbmV3X2RldmljZShpbnQgdmlkKQ0KPiA+ICB7DQo+ ID4gIAlpbnQgbGNvcmUsIGNvcmVfYWRkID0gMDsNCj4gPiArCXVpbnQxNl90IGk7DQo+ID4gIAl1 aW50MzJfdCBkZXZpY2VfbnVtX21pbiA9IG51bV9kZXZpY2VzOw0KPiA+ICAJc3RydWN0IHZob3N0 X2RldiAqdmRldjsNCj4gPiAgCXZkZXYgPSBydGVfem1hbGxvYygidmhvc3QgZGV2aWNlIiwgc2l6 ZW9mKCp2ZGV2KSwNCj4gPiBSVEVfQ0FDSEVfTElORV9TSVpFKTsgQEAgLTEzMTksNiArMTQwMiwx OSBAQCBuZXdfZGV2aWNlKGludCB2aWQpDQo+ID4gIAl9DQo+ID4gIAl2ZGV2LT52aWQgPSB2aWQ7 DQo+ID4NCj4gPiArCWZvciAoaSA9IDA7IGkgPCBSVEVfTUFYX0xDT1JFOyBpKyspIHsNCj4gPiAr CQl2aG9zdF90eGJ1ZmZbaSAqIE1BWF9WSE9TVF9ERVZJQ0UgKyB2aWRdDQo+ID4gKwkJCT0gcnRl X3ptYWxsb2MoInZob3N0IGJ1ZmZ0YWJsZSIsDQo+ID4gKwkJCQlzaXplb2Yoc3RydWN0IHZob3N0 X2J1ZmZ0YWJsZSksDQo+ID4gKwkJCQlSVEVfQ0FDSEVfTElORV9TSVpFKTsNCj4gPiArDQo+ID4g KwkJaWYgKHZob3N0X3R4YnVmZltpICogTUFYX1ZIT1NUX0RFVklDRSArIHZpZF0gPT0gTlVMTCkg ew0KPiA+ICsJCQlSVEVfTE9HKElORk8sIFZIT1NUX0RBVEEsDQo+ID4gKwkJCSAgIiglZCkgY291 bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciB2aG9zdCBUWFxuIiwgdmlkKTsNCj4gPiArCQkJcmV0 dXJuIC0xOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ID4gIAlpZiAoYnVpbHRpbl9uZXRf ZHJpdmVyKQ0KPiA+ICAJCXZzX3Zob3N0X25ldF9zZXR1cCh2ZGV2KTsNCj4gPg0KPiA+IEBAIC0x MzUzLDEyICsxNDQ5LDE1IEBAIG5ld19kZXZpY2UoaW50IHZpZCkNCj4gPiAgCWlmIChhc3luY192 aG9zdF9kcml2ZXIpIHsNCj4gPiAgCQlzdHJ1Y3QgcnRlX3Zob3N0X2FzeW5jX2ZlYXR1cmVzIGY7 DQo+ID4gIAkJc3RydWN0IHJ0ZV92aG9zdF9hc3luY19jaGFubmVsX29wcyBjaGFubmVsX29wczsN Cj4gPiArDQo+ID4gIAkJaWYgKHN0cm5jbXAoZG1hX3R5cGUsICJpb2F0IiwgNCkgPT0gMCkgew0K PiA+ICAJCQljaGFubmVsX29wcy50cmFuc2Zlcl9kYXRhID0gaW9hdF90cmFuc2Zlcl9kYXRhX2Ni Ow0KPiA+ICAJCQljaGFubmVsX29wcy5jaGVja19jb21wbGV0ZWRfY29waWVzID0NCj4gPiAgCQkJ CWlvYXRfY2hlY2tfY29tcGxldGVkX2NvcGllc19jYjsNCj4gPiArDQo+ID4gIAkJCWYuYXN5bmNf aW5vcmRlciA9IDE7DQo+ID4gIAkJCWYuYXN5bmNfdGhyZXNob2xkID0gMjU2Ow0KPiA+ICsNCj4g PiAgCQkJcmV0dXJuIHJ0ZV92aG9zdF9hc3luY19jaGFubmVsX3JlZ2lzdGVyKHZpZCwNCj4gVklS VElPX1JYUSwNCj4gPiAgCQkJCWYuaW50dmFsLCAmY2hhbm5lbF9vcHMpOw0KPiA+ICAJCX0NCj4g PiBAQCAtMTQwMiw4ICsxNTAxLDggQEAgcHJpbnRfc3RhdHMoX19ydGVfdW51c2VkIHZvaWQgKmFy ZykNCj4gPiAgCQkJdHggICAgICAgICA9IHZkZXYtPnN0YXRzLnR4Ow0KPiA+ICAJCQl0eF9kcm9w cGVkID0gdHhfdG90YWwgLSB0eDsNCj4gPg0KPiA+IC0JCQlyeF90b3RhbCAgID0gcnRlX2F0b21p YzY0X3JlYWQoJnZkZXYtDQo+ID5zdGF0cy5yeF90b3RhbF9hdG9taWMpOw0KPiA+IC0JCQlyeCAg ICAgICAgID0gcnRlX2F0b21pYzY0X3JlYWQoJnZkZXYtPnN0YXRzLnJ4X2F0b21pYyk7DQo+ID4g KwkJCXJ4X3RvdGFsICAgPSBhdG9taWNfbG9hZCgmdmRldi0NCj4gPnN0YXRzLnJ4X3RvdGFsX2F0 b21pYyk7DQo+ID4gKwkJCXJ4ICAgICAgICAgPSBhdG9taWNfbG9hZCgmdmRldi0+c3RhdHMucnhf YXRvbWljKTsNCj4gPiAgCQkJcnhfZHJvcHBlZCA9IHJ4X3RvdGFsIC0gcng7DQo+ID4NCj4gPiAg CQkJcHJpbnRmKCJTdGF0aXN0aWNzIGZvciBkZXZpY2UgJWRcbiINCj4gPiBAQCAtMTYwMiw2ICsx NzAxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQ0KPiA+ICAJLyogUmVnaXN0ZXIg dmhvc3QgdXNlciBkcml2ZXIgdG8gaGFuZGxlIHZob3N0IG1lc3NhZ2VzLiAqLw0KPiA+ICAJZm9y IChpID0gMDsgaSA8IG5iX3NvY2tldHM7IGkrKykgew0KPiA+ICAJCWNoYXIgKmZpbGUgPSBzb2Nr ZXRfZmlsZXMgKyBpICogUEFUSF9NQVg7DQo+ID4gKw0KPiA+ICAJCWlmIChhc3luY192aG9zdF9k cml2ZXIpDQo+ID4gIAkJCWZsYWdzID0gZmxhZ3MgfCBSVEVfVkhPU1RfVVNFUl9BU1lOQ19DT1BZ Ow0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3Zob3N0L21haW4uaCBiL2V4YW1wbGVz L3Zob3N0L21haW4uaCBpbmRleA0KPiA+IDQzMTdiNmFlOC4uNmFhNzk4YTNlIDEwMDY0NA0KPiA+ IC0tLSBhL2V4YW1wbGVzL3Zob3N0L21haW4uaA0KPiA+ICsrKyBiL2V4YW1wbGVzL3Zob3N0L21h aW4uaA0KPiA+IEBAIC04LDYgKzgsNyBAQA0KPiA+ICAjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+DQo+ ID4NCj4gPiAgI2luY2x1ZGUgPHJ0ZV9ldGhlci5oPg0KPiA+ICsjaW5jbHVkZSA8c3RkYXRvbWlj Lmg+DQo+ID4NCj4gPiAgLyogTWFjcm9zIGZvciBwcmludGluZyB1c2luZyBSVEVfTE9HICovICAj ZGVmaW5lDQo+ID4gUlRFX0xPR1RZUEVfVkhPU1RfQ09ORklHIFJURV9MT0dUWVBFX1VTRVIxIEBA IC0yMSw4ICsyMiw4IEBADQo+IGVudW0NCj4gPiB7VklSVElPX1JYUSwgVklSVElPX1RYUSwgVklS VElPX1FOVU19OyAgc3RydWN0IGRldmljZV9zdGF0aXN0aWNzIHsNCj4gPiAgCXVpbnQ2NF90CXR4 Ow0KPiA+ICAJdWludDY0X3QJdHhfdG90YWw7DQo+ID4gLQlydGVfYXRvbWljNjRfdAlyeF9hdG9t aWM7DQo+ID4gLQlydGVfYXRvbWljNjRfdAlyeF90b3RhbF9hdG9taWM7DQo+ID4gKwlhdG9taWNf aW50X2xlYXN0NjRfdAlyeF9hdG9taWM7DQo+ID4gKwlhdG9taWNfaW50X2xlYXN0NjRfdAlyeF90 b3RhbF9hdG9taWM7DQo+ID4gIH07DQo+ID4NCj4gPiAgc3RydWN0IHZob3N0X3F1ZXVlIHsNCj4g PiBAQCAtNTEsNyArNTIsNyBAQCBzdHJ1Y3Qgdmhvc3RfZGV2IHsNCj4gPiAgCXVpbnQ2NF90IGZl YXR1cmVzOw0KPiA+ICAJc2l6ZV90IGhkcl9sZW47DQo+ID4gIAl1aW50MTZfdCBucl92cmluZ3M7 DQo+ID4gLQl1aW50MTZfdCBucl9hc3luY19wa3RzOw0KPiA+ICsJYXRvbWljX2ludF9sZWFzdDE2 X3QgbnJfYXN5bmNfcGt0czsNCj4gPiAgCXN0cnVjdCBydGVfdmhvc3RfbWVtb3J5ICptZW07DQo+ ID4gIAlzdHJ1Y3QgZGV2aWNlX3N0YXRpc3RpY3Mgc3RhdHM7DQo+ID4gIAlUQUlMUV9FTlRSWSh2 aG9zdF9kZXYpIGdsb2JhbF92ZGV2X2VudHJ5Ow0KPiA+IC0tDQo+ID4gMi4yOS4yDQo+ID4NCg0K