From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 576EBA0A0A;
	Fri, 22 Jan 2021 09:10:36 +0100 (CET)
Received: from [217.70.189.124] (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id D8459140D25;
	Fri, 22 Jan 2021 09:10:35 +0100 (CET)
Received: from mga18.intel.com (mga18.intel.com [134.134.136.126])
 by mails.dpdk.org (Postfix) with ESMTP id 5B6E7140CFC
 for <dev@dpdk.org>; Fri, 22 Jan 2021 09:10:34 +0100 (CET)
IronPort-SDR: XKiaqNAVLfQsrPqtCyDc9niREVEsJfgMsyd41Tu3WezPscZz3yKuoyl/obSon12eOJfbm8DXFg
 QWRmEW+XLMlw==
X-IronPort-AV: E=McAfee;i="6000,8403,9871"; a="167091183"
X-IronPort-AV: E=Sophos;i="5.79,366,1602572400"; d="scan'208";a="167091183"
Received: from orsmga002.jf.intel.com ([10.7.209.21])
 by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 22 Jan 2021 00:10:33 -0800
IronPort-SDR: Xt7hOVUXvLTF3n/aqawxSuuqWqZAAb6R/TJNWyiA8Qd3TyA+Wnk7CksRMtWnhieRmIpeo6fQXK
 IdI6mrcOuksg==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.79,366,1602572400"; d="scan'208";a="367268550"
Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82])
 by orsmga002.jf.intel.com with ESMTP; 22 Jan 2021 00:10:33 -0800
Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) 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.2106.2; Fri, 22 Jan 2021 00:10:32 -0800
Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by
 fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.1713.5; Fri, 22 Jan 2021 00:10:32 -0800
Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by
 fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5
 via Frontend Transport; Fri, 22 Jan 2021 00:10:32 -0800
Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.48) by
 edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.1.1713.5; Fri, 22 Jan 2021 00:10:32 -0800
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Q4YwZoAIvqaMhKWiGxVQPjVpL4B8weSXEsSEl/NCZMbxyr8APefw90GSPv2p4MGGYLAodzvslUvNkHHPpE1hTvXt4nW1KQ8unUd8nxarvToNVt2tco5Fwr8csoJMe3eQ6HEDJYvpM4ZRoUqgTDwb6qiQqK0JFj5eCmqzkpvYI0a7STInhQwwMPYSUdVUiCOOTkYU8ZhwfBrmz7FCpIH40hSg2mue44wD/WQOpwTTc8jDnZepx+UZkMHw61LR7vUSXtxdVSHoYCB4D6Y9fNs3BiZy5zCrsWf7f7qwDi0d7isWO/2B3ew22LgTxR8loThUe9ozbcmA+jrjKO6EP9YXEw==
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=p2t5gneW4ff0iQSK+d+hMsozvHl3qlCKSyd1ZBH7pGU=;
 b=NbhSua60VxdR0j5Akw1jfPd5DtejnUHKNuoPuKJBEOoTDSMUBEz8D/cL6Jc/2wTipRZmbywCCZfggQMRzcl905NVDrvQV8neJnKrF6Nfcs8ikQMUklaFbkBKcfGXqtCIhQ4SfCzNcZWIy1AXOACJyhAEMV0OtX7eKMZjrpvkOmqu05chmAmVLktjQ98FPoaxtOXxC2Ee0ORQuSSzAx1+jsaapB65h/7D2hEskHMZowlPz21ru0za3zfqhyxio8nVhyK4Rex+F2U2ahpm/pIStzt2kIYX6F2M/epCmkHGP7cKuM9bmFbX/h/F/Vyi8NilzC12DcQJtNVBiwWUTGu26A==
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=p2t5gneW4ff0iQSK+d+hMsozvHl3qlCKSyd1ZBH7pGU=;
 b=MsVsDxLtbmrxIijygs/LYv7tyT0jbW/uXVuD0JOt4jsjlmyJNP8Hl5ofE1MJUuZBoGrH5Dm3QK5og/7ogrOKuqWRONhdWOh63iSSGsD85cKm0Ovkew+4d+iE4pGdbw7N0kF9y3VTW7Kk8ZWSQvgNTiDuVUk9O/fxDIZj865nyJc=
Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22)
 by MN2PR11MB3869.namprd11.prod.outlook.com (2603:10b6:208:138::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.12; Fri, 22 Jan
 2021 08:10:30 +0000
Received: from MN2PR11MB4063.namprd11.prod.outlook.com
 ([fe80::4c5:a27c:aab2:a2ed]) by MN2PR11MB4063.namprd11.prod.outlook.com
 ([fe80::4c5:a27c:aab2:a2ed%7]) with mapi id 15.20.3763.014; Fri, 22 Jan 2021
 08:10:30 +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 v2 35/44] net/virtio: improve Virtio-user errors handling
Thread-Index: AQHW7qoEU90Vf+Zhs0Otr2kqceUhPqozTgpg
Date: Fri, 22 Jan 2021 08:10:30 +0000
Message-ID: <MN2PR11MB40635D8688CAED4E9B881F9B9CA00@MN2PR11MB4063.namprd11.prod.outlook.com>
References: <20210119212507.1043636-1-maxime.coquelin@redhat.com>
 <20210119212507.1043636-36-maxime.coquelin@redhat.com>
In-Reply-To: <20210119212507.1043636-36-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: fd99fc0b-7386-41df-92b8-08d8bead2f7c
x-ms-traffictypediagnostic: MN2PR11MB3869:
x-microsoft-antispam-prvs: <MN2PR11MB3869E80BC7FF2E91319E25769CA09@MN2PR11MB3869.namprd11.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:245;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: pj5leiJJ9juDzntdJu6fdHD9c8/Zhs+wHD8NhZL34cxbEMqS0WclMS7J4BJZXdI2TD1bWrsc1tP2KK02oUTFO8tmcE49vWvTEj38G4in05IeEcfyMF67a6TOdjEKCGfWY4P/zgqd7brmkrqFUsLn22DkbehFgYLZhRz7RWxCEoeIQs9Z2HsGfPGGgo7DpOdVSUC/AUapkLfWjQYVKbOTsGpYU+1sl5ZiqSPt+56Cs6TLSfFUETZiDXL2HA5XNLchr3elEdk76LtqJroe8DZ1yelSkxOxdg81iCUPT+ZcJKNp5eqU9x6i7RfxP/Nqb+y2F1KbZ3/Oo/GqIRCu1SiX9USog0WWyXMaWRNjCMc85vPomoVi26MwlLccBYgZjJl4c73+rLaTEmFFnq/JMIFNJF5elAMq4czCBeCA5gvVqfgtwxmphFdfhjXJ7QD2k4ugJI9gstHZUuau0q1gL66RimEq7OFTOJQu2dqYn3pRIvvUtHqR13IwZcORUgn7Vdu6OZ9YUQjoIp2vfBT4O4i+Mw==
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)(396003)(376002)(366004)(39860400002)(346002)(136003)(33656002)(52536014)(83380400001)(86362001)(6506007)(53546011)(26005)(5660300002)(478600001)(30864003)(9686003)(8936002)(55016002)(8676002)(76116006)(71200400001)(186003)(316002)(110136005)(7696005)(66476007)(66446008)(66556008)(2906002)(66946007)(64756008);
 DIR:OUT; SFP:1102; 
