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 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 ; 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" To: Maxime Coquelin , "dev@dpdk.org" , "olivier.matz@6wind.com" , "amorenoz@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: 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: 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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