From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 167DFA09FF;
	Wed, 30 Dec 2020 04:03:05 +0100 (CET)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id C70232B8E;
	Wed, 30 Dec 2020 04:03:02 +0100 (CET)
Received: from mga07.intel.com (mga07.intel.com [134.134.136.100])
 by dpdk.org (Postfix) with ESMTP id D20272B87
 for <dev@dpdk.org>; Wed, 30 Dec 2020 04:02:59 +0100 (CET)
IronPort-SDR: ziX83Qh9wFYDpuYnpwTKRVqogrUGJ1xQAngNtTudN6nl3PafoCMo6zRvyJEi042oihm5qU+HUi
 DA7/iVjSIVGQ==
X-IronPort-AV: E=McAfee;i="6000,8403,9849"; a="240643950"
X-IronPort-AV: E=Sophos;i="5.78,460,1599548400"; d="scan'208";a="240643950"
Received: from orsmga001.jf.intel.com ([10.7.209.18])
 by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 29 Dec 2020 19:02:58 -0800
IronPort-SDR: Q5xInXY9rUSAiciMwT57e0Jzah7Xd5cxGv6bawzyTTdNTBvz97y7rEPAX/yqxAlxULSN/J/Oki
 b7LoHqnG8qng==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.78,460,1599548400"; d="scan'208";a="419381879"
Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18])
 by orsmga001.jf.intel.com with ESMTP; 29 Dec 2020 19:02:58 -0800
Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by
 ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.1713.5; Tue, 29 Dec 2020 19:02:58 -0800
Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by
 orsmsx611.amr.corp.intel.com (10.22.229.24) 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, 29 Dec 2020 19:02:58 -0800
Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.176)
 by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.1.1713.5; Tue, 29 Dec 2020 19:02:58 -0800
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=HHoxl7L9xwYrjOLZL8QNCJsAmLt+N0L4KGrzZcmn4t8ORGnO3uO+pzg91+AX/h7mTbNGH4XGwiRxGPYgF0qhIzr0/7rbQZAEp3azl7a621RvzWqi3IM8DAqdUy778TfAQev1NHj0l4aGkv6cXlE4VZPglDRd6xnk8PzEYOHpuPC3DNNL1lmSoWO6GskBBU2LWjNnbvXc4yoIEhzb538diuJZdgq6MupPN9HMZKuhq6NyE3C/Em1tVGbNqs3oxZ2US23KygFvefepfTWtSzXWiIMb+vmj1phvTlo/T4OqHhV5nrX2WmrTeQvD5N7YGuDTCs0WvF+85FPTQfz2VI9H9g==
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=xNLNYRnCdjjLwKmLFhgl7vihOie1fuTzewjTEiV1MAA=;
 b=Zqq+ixNrfkp+7jPzZNTO/ir6TRifUlXJHLZUkovsqIXjEY0lZ4P1XI6iPBBblhzNrtZLkGyJdLlYbhpMsDGyrzsFdTKWIAy10NRuUGWWRugjxGezoIShIXeAjLPu6LVN9Z0gFZ0Ati3tKrpQxVw8RGRsLlZd0W+EMGpeQCZLAd1MKK1CTcq8/q2QIrN4cUw4rhKzTEYOYULpuwiZqVJ0mUroq7wWuGvql6H0nLhhEtnBYLhXbtPuapVJoCuMneaSOswRg3nn5LV1ssqzCktf414a/7BBoOVy8A6T8IZ6AKuL2uQcQCXHuBdzeKmpgckFgagNriJsrTouUU9guTigvA==
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=xNLNYRnCdjjLwKmLFhgl7vihOie1fuTzewjTEiV1MAA=;
 b=HE3ilBXXPjYBpvAkQhqeBMWUvl0pXh+LtkCnEe+dQRJlU6AdZRwaDfnavRWR83j9KaHcGGE2Mz6TczQlxWNOJfyE7YHL9lJN8gpONQWK2x3pK2DQJ/HeXOAegJ52H/gtoeKk3FBYwqlWH2yeYkFu+u91LSJujIDqucZTf9rigA4=
Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22)
 by MN2PR11MB3791.namprd11.prod.outlook.com (2603:10b6:208:f9::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3700.31; Wed, 30 Dec
 2020 03:02:33 +0000
Received: from MN2PR11MB4063.namprd11.prod.outlook.com
 ([fe80::74f2:ba7f:cb22:5272]) by MN2PR11MB4063.namprd11.prod.outlook.com
 ([fe80::74f2:ba7f:cb22:5272%7]) with mapi id 15.20.3700.031; Wed, 30 Dec 2020
 03:02:33 +0000
From: "Xia, Chenbo" <chenbo.xia@intel.com>
To: Maxime Coquelin <maxime.coquelin@redhat.com>, "dev@dpdk.org"
 <dev@dpdk.org>, "olivier.matz@6wind.com" <olivier.matz@6wind.com>,
 "amorenoz@redhat.com" <amorenoz@redhat.com>, "david.marchand@redhat.com"
 <david.marchand@redhat.com>
Thread-Topic: [PATCH 05/40] net/virtio: move PCI device init in dedicated file
Thread-Index: AQHW1xUqYYubsTZehk24X+ev9chI66oPAJQA
Date: Wed, 30 Dec 2020 03:02:33 +0000
Message-ID: <MN2PR11MB406374BA17EA162BD69174389CD70@MN2PR11MB4063.namprd11.prod.outlook.com>
References: <20201220211405.313012-1-maxime.coquelin@redhat.com>
 <20201220211405.313012-6-maxime.coquelin@redhat.com>
In-Reply-To: <20201220211405.313012-6-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.198.147.218]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 5adda1a9-b081-43ae-399c-08d8ac6f5a81
x-ms-traffictypediagnostic: MN2PR11MB3791:
x-microsoft-antispam-prvs: <MN2PR11MB37918A5DAF68E6098A95BF4E9CD70@MN2PR11MB3791.namprd11.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:303;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: 47ffc6if9jJq5bpdgZKdmT0qkSszXw/nVbylzC1k27vOWol2rdgaWWGIJ93t4/atMeb9Vo5m+cf6t67nUuWhIIc2vGldHjSN8tIjUECHk5APFbFTvwLbaffCzDOZPU7zRs+Tm7PDoqG+9kknwbavEXh1qQQhickS9B3IMZuPJ6mUFf9y6QswJv9i8PHWvkbQ0phvWUCQ5F5CszUd130wSKhonvoSgAT9DktWwkiZAEBjWOOmcYu5D/PHaHvg4+pzXybAUyCZOeTKDPOIoSRkFPz0kYCHrwIRnQ/mf5YoVxwxs1SP9epSvc4IaCKMWAmCSRJ2Bs0XSDJKnkZcfFbz3eb/E4pjbqOb558CKfZ2blGz168ixM1FlLYv44b71lAyfN4WxhZyIVnFpMvd2kI0Vg==
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)(376002)(39860400002)(396003)(366004)(136003)(346002)(64756008)(9686003)(71200400001)(30864003)(186003)(6506007)(52536014)(5660300002)(83380400001)(55016002)(110136005)(53546011)(33656002)(66476007)(66446008)(76116006)(8676002)(66556008)(2906002)(26005)(86362001)(316002)(7696005)(8936002)(478600001)(66946007);
 DIR:OUT; SFP:1102; 