x-ms-exchange-antispam-messagedata: =?utf-8?B?L2dUWVlGN3AzUGkxRUk1aVBZd0FkMGV3bmdkUTVicTFTS0NNZkpIRHpkVTF5?=
 =?utf-8?B?QTZQUkxaM3VnZk5pSEJGa3ZRbGRqKytEdlU0Um5aVTBKZGswSkg0QUptblAy?=
 =?utf-8?B?aVJqRlZENGZrdUxycERYWjR1WllGemtnemd0NlFLckcxK2JUdG9wQTYvdjlT?=
 =?utf-8?B?VUtudnRpdHdlL1pJQ3lSM29waEZhaFM2b3pjdGVUTmg4TDJUK04reWI3eXha?=
 =?utf-8?B?Z2Q0a0VadHUwRCt1cnRGTmRMWFRRRHFwTVVBcmNtaVkyQm11RGFHUGZONzAz?=
 =?utf-8?B?WW9ESWI3MGdBdUVjT01zck9QdTJNNlQwR055MXlNRGFOWDEzbThHSmlJdWxk?=
 =?utf-8?B?YTdCaWVOeVZGSmNRSnZ0SkpkUjRWcWhRcjQ4c25EZlJRYVdETHJGcXVyUlZ0?=
 =?utf-8?B?VndJYkY4NmpPMDhTbzVmR3VKUUhKK3Z3MERCUjRNYVlTemltLzZRdjZFRk1X?=
 =?utf-8?B?VjlsNEl6SmIxTk1NSzR6dUI3OE05S2VLUzlsSkZRZ3BwMVI4VFl4SHQwV3ll?=
 =?utf-8?B?MWgwRE41a1lxUEtpZW8zaVJwcTZtaGRUMHUyVzZRUlNhVVZVaEVJN0pQYUt4?=
 =?utf-8?B?WUdPZFRSTHJGRFNZTGswcGdiQWx6cEpEdVdCZ1pwdzV4VG5zUGE1K09vVUh6?=
 =?utf-8?B?WHkyQWY1YVoyRUxxY280eW1hUGRnSVBrQ2dzaDdpdGx2Wit4T2VDWTVUTGpU?=
 =?utf-8?B?TVQ3ck02RnV3dlkwdXVpcWtobmhMRmptd0RhVkxmUmJxQnZ1Z3ZGcjB3ZFZB?=
 =?utf-8?B?STBtZ0d6NmFzRHFzbW1raitOU0NvbHB4a244Q0QyQ2xnZk1Kd2FCdmZaWUVr?=
 =?utf-8?B?MjhEcTB0TXc0MUlQeUgwTzdjRXVjVHpnZFRwbm5teEhXbi9MaGdqMEliS2JV?=
 =?utf-8?B?bXBuNjF4cEhFMDdocW45YnhWM2IzM1dWUzh5bjliY0oyNWR4VzlOd2tCR3hx?=
 =?utf-8?B?ZEpKaDNxQlE5Rmw0dnhvSVZNMjFHcEQyME5KdDM3Q0NLZjkyQmt2MmtpdFNz?=
 =?utf-8?B?YnFabnR4Y0hlSTBUTHJjMkQwd1EzRUN2MTlEUW1uRlpxS1plSkQxK0FBTll4?=
 =?utf-8?B?T0drZmZZY1RySXJtWmduZWE4ZTZ3RmVwS1JVWFR1WFNnMTd2bVEyZ3htdWJq?=
 =?utf-8?B?dTJVTFJtVGgxSmpGSjMycDFuMDRuVTdEYnBqVTdzTHpRWEM2cUhvSElqU3p6?=
 =?utf-8?B?TkVvVGpJL0Iya3FNSE1qYm9ubXo3aHkzM0RaQzVicVlyOEV5MTl4Uzhzd0w5?=
 =?utf-8?B?M3BOSityQmtGcHJ5OWJQSTk5ek1xczVmRmtyM0V1bG9oTWRHZkw1SzhPRVlV?=
 =?utf-8?Q?noyJg51xk8dHLOfUvGTCTgOzQhYXhLyPte?=
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: fd99fc0b-7386-41df-92b8-08d8bead2f7c
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jan 2021 08:10:30.7228 (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: P6JhCrS8l6whhgyd/ZM/t+PGYcmO7AyJQ7/85QKiYzj5dabiZgGKB12iCVee9LSwIZQK7+duOSne05sPyY8ZNg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3869
X-OriginatorOrg: intel.com
Subject: Re: [dpdk-dev] [PATCH v2 35/44] net/virtio: improve Virtio-user
 errors handling
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
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>

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNYXhpbWUgQ29xdWVsaW4gPG1h
eGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIEphbnVhcnkgMjAs
IDIwMjEgNToyNSBBTQ0KPiBUbzogZGV2QGRwZGsub3JnOyBYaWEsIENoZW5ibyA8Y2hlbmJvLnhp
YUBpbnRlbC5jb20+OyBvbGl2aWVyLm1hdHpANndpbmQuY29tOw0KPiBhbW9yZW5vekByZWRoYXQu
Y29tOyBkYXZpZC5tYXJjaGFuZEByZWRoYXQuY29tDQo+IENjOiBNYXhpbWUgQ29xdWVsaW4gPG1h
eGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggdjIgMzUvNDRdIG5l
dC92aXJ0aW86IGltcHJvdmUgVmlydGlvLXVzZXIgZXJyb3JzIGhhbmRsaW5nDQo+IA0KPiBUaGlz
IHBhdGNoIGFkZHMgZXJyb3IgbG9ncyBhbmQgcHJvcGFnYXRlcyBlcnJvcnMgcmVwb3J0ZWQNCj4g
YnkgdGhlIGJhY2tlbmQuIEl0IGFsc28gYWRkcyB0aGUgZGV2aWNlIHBhdGggaW4gZXJyb3IgbG9n
cw0KPiB0byBtYWtlIGl0IGVhc2llciB0byBkaXN0aW5ndWlzaCB3aGljaCBkZXZpY2UgaXMgZmFj
aW5nIHRoZQ0KPiBpc3N1ZS4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE1heGltZSBDb3F1ZWxpbiA8
bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+IC0tLQ0KPiAgLi4uL25ldC92aXJ0aW8vdmly
dGlvX3VzZXIvdmlydGlvX3VzZXJfZGV2LmMgIHwgMTU0ICsrKysrKysrKysrKy0tLS0tLQ0KPiAg
MSBmaWxlIGNoYW5nZWQsIDEwNCBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkNCj4gDQo+
IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmlydGlvX3VzZXJf
ZGV2LmMNCj4gYi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmlydGlvX3VzZXJfZGV2
LmMNCj4gaW5kZXggMzNhMjVmNDY4NC4uOTUyMDRlYTk1NSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy
cy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3ZpcnRpb191c2VyX2Rldi5jDQo+ICsrKyBiL2RyaXZl
cnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92aXJ0aW9fdXNlcl9kZXYuYw0KPiBAQCAtMzcsMTAg
KzM3LDE1IEBAIHZpcnRpb191c2VyX2NyZWF0ZV9xdWV1ZShzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2
ICpkZXYsDQo+IHVpbnQzMl90IHF1ZXVlX3NlbCkNCj4gIAkgKiBwYWlyLg0KPiAgCSAqLw0KPiAg
CXN0cnVjdCB2aG9zdF92cmluZ19maWxlIGZpbGU7DQo+ICsJaW50IHJldDsNCj4gDQo+ICAJZmls
ZS5pbmRleCA9IHF1ZXVlX3NlbDsNCj4gIAlmaWxlLmZkID0gZGV2LT5jYWxsZmRzW3F1ZXVlX3Nl
bF07DQo+IC0JZGV2LT5vcHMtPnNldF92cmluZ19jYWxsKGRldiwgJmZpbGUpOw0KPiArCXJldCA9
IGRldi0+b3BzLT5zZXRfdnJpbmdfY2FsbChkZXYsICZmaWxlKTsNCj4gKwlpZiAocmV0IDwgMCkg
ew0KPiArCQlQTURfSU5JVF9MT0coRVJSLCAiKCVzKSBGYWlsZWQgdG8gY3JlYXRlIHF1ZXVlICV1
XG4iLCBkZXYtPnBhdGgsDQo+IHF1ZXVlX3NlbCk7DQo+ICsJCXJldHVybiAtMTsNCj4gKwl9DQo+
IA0KPiAgCXJldHVybiAwOw0KPiAgfQ0KPiBAQCAtNDgsNiArNTMsNyBAQCB2aXJ0aW9fdXNlcl9j
cmVhdGVfcXVldWUoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2LA0KPiB1aW50MzJfdCBxdWV1
ZV9zZWwpDQo+ICBzdGF0aWMgaW50DQo+ICB2aXJ0aW9fdXNlcl9raWNrX3F1ZXVlKHN0cnVjdCB2
aXJ0aW9fdXNlcl9kZXYgKmRldiwgdWludDMyX3QgcXVldWVfc2VsKQ0KPiAgew0KPiArCWludCBy
ZXQ7DQo+ICAJc3RydWN0IHZob3N0X3ZyaW5nX2ZpbGUgZmlsZTsNCj4gIAlzdHJ1Y3Qgdmhvc3Rf
dnJpbmdfc3RhdGUgc3RhdGU7DQo+ICAJc3RydWN0IHZyaW5nICp2cmluZyA9ICZkZXYtPnZyaW5n
c1txdWV1ZV9zZWxdOw0KPiBAQCAtNzMsMTUgKzc5LDIxIEBAIHZpcnRpb191c2VyX2tpY2tfcXVl
dWUoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2LA0KPiB1aW50MzJfdCBxdWV1ZV9zZWwpDQo+
IA0KPiAgCXN0YXRlLmluZGV4ID0gcXVldWVfc2VsOw0KPiAgCXN0YXRlLm51bSA9IHZyaW5nLT5u
dW07DQo+IC0JZGV2LT5vcHMtPnNldF92cmluZ19udW0oZGV2LCAmc3RhdGUpOw0KPiArCXJldCA9
IGRldi0+b3BzLT5zZXRfdnJpbmdfbnVtKGRldiwgJnN0YXRlKTsNCj4gKwlpZiAocmV0IDwgMCkN
Cj4gKwkJZ290byBlcnI7DQo+IA0KPiAgCXN0YXRlLmluZGV4ID0gcXVldWVfc2VsOw0KPiAgCXN0
YXRlLm51bSA9IDA7IC8qIG5vIHJlc2VydmF0aW9uICovDQo+ICAJaWYgKGRldi0+ZmVhdHVyZXMg
JiAoMVVMTCA8PCBWSVJUSU9fRl9SSU5HX1BBQ0tFRCkpDQo+ICAJCXN0YXRlLm51bSB8PSAoMSA8
PCAxNSk7DQo+IC0JZGV2LT5vcHMtPnNldF92cmluZ19iYXNlKGRldiwgJnN0YXRlKTsNCj4gKwly
ZXQgPSBkZXYtPm9wcy0+c2V0X3ZyaW5nX2Jhc2UoZGV2LCAmc3RhdGUpOw0KPiArCWlmIChyZXQg
PCAwKQ0KPiArCQlnb3RvIGVycjsNCj4gDQo+IC0JZGV2LT5vcHMtPnNldF92cmluZ19hZGRyKGRl
diwgJmFkZHIpOw0KPiArCXJldCA9IGRldi0+b3BzLT5zZXRfdnJpbmdfYWRkcihkZXYsICZhZGRy
KTsNCj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJZ290byBlcnI7DQo+IA0KPiAgCS8qIE9mIGFsbCBw
ZXIgdmlydHF1ZXVlIE1TR3MsIG1ha2Ugc3VyZSBWSE9TVF9VU0VSX1NFVF9WUklOR19LSUNLIGNv
bWVzDQo+ICAJICogbGFzdGx5IGJlY2F1c2Ugdmhvc3QgZGVwZW5kcyBvbiB0aGlzIG1zZyB0byBq
dWRnZSBpZg0KPiBAQCAtODksOSArMTAxLDE1IEBAIHZpcnRpb191c2VyX2tpY2tfcXVldWUoc3Ry
dWN0IHZpcnRpb191c2VyX2RldiAqZGV2LA0KPiB1aW50MzJfdCBxdWV1ZV9zZWwpDQo+ICAJICov
DQo+ICAJZmlsZS5pbmRleCA9IHF1ZXVlX3NlbDsNCj4gIAlmaWxlLmZkID0gZGV2LT5raWNrZmRz
W3F1ZXVlX3NlbF07DQo+IC0JZGV2LT5vcHMtPnNldF92cmluZ19raWNrKGRldiwgJmZpbGUpOw0K
PiArCXJldCA9IGRldi0+b3BzLT5zZXRfdnJpbmdfa2ljayhkZXYsICZmaWxlKTsNCj4gKwlpZiAo
cmV0IDwgMCkNCj4gKwkJZ290byBlcnI7DQo+IA0KPiAgCXJldHVybiAwOw0KPiArZXJyOg0KPiAr
CVBNRF9JTklUX0xPRyhFUlIsICIoJXMpIEZhaWxlZCB0byBraWNrIHF1ZXVlICV1XG4iLCBkZXYt
PnBhdGgsDQo+IHF1ZXVlX3NlbCk7DQo+ICsNCj4gKwlyZXR1cm4gLTE7DQo+ICB9DQo+IA0KPiAg
c3RhdGljIGludA0KPiBAQCAtMTAzLDE0ICsxMjEsMTQgQEAgdmlydGlvX3VzZXJfcXVldWVfc2V0
dXAoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2LA0KPiAgCWZvciAoaSA9IDA7IGkgPCBkZXYt
Pm1heF9xdWV1ZV9wYWlyczsgKytpKSB7DQo+ICAJCXF1ZXVlX3NlbCA9IDIgKiBpICsgVlRORVRf
U1FfUlFfUVVFVUVfSURYOw0KPiAgCQlpZiAoZm4oZGV2LCBxdWV1ZV9zZWwpIDwgMCkgew0KPiAt
CQkJUE1EX0RSVl9MT0coSU5GTywgInNldHVwIHJ4IHZxIGZhaWxzOiAldSIsIGkpOw0KPiArCQkJ
UE1EX0RSVl9MT0coRVJSLCAiKCVzKSBzZXR1cCByeCB2cSAldSBmYWlsZWQiLCBkZXYtPnBhdGgs
IGkpOw0KPiAgCQkJcmV0dXJuIC0xOw0KPiAgCQl9DQo+ICAJfQ0KPiAgCWZvciAoaSA9IDA7IGkg
PCBkZXYtPm1heF9xdWV1ZV9wYWlyczsgKytpKSB7DQo+ICAJCXF1ZXVlX3NlbCA9IDIgKiBpICsg
VlRORVRfU1FfVFFfUVVFVUVfSURYOw0KPiAgCQlpZiAoZm4oZGV2LCBxdWV1ZV9zZWwpIDwgMCkg
ew0KPiAtCQkJUE1EX0RSVl9MT0coSU5GTywgInNldHVwIHR4IHZxIGZhaWxzOiAldSIsIGkpOw0K
PiArCQkJUE1EX0RSVl9MT0coSU5GTywgIiglcykgc2V0dXAgdHggdnEgJXUgZmFpbGVkIiwgZGV2
LT5wYXRoLA0KPiBpKTsNCj4gIAkJCXJldHVybiAtMTsNCj4gIAkJfQ0KPiAgCX0NCj4gQEAgLTE0
NCw3ICsxNjIsNyBAQCB2aXJ0aW9fdXNlcl9kZXZfc2V0X2ZlYXR1cmVzKHN0cnVjdCB2aXJ0aW9f
dXNlcl9kZXYgKmRldikNCj4gIAlyZXQgPSBkZXYtPm9wcy0+c2V0X2ZlYXR1cmVzKGRldiwgZmVh
dHVyZXMpOw0KPiAgCWlmIChyZXQgPCAwKQ0KPiAgCQlnb3RvIGVycm9yOw0KPiAtCVBNRF9EUlZf
TE9HKElORk8sICJzZXQgZmVhdHVyZXM6ICUiIFBSSXg2NCwgZmVhdHVyZXMpOw0KPiArCVBNRF9E
UlZfTE9HKElORk8sICIoJXMpIHNldCBmZWF0dXJlczogMHglIiBQUkl4NjQsIGRldi0+cGF0aCwg
ZmVhdHVyZXMpOw0KPiAgZXJyb3I6DQo+ICAJcHRocmVhZF9tdXRleF91bmxvY2soJmRldi0+bXV0
ZXgpOw0KPiANCj4gQEAgLTE3Miw5ICsxOTAsMTAgQEAgdmlydGlvX3VzZXJfc3RhcnRfZGV2aWNl
KHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4gIAlydGVfbWNmZ19tZW1fcmVhZF9sb2Nr
KCk7DQo+ICAJcHRocmVhZF9tdXRleF9sb2NrKCZkZXYtPm11dGV4KTsNCj4gDQo+ICsJLyogVmhv
c3QtdXNlciBjbGllbnQgbm90IGNvbm5lY3RlZCB5ZXQsIHdpbGwgc3RhcnQgbGF0ZXIgKi8NCj4g
IAlpZiAoZGV2LT5iYWNrZW5kX3R5cGUgPT0gVklSVElPX1VTRVJfQkFDS0VORF9WSE9TVF9VU0VS
ICYmDQo+ICAJCQlkZXYtPnZob3N0ZmQgPCAwKQ0KPiAtCQlnb3RvIGVycm9yOw0KPiArCQlnb3Rv
IG91dDsNCj4gDQo+ICAJLyogU3RlcCAyOiBzaGFyZSBtZW1vcnkgcmVnaW9ucyAqLw0KPiAgCXJl
dCA9IGRldi0+b3BzLT5zZXRfbWVtb3J5X3RhYmxlKGRldik7DQo+IEBAIC0xODIsMTUgKzIwMSwx
OSBAQCB2aXJ0aW9fdXNlcl9zdGFydF9kZXZpY2Uoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2
KQ0KPiAgCQlnb3RvIGVycm9yOw0KPiANCj4gIAkvKiBTdGVwIDM6IGtpY2sgcXVldWVzICovDQo+
IC0JaWYgKHZpcnRpb191c2VyX3F1ZXVlX3NldHVwKGRldiwgdmlydGlvX3VzZXJfa2lja19xdWV1
ZSkgPCAwKQ0KPiArCXJldCA9IHZpcnRpb191c2VyX3F1ZXVlX3NldHVwKGRldiwgdmlydGlvX3Vz
ZXJfa2lja19xdWV1ZSk7DQo+ICsJaWYgKHJldCA8IDApDQo+ICAJCWdvdG8gZXJyb3I7DQo+IA0K
PiAgCS8qIFN0ZXAgNDogZW5hYmxlIHF1ZXVlcw0KPiAgCSAqIHdlIGVuYWJsZSB0aGUgMXN0IHF1
ZXVlIHBhaXIgYnkgZGVmYXVsdC4NCj4gIAkgKi8NCj4gLQlkZXYtPm9wcy0+ZW5hYmxlX3FwKGRl
diwgMCwgMSk7DQo+ICsJcmV0ID0gZGV2LT5vcHMtPmVuYWJsZV9xcChkZXYsIDAsIDEpOw0KPiAr
CWlmIChyZXQgPCAwKQ0KPiArCQlnb3RvIGVycm9yOw0KPiANCj4gIAlkZXYtPnN0YXJ0ZWQgPSB0
cnVlOw0KPiArb3V0Og0KPiAgCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZXYtPm11dGV4KTsNCj4g
IAlydGVfbWNmZ19tZW1fcmVhZF91bmxvY2soKTsNCj4gDQo+IEBAIC0xOTgsNiArMjIxLDkgQEAg
dmlydGlvX3VzZXJfc3RhcnRfZGV2aWNlKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4g
IGVycm9yOg0KPiAgCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZXYtPm11dGV4KTsNCj4gIAlydGVf
bWNmZ19tZW1fcmVhZF91bmxvY2soKTsNCj4gKw0KPiArCVBNRF9JTklUX0xPRyhFUlIsICIoJXMp
IEZhaWxlZCB0byBzdGFydCBkZXZpY2VcbiIsIGRldi0+cGF0aCk7DQo+ICsNCj4gIAkvKiBUT0RP
OiBmcmVlIHJlc291cmNlIGhlcmUgb3IgY2FsbGVyIHRvIGNoZWNrICovDQo+ICAJcmV0dXJuIC0x
Ow0KPiAgfQ0KPiBAQCAtMjA2LDMxICsyMzIsNDAgQEAgaW50IHZpcnRpb191c2VyX3N0b3BfZGV2
aWNlKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4gIHsNCj4gIAlzdHJ1Y3Qgdmhvc3Rf
dnJpbmdfc3RhdGUgc3RhdGU7DQo+ICAJdWludDMyX3QgaTsNCj4gLQlpbnQgZXJyb3IgPSAwOw0K
PiArCWludCByZXQ7DQo+IA0KPiAgCXB0aHJlYWRfbXV0ZXhfbG9jaygmZGV2LT5tdXRleCk7DQo+
ICAJaWYgKCFkZXYtPnN0YXJ0ZWQpDQo+ICAJCWdvdG8gb3V0Ow0KPiANCj4gLQlmb3IgKGkgPSAw
OyBpIDwgZGV2LT5tYXhfcXVldWVfcGFpcnM7ICsraSkNCj4gLQkJZGV2LT5vcHMtPmVuYWJsZV9x
cChkZXYsIGksIDApOw0KPiArCWZvciAoaSA9IDA7IGkgPCBkZXYtPm1heF9xdWV1ZV9wYWlyczsg
KytpKSB7DQo+ICsJCXJldCA9IGRldi0+b3BzLT5lbmFibGVfcXAoZGV2LCBpLCAwKTsNCj4gKwkJ
aWYgKHJldCA8IDApDQo+ICsJCQlnb3RvIGVycjsNCj4gKwl9DQo+IA0KPiAgCS8qIFN0b3AgdGhl
IGJhY2tlbmQuICovDQo+ICAJZm9yIChpID0gMDsgaSA8IGRldi0+bWF4X3F1ZXVlX3BhaXJzICog
MjsgKytpKSB7DQo+ICAJCXN0YXRlLmluZGV4ID0gaTsNCj4gLQkJaWYgKGRldi0+b3BzLT5nZXRf
dnJpbmdfYmFzZShkZXYsICZzdGF0ZSkgPCAwKSB7DQo+IC0JCQlQTURfRFJWX0xPRyhFUlIsICJn
ZXRfdnJpbmdfYmFzZSBmYWlsZWQsIGluZGV4PSV1IiwNCj4gLQkJCQkgICAgaSk7DQo+IC0JCQll
cnJvciA9IC0xOw0KPiAtCQkJZ290byBvdXQ7DQo+ICsJCXJldCA9IGRldi0+b3BzLT5nZXRfdnJp
bmdfYmFzZShkZXYsICZzdGF0ZSk7DQo+ICsJCWlmIChyZXQgPCAwKSB7DQo+ICsJCQlQTURfRFJW
X0xPRyhFUlIsICIoJXMpIGdldF92cmluZ19iYXNlIGZhaWxlZCwgaW5kZXg9JXUiLA0KPiBkZXYt
PnBhdGgsIGkpOw0KPiArCQkJZ290byBlcnI7DQo+ICAJCX0NCj4gIAl9DQo+IA0KPiAgCWRldi0+
c3RhcnRlZCA9IGZhbHNlOw0KPiArDQo+ICBvdXQ6DQo+ICAJcHRocmVhZF9tdXRleF91bmxvY2so
JmRldi0+bXV0ZXgpOw0KPiANCj4gLQlyZXR1cm4gZXJyb3I7DQo+ICsJcmV0dXJuIDA7DQo+ICtl
cnI6DQo+ICsJcHRocmVhZF9tdXRleF91bmxvY2soJmRldi0+bXV0ZXgpOw0KPiArDQo+ICsJUE1E
X0lOSVRfTE9HKEVSUiwgIiglcykgRmFpbGVkIHRvIHN0b3AgZGV2aWNlXG4iLCBkZXYtPnBhdGgp
Ow0KPiArDQo+ICsJcmV0dXJuIC0xOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBpbmxpbmUgdm9pZA0K
PiBAQCAtMjcwLDEzICszMDUsMTMgQEAgdmlydGlvX3VzZXJfZGV2X2luaXRfbm90aWZ5KHN0cnVj
dCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4gIAkJICovDQo+ICAJCWNhbGxmZCA9IGV2ZW50ZmQo
MCwgRUZEX0NMT0VYRUMgfCBFRkRfTk9OQkxPQ0spOw0KPiAgCQlpZiAoY2FsbGZkIDwgMCkgew0K
PiAtCQkJUE1EX0RSVl9MT0coRVJSLCAiY2FsbGZkIGVycm9yLCAlcyIsIHN0cmVycm9yKGVycm5v
KSk7DQo+ICsJCQlQTURfRFJWX0xPRyhFUlIsICIoJXMpIGNhbGxmZCBlcnJvciwgJXMiLCBkZXYt
PnBhdGgsDQo+IHN0cmVycm9yKGVycm5vKSk7DQo+ICAJCQlicmVhazsNCj4gIAkJfQ0KPiAgCQlr
aWNrZmQgPSBldmVudGZkKDAsIEVGRF9DTE9FWEVDIHwgRUZEX05PTkJMT0NLKTsNCj4gIAkJaWYg
KGtpY2tmZCA8IDApIHsNCj4gIAkJCWNsb3NlKGNhbGxmZCk7DQo+IC0JCQlQTURfRFJWX0xPRyhF
UlIsICJraWNrZmQgZXJyb3IsICVzIiwgc3RyZXJyb3IoZXJybm8pKTsNCj4gKwkJCVBNRF9EUlZf
TE9HKEVSUiwgIiglcykga2lja2ZkIGVycm9yLCAlcyIsIGRldi0+cGF0aCwNCj4gc3RyZXJyb3Io
ZXJybm8pKTsNCj4gIAkJCWJyZWFrOw0KPiAgCQl9DQo+ICAJCWRldi0+Y2FsbGZkc1tpXSA9IGNh
bGxmZDsNCj4gQEAgLTMwNCw3ICszMzksNyBAQCB2aXJ0aW9fdXNlcl9maWxsX2ludHJfaGFuZGxl
KHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4gIAlpZiAoIWV0aF9kZXYtPmludHJfaGFu
ZGxlKSB7DQo+ICAJCWV0aF9kZXYtPmludHJfaGFuZGxlID0gbWFsbG9jKHNpemVvZigqZXRoX2Rl
di0+aW50cl9oYW5kbGUpKTsNCj4gIAkJaWYgKCFldGhfZGV2LT5pbnRyX2hhbmRsZSkgew0KPiAt
CQkJUE1EX0RSVl9MT0coRVJSLCAiZmFpbCB0byBhbGxvY2F0ZSBpbnRyX2hhbmRsZSIpOw0KPiAr
CQkJUE1EX0RSVl9MT0coRVJSLCAiKCVzKSBmYWlsZWQgdG8gYWxsb2NhdGUgaW50cl9oYW5kbGUi
LCBkZXYtDQo+ID5wYXRoKTsNCj4gIAkJCXJldHVybiAtMTsNCj4gIAkJfQ0KPiAgCQltZW1zZXQo
ZXRoX2Rldi0+aW50cl9oYW5kbGUsIDAsIHNpemVvZigqZXRoX2Rldi0+aW50cl9oYW5kbGUpKTsN
Cj4gQEAgLTMzNSw2ICszNzAsNyBAQCB2aXJ0aW9fdXNlcl9tZW1fZXZlbnRfY2IoZW51bSBydGVf
bWVtX2V2ZW50IHR5cGUNCj4gX19ydGVfdW51c2VkLA0KPiAgCXN0cnVjdCB2aXJ0aW9fdXNlcl9k
ZXYgKmRldiA9IGFyZzsNCj4gIAlzdHJ1Y3QgcnRlX21lbXNlZ19saXN0ICptc2w7DQo+ICAJdWlu
dDE2X3QgaTsNCj4gKwlpbnQgcmV0ID0gMDsNCj4gDQo+ICAJLyogaWdub3JlIGV4dGVybmFsbHkg
YWxsb2NhdGVkIG1lbW9yeSAqLw0KPiAgCW1zbCA9IHJ0ZV9tZW1fdmlydDJtZW1zZWdfbGlzdChh
ZGRyKTsNCj4gQEAgLTM0NywxOCArMzgzLDI5IEBAIHZpcnRpb191c2VyX21lbV9ldmVudF9jYihl
bnVtIHJ0ZV9tZW1fZXZlbnQgdHlwZQ0KPiBfX3J0ZV91bnVzZWQsDQo+ICAJCWdvdG8gZXhpdDsN
Cj4gDQo+ICAJLyogU3RlcCAxOiBwYXVzZSB0aGUgYWN0aXZlIHF1ZXVlcyAqLw0KPiAtCWZvciAo
aSA9IDA7IGkgPCBkZXYtPnF1ZXVlX3BhaXJzOyBpKyspDQo+IC0JCWRldi0+b3BzLT5lbmFibGVf
cXAoZGV2LCBpLCAwKTsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgZGV2LT5xdWV1ZV9wYWlyczsgaSsr
KSB7DQo+ICsJCXJldCA9IGRldi0+b3BzLT5lbmFibGVfcXAoZGV2LCBpLCAwKTsNCj4gKwkJaWYg
KHJldCA8IDApDQo+ICsJCQlnb3RvIGV4aXQ7DQo+ICsJfQ0KPiANCj4gIAkvKiBTdGVwIDI6IHVw
ZGF0ZSBtZW1vcnkgcmVnaW9ucyAqLw0KPiAtCWRldi0+b3BzLT5zZXRfbWVtb3J5X3RhYmxlKGRl
dik7DQo+ICsJcmV0ID0gZGV2LT5vcHMtPnNldF9tZW1vcnlfdGFibGUoZGV2KTsNCj4gKwlpZiAo
cmV0IDwgMCkNCj4gKwkJZ290byBleGl0Ow0KPiANCj4gIAkvKiBTdGVwIDM6IHJlc3VtZSB0aGUg
YWN0aXZlIHF1ZXVlcyAqLw0KPiAtCWZvciAoaSA9IDA7IGkgPCBkZXYtPnF1ZXVlX3BhaXJzOyBp
KyspDQo+IC0JCWRldi0+b3BzLT5lbmFibGVfcXAoZGV2LCBpLCAxKTsNCj4gKwlmb3IgKGkgPSAw
OyBpIDwgZGV2LT5xdWV1ZV9wYWlyczsgaSsrKSB7DQo+ICsJCXJldCA9IGRldi0+b3BzLT5lbmFi
bGVfcXAoZGV2LCBpLCAxKTsNCj4gKwkJaWYgKHJldCA8IDApDQo+ICsJCQlnb3RvIGV4aXQ7DQo+
ICsJfQ0KPiANCj4gIGV4aXQ6DQo+ICAJcHRocmVhZF9tdXRleF91bmxvY2soJmRldi0+bXV0ZXgp
Ow0KPiArDQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCVBNRF9EUlZfTE9HKEVSUiwgIiglcykgRmFp
bGVkIHRvIHVwZGF0ZSBtZW1vcnkgdGFibGVcbiIsIGRldi0NCj4gPnBhdGgpOw0KPiAgfQ0KPiAN
Cj4gIHN0YXRpYyBpbnQNCj4gQEAgLTM4OCw3ICs0MzUsNyBAQCB2aXJ0aW9fdXNlcl9kZXZfc2V0
dXAoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2KQ0KPiAgCQkJZGV2LT50YXBmZHMgPSBtYWxs
b2MoZGV2LT5tYXhfcXVldWVfcGFpcnMgKg0KPiAgCQkJCQkgICAgIHNpemVvZihpbnQpKTsNCj4g
IAkJCWlmICghZGV2LT52aG9zdGZkcyB8fCAhZGV2LT50YXBmZHMpIHsNCj4gLQkJCQlQTURfSU5J
VF9MT0coRVJSLCAiRmFpbGVkIHRvIG1hbGxvYyIpOw0KPiArCQkJCVBNRF9JTklUX0xPRyhFUlIs
ICIoJXMpIEZhaWxlZCB0byBhbGxvY2F0ZSBGRHMiLCBkZXYtDQo+ID5wYXRoKTsNCj4gIAkJCQly
ZXR1cm4gLTE7DQo+ICAJCQl9DQo+IA0KPiBAQCAtNDAwLDE5ICs0NDcsMjUgQEAgdmlydGlvX3Vz
ZXJfZGV2X3NldHVwKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4gIAkJCQlWSVJUSU9f
VVNFUl9CQUNLRU5EX1ZIT1NUX1ZEUEEpIHsNCj4gIAkJCWRldi0+b3BzID0gJnZpcnRpb19vcHNf
dmRwYTsNCj4gIAkJfSBlbHNlIHsNCj4gLQkJCVBNRF9EUlZfTE9HKEVSUiwgIlVua25vd24gYmFj
a2VuZCB0eXBlIik7DQo+ICsJCQlQTURfRFJWX0xPRyhFUlIsICIoJXMpIFVua25vd24gYmFja2Vu
ZCB0eXBlIiwgZGV2LT5wYXRoKTsNCj4gIAkJCXJldHVybiAtMTsNCj4gIAkJfQ0KPiAgCX0NCj4g
DQo+IC0JaWYgKGRldi0+b3BzLT5zZXR1cChkZXYpIDwgMCkNCj4gKwlpZiAoZGV2LT5vcHMtPnNl
dHVwKGRldikgPCAwKSB7DQo+ICsJCVBNRF9JTklUX0xPRyhFUlIsICIoJXMpIEZhaWxlZCB0byBz
ZXR1cCBiYWNrZW5kXG4iLCBkZXYtPnBhdGgpOw0KPiAgCQlyZXR1cm4gLTE7DQo+ICsJfQ0KPiAN
Cj4gLQlpZiAodmlydGlvX3VzZXJfZGV2X2luaXRfbm90aWZ5KGRldikgPCAwKQ0KPiArCWlmICh2
aXJ0aW9fdXNlcl9kZXZfaW5pdF9ub3RpZnkoZGV2KSA8IDApIHsNCj4gKwkJUE1EX0lOSVRfTE9H
KEVSUiwgIiglcykgRmFpbGVkIHRvIGluaXQgbm90aWZpZXJzXG4iLCBkZXYtPnBhdGgpOw0KPiAg
CQlyZXR1cm4gLTE7DQo+ICsJfQ0KPiANCj4gLQlpZiAodmlydGlvX3VzZXJfZmlsbF9pbnRyX2hh
bmRsZShkZXYpIDwgMCkNCj4gKwlpZiAodmlydGlvX3VzZXJfZmlsbF9pbnRyX2hhbmRsZShkZXYp
IDwgMCkgew0KPiArCQlQTURfSU5JVF9MT0coRVJSLCAiKCVzKSBGYWlsZWQgdG8gaW5pdCBpbnRl
cnJ1cHQgaGFuZGxlclxuIiwgZGV2LQ0KPiA+cGF0aCk7DQo+ICAJCXJldHVybiAtMTsNCj4gKwl9
DQo+IA0KPiAgCXJldHVybiAwOw0KPiAgfQ0KPiBAQCAtNDgwLDcgKzUzMyw3IEBAIHZpcnRpb191
c2VyX2Rldl9pbml0KHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwgY2hhcg0KPiAqcGF0aCwg
aW50IHF1ZXVlcywNCj4gIAl9DQo+IA0KPiAgCWlmICh2aXJ0aW9fdXNlcl9kZXZfc2V0dXAoZGV2
KSA8IDApIHsNCj4gLQkJUE1EX0lOSVRfTE9HKEVSUiwgImJhY2tlbmQgc2V0IHVwIGZhaWxzIik7
DQo+ICsJCVBNRF9JTklUX0xPRyhFUlIsICIoJXMpIGJhY2tlbmQgc2V0IHVwIGZhaWxzIiwgZGV2
LT5wYXRoKTsNCj4gIAkJcmV0dXJuIC0xOw0KPiAgCX0NCj4gDQo+IEBAIC00OTAsMjcgKzU0Mywz
MSBAQCB2aXJ0aW9fdXNlcl9kZXZfaW5pdChzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsIGNo
YXINCj4gKnBhdGgsIGludCBxdWV1ZXMsDQo+IA0KPiAgCWlmICghZGV2LT5pc19zZXJ2ZXIpIHsN
Cj4gIAkJaWYgKGRldi0+b3BzLT5zZXRfb3duZXIoZGV2KSA8IDApIHsNCj4gLQkJCVBNRF9JTklU
X0xPRyhFUlIsICJzZXRfb3duZXIgZmFpbHM6ICVzIiwNCj4gLQkJCQkgICAgIHN0cmVycm9yKGVy
cm5vKSk7DQo+ICsJCQlQTURfSU5JVF9MT0coRVJSLCAiKCVzKSBGYWlsZWQgdG8gc2V0IGJhY2tl
bmQgb3duZXIiLCBkZXYtDQo+ID5wYXRoKTsNCj4gIAkJCXJldHVybiAtMTsNCj4gIAkJfQ0KPiAN
Cj4gIAkJaWYgKGRldi0+b3BzLT5nZXRfZmVhdHVyZXMoZGV2LCAmZGV2LT5kZXZpY2VfZmVhdHVy
ZXMpIDwgMCkgew0KPiAtCQkJUE1EX0lOSVRfTE9HKEVSUiwgImdldF9mZWF0dXJlcyBmYWlsZWQ6
ICVzIiwNCj4gLQkJCQkgICAgIHN0cmVycm9yKGVycm5vKSk7DQo+ICsJCQlQTURfSU5JVF9MT0co
RVJSLCAiKCVzKSBGYWlsZWQgdG8gZ2V0IGJhY2tlbmQgZmVhdHVyZXMiLA0KPiBkZXYtPnBhdGgp
Ow0KPiAgCQkJcmV0dXJuIC0xOw0KPiAgCQl9DQo+IA0KPiANCj4gIAkJaWYgKChkZXYtPmRldmlj
ZV9mZWF0dXJlcyAmICgxVUxMIDw8DQo+IFZIT1NUX1VTRVJfRl9QUk9UT0NPTF9GRUFUVVJFUykp
IHx8DQo+ICAJCQkJKGRldi0+YmFja2VuZF90eXBlID09IFZJUlRJT19VU0VSX0JBQ0tFTkRfVkhP
U1RfVkRQQSkpDQo+IHsNCj4gLQkJCWlmIChkZXYtPm9wcy0+Z2V0X3Byb3RvY29sX2ZlYXR1cmVz
KGRldiwgJnByb3RvY29sX2ZlYXR1cmVzKSkNCj4gKwkJCWlmIChkZXYtPm9wcy0+Z2V0X3Byb3Rv
Y29sX2ZlYXR1cmVzKGRldiwgJnByb3RvY29sX2ZlYXR1cmVzKSkNCj4gew0KPiArCQkJCVBNRF9J
TklUX0xPRyhFUlIsICIoJXMpIEZhaWxlZCB0byBnZXQgYmFja2VuZCBwcm90b2NvbA0KPiBmZWF0
dXJlcyIsDQo+ICsJCQkJCQlkZXYtPnBhdGgpOw0KPiAgCQkJCXJldHVybiAtMTsNCj4gKwkJCX0N
Cj4gDQo+ICAJCQlkZXYtPnByb3RvY29sX2ZlYXR1cmVzICY9IHByb3RvY29sX2ZlYXR1cmVzOw0K
PiANCj4gLQkJCWlmIChkZXYtPm9wcy0+c2V0X3Byb3RvY29sX2ZlYXR1cmVzKGRldiwgZGV2LQ0K
PiA+cHJvdG9jb2xfZmVhdHVyZXMpKQ0KPiArCQkJaWYgKGRldi0+b3BzLT5zZXRfcHJvdG9jb2xf
ZmVhdHVyZXMoZGV2LCBkZXYtDQo+ID5wcm90b2NvbF9mZWF0dXJlcykpIHsNCj4gKwkJCQlQTURf
SU5JVF9MT0coRVJSLCAiKCVzKSBGYWlsZWQgdG8gc2V0IGJhY2tlbmQgcHJvdG9jb2wNCj4gZmVh
dHVyZXMiLA0KPiArCQkJCQkJZGV2LT5wYXRoKTsNCj4gIAkJCQlyZXR1cm4gLTE7DQo+ICsJCQl9
DQo+IA0KPiAgCQkJaWYgKCEoZGV2LT5wcm90b2NvbF9mZWF0dXJlcyAmICgxVUxMIDw8DQo+IFZI
T1NUX1VTRVJfUFJPVE9DT0xfRl9NUSkpKQ0KPiAgCQkJCWRldi0+dW5zdXBwb3J0ZWRfZmVhdHVy
ZXMgfD0gKDF1bGwgPDwgVklSVElPX05FVF9GX01RKTsNCj4gQEAgLTU3Nyw4ICs2MzQsOCBAQCB2
aXJ0aW9fdXNlcl9kZXZfaW5pdChzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsIGNoYXINCj4g
KnBhdGgsIGludCBxdWV1ZXMsDQo+ICAJaWYgKHJ0ZV9tZW1fZXZlbnRfY2FsbGJhY2tfcmVnaXN0
ZXIoVklSVElPX1VTRVJfTUVNX0VWRU5UX0NMQl9OQU1FLA0KPiAgCQkJCXZpcnRpb191c2VyX21l
bV9ldmVudF9jYiwgZGV2KSkgew0KPiAgCQlpZiAocnRlX2Vycm5vICE9IEVOT1RTVVApIHsNCj4g
LQkJCVBNRF9JTklUX0xPRyhFUlIsICJGYWlsZWQgdG8gcmVnaXN0ZXIgbWVtIGV2ZW50Ig0KPiAt
CQkJCQkiIGNhbGxiYWNrXG4iKTsNCj4gKwkJCVBNRF9JTklUX0xPRyhFUlIsICIoJXMpIEZhaWxl
ZCB0byByZWdpc3RlciBtZW0gZXZlbnQNCj4gY2FsbGJhY2tcbiIsDQo+ICsJCQkJCWRldi0+cGF0
aCk7DQo+ICAJCQlyZXR1cm4gLTE7DQo+ICAJCX0NCj4gIAl9DQo+IEBAIC02MzEsOCArNjg4LDgg
QEAgdmlydGlvX3VzZXJfaGFuZGxlX21xKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwNCj4g
dWludDE2X3QgcV9wYWlycykNCj4gIAl1aW50OF90IHJldCA9IDA7DQo+IA0KPiAgCWlmIChxX3Bh
aXJzID4gZGV2LT5tYXhfcXVldWVfcGFpcnMpIHsNCj4gLQkJUE1EX0lOSVRfTE9HKEVSUiwgIm11
bHRpLXEgY29uZmlnICV1LCBidXQgb25seSAldSBzdXBwb3J0ZWQiLA0KPiAtCQkJICAgICBxX3Bh
aXJzLCBkZXYtPm1heF9xdWV1ZV9wYWlycyk7DQo+ICsJCVBNRF9JTklUX0xPRyhFUlIsICIoJXMp
IG11bHRpLXEgY29uZmlnICV1LCBidXQgb25seSAldSBzdXBwb3J0ZWQiLA0KPiArCQkJICAgICBk
ZXYtPnBhdGgsIHFfcGFpcnMsIGRldi0+bWF4X3F1ZXVlX3BhaXJzKTsNCj4gIAkJcmV0dXJuIC0x
Ow0KPiAgCX0NCj4gDQo+IEBAIC04MTgsMTAgKzg3NSw4IEBAIHZpcnRpb191c2VyX2Rldl9zZXRf
c3RhdHVzKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwNCj4gdWludDhfdCBzdGF0dXMpDQo+
ICAJcHRocmVhZF9tdXRleF9sb2NrKCZkZXYtPm11dGV4KTsNCj4gIAlkZXYtPnN0YXR1cyA9IHN0
YXR1czsNCj4gIAlyZXQgPSBkZXYtPm9wcy0+c2V0X3N0YXR1cyhkZXYsIHN0YXR1cyk7DQo+IC0J
aWYgKHJldCAmJiByZXQgIT0gLUVOT1RTVVApIHsNCj4gLQkJUE1EX0lOSVRfTE9HKEVSUiwgIlZp
cnRpby11c2VyIHNldCBzdGF0dXMgZmFpbGVkICglZCk6ICVzIiwgcmV0LA0KPiAtCQkJICAgICBz
dHJlcnJvcihlcnJubykpOw0KPiAtCX0NCj4gKwlpZiAocmV0ICYmIHJldCAhPSAtRU5PVFNVUCkN
Cj4gKwkJUE1EX0lOSVRfTE9HKEVSUiwgIiglcykgRmFpbGVkIHRvIHNldCBiYWNrZW5kIHN0YXR1
c1xuIiwgZGV2LQ0KPiA+cGF0aCk7DQo+IA0KPiAgCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZXYt
Pm11dGV4KTsNCj4gIAlyZXR1cm4gcmV0Ow0KPiBAQCAtODU1LDggKzkxMCw3IEBAIHZpcnRpb191
c2VyX2Rldl91cGRhdGVfc3RhdHVzKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4gIAkJ
CSEhKGRldi0+c3RhdHVzICYgVklSVElPX0NPTkZJR19TVEFUVVNfREVWX05FRURfUkVTRVQpLA0K
PiAgCQkJISEoZGV2LT5zdGF0dXMgJiBWSVJUSU9fQ09ORklHX1NUQVRVU19GQUlMRUQpKTsNCj4g
IAl9IGVsc2UgaWYgKHJldCAhPSAtRU5PVFNVUCkgew0KPiAtCQlQTURfSU5JVF9MT0coRVJSLCAi
VmlydGlvLXVzZXIgZ2V0IHN0YXR1cyBmYWlsZWQgKCVkKTogJXMiLCByZXQsDQo+IC0JCQkgICAg
IHN0cmVycm9yKGVycm5vKSk7DQo+ICsJCVBNRF9JTklUX0xPRyhFUlIsICIoJXMpIEZhaWxlZCB0
byBnZXQgYmFja2VuZCBzdGF0dXNcbiIsIGRldi0NCj4gPnBhdGgpOw0KPiAgCX0NCj4gDQo+ICAJ
cHRocmVhZF9tdXRleF91bmxvY2soJmRldi0+bXV0ZXgpOw0KPiAtLQ0KPiAyLjI5LjINCg0KUmV2
aWV3ZWQtYnk6IENoZW5ibyBYaWEgPGNoZW5iby54aWFAaW50ZWwuY29tPg0K