From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (xvm-189-124.dc0.ghst.net [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7E776A09FF; Thu, 7 Jan 2021 03:26:39 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1294A140E60; Thu, 7 Jan 2021 03:26:39 +0100 (CET) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id 43EA5140E49 for ; Thu, 7 Jan 2021 03:26:37 +0100 (CET) IronPort-SDR: XTyt2C6kjyz+rjotBuOV8T17RLeTXAsiaYpR0cvB/tsAxYKxQgCVqjbkRjtCBGt8hrA7lesLX7 lglZGG5bsI7w== X-IronPort-AV: E=McAfee;i="6000,8403,9856"; a="165061221" X-IronPort-AV: E=Sophos;i="5.79,328,1602572400"; d="scan'208";a="165061221" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jan 2021 18:26:36 -0800 IronPort-SDR: FAMImvvc4W45nVHnK4D1jjMArjfMXpInPQca6ed2sCeKs6EH88oTqCYkQIkUNmv+a/aU/PPV7F y4beiBcNkT6g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,328,1602572400"; d="scan'208";a="422402889" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by orsmga001.jf.intel.com with ESMTP; 06 Jan 2021 18:26:36 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 6 Jan 2021 18:26:35 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 6 Jan 2021 18:26:35 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Wed, 6 Jan 2021 18:26:35 -0800 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.109) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Wed, 6 Jan 2021 18:26:33 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gB3+Srcbu99QQPEfq49JF0qvKA4LoGOP8TkdPgvwsRqmlvtLCjmbY0s3YqLSVxRjxef4/U95ORePrDPgrg4k/spp09kMfejsrhclryzT36jdbyCqBVeP73NtJgAB2ue+VJZqfW7A79QlUPO8K/AE+fF14PhX8lSXAZJeNyIwtaDPijA89tP5NEZWOTtyZy6kK4BnQI/tTGHFOCfCFaCIxTn7IgudALKrafQrbW0vslEbFWQgxl5fPjfe8gRbXMvveZehVEXlDj9WAHu6vUYQl8Fe67KuPOJigbii1CKx9xsYIl2GdQTe5tm8qARBYcsjF2HmvHnBSSDKx0WZXz5hIw== 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=ymY/N4e4LIQVA+QzLi3BP6B/gXMz/ooH0y9e3hk4HDk=; b=KzGjgo7vSEARA+zoXF+SPpmCDb3VzoUzNppokLhjAf6IoX7HG2RAIQ1ScsWpyzAw7F8t7kjVU5YIV8wcCy19SniFceQpMtgBUF0lAaQbpFtAZplmUauEj1OZbCvmyeW4uljcqZEEuXwrdJd4Ge2GegQieSDDs8LkxPenXnLJf//1qvmtTm/cXI76ZoCOJwhRMH8pRepP/1f3jwfKDXPGua/eRvqUX/0CMhDEkne7aD16+87g6D7DHOlcJtQIYH5T9DfADmVGH6x65+C/JtBg3KHUWB0HmrWpFbXcF0nvJjip6BGEvb7GnAm3Nr+XpYWmgDeLpJ97Sne9wGtX2lcJdw== 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=ymY/N4e4LIQVA+QzLi3BP6B/gXMz/ooH0y9e3hk4HDk=; b=Nmv/gT1n/VBN+UAy4AFsT7mYWKIdAlEZ0G+gP8YmHgSsBdmbpiwYOJjxf/YFGo/2NzSiz3nOZXTDkZXvkXz+FJwFQhn5KeqRaahSMMoVKoIytPDueNAeGmLHH2DbE7ccjKd+aRpF5jEW7Jx2EdCHsvo1z1tsO0QYeFHs0lHj9Y0= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22) by MN2PR11MB3710.namprd11.prod.outlook.com (2603:10b6:208:f2::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3721.20; Thu, 7 Jan 2021 02:26:32 +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.3721.024; Thu, 7 Jan 2021 02:26:32 +0000 From: "Xia, Chenbo" To: Maxime Coquelin , "dev@dpdk.org" , "olivier.matz@6wind.com" , "amorenoz@redhat.com" , "david.marchand@redhat.com" Thread-Topic: [PATCH 33/40] net/virtio: improve Virtio-user errors handling Thread-Index: AQHW1xVnjUf804SLDECT2Z5htnpNwqobhfjw Date: Thu, 7 Jan 2021 02:26:32 +0000 Message-ID: References: <20201220211405.313012-1-maxime.coquelin@redhat.com> <20201220211405.313012-34-maxime.coquelin@redhat.com> In-Reply-To: <20201220211405.313012-34-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.55.46.46] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3c6da21e-501d-4564-1708-08d8b2b3a5f1 x-ms-traffictypediagnostic: MN2PR11MB3710: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:353; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Ev/PFhFke3BGk0ap/I/s48U8qJSyuA5pOlu9WbaOJRRn6QOveU6PZVsjj3oc8UT73kvInfvdbsEPCYHVyhYLFLwfLQifAP85U6/5ACmZUzlnoD8xgbImx7uuk9yPA13se2+MekEinH1bnW9opdVSXNIpKXcuyZN6XaXRlXectmSsek6oUE82bPprkv7oodBRC6xLsrnfSK1mrr3bYXPOj3YvuOYcK49q4w1wS/kwYCWSP8W5HdnQyqr+9J/0JEFHCgmSC84Sl7lrRBE09NTrrGprCcTHV4CiOsEk2E0+MNix2SNccCcfAsTnxcgghEhOzdpBnsCLwQs9t2aF6dLtQuy6hB+uA0mRDM2lSb9agoA6FFzhVtOhUXRPShcUcRaIJI2TpXmomat/UsXSmv3lKw== 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)(136003)(396003)(376002)(366004)(346002)(39860400002)(30864003)(8676002)(9686003)(83380400001)(110136005)(86362001)(55016002)(33656002)(5660300002)(186003)(26005)(7696005)(52536014)(316002)(71200400001)(478600001)(2906002)(53546011)(6506007)(66476007)(66556008)(66446008)(76116006)(8936002)(64756008)(66946007); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?bm5VN0tNRHF1bVo0ZVprOFd5d0dCT04vV2lpME1yWEFTTEVObFN0S0ZvNThh?= =?utf-8?B?czJTZEMvVTJkYUppTXhYN0xpVms4WEN5cDI5cXZEamE3alNQeTdGejhvUDJX?= =?utf-8?B?MXB3ekpqeHNkcllKb1lzcWc5dEtHdDE3MDRHdStJdVYydnNwUW9MNjJGYkNv?= =?utf-8?B?QUp2WGQ0QmRQQ0djVjAwcW52TGI2ZUdvbDhjcEVBdTJZbWt5N1IrQzQva0VU?= =?utf-8?B?SUtYTkV0dWhIK0l1eDU1NVh2N3huYU1mUWxMV1F3UGtVZHdzVng3dTREMWcw?= =?utf-8?B?cUtkMnNzVU5nSzcyTGxISjB5dlBQUjZCL2J1RGNSUkNjRnRaZTBVSHkzYUxB?= =?utf-8?B?Ukhvd042NkxMbm9CTGtRUXZQT29UYnY2UG1oSEZKdkZTNG9wZWI1bDI1OS9E?= =?utf-8?B?R0tKSWVOTnFPTjd5VHgyNXhLYVA4Wkw2OC9Xd1BnNGZ6ay9jeEdka09IOUFQ?= =?utf-8?B?emdpbzdiaGdqUzZXdjQ3UEZIRjNISkpKSHJudEJDUnFUbWE3bHhnV2JyamJZ?= =?utf-8?B?eXJTL2h4d1k4eHgyMlZYL2d2bm1hZWFWQzJoOUVxdDgzVDYxMm54aG04Njg4?= =?utf-8?B?amtYQ3AwOXFSMnp3c0FOZDRkZ2dBQUFRKzE4ZUZ6a255UEtWY0dBRUJ0a2dN?= =?utf-8?B?Tm9sbHM2MEk3SmMvVms0RWJyMDhybjZ0a2d3cHhTeXdnQTdGa0N0RXBJMkUr?= =?utf-8?B?TGVlKytOSTAzTG03RVI2bDV2ZWtydys4OWl3MXh0ZzFIZDJYQjZCeUxNSUo5?= =?utf-8?B?bjRubWRXRzdJdmVVV3NycmFLWmJsd1A0b0NTQWJyUHdsempnMFgvVEpMQ1E2?= =?utf-8?B?Y2VOOGRjZTJLRW16bVR0SUlSZzMxYjNDVDh2bitEK0ExcXB5NElUWXQwbVF0?= =?utf-8?B?R0VLdHowcWcvSVdpNlZ6eTAxNE1jWW9kOFlKTjYxclJ1Z3ZYVjJVaVorSFVt?= =?utf-8?B?YlBEWjQ1K2ExcUtubXZEelFmRzkvamo4M2krVGZUMHBqZ2lwb1hiUHZEUFU3?= =?utf-8?B?OEc1OFh1S2FtV1ZMZFpXaTVxK0xaSTVnVzE3WWJqbDFPSkxLcDhpYmN4SjNN?= =?utf-8?B?aG5wS3pqOXhVWXdEQ0Q0ZUJDbEx5bVZMcHI5aVhBUkxKb0ZTeFNvSEJvbEFh?= =?utf-8?B?OWs0NVFZdUtNRTdRM2RjVXBla3BKMXhxMVFqSmdRNmFFamxkb1VEQUVpR3R0?= =?utf-8?B?Wm5HWXhiWU5XNndmWlQyZk1iQ0xjenRUMnlqUFEvNFdobjgwbEFFZ3hEOEw2?= =?utf-8?B?OUtCa0NvK0pCOCs0OG5sY0JOUFBmMzB4S0RzYnFoV0FBTUEzbUlCR25lWk03?= =?utf-8?Q?6sLneDNxzafmE=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: 3c6da21e-501d-4564-1708-08d8b2b3a5f1 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jan 2021 02:26:32.4896 (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: C+qn2fyzCLxzWDzYNOjAsRDOrWmpo1aGaZNSKFhLgidFlY2xSY8f3ze7AJrYWYjh9/DFnYPiUXWxCxn3upuPmg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3710 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH 33/40] 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" SGkgTWF4aW1lLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1heGlt ZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+IFNlbnQ6IE1vbmRheSwg RGVjZW1iZXIgMjEsIDIwMjAgNToxNCBBTQ0KPiBUbzogZGV2QGRwZGsub3JnOyBYaWEsIENoZW5i byA8Y2hlbmJvLnhpYUBpbnRlbC5jb20+OyBvbGl2aWVyLm1hdHpANndpbmQuY29tOw0KPiBhbW9y ZW5vekByZWRoYXQuY29tOyBkYXZpZC5tYXJjaGFuZEByZWRoYXQuY29tDQo+IENjOiBNYXhpbWUg Q29xdWVsaW4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0gg MzMvNDBdIG5ldC92aXJ0aW86IGltcHJvdmUgVmlydGlvLXVzZXIgZXJyb3JzIGhhbmRsaW5nDQo+ IA0KPiBUaGlzIHBhdGNoIGFkZHMgZXJyb3IgbG9ncyBhbmQgcHJvcGFnYXRlIGVycm9ycyByZXBv cnRlZA0KDQpzL3Byb3BhZ2F0ZS9wcm9wYWdhdGVzDQoNCj4gYnkgdGhlIGJhY2tlbmQuIEl0IGFs c28gYWRkcyB0aGUgZGV2aWNlIHBhdGggaW4gZXJyb3IgbG9ncw0KPiB0byBtYWtlIGl0IGVhc2ll ciB0byBkaXN0aW5ndWlzaCB3aGljaCBkZXZpY2UgaXMgZmFjaW5nIHRoZQ0KPiBpc3N1ZS4NCj4g DQo+IFNpZ25lZC1vZmYtYnk6IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhh dC5jb20+DQo+IC0tLQ0KPiAgLi4uL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmlydGlvX3VzZXJf ZGV2LmMgIHwgMTU1ICsrKysrKysrKysrKy0tLS0tLQ0KPiAgMSBmaWxlIGNoYW5nZWQsIDEwNCBp bnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmlydGlvX3VzZXJfZGV2LmMNCj4gYi9kcml2ZXJzL25l dC92aXJ0aW8vdmlydGlvX3VzZXIvdmlydGlvX3VzZXJfZGV2LmMNCj4gaW5kZXggZTFmMDE2YWE4 Yy4uYjkyYjdmN2FhZSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191 c2VyL3ZpcnRpb191c2VyX2Rldi5jDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9f dXNlci92aXJ0aW9fdXNlcl9kZXYuYw0KPiBAQCAtMzcsMTAgKzM3LDE1IEBAIHZpcnRpb191c2Vy X2NyZWF0ZV9xdWV1ZShzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsDQo+IHVpbnQzMl90IHF1 ZXVlX3NlbCkNCj4gIAkgKiBwYWlyLg0KPiAgCSAqLw0KPiAgCXN0cnVjdCB2aG9zdF92cmluZ19m aWxlIGZpbGU7DQo+ICsJaW50IHJldDsNCj4gDQo+ICAJZmlsZS5pbmRleCA9IHF1ZXVlX3NlbDsN Cj4gIAlmaWxlLmZkID0gZGV2LT5jYWxsZmRzW3F1ZXVlX3NlbF07DQo+IC0JZGV2LT5vcHMtPnNl dF92cmluZ19jYWxsKGRldiwgJmZpbGUpOw0KPiArCXJldCA9IGRldi0+b3BzLT5zZXRfdnJpbmdf Y2FsbChkZXYsICZmaWxlKTsNCj4gKwlpZiAocmV0IDwgMCkgew0KPiArCQlQTURfSU5JVF9MT0co RVJSLCAiKCVzKSBGYWlsZWQgdG8gY3JlYXRlIHF1ZXVlICV1XG4iLCBkZXYtPnBhdGgsDQo+IHF1 ZXVlX3NlbCk7DQo+ICsJCXJldHVybiAtMTsNCj4gKwl9DQo+IA0KPiAgCXJldHVybiAwOw0KPiAg fQ0KPiBAQCAtNDgsNiArNTMsNyBAQCB2aXJ0aW9fdXNlcl9jcmVhdGVfcXVldWUoc3RydWN0IHZp cnRpb191c2VyX2RldiAqZGV2LA0KPiB1aW50MzJfdCBxdWV1ZV9zZWwpDQo+ICBzdGF0aWMgaW50 DQo+ICB2aXJ0aW9fdXNlcl9raWNrX3F1ZXVlKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwg dWludDMyX3QgcXVldWVfc2VsKQ0KPiAgew0KPiArCWludCByZXQ7DQo+ICAJc3RydWN0IHZob3N0 X3ZyaW5nX2ZpbGUgZmlsZTsNCj4gIAlzdHJ1Y3Qgdmhvc3RfdnJpbmdfc3RhdGUgc3RhdGU7DQo+ ICAJc3RydWN0IHZyaW5nICp2cmluZyA9ICZkZXYtPnZyaW5nc1txdWV1ZV9zZWxdOw0KPiBAQCAt NzMsMTUgKzc5LDIxIEBAIHZpcnRpb191c2VyX2tpY2tfcXVldWUoc3RydWN0IHZpcnRpb191c2Vy X2RldiAqZGV2LA0KPiB1aW50MzJfdCBxdWV1ZV9zZWwpDQo+IA0KPiAgCXN0YXRlLmluZGV4ID0g cXVldWVfc2VsOw0KPiAgCXN0YXRlLm51bSA9IHZyaW5nLT5udW07DQo+IC0JZGV2LT5vcHMtPnNl dF92cmluZ19udW0oZGV2LCAmc3RhdGUpOw0KPiArCXJldCA9IGRldi0+b3BzLT5zZXRfdnJpbmdf bnVtKGRldiwgJnN0YXRlKTsNCj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJZ290byBlcnI7DQo+IA0K PiAgCXN0YXRlLmluZGV4ID0gcXVldWVfc2VsOw0KPiAgCXN0YXRlLm51bSA9IDA7IC8qIG5vIHJl c2VydmF0aW9uICovDQo+ICAJaWYgKGRldi0+ZmVhdHVyZXMgJiAoMVVMTCA8PCBWSVJUSU9fRl9S SU5HX1BBQ0tFRCkpDQo+ICAJCXN0YXRlLm51bSB8PSAoMSA8PCAxNSk7DQo+IC0JZGV2LT5vcHMt PnNldF92cmluZ19iYXNlKGRldiwgJnN0YXRlKTsNCj4gKwlyZXQgPSBkZXYtPm9wcy0+c2V0X3Zy aW5nX2Jhc2UoZGV2LCAmc3RhdGUpOw0KPiArCWlmIChyZXQgPCAwKQ0KPiArCQlnb3RvIGVycjsN Cj4gDQo+IC0JZGV2LT5vcHMtPnNldF92cmluZ19hZGRyKGRldiwgJmFkZHIpOw0KPiArCXJldCA9 IGRldi0+b3BzLT5zZXRfdnJpbmdfYWRkcihkZXYsICZhZGRyKTsNCj4gKwlpZiAocmV0IDwgMCkN Cj4gKwkJZ290byBlcnI7DQo+IA0KPiAgCS8qIE9mIGFsbCBwZXIgdmlydHF1ZXVlIE1TR3MsIG1h a2Ugc3VyZSBWSE9TVF9VU0VSX1NFVF9WUklOR19LSUNLIGNvbWVzDQo+ICAJICogbGFzdGx5IGJl Y2F1c2Ugdmhvc3QgZGVwZW5kcyBvbiB0aGlzIG1zZyB0byBqdWRnZSBpZg0KPiBAQCAtODksOSAr MTAxLDE1IEBAIHZpcnRpb191c2VyX2tpY2tfcXVldWUoc3RydWN0IHZpcnRpb191c2VyX2RldiAq ZGV2LA0KPiB1aW50MzJfdCBxdWV1ZV9zZWwpDQo+ICAJICovDQo+ICAJZmlsZS5pbmRleCA9IHF1 ZXVlX3NlbDsNCj4gIAlmaWxlLmZkID0gZGV2LT5raWNrZmRzW3F1ZXVlX3NlbF07DQo+IC0JZGV2 LT5vcHMtPnNldF92cmluZ19raWNrKGRldiwgJmZpbGUpOw0KPiArCXJldCA9IGRldi0+b3BzLT5z ZXRfdnJpbmdfa2ljayhkZXYsICZmaWxlKTsNCj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJZ290byBl cnI7DQo+IA0KPiAgCXJldHVybiAwOw0KPiArZXJyOg0KPiArCVBNRF9JTklUX0xPRyhFUlIsICIo JXMpIEZhaWxlZCB0byBraWNrIHF1ZXVlICV1XG4iLCBkZXYtPnBhdGgsDQo+IHF1ZXVlX3NlbCk7 DQo+ICsNCj4gKwlyZXR1cm4gLTE7DQo+ICB9DQo+IA0KPiAgc3RhdGljIGludA0KPiBAQCAtMTAz LDE0ICsxMjEsMTQgQEAgdmlydGlvX3VzZXJfcXVldWVfc2V0dXAoc3RydWN0IHZpcnRpb191c2Vy X2RldiAqZGV2LA0KPiAgCWZvciAoaSA9IDA7IGkgPCBkZXYtPm1heF9xdWV1ZV9wYWlyczsgKytp KSB7DQo+ICAJCXF1ZXVlX3NlbCA9IDIgKiBpICsgVlRORVRfU1FfUlFfUVVFVUVfSURYOw0KPiAg CQlpZiAoZm4oZGV2LCBxdWV1ZV9zZWwpIDwgMCkgew0KPiAtCQkJUE1EX0RSVl9MT0coSU5GTywg InNldHVwIHJ4IHZxIGZhaWxzOiAldSIsIGkpOw0KPiArCQkJUE1EX0RSVl9MT0coRVJSLCAiKCVz KSBzZXR1cCByeCB2cSBmYWlsczogJXUiLCBkZXYtPnBhdGgsIGkpOw0KDQpNYXliZSAnc2V0dXAg cnggdnEgJXUgZmFpbHMnIGlzIGJldHRlcj8NCg0KPiAgCQkJcmV0dXJuIC0xOw0KPiAgCQl9DQo+ ICAJfQ0KPiAgCWZvciAoaSA9IDA7IGkgPCBkZXYtPm1heF9xdWV1ZV9wYWlyczsgKytpKSB7DQo+ ICAJCXF1ZXVlX3NlbCA9IDIgKiBpICsgVlRORVRfU1FfVFFfUVVFVUVfSURYOw0KPiAgCQlpZiAo Zm4oZGV2LCBxdWV1ZV9zZWwpIDwgMCkgew0KPiAtCQkJUE1EX0RSVl9MT0coSU5GTywgInNldHVw IHR4IHZxIGZhaWxzOiAldSIsIGkpOw0KPiArCQkJUE1EX0RSVl9MT0coSU5GTywgIiglcykgc2V0 dXAgdHggdnEgZmFpbHM6ICV1IiwgZGV2LT5wYXRoLA0KPiBpKTsNCg0KTWF5YmUgJ3NldHVwIHR4 IHZxICV1IGZhaWxzJyBpcyBiZXR0ZXI/DQoNCj4gIAkJCXJldHVybiAtMTsNCj4gIAkJfQ0KPiAg CX0NCj4gQEAgLTE0NCw3ICsxNjIsNyBAQCB2aXJ0aW9fdXNlcl9kZXZfc2V0X2ZlYXR1cmVzKHN0 cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4gIAlyZXQgPSBkZXYtPm9wcy0+c2V0X2ZlYXR1 cmVzKGRldiwgZmVhdHVyZXMpOw0KPiAgCWlmIChyZXQgPCAwKQ0KPiAgCQlnb3RvIGVycm9yOw0K PiAtCVBNRF9EUlZfTE9HKElORk8sICJzZXQgZmVhdHVyZXM6ICUiIFBSSXg2NCwgZmVhdHVyZXMp Ow0KPiArCVBNRF9EUlZfTE9HKElORk8sICIoJXMpIHNldCBmZWF0dXJlczogJSIgUFJJeDY0LCBk ZXYtPnBhdGgsIGZlYXR1cmVzKTsNCg0KQWRkICcweCcgYmVmb3JlICclIiBQUkl4NjQnPw0KDQo+ ICBlcnJvcjoNCj4gIAlwdGhyZWFkX211dGV4X3VubG9jaygmZGV2LT5tdXRleCk7DQo+IA0KPiBA QCAtMTcyLDkgKzE5MCwxMCBAQCB2aXJ0aW9fdXNlcl9zdGFydF9kZXZpY2Uoc3RydWN0IHZpcnRp b191c2VyX2RldiAqZGV2KQ0KPiAgCXJ0ZV9tY2ZnX21lbV9yZWFkX2xvY2soKTsNCj4gIAlwdGhy ZWFkX211dGV4X2xvY2soJmRldi0+bXV0ZXgpOw0KPiANCj4gKwkvKiBWaG9zdC11c2VyIGNsaWVu dCBub3QgY29ubmVjdGVkIHlldCwgd2lsbCBzdGFydCBsYXRlciAqLw0KPiAgCWlmIChkZXYtPmJh Y2tlbmRfdHlwZSA9PSBWSVJUSU9fVVNFUl9CQUNLRU5EX1ZIT1NUX1VTRVIgJiYNCj4gIAkJCWRl di0+dmhvc3RmZCA8IDApDQo+IC0JCWdvdG8gZXJyb3I7DQo+ICsJCWdvdG8gb3V0Ow0KPiANCj4g IAkvKiBTdGVwIDI6IHNoYXJlIG1lbW9yeSByZWdpb25zICovDQo+ICAJcmV0ID0gZGV2LT5vcHMt PnNldF9tZW1vcnlfdGFibGUoZGV2KTsNCj4gQEAgLTE4MiwxNSArMjAxLDE5IEBAIHZpcnRpb191 c2VyX3N0YXJ0X2RldmljZShzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYpDQo+ICAJCWdvdG8g ZXJyb3I7DQo+IA0KPiAgCS8qIFN0ZXAgMzoga2ljayBxdWV1ZXMgKi8NCj4gLQlpZiAodmlydGlv X3VzZXJfcXVldWVfc2V0dXAoZGV2LCB2aXJ0aW9fdXNlcl9raWNrX3F1ZXVlKSA8IDApDQo+ICsJ cmV0ID0gdmlydGlvX3VzZXJfcXVldWVfc2V0dXAoZGV2LCB2aXJ0aW9fdXNlcl9raWNrX3F1ZXVl KTsNCj4gKwlpZiAocmV0IDwgMCkNCj4gIAkJZ290byBlcnJvcjsNCj4gDQo+ICAJLyogU3RlcCA0 OiBlbmFibGUgcXVldWVzDQo+ICAJICogd2UgZW5hYmxlIHRoZSAxc3QgcXVldWUgcGFpciBieSBk ZWZhdWx0Lg0KPiAgCSAqLw0KPiAtCWRldi0+b3BzLT5lbmFibGVfcXAoZGV2LCAwLCAxKTsNCj4g KwlyZXQgPSBkZXYtPm9wcy0+ZW5hYmxlX3FwKGRldiwgMCwgMSk7DQo+ICsJaWYgKHJldCA8IDAp DQo+ICsJCWdvdG8gZXJyb3I7DQo+IA0KPiAgCWRldi0+c3RhcnRlZCA9IHRydWU7DQo+ICtvdXQ6 DQo+ICAJcHRocmVhZF9tdXRleF91bmxvY2soJmRldi0+bXV0ZXgpOw0KPiAgCXJ0ZV9tY2ZnX21l bV9yZWFkX3VubG9jaygpOw0KPiANCj4gQEAgLTE5OCw2ICsyMjEsOSBAQCB2aXJ0aW9fdXNlcl9z dGFydF9kZXZpY2Uoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2KQ0KPiAgZXJyb3I6DQo+ICAJ cHRocmVhZF9tdXRleF91bmxvY2soJmRldi0+bXV0ZXgpOw0KPiAgCXJ0ZV9tY2ZnX21lbV9yZWFk X3VubG9jaygpOw0KPiArDQo+ICsJUE1EX0lOSVRfTE9HKEVSUiwgIiglcykgRmFpbGVkIHRvIHN0 YXJ0IGRldmljZVxuIiwgZGV2LT5wYXRoKTsNCj4gKw0KPiAgCS8qIFRPRE86IGZyZWUgcmVzb3Vy Y2UgaGVyZSBvciBjYWxsZXIgdG8gY2hlY2sgKi8NCj4gIAlyZXR1cm4gLTE7DQo+ICB9DQo+IEBA IC0yMDYsMzEgKzIzMiw0MCBAQCBpbnQgdmlydGlvX3VzZXJfc3RvcF9kZXZpY2Uoc3RydWN0IHZp cnRpb191c2VyX2RldiAqZGV2KQ0KPiAgew0KPiAgCXN0cnVjdCB2aG9zdF92cmluZ19zdGF0ZSBz dGF0ZTsNCj4gIAl1aW50MzJfdCBpOw0KPiAtCWludCBlcnJvciA9IDA7DQo+ICsJaW50IHJldDsN Cj4gDQo+ICAJcHRocmVhZF9tdXRleF9sb2NrKCZkZXYtPm11dGV4KTsNCj4gIAlpZiAoIWRldi0+ c3RhcnRlZCkNCj4gIAkJZ290byBvdXQ7DQo+IA0KPiAtCWZvciAoaSA9IDA7IGkgPCBkZXYtPm1h eF9xdWV1ZV9wYWlyczsgKytpKQ0KPiAtCQlkZXYtPm9wcy0+ZW5hYmxlX3FwKGRldiwgaSwgMCk7 DQo+ICsJZm9yIChpID0gMDsgaSA8IGRldi0+bWF4X3F1ZXVlX3BhaXJzOyArK2kpIHsNCj4gKwkJ cmV0ID0gZGV2LT5vcHMtPmVuYWJsZV9xcChkZXYsIGksIDApOw0KPiArCQlpZiAocmV0IDwgMCkN Cj4gKwkJCWdvdG8gZXJyOw0KPiArCX0NCj4gDQo+ICAJLyogU3RvcCB0aGUgYmFja2VuZC4gKi8N Cj4gIAlmb3IgKGkgPSAwOyBpIDwgZGV2LT5tYXhfcXVldWVfcGFpcnMgKiAyOyArK2kpIHsNCj4g IAkJc3RhdGUuaW5kZXggPSBpOw0KPiAtCQlpZiAoZGV2LT5vcHMtPmdldF92cmluZ19iYXNlKGRl diwgJnN0YXRlKSA8IDApIHsNCj4gLQkJCVBNRF9EUlZfTE9HKEVSUiwgImdldF92cmluZ19iYXNl IGZhaWxlZCwgaW5kZXg9JXUiLA0KPiAtCQkJCSAgICBpKTsNCj4gLQkJCWVycm9yID0gLTE7DQo+ IC0JCQlnb3RvIG91dDsNCj4gKwkJcmV0ID0gZGV2LT5vcHMtPmdldF92cmluZ19iYXNlKGRldiwg JnN0YXRlKTsNCj4gKwkJaWYgKHJldCA8IDApIHsNCj4gKwkJCVBNRF9EUlZfTE9HKEVSUiwgIigl cykgZ2V0X3ZyaW5nX2Jhc2UgZmFpbGVkLCBpbmRleD0ldSIsDQo+IGRldi0+cGF0aCwgaSk7DQo+ ICsJCQlnb3RvIGVycjsNCj4gIAkJfQ0KPiAgCX0NCj4gDQo+ICAJZGV2LT5zdGFydGVkID0gZmFs c2U7DQo+ICsNCj4gIG91dDoNCj4gIAlwdGhyZWFkX211dGV4X3VubG9jaygmZGV2LT5tdXRleCk7 DQo+IA0KPiAtCXJldHVybiBlcnJvcjsNCj4gKwlyZXR1cm4gMDsNCj4gK2VycjoNCj4gKwlwdGhy ZWFkX211dGV4X3VubG9jaygmZGV2LT5tdXRleCk7DQo+ICsNCj4gKwlQTURfSU5JVF9MT0coRVJS LCAiKCVzKSBGYWlsZWQgdG8gc3RvcCBkZXZpY2VcbiIsIGRldi0+cGF0aCk7DQo+ICsNCj4gKwly ZXR1cm4gLTE7DQo+ICB9DQo+IA0KPiAgc3RhdGljIGlubGluZSB2b2lkDQo+IEBAIC0yNzAsMTIg KzMwNSwxMiBAQCB2aXJ0aW9fdXNlcl9kZXZfaW5pdF9ub3RpZnkoc3RydWN0IHZpcnRpb191c2Vy X2RldiAqZGV2KQ0KPiAgCQkgKi8NCj4gIAkJY2FsbGZkID0gZXZlbnRmZCgwLCBFRkRfQ0xPRVhF QyB8IEVGRF9OT05CTE9DSyk7DQo+ICAJCWlmIChjYWxsZmQgPCAwKSB7DQo+IC0JCQlQTURfRFJW X0xPRyhFUlIsICJjYWxsZmQgZXJyb3IsICVzIiwgc3RyZXJyb3IoZXJybm8pKTsNCj4gKwkJCVBN RF9EUlZfTE9HKEVSUiwgIiglcykgY2FsbGZkIGVycm9yLCAlcyIsIGRldi0+cGF0aCwNCj4gc3Ry ZXJyb3IoZXJybm8pKTsNCj4gIAkJCWJyZWFrOw0KPiAgCQl9DQo+ICAJCWtpY2tmZCA9IGV2ZW50 ZmQoMCwgRUZEX0NMT0VYRUMgfCBFRkRfTk9OQkxPQ0spOw0KPiAgCQlpZiAoa2lja2ZkIDwgMCkg ew0KPiAtCQkJUE1EX0RSVl9MT0coRVJSLCAia2lja2ZkIGVycm9yLCAlcyIsIHN0cmVycm9yKGVy cm5vKSk7DQo+ICsJCQlQTURfRFJWX0xPRyhFUlIsICIoJXMpIGtpY2tmZCBlcnJvciwgJXMiLCBk ZXYtPnBhdGgsDQo+IHN0cmVycm9yKGVycm5vKSk7DQo+ICAJCQlicmVhazsNCj4gIAkJfQ0KPiAg CQlkZXYtPmNhbGxmZHNbaV0gPSBjYWxsZmQ7DQo+IEBAIC0zMDMsNyArMzM4LDcgQEAgdmlydGlv X3VzZXJfZmlsbF9pbnRyX2hhbmRsZShzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYpDQo+ICAJ aWYgKCFldGhfZGV2LT5pbnRyX2hhbmRsZSkgew0KPiAgCQlldGhfZGV2LT5pbnRyX2hhbmRsZSA9 IG1hbGxvYyhzaXplb2YoKmV0aF9kZXYtPmludHJfaGFuZGxlKSk7DQo+ICAJCWlmICghZXRoX2Rl di0+aW50cl9oYW5kbGUpIHsNCj4gLQkJCVBNRF9EUlZfTE9HKEVSUiwgImZhaWwgdG8gYWxsb2Nh dGUgaW50cl9oYW5kbGUiKTsNCj4gKwkJCVBNRF9EUlZfTE9HKEVSUiwgIiglcykgZmFpbCB0byBh bGxvY2F0ZSBpbnRyX2hhbmRsZSIsIGRldi0NCj4gPnBhdGgpOw0KDQpzL2ZhaWwvZmFpbGVkID8N Cg0KVGhhbmtzLA0KQ2hlbmJvDQoNCj4gIAkJCXJldHVybiAtMTsNCj4gIAkJfQ0KPiAgCQltZW1z ZXQoZXRoX2Rldi0+aW50cl9oYW5kbGUsIDAsIHNpemVvZigqZXRoX2Rldi0+aW50cl9oYW5kbGUp KTsNCj4gQEAgLTMzNCw2ICszNjksNyBAQCB2aXJ0aW9fdXNlcl9tZW1fZXZlbnRfY2IoZW51bSBy dGVfbWVtX2V2ZW50IHR5cGUNCj4gX19ydGVfdW51c2VkLA0KPiAgCXN0cnVjdCB2aXJ0aW9fdXNl cl9kZXYgKmRldiA9IGFyZzsNCj4gIAlzdHJ1Y3QgcnRlX21lbXNlZ19saXN0ICptc2w7DQo+ICAJ dWludDE2X3QgaTsNCj4gKwlpbnQgcmV0ID0gMDsNCj4gDQo+ICAJLyogaWdub3JlIGV4dGVybmFs bHkgYWxsb2NhdGVkIG1lbW9yeSAqLw0KPiAgCW1zbCA9IHJ0ZV9tZW1fdmlydDJtZW1zZWdfbGlz dChhZGRyKTsNCj4gQEAgLTM0NiwxOCArMzgyLDI5IEBAIHZpcnRpb191c2VyX21lbV9ldmVudF9j YihlbnVtIHJ0ZV9tZW1fZXZlbnQgdHlwZQ0KPiBfX3J0ZV91bnVzZWQsDQo+ICAJCWdvdG8gZXhp dDsNCj4gDQo+ICAJLyogU3RlcCAxOiBwYXVzZSB0aGUgYWN0aXZlIHF1ZXVlcyAqLw0KPiAtCWZv ciAoaSA9IDA7IGkgPCBkZXYtPnF1ZXVlX3BhaXJzOyBpKyspDQo+IC0JCWRldi0+b3BzLT5lbmFi bGVfcXAoZGV2LCBpLCAwKTsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgZGV2LT5xdWV1ZV9wYWlyczsg aSsrKSB7DQo+ICsJCXJldCA9IGRldi0+b3BzLT5lbmFibGVfcXAoZGV2LCBpLCAwKTsNCj4gKwkJ aWYgKHJldCA8IDApDQo+ICsJCQlnb3RvIGV4aXQ7DQo+ICsJfQ0KPiANCj4gIAkvKiBTdGVwIDI6 IHVwZGF0ZSBtZW1vcnkgcmVnaW9ucyAqLw0KPiAtCWRldi0+b3BzLT5zZXRfbWVtb3J5X3RhYmxl KGRldik7DQo+ICsJcmV0ID0gZGV2LT5vcHMtPnNldF9tZW1vcnlfdGFibGUoZGV2KTsNCj4gKwlp ZiAocmV0IDwgMCkNCj4gKwkJZ290byBleGl0Ow0KPiANCj4gIAkvKiBTdGVwIDM6IHJlc3VtZSB0 aGUgYWN0aXZlIHF1ZXVlcyAqLw0KPiAtCWZvciAoaSA9IDA7IGkgPCBkZXYtPnF1ZXVlX3BhaXJz OyBpKyspDQo+IC0JCWRldi0+b3BzLT5lbmFibGVfcXAoZGV2LCBpLCAxKTsNCj4gKwlmb3IgKGkg PSAwOyBpIDwgZGV2LT5xdWV1ZV9wYWlyczsgaSsrKSB7DQo+ICsJCXJldCA9IGRldi0+b3BzLT5l bmFibGVfcXAoZGV2LCBpLCAxKTsNCj4gKwkJaWYgKHJldCA8IDApDQo+ICsJCQlnb3RvIGV4aXQ7 DQo+ICsJfQ0KPiANCj4gIGV4aXQ6DQo+ICAJcHRocmVhZF9tdXRleF91bmxvY2soJmRldi0+bXV0 ZXgpOw0KPiArDQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCVBNRF9EUlZfTE9HKEVSUiwgIiglcykg RmFpbGVkIHRvIHVwZGF0ZSBtZW1vcnkgdGFibGVcbiIsIGRldi0NCj4gPnBhdGgpOw0KPiAgfQ0K PiANCj4gIHN0YXRpYyBpbnQNCj4gQEAgLTM4Nyw3ICs0MzQsNyBAQCB2aXJ0aW9fdXNlcl9kZXZf c2V0dXAoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2KQ0KPiAgCQkJZGV2LT50YXBmZHMgPSBt YWxsb2MoZGV2LT5tYXhfcXVldWVfcGFpcnMgKg0KPiAgCQkJCQkgICAgIHNpemVvZihpbnQpKTsN Cj4gIAkJCWlmICghZGV2LT52aG9zdGZkcyB8fCAhZGV2LT50YXBmZHMpIHsNCj4gLQkJCQlQTURf SU5JVF9MT0coRVJSLCAiRmFpbGVkIHRvIG1hbGxvYyIpOw0KPiArCQkJCVBNRF9JTklUX0xPRyhF UlIsICIoJXMpIEZhaWxlZCB0byBhbGxvY2F0ZSBGRHMiLCBkZXYtDQo+ID5wYXRoKTsNCj4gIAkJ CQlyZXR1cm4gLTE7DQo+ICAJCQl9DQo+IA0KPiBAQCAtMzk5LDE5ICs0NDYsMjUgQEAgdmlydGlv X3VzZXJfZGV2X3NldHVwKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4gIAkJCQlWSVJU SU9fVVNFUl9CQUNLRU5EX1ZIT1NUX1ZEUEEpIHsNCj4gIAkJCWRldi0+b3BzID0gJnZpcnRpb19v cHNfdmRwYTsNCj4gIAkJfSBlbHNlIHsNCj4gLQkJCVBNRF9EUlZfTE9HKEVSUiwgIlVua25vd24g YmFja2VuZCB0eXBlIik7DQo+ICsJCQlQTURfRFJWX0xPRyhFUlIsICIoJXMpIFVua25vd24gYmFj a2VuZCB0eXBlIiwgZGV2LT5wYXRoKTsNCj4gIAkJCXJldHVybiAtMTsNCj4gIAkJfQ0KPiAgCX0N Cj4gDQo+IC0JaWYgKGRldi0+b3BzLT5zZXR1cChkZXYpIDwgMCkNCj4gKwlpZiAoZGV2LT5vcHMt PnNldHVwKGRldikgPCAwKSB7DQo+ICsJCVBNRF9JTklUX0xPRyhFUlIsICIoJXMpIEZhaWxlZCB0 byBzZXR1cCBiYWNrZW5kXG4iLCBkZXYtPnBhdGgpOw0KPiAgCQlyZXR1cm4gLTE7DQo+ICsJfQ0K PiANCj4gLQlpZiAodmlydGlvX3VzZXJfZGV2X2luaXRfbm90aWZ5KGRldikgPCAwKQ0KPiArCWlm ICh2aXJ0aW9fdXNlcl9kZXZfaW5pdF9ub3RpZnkoZGV2KSA8IDApIHsNCj4gKwkJUE1EX0lOSVRf TE9HKEVSUiwgIiglcykgRmFpbGVkIHRvIGluaXQgbm90aWZpZXJzXG4iLCBkZXYtPnBhdGgpOw0K PiAgCQlyZXR1cm4gLTE7DQo+ICsJfQ0KPiANCj4gLQlpZiAodmlydGlvX3VzZXJfZmlsbF9pbnRy X2hhbmRsZShkZXYpIDwgMCkNCj4gKwlpZiAodmlydGlvX3VzZXJfZmlsbF9pbnRyX2hhbmRsZShk ZXYpIDwgMCkgew0KPiArCQlQTURfSU5JVF9MT0coRVJSLCAiKCVzKSBGYWlsZWQgdG8gaW5pdCBp bnRlcnJ1cHQgaGFuZGxlclxuIiwgZGV2LQ0KPiA+cGF0aCk7DQo+ICAJCXJldHVybiAtMTsNCj4g Kwl9DQo+IA0KPiAgCXJldHVybiAwOw0KPiAgfQ0KPiBAQCAtNDcyLDcgKzUyNSw3IEBAIHZpcnRp b191c2VyX2Rldl9pbml0KHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwgY2hhcg0KPiAqcGF0 aCwgaW50IHF1ZXVlcywNCj4gIAl9DQo+IA0KPiAgCWlmICh2aXJ0aW9fdXNlcl9kZXZfc2V0dXAo ZGV2KSA8IDApIHsNCj4gLQkJUE1EX0lOSVRfTE9HKEVSUiwgImJhY2tlbmQgc2V0IHVwIGZhaWxz Iik7DQo+ICsJCVBNRF9JTklUX0xPRyhFUlIsICIoJXMpIGJhY2tlbmQgc2V0IHVwIGZhaWxzIiwg ZGV2LT5wYXRoKTsNCj4gIAkJcmV0dXJuIC0xOw0KPiAgCX0NCj4gDQo+IEBAIC00ODIsMjYgKzUz NSwyOSBAQCB2aXJ0aW9fdXNlcl9kZXZfaW5pdChzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYs IGNoYXINCj4gKnBhdGgsIGludCBxdWV1ZXMsDQo+IA0KPiAgCWlmICghZGV2LT5pc19zZXJ2ZXIp IHsNCj4gIAkJaWYgKGRldi0+b3BzLT5zZXRfb3duZXIoZGV2KSA8IDApIHsNCj4gLQkJCVBNRF9J TklUX0xPRyhFUlIsICJzZXRfb3duZXIgZmFpbHM6ICVzIiwNCj4gLQkJCQkgICAgIHN0cmVycm9y KGVycm5vKSk7DQo+ICsJCQlQTURfSU5JVF9MT0coRVJSLCAiKCVzKSBGYWlsZWQgdG8gc2V0IGJh Y2tlbmQgb3duZXIiLCBkZXYtDQo+ID5wYXRoKTsNCj4gIAkJCXJldHVybiAtMTsNCj4gIAkJfQ0K PiANCj4gIAkJaWYgKGRldi0+b3BzLT5nZXRfZmVhdHVyZXMoZGV2LCAmZGV2LT5kZXZpY2VfZmVh dHVyZXMpIDwgMCkgew0KPiAtCQkJUE1EX0lOSVRfTE9HKEVSUiwgImdldF9mZWF0dXJlcyBmYWls ZWQ6ICVzIiwNCj4gLQkJCQkgICAgIHN0cmVycm9yKGVycm5vKSk7DQo+ICsJCQlQTURfSU5JVF9M T0coRVJSLCAiKCVzKSBGYWlsZWQgdG8gZ2V0IGJhY2tlbmQgZmVhdHVyZXMiLA0KPiBkZXYtPnBh dGgpOw0KPiAgCQkJcmV0dXJuIC0xOw0KPiAgCQl9DQo+IA0KPiAtDQo+ICAJCWlmIChkZXYtPmRl dmljZV9mZWF0dXJlcyAmICgxVUxMIDw8DQo+IFZIT1NUX1VTRVJfRl9QUk9UT0NPTF9GRUFUVVJF UykpIHsNCj4gLQkJCWlmIChkZXYtPm9wcy0+Z2V0X3Byb3RvY29sX2ZlYXR1cmVzKGRldiwgJnBy b3RvY29sX2ZlYXR1cmVzKSkNCj4gKwkJCWlmIChkZXYtPm9wcy0+Z2V0X3Byb3RvY29sX2ZlYXR1 cmVzKGRldiwgJnByb3RvY29sX2ZlYXR1cmVzKSkNCj4gew0KPiArCQkJCVBNRF9JTklUX0xPRyhF UlIsICIoJXMpIEZhaWxlZCB0byBnZXQgYmFja2VuZCBwcm90b2NvbA0KPiBmZWF0dXJlcyIsDQo+ ICsJCQkJCQlkZXYtPnBhdGgpOw0KPiAgCQkJCXJldHVybiAtMTsNCj4gKwkJCX0NCj4gDQo+ICAJ CQlkZXYtPnByb3RvY29sX2ZlYXR1cmVzICY9IHByb3RvY29sX2ZlYXR1cmVzOw0KPiANCj4gLQkJ CWlmIChkZXYtPm9wcy0+c2V0X3Byb3RvY29sX2ZlYXR1cmVzKGRldiwgZGV2LQ0KPiA+cHJvdG9j b2xfZmVhdHVyZXMpKQ0KPiArCQkJaWYgKGRldi0+b3BzLT5zZXRfcHJvdG9jb2xfZmVhdHVyZXMo ZGV2LCBkZXYtDQo+ID5wcm90b2NvbF9mZWF0dXJlcykpIHsNCj4gKwkJCQlQTURfSU5JVF9MT0co RVJSLCAiKCVzKSBGYWlsZWQgdG8gc2V0IGJhY2tlbmQgcHJvdG9jb2wNCj4gZmVhdHVyZXMiLA0K PiArCQkJCQkJZGV2LT5wYXRoKTsNCj4gIAkJCQlyZXR1cm4gLTE7DQo+ICsJCQl9DQo+IA0KPiAg CQkJaWYgKCEoZGV2LT5wcm90b2NvbF9mZWF0dXJlcyAmICgxVUxMIDw8DQo+IFZIT1NUX1VTRVJf UFJPVE9DT0xfRl9NUSkpKQ0KPiAgCQkJCWRldi0+dW5zdXBwb3J0ZWRfZmVhdHVyZXMgfD0gKDF1 bGwgPDwgVklSVElPX05FVF9GX01RKTsNCj4gQEAgLTU2OCw4ICs2MjQsOCBAQCB2aXJ0aW9fdXNl cl9kZXZfaW5pdChzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsIGNoYXINCj4gKnBhdGgsIGlu dCBxdWV1ZXMsDQo+ICAJaWYgKHJ0ZV9tZW1fZXZlbnRfY2FsbGJhY2tfcmVnaXN0ZXIoVklSVElP X1VTRVJfTUVNX0VWRU5UX0NMQl9OQU1FLA0KPiAgCQkJCXZpcnRpb191c2VyX21lbV9ldmVudF9j YiwgZGV2KSkgew0KPiAgCQlpZiAocnRlX2Vycm5vICE9IEVOT1RTVVApIHsNCj4gLQkJCVBNRF9J TklUX0xPRyhFUlIsICJGYWlsZWQgdG8gcmVnaXN0ZXIgbWVtIGV2ZW50Ig0KPiAtCQkJCQkiIGNh bGxiYWNrXG4iKTsNCj4gKwkJCVBNRF9JTklUX0xPRyhFUlIsICIoJXMpIEZhaWxlZCB0byByZWdp c3RlciBtZW0gZXZlbnQNCj4gY2FsbGJhY2tcbiIsDQo+ICsJCQkJCWRldi0+cGF0aCk7DQo+ICAJ CQlyZXR1cm4gLTE7DQo+ICAJCX0NCj4gIAl9DQo+IEBAIC02MjIsOCArNjc4LDggQEAgdmlydGlv X3VzZXJfaGFuZGxlX21xKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwNCj4gdWludDE2X3Qg cV9wYWlycykNCj4gIAl1aW50OF90IHJldCA9IDA7DQo+IA0KPiAgCWlmIChxX3BhaXJzID4gZGV2 LT5tYXhfcXVldWVfcGFpcnMpIHsNCj4gLQkJUE1EX0lOSVRfTE9HKEVSUiwgIm11bHRpLXEgY29u ZmlnICV1LCBidXQgb25seSAldSBzdXBwb3J0ZWQiLA0KPiAtCQkJICAgICBxX3BhaXJzLCBkZXYt Pm1heF9xdWV1ZV9wYWlycyk7DQo+ICsJCVBNRF9JTklUX0xPRyhFUlIsICIoJXMpIG11bHRpLXEg Y29uZmlnICV1LCBidXQgb25seSAldSBzdXBwb3J0ZWQiLA0KPiArCQkJICAgICBkZXYtPnBhdGgs IHFfcGFpcnMsIGRldi0+bWF4X3F1ZXVlX3BhaXJzKTsNCj4gIAkJcmV0dXJuIC0xOw0KPiAgCX0N Cj4gDQo+IEBAIC04MDksMTAgKzg2NSw4IEBAIHZpcnRpb191c2VyX2Rldl9zZXRfc3RhdHVzKHN0 cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwNCj4gdWludDhfdCBzdGF0dXMpDQo+ICAJcHRocmVh ZF9tdXRleF9sb2NrKCZkZXYtPm11dGV4KTsNCj4gIAlkZXYtPnN0YXR1cyA9IHN0YXR1czsNCj4g IAlyZXQgPSBkZXYtPm9wcy0+c2V0X3N0YXR1cyhkZXYsIHN0YXR1cyk7DQo+IC0JaWYgKHJldCAm JiByZXQgIT0gLUVOT1RTVVApIHsNCj4gLQkJUE1EX0lOSVRfTE9HKEVSUiwgIlZpcnRpby11c2Vy IHNldCBzdGF0dXMgZmFpbGVkICglZCk6ICVzIiwgcmV0LA0KPiAtCQkJICAgICBzdHJlcnJvcihl cnJubykpOw0KPiAtCX0NCj4gKwlpZiAocmV0ICYmIHJldCAhPSAtRU5PVFNVUCkNCj4gKwkJUE1E X0lOSVRfTE9HKEVSUiwgIiglcykgRmFpbGVkIHRvIHNldCBiYWNrZW5kIHN0YXR1c1xuIiwgZGV2 LQ0KPiA+cGF0aCk7DQo+IA0KPiAgCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZXYtPm11dGV4KTsN Cj4gIAlyZXR1cm4gcmV0Ow0KPiBAQCAtODQ2LDggKzkwMCw3IEBAIHZpcnRpb191c2VyX2Rldl91 cGRhdGVfc3RhdHVzKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4gIAkJCSEhKGRldi0+ c3RhdHVzICYgVklSVElPX0NPTkZJR19TVEFUVVNfREVWX05FRURfUkVTRVQpLA0KPiAgCQkJISEo ZGV2LT5zdGF0dXMgJiBWSVJUSU9fQ09ORklHX1NUQVRVU19GQUlMRUQpKTsNCj4gIAl9IGVsc2Ug aWYgKHJldCAhPSAtRU5PVFNVUCkgew0KPiAtCQlQTURfSU5JVF9MT0coRVJSLCAiVmlydGlvLXVz ZXIgZ2V0IHN0YXR1cyBmYWlsZWQgKCVkKTogJXMiLCByZXQsDQo+IC0JCQkgICAgIHN0cmVycm9y KGVycm5vKSk7DQo+ICsJCVBNRF9JTklUX0xPRyhFUlIsICIoJXMpIEZhaWxlZCB0byBnZXQgYmFj a2VuZCBzdGF0dXNcbiIsIGRldi0NCj4gPnBhdGgpOw0KPiAgCX0NCj4gDQo+ICAJcHRocmVhZF9t dXRleF91bmxvY2soJmRldi0+bXV0ZXgpOw0KPiAtLQ0KPiAyLjI5LjINCg0K