x-ms-exchange-antispam-messagedata: =?utf-8?B?V0xYS0UycFhYVUFZMnRiYVNPQWNiSy9Uc000NUNJZStmNHE0VGxUV1hxNGIx?=
 =?utf-8?B?Q0Qxa1hPOC9VUi9iSHFvRUhWUk1nT3AwMlE5MkVrNFEvajdrYWtpdXNFeDdh?=
 =?utf-8?B?aTRGNGVyZWl0MmJPUWRpOVVRTXFlREZxY3hmM3lDaHE4ekRHcUF3RUNISVBx?=
 =?utf-8?B?cUV1a292ZHZZWHc1a3lENkVkbDRLMmRUWjUzV0hrNVA1RlJlVnduZG01VmJI?=
 =?utf-8?B?YTRMU3dhcVhycVVGeUh2TExMbTk4WTNia20rWXpEM3NMWTRmU2VPU0tpcXhN?=
 =?utf-8?B?TG5DMWltK25HUHpEaXFXaFgvV0ZWRWVkTTEvTTVKa1NpNHZ1WkdUejE4d0NJ?=
 =?utf-8?B?UUYwUUZkanl6ME9UOEpOYVo1cXhiUkNNY24wMzFlRFFYc0hOQi9yRXNwb3Bx?=
 =?utf-8?B?K1dUaGVMSE1kb09UbVl0aUxCUnk0T3ZyVW9QT2s5ZnZsd0ZnV042R1kyaFpz?=
 =?utf-8?B?MkJ2cms5VC9haFZBMUJ1a3RIWUhjcmU5MzdwejJGbjRJekRkUDFOckcvN3FE?=
 =?utf-8?B?b25TRFEwNjdpb015aG1DSU1YMlVWN1J3OXMybU1kRVFHU0ZFcE9ydGQ3Z3Z5?=
 =?utf-8?B?Sm84WmFJdjlJNlpXYlVmUE1GVWhhbStWVlVrL3JBd2E3bms4SW5EWUlTRzNH?=
 =?utf-8?B?L254Tnh6dU0zY011VEJiYmg0ZURtdnMva25FN1Zzc0hxTVdTTndJcGlJaEpk?=
 =?utf-8?B?NW02N3cxWkEzWE1vcGkrcnF2SlgwZW52ZFk3bTBnbEg2UWFmMDE5OVptdjRE?=
 =?utf-8?B?Q3djYUg3cFl2dWtLWHdSNjJrYnhKTVhQUC9VejMyMk4vRjZ3V2xuUXN5TGRC?=
 =?utf-8?B?Q09lWTFDWnZ4Z2VvOGh4VjAvSWJ4bjRPdWh0NEM5bWRNaEtKMTN4Rk9PYm5z?=
 =?utf-8?B?dkhNU2FzNERsNnpDRTc4dFByRTJqWWkzWGZPb1c4eHd4ckhBTXU0NnV4cXJh?=
 =?utf-8?B?RnE3eTlUalFPWHhDeTlhYXMxallOb29wVVA4dmtON0dTZUg1WEcrSkd2OEtv?=
 =?utf-8?B?azVWdDV1NG5aWEtleGhQanJIOHNPRXZWem10dk1zZE9BL0dhVWhTZUZWaXpj?=
 =?utf-8?B?cEVSM1dBaFl4alFMUHF6S3MxU2JIWG0zYTVQWm90aFU0OG9LNTZOMTRVc0di?=
 =?utf-8?B?Y3F0Z00zTC8xeFBKTTFtakVGYzlERzk2TU1DNXZIY05abTF0dEEzMzNnMVEv?=
 =?utf-8?B?Mm9WOXUvU1BwVHYwVVh0ZDRGdy93Z0FPMTlObkVsakhmb0lZTmwwWXpQdUM5?=
 =?utf-8?B?UmR0QUVRVEYvU29lUlAxUXJsTGhMdHYzSmpkaFh2cmE4RXhsWUFIZy9YMzkx?=
 =?utf-8?Q?y9IXxIVRjAwz0=3D?=
x-ms-exchange-transport-forked: True
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: 5adda1a9-b081-43ae-399c-08d8ac6f5a81
X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Dec 2020 03:02:33.1611 (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: QrSdVFyV7OFeKpgkDPwb6n6PMRlfTpPu19vEji8Gtul8GsBvtpkBuaEvJIDIgL7avBEptABqbo6jy/ZPmB6Eog==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3791
X-OriginatorOrg: intel.com
Subject: Re: [dpdk-dev] [PATCH 05/40] net/virtio: move PCI device init in
	dedicated file
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

SGkgTWF4aW1lLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1heGlt
ZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+IFNlbnQ6IE1vbmRheSwg
RGVjZW1iZXIgMjEsIDIwMjAgNToxNCBBTQ0KPiBUbzogZGV2QGRwZGsub3JnOyBYaWEsIENoZW5i
byA8Y2hlbmJvLnhpYUBpbnRlbC5jb20+OyBvbGl2aWVyLm1hdHpANndpbmQuY29tOw0KPiBhbW9y
ZW5vekByZWRoYXQuY29tOyBkYXZpZC5tYXJjaGFuZEByZWRoYXQuY29tDQo+IENjOiBNYXhpbWUg
Q29xdWVsaW4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0gg
MDUvNDBdIG5ldC92aXJ0aW86IG1vdmUgUENJIGRldmljZSBpbml0IGluIGRlZGljYXRlZCBmaWxl
DQo+IA0KPiBUaGkgcGF0Y2ggbW92ZXMgdGhlIFBDSSBFdGhlcm5ldCBkZXZpY2UgcmVnaXN0cmF0
aW9uIGJpdHMNCg0Kcy9UaGkvVGhpcw0KDQo+IGluIGEgZGVkaWNhdGVkIHBhdGNoLiBJbiBmb2xs
b3dpbmcgcGF0Y2hlcywgbW9yZSBjb2RlIHdpbGwNCj4gYmUgbW92ZWQgdGhlcmUsIHdpdGggdGhl
IGdvYWwgb2YgbWFraW5nIHZpcnRpb19ldGhkZXYuYw0KPiB0cnVlbHkgYnVzLWFnbm9zdGljLg0K
DQpzL3RydWVseS90cnVseQ0KDQpXaXRoIGFib3ZlIGZpeGVzOg0KDQpSZXZpZXdlZC1ieTogQ2hl
bmJvIFhpYSA8Y2hlbmJvLnhpYUBpbnRlbC5jb20+DQoNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE1h
eGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+IC0tLQ0KPiAgZHJp
dmVycy9uZXQvdmlydGlvL21lc29uLmJ1aWxkICAgICAgICAgfCAgIDEgKw0KPiAgZHJpdmVycy9u
ZXQvdmlydGlvL3ZpcnRpb19ldGhkZXYuYyAgICAgfCAxMTQgKy0tLS0tLS0tLS0tLS0tLS0tLQ0K
PiAgZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19ldGhkZXYuaCAgICAgfCAgIDIgKw0KPiAgZHJp
dmVycy9uZXQvdmlydGlvL3ZpcnRpb19wY2lfZXRoZGV2LmMgfCAxNDggKysrKysrKysrKysrKysr
KysrKysrKysrKw0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAxNTYgaW5zZXJ0aW9ucygrKSwgMTA5IGRl
bGV0aW9ucygtKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3ZpcnRpby92aXJ0
aW9fcGNpX2V0aGRldi5jDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlydGlvL21l
c29uLmJ1aWxkIGIvZHJpdmVycy9uZXQvdmlydGlvL21lc29uLmJ1aWxkDQo+IGluZGV4IGVhZWQ0
NjM3M2QuLjhlMGYxYTk5NTEgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRpby9tZXNv
bi5idWlsZA0KPiArKysgYi9kcml2ZXJzL25ldC92aXJ0aW8vbWVzb24uYnVpbGQNCj4gQEAgLTIs
NiArMiw3IEBADQo+ICAjIENvcHlyaWdodChjKSAyMDE4IEludGVsIENvcnBvcmF0aW9uDQo+IA0K
PiAgc291cmNlcyArPSBmaWxlcygndmlydGlvX2V0aGRldi5jJywNCj4gKwkndmlydGlvX3BjaV9l
dGhkZXYuYycsDQo+ICAJJ3ZpcnRpb19wY2kuYycsDQo+ICAJJ3ZpcnRpb19yeHR4LmMnLA0KPiAg
CSd2aXJ0aW9fcnh0eF9zaW1wbGUuYycsDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aXJ0
aW8vdmlydGlvX2V0aGRldi5jDQo+IGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19ldGhkZXYu
Yw0KPiBpbmRleCA5OWE1YTFiYjg4Li5jYTIxYTAxOWU1IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJz
L25ldC92aXJ0aW8vdmlydGlvX2V0aGRldi5jDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpby92
aXJ0aW9fZXRoZGV2LmMNCj4gQEAgLTM4LDE3ICszOCwxNCBAQA0KPiAgI2luY2x1ZGUgInZpcnRp
b19yeHR4LmgiDQo+ICAjaW5jbHVkZSAidmlydGlvX3VzZXIvdmlydGlvX3VzZXJfZGV2LmgiDQo+
IA0KPiAtc3RhdGljIGludCBldGhfdmlydGlvX2Rldl91bmluaXQoc3RydWN0IHJ0ZV9ldGhfZGV2
ICpldGhfZGV2KTsNCj4gIHN0YXRpYyBpbnQgIHZpcnRpb19kZXZfY29uZmlndXJlKHN0cnVjdCBy
dGVfZXRoX2RldiAqZGV2KTsNCj4gIHN0YXRpYyBpbnQgIHZpcnRpb19kZXZfc3RhcnQoc3RydWN0
IHJ0ZV9ldGhfZGV2ICpkZXYpOw0KPiAtc3RhdGljIGludCAgdmlydGlvX2Rldl9zdG9wKHN0cnVj
dCBydGVfZXRoX2RldiAqZGV2KTsNCj4gIHN0YXRpYyBpbnQgdmlydGlvX2Rldl9wcm9taXNjdW91
c19lbmFibGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOw0KPiAgc3RhdGljIGludCB2aXJ0aW9f
ZGV2X3Byb21pc2N1b3VzX2Rpc2FibGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOw0KPiAgc3Rh
dGljIGludCB2aXJ0aW9fZGV2X2FsbG11bHRpY2FzdF9lbmFibGUoc3RydWN0IHJ0ZV9ldGhfZGV2
ICpkZXYpOw0KPiAgc3RhdGljIGludCB2aXJ0aW9fZGV2X2FsbG11bHRpY2FzdF9kaXNhYmxlKHN0
cnVjdCBydGVfZXRoX2RldiAqZGV2KTsNCj4gIHN0YXRpYyB1aW50MzJfdCB2aXJ0aW9fZGV2X3Nw
ZWVkX2NhcGFfZ2V0KHVpbnQzMl90IHNwZWVkKTsNCj4gIHN0YXRpYyBpbnQgdmlydGlvX2Rldl9k
ZXZhcmdzX3BhcnNlKHN0cnVjdCBydGVfZGV2YXJncyAqZGV2YXJncywNCj4gLQlpbnQgKnZkcGEs
DQo+ICAJdWludDMyX3QgKnNwZWVkLA0KPiAgCWludCAqdmVjdG9yaXplZCk7DQo+ICBzdGF0aWMg
aW50IHZpcnRpb19kZXZfaW5mb19nZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+IEBAIC04
OSwxNSArODYsNiBAQCBzdGF0aWMgaW50IHZpcnRpb19kZXZfcXVldWVfc3RhdHNfbWFwcGluZ19z
ZXQoDQo+ICBzdGF0aWMgdm9pZCB2aXJ0aW9fbm90aWZ5X3BlZXJzKHN0cnVjdCBydGVfZXRoX2Rl
diAqZGV2KTsNCj4gIHN0YXRpYyB2b2lkIHZpcnRpb19hY2tfbGlua19hbm5vdW5jZShzdHJ1Y3Qg
cnRlX2V0aF9kZXYgKmRldik7DQo+IA0KPiAtLyoNCj4gLSAqIFRoZSBzZXQgb2YgUENJIGRldmlj
ZXMgdGhpcyBkcml2ZXIgc3VwcG9ydHMNCj4gLSAqLw0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBy
dGVfcGNpX2lkIHBjaV9pZF92aXJ0aW9fbWFwW10gPSB7DQo+IC0JeyBSVEVfUENJX0RFVklDRShW
SVJUSU9fUENJX1ZFTkRPUklELCBWSVJUSU9fUENJX0xFR0FDWV9ERVZJQ0VJRF9ORVQpIH0sDQo+
IC0JeyBSVEVfUENJX0RFVklDRShWSVJUSU9fUENJX1ZFTkRPUklELCBWSVJUSU9fUENJX01PREVS
Tl9ERVZJQ0VJRF9ORVQpIH0sDQo+IC0JeyAudmVuZG9yX2lkID0gMCwgLyogc2VudGluZWwgKi8g
fSwNCj4gLX07DQo+IC0NCj4gIHN0cnVjdCBydGVfdmlydGlvX3hzdGF0c19uYW1lX29mZiB7DQo+
ICAJY2hhciBuYW1lW1JURV9FVEhfWFNUQVRTX05BTUVfU0laRV07DQo+ICAJdW5zaWduZWQgb2Zm
c2V0Ow0KPiBAQCAtNzE0LDcgKzcwMiw3IEBAIHZpcnRpb19hbGxvY19xdWV1ZXMoc3RydWN0IHJ0
ZV9ldGhfZGV2ICpkZXYpDQo+IA0KPiAgc3RhdGljIHZvaWQgdmlydGlvX3F1ZXVlc191bmJpbmRf
aW50cihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7DQo+IA0KPiAtc3RhdGljIGludA0KPiAraW50
DQo+ICB2aXJ0aW9fZGV2X2Nsb3NlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQ0KPiAgew0KPiAg
CXN0cnVjdCB2aXJ0aW9faHcgKmh3ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4gQEAgLTE5
MjksOCArMTkxNyw3IEBAIGV0aF92aXJ0aW9fZGV2X2luaXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpl
dGhfZGV2KQ0KPiANCj4gIAkJcmV0dXJuIDA7DQo+ICAJfQ0KPiAtCXJldCA9IHZpcnRpb19kZXZf
ZGV2YXJnc19wYXJzZShldGhfZGV2LT5kZXZpY2UtPmRldmFyZ3MsDQo+IC0JCSBOVUxMLCAmc3Bl
ZWQsICZ2ZWN0b3JpemVkKTsNCj4gKwlyZXQgPSB2aXJ0aW9fZGV2X2RldmFyZ3NfcGFyc2UoZXRo
X2Rldi0+ZGV2aWNlLT5kZXZhcmdzLCAmc3BlZWQsDQo+ICZ2ZWN0b3JpemVkKTsNCj4gIAlpZiAo
cmV0IDwgMCkNCj4gIAkJcmV0dXJuIHJldDsNCj4gIAlody0+c3BlZWQgPSBzcGVlZDsNCj4gQEAg
LTE5OTIsMzYgKzE5NzksNiBAQCBldGhfdmlydGlvX2Rldl9pbml0KHN0cnVjdCBydGVfZXRoX2Rl
diAqZXRoX2RldikNCj4gIAlyZXR1cm4gcmV0Ow0KPiAgfQ0KPiANCj4gLXN0YXRpYyBpbnQNCj4g
LWV0aF92aXJ0aW9fZGV2X3VuaW5pdChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYpDQo+IC17
DQo+IC0JaW50IHJldDsNCj4gLQlQTURfSU5JVF9GVU5DX1RSQUNFKCk7DQo+IC0NCj4gLQlpZiAo
cnRlX2VhbF9wcm9jZXNzX3R5cGUoKSA9PSBSVEVfUFJPQ19TRUNPTkRBUlkpDQo+IC0JCXJldHVy
biAwOw0KPiAtDQo+IC0JcmV0ID0gdmlydGlvX2Rldl9zdG9wKGV0aF9kZXYpOw0KPiAtCXZpcnRp
b19kZXZfY2xvc2UoZXRoX2Rldik7DQo+IC0NCj4gLQlQTURfSU5JVF9MT0coREVCVUcsICJkZXZf
dW5pbml0IGNvbXBsZXRlZCIpOw0KPiAtDQo+IC0JcmV0dXJuIHJldDsNCj4gLX0NCj4gLQ0KPiAt
DQo+IC1zdGF0aWMgaW50IHZkcGFfY2hlY2tfaGFuZGxlcihfX3J0ZV91bnVzZWQgY29uc3QgY2hh
ciAqa2V5LA0KPiAtCQljb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqcmV0X3ZhbCkNCj4gLXsNCj4g
LQlpZiAoc3RyY21wKHZhbHVlLCAiMSIpID09IDApDQo+IC0JCSooaW50ICopcmV0X3ZhbCA9IDE7
DQo+IC0JZWxzZQ0KPiAtCQkqKGludCAqKXJldF92YWwgPSAwOw0KPiAtDQo+IC0JcmV0dXJuIDA7
DQo+IC19DQo+IC0NCj4gLQ0KPiAgc3RhdGljIHVpbnQzMl90DQo+ICB2aXJ0aW9fZGV2X3NwZWVk
X2NhcGFfZ2V0KHVpbnQzMl90IHNwZWVkKQ0KPiAgew0KPiBAQCAtMjA1OSwxMCArMjAxNiw4IEBA
IHN0YXRpYyBpbnQgdmVjdG9yaXplZF9jaGVja19oYW5kbGVyKF9fcnRlX3VudXNlZCBjb25zdA0K
PiBjaGFyICprZXksDQo+ICB9DQo+IA0KPiAgI2RlZmluZSBWSVJUSU9fQVJHX1NQRUVEICAgICAg
InNwZWVkIg0KPiAtI2RlZmluZSBWSVJUSU9fQVJHX1ZEUEEgICAgICAgInZkcGEiDQo+ICAjZGVm
aW5lIFZJUlRJT19BUkdfVkVDVE9SSVpFRCAidmVjdG9yaXplZCINCj4gDQo+IC0NCj4gIHN0YXRp
YyBpbnQNCj4gIGxpbmtfc3BlZWRfaGFuZGxlcihjb25zdCBjaGFyICprZXkgX19ydGVfdW51c2Vk
LA0KPiAgCQljb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqcmV0X3ZhbCkNCj4gQEAgLTIwODEsOCAr
MjAzNiw3IEBAIGxpbmtfc3BlZWRfaGFuZGxlcihjb25zdCBjaGFyICprZXkgX19ydGVfdW51c2Vk
LA0KPiANCj4gDQo+ICBzdGF0aWMgaW50DQo+IC12aXJ0aW9fZGV2X2RldmFyZ3NfcGFyc2Uoc3Ry
dWN0IHJ0ZV9kZXZhcmdzICpkZXZhcmdzLCBpbnQgKnZkcGEsDQo+IC0JdWludDMyX3QgKnNwZWVk
LCBpbnQgKnZlY3Rvcml6ZWQpDQo+ICt2aXJ0aW9fZGV2X2RldmFyZ3NfcGFyc2Uoc3RydWN0IHJ0
ZV9kZXZhcmdzICpkZXZhcmdzLCB1aW50MzJfdCAqc3BlZWQsIGludA0KPiAqdmVjdG9yaXplZCkN
Cj4gIHsNCj4gIAlzdHJ1Y3QgcnRlX2t2YXJncyAqa3ZsaXN0Ow0KPiAgCWludCByZXQgPSAwOw0K
PiBAQCAtMjA5NSwxOCArMjA0OSw3IEBAIHZpcnRpb19kZXZfZGV2YXJnc19wYXJzZShzdHJ1Y3Qg
cnRlX2RldmFyZ3MgKmRldmFyZ3MsDQo+IGludCAqdmRwYSwNCj4gIAkJUE1EX0lOSVRfTE9HKEVS
UiwgImVycm9yIHdoZW4gcGFyc2luZyBwYXJhbSIpOw0KPiAgCQlyZXR1cm4gMDsNCj4gIAl9DQo+
IC0JaWYgKHZkcGEgJiYgcnRlX2t2YXJnc19jb3VudChrdmxpc3QsIFZJUlRJT19BUkdfVkRQQSkg
PT0gMSkgew0KPiAtCQkvKiB2ZHBhIG1vZGUgc2VsZWN0ZWQgd2hlbiB0aGVyZSdzIGEga2V5LXZh
bHVlIHBhaXI6DQo+IC0JCSAqIHZkcGE9MQ0KPiAtCQkgKi8NCj4gLQkJcmV0ID0gcnRlX2t2YXJn
c19wcm9jZXNzKGt2bGlzdCwgVklSVElPX0FSR19WRFBBLA0KPiAtCQkJCXZkcGFfY2hlY2tfaGFu
ZGxlciwgdmRwYSk7DQo+IC0JCWlmIChyZXQgPCAwKSB7DQo+IC0JCQlQTURfSU5JVF9MT0coRVJS
LCAiRmFpbGVkIHRvIHBhcnNlICVzIiwNCj4gLQkJCQlWSVJUSU9fQVJHX1ZEUEEpOw0KPiAtCQkJ
Z290byBleGl0Ow0KPiAtCQl9DQo+IC0JfQ0KPiArDQo+ICAJaWYgKHNwZWVkICYmIHJ0ZV9rdmFy
Z3NfY291bnQoa3ZsaXN0LCBWSVJUSU9fQVJHX1NQRUVEKSA9PSAxKSB7DQo+ICAJCXJldCA9IHJ0
ZV9rdmFyZ3NfcHJvY2Vzcyhrdmxpc3QsDQo+ICAJCQkJCVZJUlRJT19BUkdfU1BFRUQsDQo+IEBA
IC0yMTM1LDUyICsyMDc4LDcgQEAgdmlydGlvX2Rldl9kZXZhcmdzX3BhcnNlKHN0cnVjdCBydGVf
ZGV2YXJncyAqZGV2YXJncywNCj4gaW50ICp2ZHBhLA0KPiAgCXJldHVybiByZXQ7DQo+ICB9DQo+
IA0KPiAtc3RhdGljIGludCBldGhfdmlydGlvX3BjaV9wcm9iZShzdHJ1Y3QgcnRlX3BjaV9kcml2
ZXIgKnBjaV9kcnYgX19ydGVfdW51c2VkLA0KPiAtCXN0cnVjdCBydGVfcGNpX2RldmljZSAqcGNp
X2RldikNCj4gLXsNCj4gLQlpbnQgdmRwYSA9IDA7DQo+IC0JaW50IHJldCA9IDA7DQo+IC0NCj4g
LQlyZXQgPSB2aXJ0aW9fZGV2X2RldmFyZ3NfcGFyc2UocGNpX2Rldi0+ZGV2aWNlLmRldmFyZ3Ms
ICZ2ZHBhLCBOVUxMLA0KPiAtCQlOVUxMKTsNCj4gLQlpZiAocmV0IDwgMCkgew0KPiAtCQlQTURf
SU5JVF9MT0coRVJSLCAiZGV2YXJncyBwYXJzaW5nIGlzIGZhaWxlZCIpOw0KPiAtCQlyZXR1cm4g
cmV0Ow0KPiAtCX0NCj4gLQkvKiB2aXJ0aW8gcG1kIHNraXBzIHByb2JlIGlmIGRldmljZSBuZWVk
cyB0byB3b3JrIGluIHZkcGEgbW9kZSAqLw0KPiAtCWlmICh2ZHBhID09IDEpDQo+IC0JCXJldHVy
biAxOw0KPiAtDQo+IC0JcmV0dXJuIHJ0ZV9ldGhfZGV2X3BjaV9nZW5lcmljX3Byb2JlKHBjaV9k
ZXYsIHNpemVvZihzdHJ1Y3QNCj4gdmlydGlvX3BjaV9kZXYpLA0KPiAtCQlldGhfdmlydGlvX2Rl
dl9pbml0KTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGludCBldGhfdmlydGlvX3BjaV9yZW1vdmUo
c3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpwY2lfZGV2KQ0KPiAtew0KPiAtCWludCByZXQ7DQo+IC0N
Cj4gLQlyZXQgPSBydGVfZXRoX2Rldl9wY2lfZ2VuZXJpY19yZW1vdmUocGNpX2RldiwgZXRoX3Zp
cnRpb19kZXZfdW5pbml0KTsNCj4gLQkvKiBQb3J0IGhhcyBhbHJlYWR5IGJlZW4gcmVsZWFzZWQg
YnkgY2xvc2UuICovDQo+IC0JaWYgKHJldCA9PSAtRU5PREVWKQ0KPiAtCQlyZXQgPSAwOw0KPiAt
CXJldHVybiByZXQ7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBzdHJ1Y3QgcnRlX3BjaV9kcml2ZXIg
cnRlX3ZpcnRpb19wbWQgPSB7DQo+IC0JLmRyaXZlciA9IHsNCj4gLQkJLm5hbWUgPSAibmV0X3Zp
cnRpbyIsDQo+IC0JfSwNCj4gLQkuaWRfdGFibGUgPSBwY2lfaWRfdmlydGlvX21hcCwNCj4gLQku
ZHJ2X2ZsYWdzID0gMCwNCj4gLQkucHJvYmUgPSBldGhfdmlydGlvX3BjaV9wcm9iZSwNCj4gLQku
cmVtb3ZlID0gZXRoX3ZpcnRpb19wY2lfcmVtb3ZlLA0KPiAtfTsNCj4gDQo+IC1SVEVfSU5JVChy
dGVfdmlydGlvX3BtZF9pbml0KQ0KPiAtew0KPiAtCXJ0ZV9lYWxfaW9wbF9pbml0KCk7DQo+IC0J
cnRlX3BjaV9yZWdpc3RlcigmcnRlX3ZpcnRpb19wbWQpOw0KPiAtfQ0KPiANCj4gIHN0YXRpYyBi
b29sDQo+ICByeF9vZmZsb2FkX2VuYWJsZWQoc3RydWN0IHZpcnRpb19odyAqaHcpDQo+IEBAIC0y
NTIxLDcgKzI0MTksNyBAQCBzdGF0aWMgdm9pZCB2aXJ0aW9fZGV2X2ZyZWVfbWJ1ZnMoc3RydWN0
IHJ0ZV9ldGhfZGV2DQo+ICpkZXYpDQo+ICAvKg0KPiAgICogU3RvcCBkZXZpY2U6IGRpc2FibGUg
aW50ZXJydXB0IGFuZCBtYXJrIGxpbmsgZG93bg0KPiAgICovDQo+IC1zdGF0aWMgaW50DQo+ICtp
bnQNCj4gIHZpcnRpb19kZXZfc3RvcChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikNCj4gIHsNCj4g
IAlzdHJ1Y3QgdmlydGlvX2h3ICpodyA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+IEBAIC0y
NjczLDcgKzI1NzEsNSBAQCBfX3J0ZV91bnVzZWQgdWludDhfdCBpc19yeCkNCj4gIH0NCj4gDQo+
ICBSVEVfUE1EX0VYUE9SVF9OQU1FKG5ldF92aXJ0aW8sIF9fQ09VTlRFUl9fKTsNCj4gLVJURV9Q
TURfUkVHSVNURVJfUENJX1RBQkxFKG5ldF92aXJ0aW8sIHBjaV9pZF92aXJ0aW9fbWFwKTsNCj4g
LVJURV9QTURfUkVHSVNURVJfS01PRF9ERVAobmV0X3ZpcnRpbywgIiogaWdiX3VpbyB8IHVpb19w
Y2lfZ2VuZXJpYyB8IHZmaW8tDQo+IHBjaSIpOw0KPiAgUlRFX0xPR19SRUdJU1RFUih2aXJ0aW9f
bG9ndHlwZV9pbml0LCBwbWQubmV0LnZpcnRpby5pbml0LCBOT1RJQ0UpOw0KPiAgUlRFX0xPR19S
RUdJU1RFUih2aXJ0aW9fbG9ndHlwZV9kcml2ZXIsIHBtZC5uZXQudmlydGlvLmRyaXZlciwgTk9U
SUNFKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fZXRoZGV2LmgN
Cj4gYi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX2V0aGRldi5oDQo+IGluZGV4IGI3ZDUyZDQ5
N2YuLjEzMzk1OTM3YzggMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9f
ZXRoZGV2LmgNCj4gKysrIGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19ldGhkZXYuaA0KPiBA
QCAtMTE3LDYgKzExNyw4IEBAIHZvaWQgdmlydGlvX2ludGVycnVwdF9oYW5kbGVyKHZvaWQgKnBh
cmFtKTsNCj4gDQo+ICBpbnQgdmlydGlvX2Rldl9wYXVzZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl
dik7DQo+ICB2b2lkIHZpcnRpb19kZXZfcmVzdW1lKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsN
Cj4gK2ludCB2aXJ0aW9fZGV2X3N0b3Aoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOw0KPiAraW50
IHZpcnRpb19kZXZfY2xvc2Uoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOw0KPiAgaW50IHZpcnRp
b19pbmplY3RfcGt0cyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgc3RydWN0IHJ0ZV9tYnVmICoq
dHhfcGt0cywNCj4gIAkJaW50IG5iX3BrdHMpOw0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv
bmV0L3ZpcnRpby92aXJ0aW9fcGNpX2V0aGRldi5jDQo+IGIvZHJpdmVycy9uZXQvdmlydGlvL3Zp
cnRpb19wY2lfZXRoZGV2LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw
MDAwMC4uOWMwOTM1MDY4ZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3Zp
cnRpby92aXJ0aW9fcGNpX2V0aGRldi5jDQo+IEBAIC0wLDAgKzEsMTQ4IEBADQo+ICsvKiBTUERY
LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ICsgKiBDb3B5cmlnaHQoYykgMjAx
MC0yMDE2IEludGVsIENvcnBvcmF0aW9uDQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPHN0ZGlu
dC5oPg0KPiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPiArI2luY2x1ZGUgPHN0ZGlvLmg+DQo+ICsj
aW5jbHVkZSA8ZXJybm8uaD4NCj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4NCj4gKw0KPiArI2luY2x1
ZGUgPHJ0ZV9ldGhkZXZfZHJpdmVyLmg+DQo+ICsjaW5jbHVkZSA8cnRlX2V0aGRldl9wY2kuaD4N
Cj4gKyNpbmNsdWRlIDxydGVfcGNpLmg+DQo+ICsjaW5jbHVkZSA8cnRlX2J1c19wY2kuaD4NCj4g
KyNpbmNsdWRlIDxydGVfZXJybm8uaD4NCj4gKw0KPiArI2luY2x1ZGUgPHJ0ZV9tZW1vcnkuaD4N
Cj4gKyNpbmNsdWRlIDxydGVfZWFsLmg+DQo+ICsjaW5jbHVkZSA8cnRlX2Rldi5oPg0KPiArI2lu
Y2x1ZGUgPHJ0ZV9rdmFyZ3MuaD4NCj4gKw0KPiArI2luY2x1ZGUgInZpcnRpb19ldGhkZXYuaCIN
Cj4gKyNpbmNsdWRlICJ2aXJ0aW9fcGNpLmgiDQo+ICsjaW5jbHVkZSAidmlydGlvX2xvZ3MuaCIN
Cj4gKw0KPiArLyoNCj4gKyAqIFRoZSBzZXQgb2YgUENJIGRldmljZXMgdGhpcyBkcml2ZXIgc3Vw
cG9ydHMNCj4gKyAqLw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBydGVfcGNpX2lkIHBjaV9pZF92
aXJ0aW9fbWFwW10gPSB7DQo+ICsJeyBSVEVfUENJX0RFVklDRShWSVJUSU9fUENJX1ZFTkRPUklE
LCBWSVJUSU9fUENJX0xFR0FDWV9ERVZJQ0VJRF9ORVQpIH0sDQo+ICsJeyBSVEVfUENJX0RFVklD
RShWSVJUSU9fUENJX1ZFTkRPUklELCBWSVJUSU9fUENJX01PREVSTl9ERVZJQ0VJRF9ORVQpIH0s
DQo+ICsJeyAudmVuZG9yX2lkID0gMCwgLyogc2VudGluZWwgKi8gfSwNCj4gK307DQo+ICsNCj4g
K3N0YXRpYyBpbnQNCj4gK2V0aF92aXJ0aW9fcGNpX2luaXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpl
dGhfZGV2KQ0KPiArew0KPiArCXJldHVybiBldGhfdmlydGlvX2Rldl9pbml0KGV0aF9kZXYpOw0K
PiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICtldGhfdmlydGlvX3BjaV91bmluaXQoc3RydWN0
IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KQ0KPiArew0KPiArCWludCByZXQ7DQo+ICsJUE1EX0lOSVRf
RlVOQ19UUkFDRSgpOw0KPiArDQo+ICsJaWYgKHJ0ZV9lYWxfcHJvY2Vzc190eXBlKCkgPT0gUlRF
X1BST0NfU0VDT05EQVJZKQ0KPiArCQlyZXR1cm4gMDsNCj4gKw0KPiArCXJldCA9IHZpcnRpb19k
ZXZfc3RvcChldGhfZGV2KTsNCj4gKwl2aXJ0aW9fZGV2X2Nsb3NlKGV0aF9kZXYpOw0KPiArDQo+
ICsJUE1EX0lOSVRfTE9HKERFQlVHLCAiZGV2X3VuaW5pdCBjb21wbGV0ZWQiKTsNCj4gKw0KPiAr
CXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgdmRwYV9jaGVja19oYW5kbGVy
KF9fcnRlX3VudXNlZCBjb25zdCBjaGFyICprZXksDQo+ICsJCWNvbnN0IGNoYXIgKnZhbHVlLCB2
b2lkICpyZXRfdmFsKQ0KPiArew0KPiArCWlmIChzdHJjbXAodmFsdWUsICIxIikgPT0gMCkNCj4g
KwkJKihpbnQgKilyZXRfdmFsID0gMTsNCj4gKwllbHNlDQo+ICsJCSooaW50ICopcmV0X3ZhbCA9
IDA7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArI2RlZmluZSBWSVJUSU9fQVJH
X1ZEUEEgICAgICAgInZkcGEiDQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3ZpcnRpb19wY2lfZGV2
YXJnc19wYXJzZShzdHJ1Y3QgcnRlX2RldmFyZ3MgKmRldmFyZ3MsIGludCAqdmRwYSkNCj4gK3sN
Cj4gKwlzdHJ1Y3QgcnRlX2t2YXJncyAqa3ZsaXN0Ow0KPiArCWludCByZXQgPSAwOw0KPiArDQo+
ICsJaWYgKGRldmFyZ3MgPT0gTlVMTCkNCj4gKwkJcmV0dXJuIDA7DQo+ICsNCj4gKwlrdmxpc3Qg
PSBydGVfa3ZhcmdzX3BhcnNlKGRldmFyZ3MtPmFyZ3MsIE5VTEwpOw0KPiArCWlmIChrdmxpc3Qg
PT0gTlVMTCkgew0KPiArCQlQTURfSU5JVF9MT0coRVJSLCAiZXJyb3Igd2hlbiBwYXJzaW5nIHBh
cmFtIik7DQo+ICsJCXJldHVybiAwOw0KPiArCX0NCj4gKw0KPiArCWlmICh2ZHBhICYmIHJ0ZV9r
dmFyZ3NfY291bnQoa3ZsaXN0LCBWSVJUSU9fQVJHX1ZEUEEpID09IDEpIHsNCj4gKwkJLyogdmRw
YSBtb2RlIHNlbGVjdGVkIHdoZW4gdGhlcmUncyBhIGtleS12YWx1ZSBwYWlyOg0KPiArCQkgKiB2
ZHBhPTENCj4gKwkJICovDQo+ICsJCXJldCA9IHJ0ZV9rdmFyZ3NfcHJvY2Vzcyhrdmxpc3QsIFZJ
UlRJT19BUkdfVkRQQSwNCj4gKwkJCQl2ZHBhX2NoZWNrX2hhbmRsZXIsIHZkcGEpOw0KPiArCQlp
ZiAocmV0IDwgMCkNCj4gKwkJCVBNRF9JTklUX0xPRyhFUlIsICJGYWlsZWQgdG8gcGFyc2UgJXMi
LCBWSVJUSU9fQVJHX1ZEUEEpOw0KPiArCX0NCj4gKw0KPiArCXJ0ZV9rdmFyZ3NfZnJlZShrdmxp
c3QpOw0KPiArDQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBldGhf
dmlydGlvX3BjaV9wcm9iZShzdHJ1Y3QgcnRlX3BjaV9kcml2ZXIgKnBjaV9kcnYgX19ydGVfdW51
c2VkLA0KPiArCXN0cnVjdCBydGVfcGNpX2RldmljZSAqcGNpX2RldikNCj4gK3sNCj4gKwlpbnQg
dmRwYSA9IDA7DQo+ICsJaW50IHJldCA9IDA7DQo+ICsNCj4gKwlyZXQgPSB2aXJ0aW9fcGNpX2Rl
dmFyZ3NfcGFyc2UocGNpX2Rldi0+ZGV2aWNlLmRldmFyZ3MsICZ2ZHBhKTsNCj4gKwlpZiAocmV0
IDwgMCkgew0KPiArCQlQTURfSU5JVF9MT0coRVJSLCAiZGV2YXJncyBwYXJzaW5nIGlzIGZhaWxl
ZCIpOw0KPiArCQlyZXR1cm4gcmV0Ow0KPiArCX0NCj4gKwkvKiB2aXJ0aW8gcG1kIHNraXBzIHBy
b2JlIGlmIGRldmljZSBuZWVkcyB0byB3b3JrIGluIHZkcGEgbW9kZSAqLw0KPiArCWlmICh2ZHBh
ID09IDEpDQo+ICsJCXJldHVybiAxOw0KPiArDQo+ICsJcmV0dXJuIHJ0ZV9ldGhfZGV2X3BjaV9n
ZW5lcmljX3Byb2JlKHBjaV9kZXYsIHNpemVvZihzdHJ1Y3QNCj4gdmlydGlvX3BjaV9kZXYpLA0K
PiArCQlldGhfdmlydGlvX3BjaV9pbml0KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBldGhf
dmlydGlvX3BjaV9yZW1vdmUoc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpwY2lfZGV2KQ0KPiArew0K
PiArCWludCByZXQ7DQo+ICsNCj4gKwlyZXQgPSBydGVfZXRoX2Rldl9wY2lfZ2VuZXJpY19yZW1v
dmUocGNpX2RldiwgZXRoX3ZpcnRpb19wY2lfdW5pbml0KTsNCj4gKwkvKiBQb3J0IGhhcyBhbHJl
YWR5IGJlZW4gcmVsZWFzZWQgYnkgY2xvc2UuICovDQo+ICsJaWYgKHJldCA9PSAtRU5PREVWKQ0K
PiArCQlyZXQgPSAwOw0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzdHJ1
Y3QgcnRlX3BjaV9kcml2ZXIgcnRlX3ZpcnRpb19wbWQgPSB7DQo+ICsJLmRyaXZlciA9IHsNCj4g
KwkJLm5hbWUgPSAibmV0X3ZpcnRpbyIsDQo+ICsJfSwNCj4gKwkuaWRfdGFibGUgPSBwY2lfaWRf
dmlydGlvX21hcCwNCj4gKwkuZHJ2X2ZsYWdzID0gMCwNCj4gKwkucHJvYmUgPSBldGhfdmlydGlv
X3BjaV9wcm9iZSwNCj4gKwkucmVtb3ZlID0gZXRoX3ZpcnRpb19wY2lfcmVtb3ZlLA0KPiArfTsN
Cj4gKw0KPiArUlRFX0lOSVQocnRlX3ZpcnRpb19wbWRfaW5pdCkNCj4gK3sNCj4gKwlydGVfZWFs
X2lvcGxfaW5pdCgpOw0KPiArCXJ0ZV9wY2lfcmVnaXN0ZXIoJnJ0ZV92aXJ0aW9fcG1kKTsNCj4g
K30NCj4gKw0KPiArUlRFX1BNRF9SRUdJU1RFUl9QQ0lfVEFCTEUobmV0X3ZpcnRpbywgcGNpX2lk
X3ZpcnRpb19tYXApOw0KPiArUlRFX1BNRF9SRUdJU1RFUl9LTU9EX0RFUChuZXRfdmlydGlvLCAi
KiBpZ2JfdWlvIHwgdWlvX3BjaV9nZW5lcmljIHwgdmZpby0NCj4gcGNpIik7DQo+IC0tDQo+IDIu
MjkuMg0KDQo=