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 37D06A0A0A; Fri, 22 Jan 2021 09:49:49 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C0DDB140D25; Fri, 22 Jan 2021 09:49:48 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 433C9140D00 for ; Fri, 22 Jan 2021 09:49:46 +0100 (CET) IronPort-SDR: JNIQXpKm5NP7/GfhfvbwU93C7X/Qm/kxgDuwS3ZuiP6rlPvNb5pnwG+0F3knUV3Io7I09Kkk7X F3l6Rec7dKMA== X-IronPort-AV: E=McAfee;i="6000,8403,9871"; a="175903481" X-IronPort-AV: E=Sophos;i="5.79,366,1602572400"; d="scan'208";a="175903481" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Jan 2021 00:49:45 -0800 IronPort-SDR: zQBc7gfDTZv87gKSpukb6F0gQkkwXpqkHJgR0X0bmhwuhfq8zXKdVFz1MBr4XvEgy7fCgbRBjb cvNhLHl9yr9A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,366,1602572400"; d="scan'208";a="427907993" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga001.jf.intel.com with ESMTP; 22 Jan 2021 00:49:45 -0800 Received: from orsmsx604.amr.corp.intel.com (10.22.229.17) by ORSMSX601.amr.corp.intel.com (10.22.229.14) 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:49:44 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx604.amr.corp.intel.com (10.22.229.17) 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:49:44 -0800 Received: from NAM04-SN1-obe.outbound.protection.outlook.com (104.47.44.57) by edgegateway.intel.com (134.134.137.100) 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:49:40 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WoFM17uThc4OKyFIz4cGmaEGaemN1dHrmdE9pNwQ7BPYAvwo09oNevFi6Zo09Ohj9BSieBAGTVZW564L7XZU69hBsIav6Fv0J5dWsBrLUOz1IL3N33vJqRNRw1SQ+EfeKc9uoPqh2TNsQToVJ3fL1fuJMQGrge8MxM7XLNYrMj7mx1Ka6u8PsJ5+yJoUAYAlY3Le3rOtws/45XkA8FY9KEGWNHED6yAYg2in36OM92FDZ2apPbVPUK/XZ2I6FTvrcto0a3R3JIeLhAd6nN8lb7lWuddIND03edmV2X3rq2MF02diaelJzyF9zwYluarTBa0fG7rIf5tJkCdEKirxXA== 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=njC4vsySk/Nq0UPhnjSsDlzB0FANJOhFBt07vTKqCmQ=; b=OERI22YO4enEOKqNQ0Xku+B/4kA3tFvkuPkoCSnNcQ4fc4K4TXN1LDpmX+HFpGRZKJ/LJ44Ss4PxOUBYYUJjLGVTjODF3sRV4sgHp06KE0OpGdftrf4vr6S07UIs4BrWQwICUeHiCyQX3OAAyg5USjPWePsy9zrsfBSL+ZF9RDA8DgUY4yB4xbaEHZ8NZJju3U/sDmaphwGCVHjJtnUUJs+IXHf2yEI/Msnxcbp/6NKQoLi/Gxw9poXIATYkVRNL6o0ZZwPfYTGDQUmT05soYXtAU29J+ZKBf4Py1Q+c7lZ6pfpdNp59IULBj/O0L11cSHigS5zmnhhhLc+sE25rmQ== 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=njC4vsySk/Nq0UPhnjSsDlzB0FANJOhFBt07vTKqCmQ=; b=YnlNhSHbsWuCagJ/BiPIYYktBe3E/yYytAirJjzEtTU+CyplQEyXO2bkcKso2nxEKEPs8g3kM3W+iEny9rrczAVukmBHCz0VDbO9dhmclV/wxx0zjTKcwKzjP5dFzACC5wYlmvg9C2QmKW3DhXujiRY7phIDIF7GLghIiY8R5ZY= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22) by MN2PR11MB3726.namprd11.prod.outlook.com (2603:10b6:208:ef::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.11; Fri, 22 Jan 2021 08:49:38 +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:49:38 +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 40/44] net/virtio: move Vhost-user specifics to its backend Thread-Index: AQHW7qoQxGKv3i+ahEGuO6ukQHi7c6ozWZEQ Date: Fri, 22 Jan 2021 08:49:38 +0000 Message-ID: References: <20210119212507.1043636-1-maxime.coquelin@redhat.com> <20210119212507.1043636-41-maxime.coquelin@redhat.com> In-Reply-To: <20210119212507.1043636-41-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: 22c5a8a7-4038-4355-ba20-08d8beb2a706 x-ms-traffictypediagnostic: MN2PR11MB3726: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:60; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 5mULIT737md8RU28pVVtQopl25mTka1hgDfyixkExT5n9pZhDh0+4CK2o2Dq9nBkCqZa5YDfYInMuJel2EbTGKhJ2f0JSpMPXfVmlEV9oTQoJch6aFDdW7ZRQ2BGXZ2U1610pTuqVXjEvjeVKNnlMHbuPVaGFX7aG1Nd2DUgzuxRn8yikYKr9MAJfq9quTC/2GKWIkZuGIcFHamNDpZue761pOHNwYQYPTIy2T6R+4SGTlKPQdvzXdygujzosNp/RogS020LnphZeOHAjVMCUJdeZQe9XC6R2kDiRpKg69MHPLXzs40oZd5jbWz0uX4doDu0aADyDw2NiArwIkLBXLTn6yQbxwZlTXSX13+xxdraoewcBvTF9graxy5jZ0Ij3TEYahQ5+bBIeNDEJJsCFg== 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)(346002)(136003)(376002)(366004)(39860400002)(396003)(66446008)(66556008)(186003)(66476007)(33656002)(52536014)(83380400001)(6506007)(53546011)(76116006)(7696005)(8936002)(64756008)(86362001)(30864003)(478600001)(110136005)(55016002)(8676002)(71200400001)(2906002)(9686003)(66946007)(316002)(5660300002)(26005)(579004)(559001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?K0JRcnJObloydWJrTzlvMldPRXFPU25WWkJkaHRkQ3ZQd2c2UG9XTTBmeEll?= =?utf-8?B?eDAvMzUxN3ZqZGQzUGZqQWh0WVVVMStYVU1CUTVrSUdmWVJKRUdYdDJST1Zk?= =?utf-8?B?bHFHTDZqcEZkdlJGcXpScHR4YXdUVmRoQWxvWUYrT1pWd3B3MlpyMzBhZ0hy?= =?utf-8?B?M3NEVnBnVGtoenpCRE5UaFRSWkVSek5TVjg0KzhualZ0NG5oYmRtNGF4eGx6?= =?utf-8?B?SWJYQytBRzN0NjVIcklzR1dLVmVPUzhqN1VBQkFMYU9jV2pMME5wTFFhZlFa?= =?utf-8?B?N3FtOEhRbjVMNDdQM1dMSlcvK2ZhaGVDOFp4TmlON3RCaEVoVzN0aFFzcEd4?= =?utf-8?B?TmZ5OHVkZjBTTTJmTmhHSFluVzNIKzNuNisvMHRReVFUVjJTcFh2dlRHN3lB?= =?utf-8?B?YjJOOWFBWkVtYkxQVHdseU1XeWZKQ2QxZHVmTGpMSm9PdDBrYWFDcDlyRmdR?= =?utf-8?B?NGxNZTVwejhIenFLR0txR1BvTUF0dWdjbUlncm9pWGdLSXpKWUxPSlFRU3Ev?= =?utf-8?B?SldKWlRRejIyOERRNmRXNFdrb0tXWjlpQVVqNm5RYVFtWlhwMC9WMElYSkJR?= =?utf-8?B?dWdXaUU5cE9nK0pPWjNzMkpNTnMxS3lQdnY1YkFLbWJqRVJvSVpIUCtXcktZ?= =?utf-8?B?dk1DcG80MzBGTHQ5dEFLQ244QUJ1MkFoTzVkOEFIMUF1MTdwN0hYancvZjJI?= =?utf-8?B?SFdQMW95WVVVdzhUWmIvUmNGbnA0R2ZteXdnR3RYR3kwK0NDSy9PMnVtOUda?= =?utf-8?B?Y3pFT1JDc0FYczZQdS9DS0dwRmlEZUN0N2ZyeWpFZmcrbHMrOEdBbVdpNCtt?= =?utf-8?B?bGU0NU83eFptdGpSc0g4ekgrVk1pZWt2NWlxSHZJQUVtUXNmU2NYemYxM0hB?= =?utf-8?B?SmVROTF3Rk9DYUluMDZqKy83YUtZcFAwdUppOVBCQzdvNlNwU0RmbXA3ZkI5?= =?utf-8?B?S2Y5N2RKNnhJRTdVcElPNXJVdVlqS3N5RlFYN3B5NmpWZ0ZudW4rV0JvaVha?= =?utf-8?B?NXZEYWNhVHNCcDJxRXRYMEN6aURRY1ZoYUpTcHJNdXRtYXBhc2UzcWtYYlBi?= =?utf-8?B?NjZtN05jQnlUckJvRkNLbldEaFN6NGZML2Z2S3U4ZHFkaWh2K0g1b0gwM01Z?= =?utf-8?B?dExGMXRCcTVYRVNwbUJmMG5ucjFFbVBwN0NHYkFSbVJYVjhCTWR5NE9zSXc5?= =?utf-8?B?MzVXVy9ib2xUUE4vT2ZTVVNhYTR6OEtZQVFOSkRmU1pHMSs4UEVDNm9ubmJm?= =?utf-8?B?c2dUeUo3cGxHWnUwc2UrNGJrYXcyUHJGRCtJUHp3bXNDVllPMTFLendWNy93?= =?utf-8?Q?HCifvBv3Mh76WkeiXgVsppgsUjkR8kGOgx?= 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: 22c5a8a7-4038-4355-ba20-08d8beb2a706 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jan 2021 08:49:38.7168 (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: dZPSfUAMCe/309zPmRUE3Q2Ded3wADDe+EUIYTkPzW/4b+TwtykXPGf4xp13+1gjioWqqDpo0dQKlrMffZKeKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3726 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v2 40/44] net/virtio: move Vhost-user specifics to its backend 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 eGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggdjIgNDAvNDRdIG5l dC92aXJ0aW86IG1vdmUgVmhvc3QtdXNlciBzcGVjaWZpY3MgdG8gaXRzIGJhY2tlbmQNCj4gDQo+ IFRoaXMgcGF0Y2ggbW92ZXMgYWxsIHRoZSBWaG9zdC11c2VyIGJhY2tlbmQgc3BlY2lmaWMNCj4g bG9naWMgbGlrZSBWaG9zdCBGRCwgbGlzdGVuIEZEIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcNCj4g dG8gdGhlIHZob3N0LXVzZXIgYmFja2VuZCBpbXBsZW1lbnRhdGlvbi4NCj4gDQo+IEluIG9yZGVy IHRvIGFjaGlldmUgdGhhdCwgbmV3IG9wcyBhcmUgY3JlYXRlZCB0byB1cGRhdGUNCj4gdGhlIGxp bmsgc3RhdHVzLCBkaXNjb25uZWN0IGFuZCByZWNvbm5lY3QgdGhlIHNlcnZlciwNCj4gYW5kIGZl dGNoIHRoZSBsaW5rIHN0YXRlIGludGVycnVwdCBGRC4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE1h eGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+IC0tLQ0KPiAgZHJp dmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3Zob3N0LmggICAgICAgIHwgICA0ICsNCj4gIGRy aXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92aG9zdF9rZXJuZWwuYyB8ICAxOCArLQ0KPiAg ZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3Zob3N0X3VzZXIuYyAgIHwgMTc2ICsrKysr KysrKysrKysrLS0tDQo+ICBkcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmhvc3RfdmRw YS5jICAgfCAgMTYgKysNCj4gIC4uLi9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3ZpcnRpb191c2Vy X2Rldi5jICB8IDE4MSArKysrKysrKysrKysrKystLS0NCj4gIC4uLi9uZXQvdmlydGlvL3ZpcnRp b191c2VyL3ZpcnRpb191c2VyX2Rldi5oICB8ICAgOSArLQ0KPiAgZHJpdmVycy9uZXQvdmlydGlv L3ZpcnRpb191c2VyX2V0aGRldi5jICAgICAgIHwgMTc5ICstLS0tLS0tLS0tLS0tLS0tDQo+ICA3 IGZpbGVzIGNoYW5nZWQsIDM1MCBpbnNlcnRpb25zKCspLCAyMzMgZGVsZXRpb25zKC0pDQo+IA0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3Zob3N0LmgNCj4g Yi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmhvc3QuaA0KPiBpbmRleCBmYzRmMDU5 YzAyLi5jNDllODgwMzZkIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlv X3VzZXIvdmhvc3QuaA0KPiArKysgYi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmhv c3QuaA0KPiBAQCAtODIsNiArODIsMTAgQEAgc3RydWN0IHZpcnRpb191c2VyX2JhY2tlbmRfb3Bz IHsNCj4gIAlpbnQgKCplbmFibGVfcXApKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwgdWlu dDE2X3QgcGFpcl9pZHgsIGludA0KPiBlbmFibGUpOw0KPiAgCWludCAoKmRtYV9tYXApKHN0cnVj dCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwgdm9pZCAqYWRkciwgdWludDY0X3QgaW92YSwNCj4gc2l6 ZV90IGxlbik7DQo+ICAJaW50ICgqZG1hX3VubWFwKShzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpk ZXYsIHZvaWQgKmFkZHIsIHVpbnQ2NF90IGlvdmEsDQo+IHNpemVfdCBsZW4pOw0KPiArCWludCAo KnVwZGF0ZV9saW5rX3N0YXRlKShzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYpOw0KPiArCWlu dCAoKnNlcnZlcl9kaXNjb25uZWN0KShzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYpOw0KPiAr CWludCAoKnNlcnZlcl9yZWNvbm5lY3QpKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldik7DQo+ ICsJaW50ICgqZ2V0X2ludHJfZmQpKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldik7DQo+ICB9 Ow0KPiANCj4gIGV4dGVybiBzdHJ1Y3QgdmlydGlvX3VzZXJfYmFja2VuZF9vcHMgdmlydGlvX29w c191c2VyOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3Zo b3N0X2tlcm5lbC5jDQo+IGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3Zob3N0X2tl cm5lbC5jDQo+IGluZGV4IDQ3ZmI0NDI3YmUuLmFhMWY5ZWNlNWUgMTAwNjQ0DQo+IC0tLSBhL2Ry aXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92aG9zdF9rZXJuZWwuYw0KPiArKysgYi9kcml2 ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmhvc3Rfa2VybmVsLmMNCj4gQEAgLTQ1OSw2ICs0 NTksMjAgQEAgdmhvc3Rfa2VybmVsX2dldF9iYWNrZW5kX2ZlYXR1cmVzKHVpbnQ2NF90ICpmZWF0 dXJlcykNCj4gIAlyZXR1cm4gMDsNCj4gIH0NCj4gDQo+ICtzdGF0aWMgaW50DQo+ICt2aG9zdF9r ZXJuZWxfdXBkYXRlX2xpbmtfc3RhdGUoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2IF9fcnRl X3VudXNlZCkNCj4gK3sNCj4gKwkvKiBOb3RoaW5nIHRvIHVwZGF0ZSAoTWF5YmUgZ2V0IFRBUCBp bnRlcmZhY2UgbGluayBzdGF0ZT8pICovDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0 YXRpYyBpbnQNCj4gK3Zob3N0X2tlcm5lbF9nZXRfaW50cl9mZChzdHJ1Y3QgdmlydGlvX3VzZXJf ZGV2ICpkZXYgX19ydGVfdW51c2VkKQ0KPiArew0KPiArCS8qIE5vIGxpbmsgc3RhdGUgaW50ZXJy dXB0IHdpdGggVmhvc3Qta2VybmVsICovDQo+ICsJcmV0dXJuIC0xOw0KPiArfQ0KPiArDQo+ICBz dHJ1Y3QgdmlydGlvX3VzZXJfYmFja2VuZF9vcHMgdmlydGlvX29wc19rZXJuZWwgPSB7DQo+ICAJ LnNldHVwID0gdmhvc3Rfa2VybmVsX3NldHVwLA0KPiAgCS5kZXN0cm95ID0gdmhvc3Rfa2VybmVs X2Rlc3Ryb3ksDQo+IEBAIC00NzUsNSArNDg5LDcgQEAgc3RydWN0IHZpcnRpb191c2VyX2JhY2tl bmRfb3BzIHZpcnRpb19vcHNfa2VybmVsID0gew0KPiAgCS5zZXRfdnJpbmdfYWRkciA9IHZob3N0 X2tlcm5lbF9zZXRfdnJpbmdfYWRkciwNCj4gIAkuZ2V0X3N0YXR1cyA9IHZob3N0X2tlcm5lbF9n ZXRfc3RhdHVzLA0KPiAgCS5zZXRfc3RhdHVzID0gdmhvc3Rfa2VybmVsX3NldF9zdGF0dXMsDQo+ IC0JLmVuYWJsZV9xcCA9IHZob3N0X2tlcm5lbF9lbmFibGVfcXVldWVfcGFpcg0KPiArCS5lbmFi bGVfcXAgPSB2aG9zdF9rZXJuZWxfZW5hYmxlX3F1ZXVlX3BhaXIsDQo+ICsJLnVwZGF0ZV9saW5r X3N0YXRlID0gdmhvc3Rfa2VybmVsX3VwZGF0ZV9saW5rX3N0YXRlLA0KPiArCS5nZXRfaW50cl9m ZCA9IHZob3N0X2tlcm5lbF9nZXRfaW50cl9mZCwNCj4gIH07DQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmhvc3RfdXNlci5jDQo+IGIvZHJpdmVycy9uZXQv dmlydGlvL3ZpcnRpb191c2VyL3Zob3N0X3VzZXIuYw0KPiBpbmRleCAwMTQ3YjZkOTYzLi5mMDQ2 NjU1YWY2IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmhv c3RfdXNlci5jDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92aG9zdF91 c2VyLmMNCj4gQEAgLTExLDYgKzExLDcgQEANCj4gICNpbmNsdWRlIDxzdHJpbmcuaD4NCj4gICNp bmNsdWRlIDxlcnJuby5oPg0KPiANCj4gKyNpbmNsdWRlIDxydGVfYWxhcm0uaD4NCj4gICNpbmNs dWRlIDxydGVfc3RyaW5nX2Zucy5oPg0KPiAgI2luY2x1ZGUgPHJ0ZV9mYmFycmF5Lmg+DQo+IA0K PiBAQCAtMTgsNiArMTksOCBAQA0KPiAgI2luY2x1ZGUgInZpcnRpb191c2VyX2Rldi5oIg0KPiAN Cj4gIHN0cnVjdCB2aG9zdF91c2VyX2RhdGEgew0KPiArCWludCB2aG9zdGZkOw0KPiArCWludCBs aXN0ZW5mZDsNCj4gIAl1aW50NjRfdCBwcm90b2NvbF9mZWF0dXJlczsNCj4gIH07DQo+IA0KPiBA QCAtMTgyLDEzICsxODUsMTQgQEAgdmhvc3RfdXNlcl9yZWFkKGludCBmZCwgc3RydWN0IHZob3N0 X3VzZXJfbXNnICptc2cpDQo+ICBzdGF0aWMgaW50DQo+ICB2aG9zdF91c2VyX2NoZWNrX3JlcGx5 X2FjayhzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsIHN0cnVjdCB2aG9zdF91c2VyX21zZw0K PiAqbXNnKQ0KPiAgew0KPiArCXN0cnVjdCB2aG9zdF91c2VyX2RhdGEgKmRhdGEgPSBkZXYtPmJh Y2tlbmRfZGF0YTsNCj4gIAllbnVtIHZob3N0X3VzZXJfcmVxdWVzdCByZXEgPSBtc2ctPnJlcXVl c3Q7DQo+ICAJaW50IHJldDsNCj4gDQo+ICAJaWYgKCEobXNnLT5mbGFncyAmIFZIT1NUX1VTRVJf TkVFRF9SRVBMWV9NQVNLKSkNCj4gIAkJcmV0dXJuIDA7DQo+IA0KPiAtCXJldCA9IHZob3N0X3Vz ZXJfcmVhZChkZXYtPnZob3N0ZmQsIG1zZyk7DQo+ICsJcmV0ID0gdmhvc3RfdXNlcl9yZWFkKGRh dGEtPnZob3N0ZmQsIG1zZyk7DQo+ICAJaWYgKHJldCA8IDApIHsNCj4gIAkJUE1EX0RSVl9MT0co RVJSLCAiRmFpbGVkIHRvIHJlYWQgcmVwbHktYWNrIik7DQo+ICAJCXJldHVybiAtMTsNCj4gQEAg LTIxNiwxMiArMjIwLDEzIEBAIHN0YXRpYyBpbnQNCj4gIHZob3N0X3VzZXJfc2V0X293bmVyKHN0 cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4gIHsNCj4gIAlpbnQgcmV0Ow0KPiArCXN0cnVj dCB2aG9zdF91c2VyX2RhdGEgKmRhdGEgPSBkZXYtPmJhY2tlbmRfZGF0YTsNCj4gIAlzdHJ1Y3Qg dmhvc3RfdXNlcl9tc2cgbXNnID0gew0KPiAgCQkucmVxdWVzdCA9IFZIT1NUX1VTRVJfU0VUX09X TkVSLA0KPiAgCQkuZmxhZ3MgPSBWSE9TVF9VU0VSX1ZFUlNJT04sDQo+ICAJfTsNCj4gDQo+IC0J cmV0ID0gdmhvc3RfdXNlcl93cml0ZShkZXYtPnZob3N0ZmQsICZtc2csIE5VTEwsIDApOw0KPiAr CXJldCA9IHZob3N0X3VzZXJfd3JpdGUoZGF0YS0+dmhvc3RmZCwgJm1zZywgTlVMTCwgMCk7DQo+ ICAJaWYgKHJldCA8IDApIHsNCj4gIAkJUE1EX0RSVl9MT0coRVJSLCAiRmFpbGVkIHRvIHNldCBv d25lciIpOw0KPiAgCQlyZXR1cm4gLTE7DQo+IEBAIC0yMzQsMTYgKzIzOSwxNyBAQCBzdGF0aWMg aW50DQo+ICB2aG9zdF91c2VyX2dldF9wcm90b2NvbF9mZWF0dXJlcyhzdHJ1Y3QgdmlydGlvX3Vz ZXJfZGV2ICpkZXYsIHVpbnQ2NF90DQo+ICpmZWF0dXJlcykNCj4gIHsNCj4gIAlpbnQgcmV0Ow0K PiArCXN0cnVjdCB2aG9zdF91c2VyX2RhdGEgKmRhdGEgPSBkZXYtPmJhY2tlbmRfZGF0YTsNCj4g IAlzdHJ1Y3Qgdmhvc3RfdXNlcl9tc2cgbXNnID0gew0KPiAgCQkucmVxdWVzdCA9IFZIT1NUX1VT RVJfR0VUX1BST1RPQ09MX0ZFQVRVUkVTLA0KPiAgCQkuZmxhZ3MgPSBWSE9TVF9VU0VSX1ZFUlNJ T04sDQo+ICAJfTsNCj4gDQo+IC0JcmV0ID0gdmhvc3RfdXNlcl93cml0ZShkZXYtPnZob3N0ZmQs ICZtc2csIE5VTEwsIDApOw0KPiArCXJldCA9IHZob3N0X3VzZXJfd3JpdGUoZGF0YS0+dmhvc3Rm ZCwgJm1zZywgTlVMTCwgMCk7DQo+ICAJaWYgKHJldCA8IDApDQo+ICAJCWdvdG8gZXJyOw0KPiAN Cj4gLQlyZXQgPSB2aG9zdF91c2VyX3JlYWQoZGV2LT52aG9zdGZkLCAmbXNnKTsNCj4gKwlyZXQg PSB2aG9zdF91c2VyX3JlYWQoZGF0YS0+dmhvc3RmZCwgJm1zZyk7DQo+ICAJaWYgKHJldCA8IDAp DQo+ICAJCWdvdG8gZXJyOw0KPiANCj4gQEAgLTI3MCw2ICsyNzYsNyBAQCBzdGF0aWMgaW50DQo+ ICB2aG9zdF91c2VyX3NldF9wcm90b2NvbF9mZWF0dXJlcyhzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2 ICpkZXYsIHVpbnQ2NF90DQo+IGZlYXR1cmVzKQ0KPiAgew0KPiAgCWludCByZXQ7DQo+ICsJc3Ry dWN0IHZob3N0X3VzZXJfZGF0YSAqZGF0YSA9IGRldi0+YmFja2VuZF9kYXRhOw0KPiAgCXN0cnVj dCB2aG9zdF91c2VyX21zZyBtc2cgPSB7DQo+ICAJCS5yZXF1ZXN0ID0gVkhPU1RfVVNFUl9TRVRf UFJPVE9DT0xfRkVBVFVSRVMsDQo+ICAJCS5mbGFncyA9IFZIT1NUX1VTRVJfVkVSU0lPTiwNCj4g QEAgLTI3Nyw3ICsyODQsNyBAQCB2aG9zdF91c2VyX3NldF9wcm90b2NvbF9mZWF0dXJlcyhzdHJ1 Y3QgdmlydGlvX3VzZXJfZGV2DQo+ICpkZXYsIHVpbnQ2NF90IGZlYXR1cmVzKQ0KPiAgCQkucGF5 bG9hZC51NjQgPSBmZWF0dXJlcywNCj4gIAl9Ow0KPiANCj4gLQlyZXQgPSB2aG9zdF91c2VyX3dy aXRlKGRldi0+dmhvc3RmZCwgJm1zZywgTlVMTCwgMCk7DQo+ICsJcmV0ID0gdmhvc3RfdXNlcl93 cml0ZShkYXRhLT52aG9zdGZkLCAmbXNnLCBOVUxMLCAwKTsNCj4gIAlpZiAocmV0IDwgMCkgew0K PiAgCQlQTURfRFJWX0xPRyhFUlIsICJGYWlsZWQgdG8gc2V0IHByb3RvY29sIGZlYXR1cmVzIik7 DQo+ICAJCXJldHVybiAtMTsNCj4gQEAgLTI5NiwxMSArMzAzLDExIEBAIHZob3N0X3VzZXJfZ2V0 X2ZlYXR1cmVzKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwNCj4gdWludDY0X3QgKmZlYXR1 cmVzKQ0KPiAgCQkuZmxhZ3MgPSBWSE9TVF9VU0VSX1ZFUlNJT04sDQo+ICAJfTsNCj4gDQo+IC0J cmV0ID0gdmhvc3RfdXNlcl93cml0ZShkZXYtPnZob3N0ZmQsICZtc2csIE5VTEwsIDApOw0KPiAr CXJldCA9IHZob3N0X3VzZXJfd3JpdGUoZGF0YS0+dmhvc3RmZCwgJm1zZywgTlVMTCwgMCk7DQo+ ICAJaWYgKHJldCA8IDApDQo+ICAJCWdvdG8gZXJyOw0KPiANCj4gLQlyZXQgPSB2aG9zdF91c2Vy X3JlYWQoZGV2LT52aG9zdGZkLCAmbXNnKTsNCj4gKwlyZXQgPSB2aG9zdF91c2VyX3JlYWQoZGF0 YS0+dmhvc3RmZCwgJm1zZyk7DQo+ICAJaWYgKHJldCA8IDApDQo+ICAJCWdvdG8gZXJyOw0KPiAN Cj4gQEAgLTM0NCw2ICszNTEsNyBAQCBzdGF0aWMgaW50DQo+ICB2aG9zdF91c2VyX3NldF9mZWF0 dXJlcyhzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsIHVpbnQ2NF90IGZlYXR1cmVzKQ0KPiAg ew0KPiAgCWludCByZXQ7DQo+ICsJc3RydWN0IHZob3N0X3VzZXJfZGF0YSAqZGF0YSA9IGRldi0+ YmFja2VuZF9kYXRhOw0KPiAgCXN0cnVjdCB2aG9zdF91c2VyX21zZyBtc2cgPSB7DQo+ICAJCS5y ZXF1ZXN0ID0gVkhPU1RfVVNFUl9TRVRfRkVBVFVSRVMsDQo+ICAJCS5mbGFncyA9IFZIT1NUX1VT RVJfVkVSU0lPTiwNCj4gQEAgLTM1Myw3ICszNjEsNyBAQCB2aG9zdF91c2VyX3NldF9mZWF0dXJl cyhzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsDQo+IHVpbnQ2NF90IGZlYXR1cmVzKQ0KPiAN Cj4gIAltc2cucGF5bG9hZC51NjQgfD0gZGV2LT5kZXZpY2VfZmVhdHVyZXMgJiAoMVVMTCA8PA0K PiBWSE9TVF9VU0VSX0ZfUFJPVE9DT0xfRkVBVFVSRVMpOw0KPiANCj4gLQlyZXQgPSB2aG9zdF91 c2VyX3dyaXRlKGRldi0+dmhvc3RmZCwgJm1zZywgTlVMTCwgMCk7DQo+ICsJcmV0ID0gdmhvc3Rf dXNlcl93cml0ZShkYXRhLT52aG9zdGZkLCAmbXNnLCBOVUxMLCAwKTsNCj4gIAlpZiAocmV0IDwg MCkgew0KPiAgCQlQTURfRFJWX0xPRyhFUlIsICJGYWlsZWQgdG8gc2V0IGZlYXR1cmVzIik7DQo+ ICAJCXJldHVybiAtMTsNCj4gQEAgLTQ3Nyw3ICs0ODUsNyBAQCB2aG9zdF91c2VyX3NldF9tZW1v cnlfdGFibGUoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2KQ0KPiAgCW1zZy5zaXplICs9IHNp emVvZihtc2cucGF5bG9hZC5tZW1vcnkucGFkZGluZyk7DQo+ICAJbXNnLnNpemUgKz0gZmRfbnVt ICogc2l6ZW9mKHN0cnVjdCB2aG9zdF9tZW1vcnlfcmVnaW9uKTsNCj4gDQo+IC0JcmV0ID0gdmhv c3RfdXNlcl93cml0ZShkZXYtPnZob3N0ZmQsICZtc2csIGZkcywgZmRfbnVtKTsNCj4gKwlyZXQg PSB2aG9zdF91c2VyX3dyaXRlKGRhdGEtPnZob3N0ZmQsICZtc2csIGZkcywgZmRfbnVtKTsNCj4g IAlpZiAocmV0IDwgMCkNCj4gIAkJZ290byBlcnI7DQo+IA0KPiBAQCAtNDkyLDYgKzUwMCw3IEBA IHZob3N0X3VzZXJfc2V0X3ZyaW5nKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwgZW51bQ0K PiB2aG9zdF91c2VyX3JlcXVlc3QgcmVxLA0KPiAgCQlzdHJ1Y3Qgdmhvc3RfdnJpbmdfc3RhdGUg KnN0YXRlKQ0KPiAgew0KPiAgCWludCByZXQ7DQo+ICsJc3RydWN0IHZob3N0X3VzZXJfZGF0YSAq ZGF0YSA9IGRldi0+YmFja2VuZF9kYXRhOw0KPiAgCXN0cnVjdCB2aG9zdF91c2VyX21zZyBtc2cg PSB7DQo+ICAJCS5yZXF1ZXN0ID0gcmVxLA0KPiAgCQkuZmxhZ3MgPSBWSE9TVF9VU0VSX1ZFUlNJ T04sDQo+IEBAIC00OTksNyArNTA4LDcgQEAgdmhvc3RfdXNlcl9zZXRfdnJpbmcoc3RydWN0IHZp cnRpb191c2VyX2RldiAqZGV2LCBlbnVtDQo+IHZob3N0X3VzZXJfcmVxdWVzdCByZXEsDQo+ICAJ CS5wYXlsb2FkLnN0YXRlID0gKnN0YXRlLA0KPiAgCX07DQo+IA0KPiAtCXJldCA9IHZob3N0X3Vz ZXJfd3JpdGUoZGV2LT52aG9zdGZkLCAmbXNnLCBOVUxMLCAwKTsNCj4gKwlyZXQgPSB2aG9zdF91 c2VyX3dyaXRlKGRhdGEtPnZob3N0ZmQsICZtc2csIE5VTEwsIDApOw0KPiAgCWlmIChyZXQgPCAw KSB7DQo+ICAJCVBNRF9EUlZfTE9HKEVSUiwgIkZhaWxlZCB0byBzZXQgdnJpbmcgc3RhdGUgKHJl cXVlc3QgJWQpIiwgcmVxKTsNCj4gIAkJcmV0dXJuIC0xOw0KPiBAQCAtNTMxLDYgKzU0MCw3IEBA IHZob3N0X3VzZXJfZ2V0X3ZyaW5nX2Jhc2Uoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2LA0K PiBzdHJ1Y3Qgdmhvc3RfdnJpbmdfc3RhdGUNCj4gIHsNCj4gIAlpbnQgcmV0Ow0KPiAgCXN0cnVj dCB2aG9zdF91c2VyX21zZyBtc2c7DQo+ICsJc3RydWN0IHZob3N0X3VzZXJfZGF0YSAqZGF0YSA9 IGRldi0+YmFja2VuZF9kYXRhOw0KPiAgCXVuc2lnbmVkIGludCBpbmRleCA9IHN0YXRlLT5pbmRl eDsNCj4gDQo+ICAJcmV0ID0gdmhvc3RfdXNlcl9zZXRfdnJpbmcoZGV2LCBWSE9TVF9VU0VSX0dF VF9WUklOR19CQVNFLCBzdGF0ZSk7DQo+IEBAIC01MzksNyArNTQ5LDcgQEAgdmhvc3RfdXNlcl9n ZXRfdnJpbmdfYmFzZShzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsDQo+IHN0cnVjdCB2aG9z dF92cmluZ19zdGF0ZQ0KPiAgCQlnb3RvIGVycjsNCj4gIAl9DQo+IA0KPiAtCXJldCA9IHZob3N0 X3VzZXJfcmVhZChkZXYtPnZob3N0ZmQsICZtc2cpOw0KPiArCXJldCA9IHZob3N0X3VzZXJfcmVh ZChkYXRhLT52aG9zdGZkLCAmbXNnKTsNCj4gIAlpZiAocmV0IDwgMCkgew0KPiAgCQlQTURfRFJW X0xPRyhFUlIsICJGYWlsZWQgdG8gcmVhZCByZXBseSIpOw0KPiAgCQlnb3RvIGVycjsNCj4gQEAg LTU3NSw2ICs1ODUsNyBAQCB2aG9zdF91c2VyX3NldF92cmluZ19maWxlKHN0cnVjdCB2aXJ0aW9f dXNlcl9kZXYgKmRldiwNCj4gZW51bSB2aG9zdF91c2VyX3JlcXVlc3Qgcg0KPiAgCWludCByZXQ7 DQo+ICAJaW50IGZkID0gZmlsZS0+ZmQ7DQo+ICAJaW50IG51bV9mZCA9IDA7DQo+ICsJc3RydWN0 IHZob3N0X3VzZXJfZGF0YSAqZGF0YSA9IGRldi0+YmFja2VuZF9kYXRhOw0KPiAgCXN0cnVjdCB2 aG9zdF91c2VyX21zZyBtc2cgPSB7DQo+ICAJCS5yZXF1ZXN0ID0gcmVxLA0KPiAgCQkuZmxhZ3Mg PSBWSE9TVF9VU0VSX1ZFUlNJT04sDQo+IEBAIC01ODcsNyArNTk4LDcgQEAgdmhvc3RfdXNlcl9z ZXRfdnJpbmdfZmlsZShzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsDQo+IGVudW0gdmhvc3Rf dXNlcl9yZXF1ZXN0IHINCj4gIAllbHNlDQo+ICAJCW1zZy5wYXlsb2FkLnU2NCB8PSBWSE9TVF9V U0VSX1ZSSU5HX05PRkRfTUFTSzsNCj4gDQo+IC0JcmV0ID0gdmhvc3RfdXNlcl93cml0ZShkZXYt PnZob3N0ZmQsICZtc2csICZmZCwgbnVtX2ZkKTsNCj4gKwlyZXQgPSB2aG9zdF91c2VyX3dyaXRl KGRhdGEtPnZob3N0ZmQsICZtc2csICZmZCwgbnVtX2ZkKTsNCj4gIAlpZiAocmV0IDwgMCkgew0K PiAgCQlQTURfRFJWX0xPRyhFUlIsICJGYWlsZWQgdG8gc2V0IHZyaW5nIGZpbGUgKHJlcXVlc3Qg JWQpIiwgcmVxKTsNCj4gIAkJcmV0dXJuIC0xOw0KPiBAQCAtNjEzLDYgKzYyNCw3IEBAIHN0YXRp YyBpbnQNCj4gIHZob3N0X3VzZXJfc2V0X3ZyaW5nX2FkZHIoc3RydWN0IHZpcnRpb191c2VyX2Rl diAqZGV2LCBzdHJ1Y3QNCj4gdmhvc3RfdnJpbmdfYWRkciAqYWRkcikNCj4gIHsNCj4gIAlpbnQg cmV0Ow0KPiArCXN0cnVjdCB2aG9zdF91c2VyX2RhdGEgKmRhdGEgPSBkZXYtPmJhY2tlbmRfZGF0 YTsNCj4gIAlzdHJ1Y3Qgdmhvc3RfdXNlcl9tc2cgbXNnID0gew0KPiAgCQkucmVxdWVzdCA9IFZI T1NUX1VTRVJfU0VUX1ZSSU5HX0FERFIsDQo+ICAJCS5mbGFncyA9IFZIT1NUX1VTRVJfVkVSU0lP TiwNCj4gQEAgLTYyMCw3ICs2MzIsNyBAQCB2aG9zdF91c2VyX3NldF92cmluZ19hZGRyKHN0cnVj dCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwNCj4gc3RydWN0IHZob3N0X3ZyaW5nX2FkZHIgKg0KPiAg CQkucGF5bG9hZC5hZGRyID0gKmFkZHIsDQo+ICAJfTsNCj4gDQo+IC0JcmV0ID0gdmhvc3RfdXNl cl93cml0ZShkZXYtPnZob3N0ZmQsICZtc2csIE5VTEwsIDApOw0KPiArCXJldCA9IHZob3N0X3Vz ZXJfd3JpdGUoZGF0YS0+dmhvc3RmZCwgJm1zZywgTlVMTCwgMCk7DQo+ICAJaWYgKHJldCA8IDAp IHsNCj4gIAkJUE1EX0RSVl9MT0coRVJSLCAiRmFpbGVkIHRvIHNlbmQgdnJpbmcgYWRkcmVzc2Vz Iik7DQo+ICAJCXJldHVybiAtMTsNCj4gQEAgLTY1MywxMyArNjY1LDEzIEBAIHZob3N0X3VzZXJf Z2V0X3N0YXR1cyhzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsDQo+IHVpbnQ4X3QgKnN0YXR1 cykNCj4gIAlpZiAoIShkYXRhLT5wcm90b2NvbF9mZWF0dXJlcyAmICgxVUxMIDw8IFZIT1NUX1VT RVJfUFJPVE9DT0xfRl9TVEFUVVMpKSkNCj4gIAkJcmV0dXJuIC1FTk9UU1VQOw0KPiANCj4gLQly ZXQgPSB2aG9zdF91c2VyX3dyaXRlKGRldi0+dmhvc3RmZCwgJm1zZywgTlVMTCwgMCk7DQo+ICsJ cmV0ID0gdmhvc3RfdXNlcl93cml0ZShkYXRhLT52aG9zdGZkLCAmbXNnLCBOVUxMLCAwKTsNCj4g IAlpZiAocmV0IDwgMCkgew0KPiAgCQlQTURfRFJWX0xPRyhFUlIsICJGYWlsZWQgdG8gc2VuZCBy ZXF1ZXN0Iik7DQo+ICAJCWdvdG8gZXJyOw0KPiAgCX0NCj4gDQo+IC0JcmV0ID0gdmhvc3RfdXNl cl9yZWFkKGRldi0+dmhvc3RmZCwgJm1zZyk7DQo+ICsJcmV0ID0gdmhvc3RfdXNlcl9yZWFkKGRh dGEtPnZob3N0ZmQsICZtc2cpOw0KPiAgCWlmIChyZXQgPCAwKSB7DQo+ICAJCVBNRF9EUlZfTE9H KEVSUiwgIkZhaWxlZCB0byByZWN2IHJlcXVlc3QiKTsNCj4gIAkJZ290byBlcnI7DQo+IEBAIC03 MTIsNyArNzI0LDcgQEAgdmhvc3RfdXNlcl9zZXRfc3RhdHVzKHN0cnVjdCB2aXJ0aW9fdXNlcl9k ZXYgKmRldiwgdWludDhfdA0KPiBzdGF0dXMpDQo+ICAJaWYgKGRhdGEtPnByb3RvY29sX2ZlYXR1 cmVzICYgKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX1JFUExZX0FDSykpDQo+ICAJCW1z Zy5mbGFncyB8PSBWSE9TVF9VU0VSX05FRURfUkVQTFlfTUFTSzsNCj4gDQo+IC0JcmV0ID0gdmhv c3RfdXNlcl93cml0ZShkZXYtPnZob3N0ZmQsICZtc2csIE5VTEwsIDApOw0KPiArCXJldCA9IHZo b3N0X3VzZXJfd3JpdGUoZGF0YS0+dmhvc3RmZCwgJm1zZywgTlVMTCwgMCk7DQo+ICAJaWYgKHJl dCA8IDApIHsNCj4gIAkJUE1EX0RSVl9MT0coRVJSLCAiRmFpbGVkIHRvIHNlbmQgZ2V0IHN0YXR1 cyByZXF1ZXN0Iik7DQo+ICAJCXJldHVybiAtMTsNCj4gQEAgLTcyMywxMSArNzM1LDEyIEBAIHZo b3N0X3VzZXJfc2V0X3N0YXR1cyhzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsDQo+IHVpbnQ4 X3Qgc3RhdHVzKQ0KPiANCj4gICNkZWZpbmUgTUFYX1ZJUlRJT19VU0VSX0JBQ0tMT0cgMQ0KPiAg c3RhdGljIGludA0KPiAtdmlydGlvX3VzZXJfc3RhcnRfc2VydmVyKHN0cnVjdCB2aXJ0aW9fdXNl cl9kZXYgKmRldiwgc3RydWN0IHNvY2thZGRyX3VuICp1bikNCj4gK3Zob3N0X3VzZXJfc3RhcnRf c2VydmVyKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwgc3RydWN0IHNvY2thZGRyX3VuICp1 bikNCj4gIHsNCj4gIAlpbnQgcmV0Ow0KPiAgCWludCBmbGFnOw0KPiAtCWludCBmZCA9IGRldi0+ bGlzdGVuZmQ7DQo+ICsJc3RydWN0IHZob3N0X3VzZXJfZGF0YSAqZGF0YSA9IGRldi0+YmFja2Vu ZF9kYXRhOw0KPiArCWludCBmZCA9IGRhdGEtPmxpc3RlbmZkOw0KPiANCj4gIAlyZXQgPSBiaW5k KGZkLCAoc3RydWN0IHNvY2thZGRyICopdW4sIHNpemVvZigqdW4pKTsNCj4gIAlpZiAocmV0IDwg MCkgew0KPiBAQCAtNzQwLDggKzc1Myw4IEBAIHZpcnRpb191c2VyX3N0YXJ0X3NlcnZlcihzdHJ1 Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsDQo+IHN0cnVjdCBzb2NrYWRkcl91biAqdW4pDQo+ICAJ CXJldHVybiAtMTsNCj4gDQo+ICAJUE1EX0RSVl9MT0coTk9USUNFLCAiKCVzKSB3YWl0aW5nIGZv ciBjbGllbnQgY29ubmVjdGlvbi4uLiIsIGRldi0+cGF0aCk7DQo+IC0JZGV2LT52aG9zdGZkID0g YWNjZXB0KGZkLCBOVUxMLCBOVUxMKTsNCj4gLQlpZiAoZGV2LT52aG9zdGZkIDwgMCkgew0KPiAr CWRhdGEtPnZob3N0ZmQgPSBhY2NlcHQoZmQsIE5VTEwsIE5VTEwpOw0KPiArCWlmIChkYXRhLT52 aG9zdGZkIDwgMCkgew0KPiAgCQlQTURfRFJWX0xPRyhFUlIsICJGYWlsZWQgdG8gYWNjZXB0IGlu aXRpYWwgY2xpZW50IGNvbm5lY3Rpb24gKCVzKSIsDQo+ICAJCQkJc3RyZXJyb3IoZXJybm8pKTsN Cj4gIAkJcmV0dXJuIC0xOw0KPiBAQCAtNzU2LDYgKzc2OSwzNyBAQCB2aXJ0aW9fdXNlcl9zdGFy dF9zZXJ2ZXIoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2LA0KPiBzdHJ1Y3Qgc29ja2FkZHJf dW4gKnVuKQ0KPiAgCXJldHVybiAwOw0KPiAgfQ0KPiANCj4gK3N0YXRpYyBpbnQNCj4gK3Zob3N0 X3VzZXJfc2VydmVyX2Rpc2Nvbm5lY3Qoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2KQ0KPiAr ew0KPiArCXN0cnVjdCB2aG9zdF91c2VyX2RhdGEgKmRhdGEgPSBkZXYtPmJhY2tlbmRfZGF0YTsN Cj4gKw0KPiArCWlmIChkYXRhLT52aG9zdGZkIDwgMCkgew0KPiArCQlQTURfRFJWX0xPRyhFUlIs ICIoJXMpIEV4cGVjdGVkIHZhbGlkIFZob3N0IEZEIiwgZGV2LT5wYXRoKTsNCj4gKwkJcmV0dXJu IC0xOw0KPiArCX0NCj4gKw0KPiArCWNsb3NlKGRhdGEtPnZob3N0ZmQpOw0KPiArCWRhdGEtPnZo b3N0ZmQgPSAtMTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50 DQo+ICt2aG9zdF91c2VyX3NlcnZlcl9yZWNvbm5lY3Qoc3RydWN0IHZpcnRpb191c2VyX2RldiAq ZGV2KQ0KPiArew0KPiArCXN0cnVjdCB2aG9zdF91c2VyX2RhdGEgKmRhdGEgPSBkZXYtPmJhY2tl bmRfZGF0YTsNCj4gKwlpbnQgZmQ7DQo+ICsNCj4gKwlmZCA9IGFjY2VwdChkYXRhLT5saXN0ZW5m ZCwgTlVMTCwgTlVMTCk7DQo+ICsJaWYgKGZkIDwgMCkNCj4gKwkJcmV0dXJuIC0xOw0KPiArDQo+ ICsJZGF0YS0+dmhvc3RmZCA9IGZkOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4g IC8qKg0KPiAgICogU2V0IHVwIGVudmlyb25tZW50IHRvIHRhbGsgd2l0aCBhIHZob3N0IHVzZXIg YmFja2VuZC4NCj4gICAqDQo+IEBAIC03ODEsNiArODI1LDggQEAgdmhvc3RfdXNlcl9zZXR1cChz dHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYpDQo+IA0KPiAgCWRldi0+YmFja2VuZF9kYXRhID0g ZGF0YTsNCj4gDQo+ICsJZGF0YS0+dmhvc3RmZCA9IC0xOw0KPiArDQo+ICAJZmQgPSBzb2NrZXQo QUZfVU5JWCwgU09DS19TVFJFQU0sIDApOw0KPiAgCWlmIChmZCA8IDApIHsNCj4gIAkJUE1EX0RS Vl9MT0coRVJSLCAic29ja2V0KCkgZXJyb3IsICVzIiwgc3RyZXJyb3IoZXJybm8pKTsNCj4gQEAg LTc5Niw4ICs4NDIsOCBAQCB2aG9zdF91c2VyX3NldHVwKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYg KmRldikNCj4gIAlzdHJsY3B5KHVuLnN1bl9wYXRoLCBkZXYtPnBhdGgsIHNpemVvZih1bi5zdW5f cGF0aCkpOw0KPiANCj4gIAlpZiAoZGV2LT5pc19zZXJ2ZXIpIHsNCj4gLQkJZGV2LT5saXN0ZW5m ZCA9IGZkOw0KPiAtCQlpZiAodmlydGlvX3VzZXJfc3RhcnRfc2VydmVyKGRldiwgJnVuKSA8IDAp IHsNCj4gKwkJZGF0YS0+bGlzdGVuZmQgPSBmZDsNCj4gKwkJaWYgKHZob3N0X3VzZXJfc3RhcnRf c2VydmVyKGRldiwgJnVuKSA8IDApIHsNCj4gIAkJCVBNRF9EUlZfTE9HKEVSUiwgInZpcnRpby11 c2VyIHN0YXJ0dXAgZmFpbHMgaW4gc2VydmVyIG1vZGUiKTsNCj4gIAkJCWdvdG8gZXJyX3NvY2tl dDsNCj4gIAkJfQ0KPiBAQCAtODA2LDcgKzg1Miw3IEBAIHZob3N0X3VzZXJfc2V0dXAoc3RydWN0 IHZpcnRpb191c2VyX2RldiAqZGV2KQ0KPiAgCQkJUE1EX0RSVl9MT0coRVJSLCAiY29ubmVjdCBl cnJvciwgJXMiLCBzdHJlcnJvcihlcnJubykpOw0KPiAgCQkJZ290byBlcnJfc29ja2V0Ow0KPiAg CQl9DQo+IC0JCWRldi0+dmhvc3RmZCA9IGZkOw0KPiArCQlkYXRhLT52aG9zdGZkID0gZmQ7DQo+ ICAJfQ0KPiANCj4gIAlyZXR1cm4gMDsNCj4gQEAgLTgyMywxMSArODY5LDI0IEBAIHZob3N0X3Vz ZXJfc2V0dXAoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2KQ0KPiAgc3RhdGljIGludA0KPiAg dmhvc3RfdXNlcl9kZXN0cm95KHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4gIHsNCj4g LQlpZiAoZGV2LT5iYWNrZW5kX2RhdGEpIHsNCj4gLQkJZnJlZShkZXYtPmJhY2tlbmRfZGF0YSk7 DQo+IC0JCWRldi0+YmFja2VuZF9kYXRhID0gTlVMTDsNCj4gKwlzdHJ1Y3Qgdmhvc3RfdXNlcl9k YXRhICpkYXRhID0gZGV2LT5iYWNrZW5kX2RhdGE7DQo+ICsNCj4gKwlpZiAoIWRhdGEpDQo+ICsJ CXJldHVybiAwOw0KPiArDQo+ICsJaWYgKGRhdGEtPnZob3N0ZmQgPj0gMCkgew0KPiArCQljbG9z ZShkYXRhLT52aG9zdGZkKTsNCj4gKwkJZGF0YS0+dmhvc3RmZCA9IC0xOw0KPiAgCX0NCj4gDQo+ ICsJaWYgKGRhdGEtPmxpc3RlbmZkID49IDApIHsNCj4gKwkJY2xvc2UoZGF0YS0+bGlzdGVuZmQp Ow0KPiArCQlkYXRhLT5saXN0ZW5mZCA9IC0xOw0KPiArCX0NCj4gKw0KPiArCWZyZWUoZGF0YSk7 DQo+ICsJZGV2LT5iYWNrZW5kX2RhdGEgPSBOVUxMOw0KPiArDQo+ICAJcmV0dXJuIDA7DQo+ICB9 DQo+IA0KPiBAQCAtODM2LDggKzg5NSwxMiBAQCB2aG9zdF91c2VyX2VuYWJsZV9xdWV1ZV9wYWly KHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldiwNCj4gIAkJCSAgICAgdWludDE2X3QgcGFpcl9p ZHgsDQo+ICAJCQkgICAgIGludCBlbmFibGUpDQo+ICB7DQo+ICsJc3RydWN0IHZob3N0X3VzZXJf ZGF0YSAqZGF0YSA9IGRldi0+YmFja2VuZF9kYXRhOw0KPiAgCWludCBpOw0KPiANCj4gKwlpZiAo ZGF0YS0+dmhvc3RmZCA8IDApDQo+ICsJCXJldHVybiAwOw0KPiArDQo+ICAJaWYgKGRldi0+cXBf ZW5hYmxlZFtwYWlyX2lkeF0gPT0gZW5hYmxlKQ0KPiAgCQlyZXR1cm4gMDsNCj4gDQo+IEBAIC04 NjMsNiArOTI2LDYxIEBAIHZob3N0X3VzZXJfZ2V0X2JhY2tlbmRfZmVhdHVyZXModWludDY0X3Qg KmZlYXR1cmVzKQ0KPiAgCXJldHVybiAwOw0KPiAgfQ0KPiANCj4gK3N0YXRpYyBpbnQNCj4gK3Zo b3N0X3VzZXJfdXBkYXRlX2xpbmtfc3RhdGUoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2KQ0K PiArew0KPiArCXN0cnVjdCB2aG9zdF91c2VyX2RhdGEgKmRhdGEgPSBkZXYtPmJhY2tlbmRfZGF0 YTsNCj4gKwljaGFyIGJ1ZlsxMjhdOw0KPiArDQo+ICsJaWYgKGRhdGEtPnZob3N0ZmQgPj0gMCkg ew0KPiArCQlpbnQgcjsNCj4gKwkJaW50IGZsYWdzOw0KPiArDQo+ICsJCWZsYWdzID0gZmNudGwo ZGF0YS0+dmhvc3RmZCwgRl9HRVRGTCk7DQo+ICsJCWlmIChmY250bChkYXRhLT52aG9zdGZkLCBG X1NFVEZMLCBmbGFncyB8IE9fTk9OQkxPQ0spID09IC0xKSB7DQo+ICsJCQlQTURfRFJWX0xPRyhF UlIsICJlcnJvciBzZXR0aW5nIE9fTk9OQkxPQ0sgZmxhZyIpOw0KPiArCQkJcmV0dXJuIC0xOw0K PiArCQl9DQo+ICsNCj4gKwkJciA9IHJlY3YoZGF0YS0+dmhvc3RmZCwgYnVmLCAxMjgsIE1TR19Q RUVLKTsNCj4gKwkJaWYgKHIgPT0gMCB8fCAociA8IDAgJiYgZXJybm8gIT0gRUFHQUlOKSkgew0K PiArCQkJZGV2LT5uZXRfc3RhdHVzICY9ICh+VklSVElPX05FVF9TX0xJTktfVVApOw0KPiArCQkJ UE1EX0RSVl9MT0coRVJSLCAidmlydGlvLXVzZXIgcG9ydCAldSBpcyBkb3duIiwgZGV2LQ0KPiA+ cG9ydF9pZCk7DQo+ICsNCj4gKwkJCS8qIFRoaXMgZnVuY3Rpb24gY291bGQgYmUgY2FsbGVkIGlu IHRoZSBwcm9jZXNzDQo+ICsJCQkgKiBvZiBpbnRlcnJ1cHQgaGFuZGxpbmcsIGNhbGxiYWNrIGNh bm5vdCBiZQ0KPiArCQkJICogdW5yZWdpc3RlcmVkIGhlcmUsIHNldCBhbiBhbGFybSB0byBkbyBp dC4NCj4gKwkJCSAqLw0KPiArCQkJcnRlX2VhbF9hbGFybV9zZXQoMSwgdmlydGlvX3VzZXJfZGV2 X2RlbGF5ZWRfaGFuZGxlciwgKHZvaWQNCj4gKilkZXYpOw0KPiArCQl9IGVsc2Ugew0KPiArCQkJ ZGV2LT5uZXRfc3RhdHVzIHw9IFZJUlRJT19ORVRfU19MSU5LX1VQOw0KPiArCQl9DQo+ICsNCj4g KwkJaWYgKGZjbnRsKGRhdGEtPnZob3N0ZmQsIEZfU0VURkwsDQo+ICsJCQkJCWZsYWdzICYgfk9f Tk9OQkxPQ0spID09IC0xKSB7DQo+ICsJCQlQTURfRFJWX0xPRyhFUlIsICJlcnJvciBjbGVhcmlu ZyBPX05PTkJMT0NLIGZsYWciKTsNCj4gKwkJCXJldHVybiAtMTsNCj4gKwkJfQ0KPiArCX0gZWxz ZSBpZiAoZGV2LT5pc19zZXJ2ZXIpIHsNCj4gKwkJZGV2LT5uZXRfc3RhdHVzICY9ICh+VklSVElP X05FVF9TX0xJTktfVVApOw0KPiArCQlpZiAodmlydGlvX3VzZXJfZGV2X3NlcnZlcl9yZWNvbm5l Y3QoZGV2KSA+PSAwKQ0KPiArCQkJZGV2LT5uZXRfc3RhdHVzIHw9IFZJUlRJT19ORVRfU19MSU5L X1VQOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50 DQo+ICt2aG9zdF91c2VyX2dldF9pbnRyX2ZkKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikN Cj4gK3sNCj4gKwlzdHJ1Y3Qgdmhvc3RfdXNlcl9kYXRhICpkYXRhID0gZGV2LT5iYWNrZW5kX2Rh dGE7DQo+ICsNCj4gKwlpZiAoZGV2LT5pc19zZXJ2ZXIgJiYgZGF0YS0+dmhvc3RmZCA9PSAtMSkN Cj4gKwkJcmV0dXJuIGRhdGEtPmxpc3RlbmZkOw0KPiArDQo+ICsJcmV0dXJuIGRhdGEtPnZob3N0 ZmQ7DQo+ICt9DQo+ICsNCj4gIHN0cnVjdCB2aXJ0aW9fdXNlcl9iYWNrZW5kX29wcyB2aXJ0aW9f b3BzX3VzZXIgPSB7DQo+ICAJLnNldHVwID0gdmhvc3RfdXNlcl9zZXR1cCwNCj4gIAkuZGVzdHJv eSA9IHZob3N0X3VzZXJfZGVzdHJveSwNCj4gQEAgLTg3OSw1ICs5OTcsOSBAQCBzdHJ1Y3Qgdmly dGlvX3VzZXJfYmFja2VuZF9vcHMgdmlydGlvX29wc191c2VyID0gew0KPiAgCS5zZXRfdnJpbmdf YWRkciA9IHZob3N0X3VzZXJfc2V0X3ZyaW5nX2FkZHIsDQo+ICAJLmdldF9zdGF0dXMgPSB2aG9z dF91c2VyX2dldF9zdGF0dXMsDQo+ICAJLnNldF9zdGF0dXMgPSB2aG9zdF91c2VyX3NldF9zdGF0 dXMsDQo+IC0JLmVuYWJsZV9xcCA9IHZob3N0X3VzZXJfZW5hYmxlX3F1ZXVlX3BhaXINCj4gKwku ZW5hYmxlX3FwID0gdmhvc3RfdXNlcl9lbmFibGVfcXVldWVfcGFpciwNCj4gKwkudXBkYXRlX2xp bmtfc3RhdGUgPSB2aG9zdF91c2VyX3VwZGF0ZV9saW5rX3N0YXRlLA0KPiArCS5zZXJ2ZXJfZGlz Y29ubmVjdCA9IHZob3N0X3VzZXJfc2VydmVyX2Rpc2Nvbm5lY3QsDQo+ICsJLnNlcnZlcl9yZWNv bm5lY3QgPSB2aG9zdF91c2VyX3NlcnZlcl9yZWNvbm5lY3QsDQo+ICsJLmdldF9pbnRyX2ZkID0g dmhvc3RfdXNlcl9nZXRfaW50cl9mZCwNCj4gIH07DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC92aXJ0aW8vdmlydGlvX3VzZXIvdmhvc3RfdmRwYS5jDQo+IGIvZHJpdmVycy9uZXQvdmlydGlv L3ZpcnRpb191c2VyL3Zob3N0X3ZkcGEuYw0KPiBpbmRleCBmNWE4OTQzOTkzLi41ZTM3NzhiNjgy IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXIvdmhvc3RfdmRw YS5jDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92aG9zdF92ZHBhLmMN Cj4gQEAgLTQ3MSw2ICs0NzEsMjAgQEAgdmhvc3RfdmRwYV9nZXRfYmFja2VuZF9mZWF0dXJlcyh1 aW50NjRfdCAqZmVhdHVyZXMpDQo+ICAJcmV0dXJuIDA7DQo+ICB9DQo+IA0KPiArc3RhdGljIGlu dA0KPiArdmhvc3RfdmRwYV91cGRhdGVfbGlua19zdGF0ZShzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2 ICpkZXYgX19ydGVfdW51c2VkKQ0KPiArew0KPiArCS8qIE5vdGhpbmcgdG8gdXBkYXRlIChmb3Ig bm93PykgKi8NCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludA0KPiArdmhv c3RfdmRwYV9nZXRfaW50cl9mZChzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYgX19ydGVfdW51 c2VkKQ0KPiArew0KPiArCS8qIE5vIGxpbmsgc3RhdGUgaW50ZXJydXB0IHdpdGggVmhvc3QtdkRQ QSAqLw0KPiArCXJldHVybiAtMTsNCj4gK30NCj4gKw0KPiAgc3RydWN0IHZpcnRpb191c2VyX2Jh Y2tlbmRfb3BzIHZpcnRpb19vcHNfdmRwYSA9IHsNCj4gIAkuc2V0dXAgPSB2aG9zdF92ZHBhX3Nl dHVwLA0KPiAgCS5kZXN0cm95ID0gdmhvc3RfdmRwYV9kZXN0cm95LA0KPiBAQCAtNDkwLDQgKzUw NCw2IEBAIHN0cnVjdCB2aXJ0aW9fdXNlcl9iYWNrZW5kX29wcyB2aXJ0aW9fb3BzX3ZkcGEgPSB7 DQo+ICAJLmVuYWJsZV9xcCA9IHZob3N0X3ZkcGFfZW5hYmxlX3F1ZXVlX3BhaXIsDQo+ICAJLmRt YV9tYXAgPSB2aG9zdF92ZHBhX2RtYV9tYXBfYmF0Y2gsDQo+ICAJLmRtYV91bm1hcCA9IHZob3N0 X3ZkcGFfZG1hX3VubWFwX2JhdGNoLA0KPiArCS51cGRhdGVfbGlua19zdGF0ZSA9IHZob3N0X3Zk cGFfdXBkYXRlX2xpbmtfc3RhdGUsDQo+ICsJLmdldF9pbnRyX2ZkID0gdmhvc3RfdmRwYV9nZXRf aW50cl9mZCwNCj4gIH07DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlv X3VzZXIvdmlydGlvX3VzZXJfZGV2LmMNCj4gYi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3Vz ZXIvdmlydGlvX3VzZXJfZGV2LmMNCj4gaW5kZXggMjE1ODE5ZDQ2ZC4uNzEyODQ1N2UzMiAxMDA2 NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3ZpcnRpb191c2VyX2Rl di5jDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92aXJ0aW9fdXNlcl9k ZXYuYw0KPiBAQCAtMzQzLDExICszNDMsNyBAQCB2aXJ0aW9fdXNlcl9maWxsX2ludHJfaGFuZGxl KHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4gIAlldGhfZGV2LT5pbnRyX2hhbmRsZS0+ dHlwZSA9IFJURV9JTlRSX0hBTkRMRV9WREVWOw0KPiAgCS8qIEZvciB2aXJ0aW8gdmRldiwgbm8g bmVlZCB0byByZWFkIGNvdW50ZXIgZm9yIGNsZWFuICovDQo+ICAJZXRoX2Rldi0+aW50cl9oYW5k bGUtPmVmZF9jb3VudGVyX3NpemUgPSAwOw0KPiAtCWV0aF9kZXYtPmludHJfaGFuZGxlLT5mZCA9 IC0xOw0KPiAtCWlmIChkZXYtPnZob3N0ZmQgPj0gMCkNCj4gLQkJZXRoX2Rldi0+aW50cl9oYW5k bGUtPmZkID0gZGV2LT52aG9zdGZkOw0KPiAtCWVsc2UgaWYgKGRldi0+aXNfc2VydmVyKQ0KPiAt CQlldGhfZGV2LT5pbnRyX2hhbmRsZS0+ZmQgPSBkZXYtPmxpc3RlbmZkOw0KPiArCWV0aF9kZXYt PmludHJfaGFuZGxlLT5mZCA9IGRldi0+b3BzLT5nZXRfaW50cl9mZChkZXYpOw0KPiANCj4gIAly ZXR1cm4gMDsNCj4gIH0NCj4gQEAgLTQwNCw3ICs0MDAsNiBAQCB2aXJ0aW9fdXNlcl9kZXZfc2V0 dXAoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2KQ0KPiAgew0KPiAgCXVpbnQzMl90IHE7DQo+ IA0KPiAtCWRldi0+dmhvc3RmZCA9IC0xOw0KPiAgCWRldi0+dmhvc3RmZHMgPSBOVUxMOw0KPiAg CWRldi0+dGFwZmRzID0gTlVMTDsNCj4gDQo+IEBAIC01OTgsMTUgKzU5Myw2IEBAIHZpcnRpb191 c2VyX2Rldl91bmluaXQoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2KQ0KPiAgCQljbG9zZShk ZXYtPmNhbGxmZHNbaV0pOw0KPiAgCQljbG9zZShkZXYtPmtpY2tmZHNbaV0pOw0KPiAgCX0NCj4g LQ0KPiAtCWlmIChkZXYtPnZob3N0ZmQgPj0gMCkNCj4gLQkJY2xvc2UoZGV2LT52aG9zdGZkKTsN Cj4gLQ0KPiAtCWlmIChkZXYtPmlzX3NlcnZlciAmJiBkZXYtPmxpc3RlbmZkID49IDApIHsNCj4g LQkJY2xvc2UoZGV2LT5saXN0ZW5mZCk7DQo+IC0JCWRldi0+bGlzdGVuZmQgPSAtMTsNCj4gLQl9 DQo+IC0NCj4gIAlpZiAoZGV2LT52aG9zdGZkcykgew0KPiAgCQlmb3IgKGkgPSAwOyBpIDwgZGV2 LT5tYXhfcXVldWVfcGFpcnM7ICsraSkgew0KPiAgCQkJY2xvc2UoZGV2LT52aG9zdGZkc1tpXSk7 DQo+IEBAIC02MzcsMTUgKzYyMywxMSBAQCB2aXJ0aW9fdXNlcl9oYW5kbGVfbXEoc3RydWN0IHZp cnRpb191c2VyX2RldiAqZGV2LA0KPiB1aW50MTZfdCBxX3BhaXJzKQ0KPiAgCQlyZXR1cm4gLTE7 DQo+ICAJfQ0KPiANCj4gLQkvKiBTZXJ2ZXIgbW9kZSBjYW4ndCBlbmFibGUgcXVldWUgcGFpcnMg aWYgdmhvc3RmZCBpcyBpbnZhbGlkLA0KPiAtCSAqIGFsd2F5cyByZXR1cm4gMCBpbiB0aGlzIGNh c2UuDQo+IC0JICovDQo+IC0JaWYgKCFkZXYtPmlzX3NlcnZlciB8fCBkZXYtPnZob3N0ZmQgPj0g MCkgew0KPiAtCQlmb3IgKGkgPSAwOyBpIDwgcV9wYWlyczsgKytpKQ0KPiAtCQkJcmV0IHw9IGRl di0+b3BzLT5lbmFibGVfcXAoZGV2LCBpLCAxKTsNCj4gLQkJZm9yIChpID0gcV9wYWlyczsgaSA8 IGRldi0+bWF4X3F1ZXVlX3BhaXJzOyArK2kpDQo+IC0JCQlyZXQgfD0gZGV2LT5vcHMtPmVuYWJs ZV9xcChkZXYsIGksIDApOw0KPiAtCX0NCj4gKwlmb3IgKGkgPSAwOyBpIDwgcV9wYWlyczsgKytp KQ0KPiArCQlyZXQgfD0gZGV2LT5vcHMtPmVuYWJsZV9xcChkZXYsIGksIDEpOw0KPiArCWZvciAo aSA9IHFfcGFpcnM7IGkgPCBkZXYtPm1heF9xdWV1ZV9wYWlyczsgKytpKQ0KPiArCQlyZXQgfD0g ZGV2LT5vcHMtPmVuYWJsZV9xcChkZXYsIGksIDApOw0KPiArDQo+ICAJZGV2LT5xdWV1ZV9wYWly cyA9IHFfcGFpcnM7DQo+IA0KPiAgCXJldHVybiByZXQ7DQo+IEBAIC04NjAsMyArODQyLDE1NCBA QCB2aXJ0aW9fdXNlcl9kZXZfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2DQo+ ICpkZXYpDQo+ICAJcHRocmVhZF9tdXRleF91bmxvY2soJmRldi0+bXV0ZXgpOw0KPiAgCXJldHVy biByZXQ7DQo+ICB9DQo+ICsNCj4gK2ludA0KPiArdmlydGlvX3VzZXJfZGV2X3VwZGF0ZV9saW5r X3N0YXRlKHN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRldikNCj4gK3sNCj4gKwlpZiAoZGV2LT5v cHMtPnVwZGF0ZV9saW5rX3N0YXRlKQ0KPiArCQlyZXR1cm4gZGV2LT5vcHMtPnVwZGF0ZV9saW5r X3N0YXRlKGRldik7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZv aWQNCj4gK3ZpcnRpb191c2VyX2Rldl9yZXNldF9xdWV1ZXNfcGFja2VkKHN0cnVjdCBydGVfZXRo X2RldiAqZXRoX2RldikNCj4gK3sNCj4gKwlzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYgPSBl dGhfZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4gKwlzdHJ1Y3QgdmlydGlvX2h3ICpodyA9ICZk ZXYtPmh3Ow0KPiArCXN0cnVjdCB2aXJ0bmV0X3J4ICpyeHZxOw0KPiArCXN0cnVjdCB2aXJ0bmV0 X3R4ICp0eHZxOw0KPiArCXVpbnQxNl90IGk7DQo+ICsNCj4gKwkvKiBBZGQgbG9jayB0byBhdm9p ZCBxdWV1ZSBjb250ZW50aW9uLiAqLw0KPiArCXJ0ZV9zcGlubG9ja19sb2NrKCZody0+c3RhdGVf bG9jayk7DQo+ICsJaHctPnN0YXJ0ZWQgPSAwOw0KPiArDQo+ICsJLyoNCj4gKwkgKiBXYWl0aW5n IGZvciBkYXRhcGF0aCB0byBjb21wbGV0ZSBiZWZvcmUgcmVzZXR0aW5nIHF1ZXVlcy4NCj4gKwkg KiAxIG1zIHNob3VsZCBiZSBlbm91Z2ggZm9yIHRoZSBvbmdvaW5nIFR4L1J4IGZ1bmN0aW9uIHRv IGZpbmlzaC4NCj4gKwkgKi8NCj4gKwlydGVfZGVsYXlfbXMoMSk7DQo+ICsNCj4gKwkvKiBWcmlu ZyByZXNldCBmb3IgZWFjaCBUeCBxdWV1ZSBhbmQgUnggcXVldWUuICovDQo+ICsJZm9yIChpID0g MDsgaSA8IGV0aF9kZXYtPmRhdGEtPm5iX3J4X3F1ZXVlczsgaSsrKSB7DQo+ICsJCXJ4dnEgPSBl dGhfZGV2LT5kYXRhLT5yeF9xdWV1ZXNbaV07DQo+ICsJCXZpcnRxdWV1ZV9yeHZxX3Jlc2V0X3Bh Y2tlZChyeHZxLT52cSk7DQo+ICsJCXZpcnRpb19kZXZfcnhfcXVldWVfc2V0dXBfZmluaXNoKGV0 aF9kZXYsIGkpOw0KPiArCX0NCj4gKw0KPiArCWZvciAoaSA9IDA7IGkgPCBldGhfZGV2LT5kYXRh LT5uYl90eF9xdWV1ZXM7IGkrKykgew0KPiArCQl0eHZxID0gZXRoX2Rldi0+ZGF0YS0+dHhfcXVl dWVzW2ldOw0KPiArCQl2aXJ0cXVldWVfdHh2cV9yZXNldF9wYWNrZWQodHh2cS0+dnEpOw0KPiAr CX0NCj4gKw0KPiArCWh3LT5zdGFydGVkID0gMTsNCj4gKwlydGVfc3BpbmxvY2tfdW5sb2NrKCZo dy0+c3RhdGVfbG9jayk7DQo+ICt9DQo+ICsNCj4gK3ZvaWQNCj4gK3ZpcnRpb191c2VyX2Rldl9k ZWxheWVkX2hhbmRsZXIodm9pZCAqcGFyYW0pDQo+ICt7DQo+ICsJc3RydWN0IHZpcnRpb191c2Vy X2RldiAqZGV2ID0gcGFyYW07DQo+ICsJc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2ID0gJnJ0 ZV9ldGhfZGV2aWNlc1tkZXYtPnBvcnRfaWRdOw0KPiArDQo+ICsJaWYgKHJ0ZV9pbnRyX2Rpc2Fi bGUoZXRoX2Rldi0+aW50cl9oYW5kbGUpIDwgMCkgew0KPiArCQlQTURfRFJWX0xPRyhFUlIsICJp bnRlcnJ1cHQgZGlzYWJsZSBmYWlsZWQiKTsNCj4gKwkJcmV0dXJuOw0KPiArCX0NCj4gKwlydGVf aW50cl9jYWxsYmFja191bnJlZ2lzdGVyKGV0aF9kZXYtPmludHJfaGFuZGxlLA0KPiArCQkJCSAg ICAgdmlydGlvX2ludGVycnVwdF9oYW5kbGVyLCBldGhfZGV2KTsNCj4gKwlpZiAoZGV2LT5pc19z ZXJ2ZXIpIHsNCj4gKwkJaWYgKGRldi0+b3BzLT5zZXJ2ZXJfZGlzY29ubmVjdCkNCj4gKwkJCWRl di0+b3BzLT5zZXJ2ZXJfZGlzY29ubmVjdChkZXYpOw0KPiArCQlldGhfZGV2LT5pbnRyX2hhbmRs ZS0+ZmQgPSBkZXYtPm9wcy0+Z2V0X2ludHJfZmQoZGV2KTsNCj4gKwkJcnRlX2ludHJfY2FsbGJh Y2tfcmVnaXN0ZXIoZXRoX2Rldi0+aW50cl9oYW5kbGUsDQo+ICsJCQkJCSAgIHZpcnRpb19pbnRl cnJ1cHRfaGFuZGxlciwgZXRoX2Rldik7DQo+ICsJCWlmIChydGVfaW50cl9lbmFibGUoZXRoX2Rl di0+aW50cl9oYW5kbGUpIDwgMCkgew0KPiArCQkJUE1EX0RSVl9MT0coRVJSLCAiaW50ZXJydXB0 IGVuYWJsZSBmYWlsZWQiKTsNCj4gKwkJCXJldHVybjsNCj4gKwkJfQ0KPiArCX0NCj4gK30NCj4g Kw0KPiAraW50DQo+ICt2aXJ0aW9fdXNlcl9kZXZfc2VydmVyX3JlY29ubmVjdChzdHJ1Y3Qgdmly dGlvX3VzZXJfZGV2ICpkZXYpDQo+ICt7DQo+ICsJaW50IHJldCwgb2xkX3N0YXR1czsNCj4gKwlz dHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYgPSAmcnRlX2V0aF9kZXZpY2VzW2Rldi0+cG9ydF9p ZF07DQo+ICsJc3RydWN0IHZpcnRpb19odyAqaHcgPSAmZGV2LT5odzsNCj4gKw0KPiArCWlmICgh ZGV2LT5vcHMtPnNlcnZlcl9yZWNvbm5lY3QpIHsNCj4gKwkJUE1EX0RSVl9MT0coRVJSLCAiKCVz KSBNaXNzaW5nIHNlcnZlciByZWNvbm5lY3QgY2FsbGJhY2siLCBkZXYtDQo+ID5wYXRoKTsNCj4g KwkJcmV0dXJuIC0xOw0KPiArCX0NCj4gKw0KPiArCWlmIChkZXYtPm9wcy0+c2VydmVyX3JlY29u bmVjdChkZXYpKSB7DQo+ICsJCVBNRF9EUlZfTE9HKEVSUiwgIiglcykgUmVjb25uZWN0IGNhbGxi YWNrIGNhbGwgZmFpbGVkIiwgZGV2LT5wYXRoKTsNCj4gKwkJcmV0dXJuIC0xOw0KPiArCX0NCj4g Kw0KPiArCW9sZF9zdGF0dXMgPSBkZXYtPnN0YXR1czsNCj4gKw0KPiArCXZpcnRpb19yZXNldCho dyk7DQo+ICsNCj4gKwl2aXJ0aW9fc2V0X3N0YXR1cyhodywgVklSVElPX0NPTkZJR19TVEFUVVNf QUNLKTsNCj4gKw0KPiArCXZpcnRpb19zZXRfc3RhdHVzKGh3LCBWSVJUSU9fQ09ORklHX1NUQVRV U19EUklWRVIpOw0KPiArDQo+ICsJaWYgKGRldi0+b3BzLT5nZXRfZmVhdHVyZXMoZGV2LCAmZGV2 LT5kZXZpY2VfZmVhdHVyZXMpIDwgMCkgew0KPiArCQlQTURfSU5JVF9MT0coRVJSLCAiZ2V0X2Zl YXR1cmVzIGZhaWxlZDogJXMiLA0KPiArCQkJICAgICBzdHJlcnJvcihlcnJubykpOw0KPiArCQly ZXR1cm4gLTE7DQo+ICsJfQ0KPiArDQo+ICsJZGV2LT5kZXZpY2VfZmVhdHVyZXMgfD0gZGV2LT5m cm9udGVuZF9mZWF0dXJlczsNCj4gKw0KPiArCS8qIHVubWFzayB2aG9zdC11c2VyIHVuc3VwcG9y dGVkIGZlYXR1cmVzICovDQo+ICsJZGV2LT5kZXZpY2VfZmVhdHVyZXMgJj0gfihkZXYtPnVuc3Vw cG9ydGVkX2ZlYXR1cmVzKTsNCj4gKw0KPiArCWRldi0+ZmVhdHVyZXMgJj0gZGV2LT5kZXZpY2Vf ZmVhdHVyZXM7DQo+ICsNCj4gKwkvKiBGb3IgcGFja2VkIHJpbmcsIHJlc2V0dGluZyBxdWV1ZXMg aXMgcmVxdWlyZWQgaW4gcmVjb25uZWN0aW9uLiAqLw0KPiArCWlmICh2aXJ0aW9fd2l0aF9wYWNr ZWRfcXVldWUoaHcpICYmDQo+ICsJICAgKG9sZF9zdGF0dXMgJiBWSVJUSU9fQ09ORklHX1NUQVRV U19EUklWRVJfT0spKSB7DQo+ICsJCVBNRF9JTklUX0xPRyhOT1RJQ0UsICJQYWNrZXRzIG9uIHRo ZSBmbHkgd2lsbCBiZSBkcm9wcGVkIg0KPiArCQkJCSIgd2hlbiBwYWNrZWQgcmluZyByZWNvbm5l Y3RpbmcuIik7DQo+ICsJCXZpcnRpb191c2VyX2Rldl9yZXNldF9xdWV1ZXNfcGFja2VkKGV0aF9k ZXYpOw0KPiArCX0NCj4gKw0KPiArCXZpcnRpb19zZXRfc3RhdHVzKGh3LCBWSVJUSU9fQ09ORklH X1NUQVRVU19GRUFUVVJFU19PSyk7DQo+ICsNCj4gKwkvKiBTdGFydCB0aGUgZGV2aWNlICovDQo+ ICsJdmlydGlvX3NldF9zdGF0dXMoaHcsIFZJUlRJT19DT05GSUdfU1RBVFVTX0RSSVZFUl9PSyk7 DQo+ICsJaWYgKCFkZXYtPnN0YXJ0ZWQpDQo+ICsJCXJldHVybiAtMTsNCj4gKw0KPiArCWlmIChk ZXYtPnF1ZXVlX3BhaXJzID4gMSkgew0KPiArCQlyZXQgPSB2aXJ0aW9fdXNlcl9oYW5kbGVfbXEo ZGV2LCBkZXYtPnF1ZXVlX3BhaXJzKTsNCj4gKwkJaWYgKHJldCAhPSAwKSB7DQo+ICsJCQlQTURf SU5JVF9MT0coRVJSLCAiRmFpbHMgdG8gZW5hYmxlIG11bHRpLXF1ZXVlIHBhaXJzISIpOw0KPiAr CQkJcmV0dXJuIC0xOw0KPiArCQl9DQo+ICsJfQ0KPiArCWlmIChldGhfZGV2LT5kYXRhLT5kZXZf ZmxhZ3MgJiBSVEVfRVRIX0RFVl9JTlRSX0xTQykgew0KPiArCQlpZiAocnRlX2ludHJfZGlzYWJs ZShldGhfZGV2LT5pbnRyX2hhbmRsZSkgPCAwKSB7DQo+ICsJCQlQTURfRFJWX0xPRyhFUlIsICJp bnRlcnJ1cHQgZGlzYWJsZSBmYWlsZWQiKTsNCj4gKwkJCXJldHVybiAtMTsNCj4gKwkJfQ0KPiAr CQlydGVfaW50cl9jYWxsYmFja191bnJlZ2lzdGVyKGV0aF9kZXYtPmludHJfaGFuZGxlLA0KPiAr CQkJCQkgICAgIHZpcnRpb19pbnRlcnJ1cHRfaGFuZGxlciwNCj4gKwkJCQkJICAgICBldGhfZGV2 KTsNCj4gKw0KPiArCQlldGhfZGV2LT5pbnRyX2hhbmRsZS0+ZmQgPSBkZXYtPm9wcy0+Z2V0X2lu dHJfZmQoZGV2KTsNCj4gKwkJcnRlX2ludHJfY2FsbGJhY2tfcmVnaXN0ZXIoZXRoX2Rldi0+aW50 cl9oYW5kbGUsDQo+ICsJCQkJCSAgIHZpcnRpb19pbnRlcnJ1cHRfaGFuZGxlciwgZXRoX2Rldik7 DQo+ICsNCj4gKwkJaWYgKHJ0ZV9pbnRyX2VuYWJsZShldGhfZGV2LT5pbnRyX2hhbmRsZSkgPCAw KSB7DQo+ICsJCQlQTURfRFJWX0xPRyhFUlIsICJpbnRlcnJ1cHQgZW5hYmxlIGZhaWxlZCIpOw0K PiArCQkJcmV0dXJuIC0xOw0KPiArCQl9DQo+ICsJfQ0KPiArCVBNRF9JTklUX0xPRyhOT1RJQ0Us ICJzZXJ2ZXIgbW9kZSB2aXJ0aW8tdXNlciByZWNvbm5lY3Rpb24gc3VjY2VlZHMhIik7DQo+ICsJ cmV0dXJuIDA7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlv X3VzZXIvdmlydGlvX3VzZXJfZGV2LmgNCj4gYi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3Vz ZXIvdmlydGlvX3VzZXJfZGV2LmgNCj4gaW5kZXggNzY1MDA5N2I2ZC4uMzZkMjQxMDU0NiAxMDA2 NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3ZpcnRpb191c2VyX2Rl di5oDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92aXJ0aW9fdXNlcl9k ZXYuaA0KPiBAQCAtMjcsMTEgKzI3LDExIEBAIHN0cnVjdCB2aXJ0aW9fdXNlcl9xdWV1ZSB7DQo+ ICBzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2IHsNCj4gIAlzdHJ1Y3QgdmlydGlvX2h3IGh3Ow0KPiAg CWVudW0gdmlydGlvX3VzZXJfYmFja2VuZF90eXBlIGJhY2tlbmRfdHlwZTsNCj4gLQkvKiBmb3Ig dmhvc3RfdXNlciBiYWNrZW5kICovDQo+IC0JaW50CQl2aG9zdGZkOw0KPiAtCWludAkJbGlzdGVu ZmQ7ICAgLyogbGlzdGVuaW5nIGZkICovDQo+ICAJYm9vbAkJaXNfc2VydmVyOyAgLyogc2VydmVy IG9yIGNsaWVudCBtb2RlICovDQo+IA0KPiArCS8qIGZvciB2aG9zdF92ZHBhIGJhY2tlbmQgKi8N Cj4gKwlpbnQJCXZob3N0ZmQ7DQo+ICsNCj4gIAkvKiBmb3Igdmhvc3Rfa2VybmVsIGJhY2tlbmQg Ki8NCj4gIAljaGFyCQkqaWZuYW1lOw0KPiAgCWludAkJKnZob3N0ZmRzOw0KPiBAQCAtODUsNSAr ODUsOCBAQCB2b2lkIHZpcnRpb191c2VyX2hhbmRsZV9jcV9wYWNrZWQoc3RydWN0IHZpcnRpb191 c2VyX2Rldg0KPiAqZGV2LA0KPiAgdWludDhfdCB2aXJ0aW9fdXNlcl9oYW5kbGVfbXEoc3RydWN0 IHZpcnRpb191c2VyX2RldiAqZGV2LCB1aW50MTZfdCBxX3BhaXJzKTsNCj4gIGludCB2aXJ0aW9f dXNlcl9kZXZfc2V0X3N0YXR1cyhzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYsIHVpbnQ4X3Qg c3RhdHVzKTsNCj4gIGludCB2aXJ0aW9fdXNlcl9kZXZfdXBkYXRlX3N0YXR1cyhzdHJ1Y3Qgdmly dGlvX3VzZXJfZGV2ICpkZXYpOw0KPiAraW50IHZpcnRpb191c2VyX2Rldl91cGRhdGVfbGlua19z dGF0ZShzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYpOw0KPiArdm9pZCB2aXJ0aW9fdXNlcl9k ZXZfZGVsYXllZF9oYW5kbGVyKHZvaWQgKnBhcmFtKTsNCj4gK2ludCB2aXJ0aW9fdXNlcl9kZXZf c2VydmVyX3JlY29ubmVjdChzdHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYpOw0KPiAgZXh0ZXJu IGNvbnN0IGNoYXIgKiBjb25zdCB2aXJ0aW9fdXNlcl9iYWNrZW5kX3N0cmluZ3NbXTsNCj4gICNl bmRpZg0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyX2V0aGRl di5jDQo+IGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyX2V0aGRldi5jDQo+IGluZGV4 IGUyYzYwNmE4MzguLjA2M2E3MjM4NzIgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRp by92aXJ0aW9fdXNlcl9ldGhkZXYuYw0KPiArKysgYi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlv X3VzZXJfZXRoZGV2LmMNCj4gQEAgLTI4LDE0NiArMjgsNiBAQA0KPiANCj4gICNkZWZpbmUgdmly dGlvX3VzZXJfZ2V0X2Rldihod3ApIGNvbnRhaW5lcl9vZihod3AsIHN0cnVjdCB2aXJ0aW9fdXNl cl9kZXYsIGh3KQ0KPiANCj4gLXN0YXRpYyB2b2lkDQo+IC12aXJ0aW9fdXNlcl9yZXNldF9xdWV1 ZXNfcGFja2VkKHN0cnVjdCBydGVfZXRoX2RldiAqZXRoX2RldikNCj4gLXsNCj4gLQlzdHJ1Y3Qg dmlydGlvX3VzZXJfZGV2ICpkZXYgPSBldGhfZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4gLQlz dHJ1Y3QgdmlydGlvX2h3ICpodyA9ICZkZXYtPmh3Ow0KPiAtCXN0cnVjdCB2aXJ0bmV0X3J4ICpy eHZxOw0KPiAtCXN0cnVjdCB2aXJ0bmV0X3R4ICp0eHZxOw0KPiAtCXVpbnQxNl90IGk7DQo+IC0N Cj4gLQkvKiBBZGQgbG9jayB0byBhdm9pZCBxdWV1ZSBjb250ZW50aW9uLiAqLw0KPiAtCXJ0ZV9z cGlubG9ja19sb2NrKCZody0+c3RhdGVfbG9jayk7DQo+IC0JaHctPnN0YXJ0ZWQgPSAwOw0KPiAt DQo+IC0JLyoNCj4gLQkgKiBXYWl0dGluZyBmb3IgZGF0YXBhdGggdG8gY29tcGxldGUgYmVmb3Jl IHJlc2V0dGluZyBxdWV1ZXMuDQo+IC0JICogMSBtcyBzaG91bGQgYmUgZW5vdWdoIGZvciB0aGUg b25nb2luZyBUeC9SeCBmdW5jdGlvbiB0byBmaW5pc2guDQo+IC0JICovDQo+IC0JcnRlX2RlbGF5 X21zKDEpOw0KPiAtDQo+IC0JLyogVnJpbmcgcmVzZXQgZm9yIGVhY2ggVHggcXVldWUgYW5kIFJ4 IHF1ZXVlLiAqLw0KPiAtCWZvciAoaSA9IDA7IGkgPCBldGhfZGV2LT5kYXRhLT5uYl9yeF9xdWV1 ZXM7IGkrKykgew0KPiAtCQlyeHZxID0gZXRoX2Rldi0+ZGF0YS0+cnhfcXVldWVzW2ldOw0KPiAt CQl2aXJ0cXVldWVfcnh2cV9yZXNldF9wYWNrZWQocnh2cS0+dnEpOw0KPiAtCQl2aXJ0aW9fZGV2 X3J4X3F1ZXVlX3NldHVwX2ZpbmlzaChldGhfZGV2LCBpKTsNCj4gLQl9DQo+IC0NCj4gLQlmb3Ig KGkgPSAwOyBpIDwgZXRoX2Rldi0+ZGF0YS0+bmJfdHhfcXVldWVzOyBpKyspIHsNCj4gLQkJdHh2 cSA9IGV0aF9kZXYtPmRhdGEtPnR4X3F1ZXVlc1tpXTsNCj4gLQkJdmlydHF1ZXVlX3R4dnFfcmVz ZXRfcGFja2VkKHR4dnEtPnZxKTsNCj4gLQl9DQo+IC0NCj4gLQlody0+c3RhcnRlZCA9IDE7DQo+ IC0JcnRlX3NwaW5sb2NrX3VubG9jaygmaHctPnN0YXRlX2xvY2spOw0KPiAtfQ0KPiAtDQo+IC0N Cj4gLXN0YXRpYyBpbnQNCj4gLXZpcnRpb191c2VyX3NlcnZlcl9yZWNvbm5lY3Qoc3RydWN0IHZp cnRpb191c2VyX2RldiAqZGV2KQ0KPiAtew0KPiAtCWludCByZXQsIGNvbm5lY3RmZCwgb2xkX3N0 YXR1czsNCj4gLQlzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYgPSAmcnRlX2V0aF9kZXZpY2Vz W2Rldi0+cG9ydF9pZF07DQo+IC0Jc3RydWN0IHZpcnRpb19odyAqaHcgPSAmZGV2LT5odzsNCj4g LQ0KPiAtCWNvbm5lY3RmZCA9IGFjY2VwdChkZXYtPmxpc3RlbmZkLCBOVUxMLCBOVUxMKTsNCj4g LQlpZiAoY29ubmVjdGZkIDwgMCkNCj4gLQkJcmV0dXJuIC0xOw0KPiAtDQo+IC0JZGV2LT52aG9z dGZkID0gY29ubmVjdGZkOw0KPiAtCW9sZF9zdGF0dXMgPSBkZXYtPnN0YXR1czsNCj4gLQ0KPiAt CXZpcnRpb19yZXNldChodyk7DQo+IC0NCj4gLQl2aXJ0aW9fc2V0X3N0YXR1cyhodywgVklSVElP X0NPTkZJR19TVEFUVVNfQUNLKTsNCj4gLQ0KPiAtCXZpcnRpb19zZXRfc3RhdHVzKGh3LCBWSVJU SU9fQ09ORklHX1NUQVRVU19EUklWRVIpOw0KPiAtDQo+IC0JaWYgKGRldi0+b3BzLT5nZXRfZmVh dHVyZXMoZGV2LCAmZGV2LT5kZXZpY2VfZmVhdHVyZXMpIDwgMCkgew0KPiAtCQlQTURfSU5JVF9M T0coRVJSLCAiZ2V0X2ZlYXR1cmVzIGZhaWxlZDogJXMiLA0KPiAtCQkJICAgICBzdHJlcnJvcihl cnJubykpOw0KPiAtCQlyZXR1cm4gLTE7DQo+IC0JfQ0KPiAtDQo+IC0JZGV2LT5kZXZpY2VfZmVh dHVyZXMgfD0gZGV2LT5mcm9udGVuZF9mZWF0dXJlczsNCj4gLQ0KPiAtCS8qIHVtYXNrIHZob3N0 LXVzZXIgdW5zdXBwb3J0ZWQgZmVhdHVyZXMgKi8NCj4gLQlkZXYtPmRldmljZV9mZWF0dXJlcyAm PSB+KGRldi0+dW5zdXBwb3J0ZWRfZmVhdHVyZXMpOw0KPiAtDQo+IC0JZGV2LT5mZWF0dXJlcyAm PSBkZXYtPmRldmljZV9mZWF0dXJlczsNCj4gLQ0KPiAtCS8qIEZvciBwYWNrZWQgcmluZywgcmVz ZXR0aW5nIHF1ZXVlcyBpcyByZXF1aXJlZCBpbiByZWNvbm5lY3Rpb24uICovDQo+IC0JaWYgKHZp cnRpb193aXRoX3BhY2tlZF9xdWV1ZShodykgJiYNCj4gLQkgICAob2xkX3N0YXR1cyAmIFZJUlRJ T19DT05GSUdfU1RBVFVTX0RSSVZFUl9PSykpIHsNCj4gLQkJUE1EX0lOSVRfTE9HKE5PVElDRSwg IlBhY2tldHMgb24gdGhlIGZseSB3aWxsIGJlIGRyb3BwZWQiDQo+IC0JCQkJIiB3aGVuIHBhY2tl ZCByaW5nIHJlY29ubmVjdGluZy4iKTsNCj4gLQkJdmlydGlvX3VzZXJfcmVzZXRfcXVldWVzX3Bh Y2tlZChldGhfZGV2KTsNCj4gLQl9DQo+IC0NCj4gLQl2aXJ0aW9fc2V0X3N0YXR1cyhodywgVklS VElPX0NPTkZJR19TVEFUVVNfRkVBVFVSRVNfT0spOw0KPiAtDQo+IC0JLyogU3RhcnQgdGhlIGRl dmljZSAqLw0KPiAtCXZpcnRpb19zZXRfc3RhdHVzKGh3LCBWSVJUSU9fQ09ORklHX1NUQVRVU19E UklWRVJfT0spOw0KPiAtCWlmICghZGV2LT5zdGFydGVkKQ0KPiAtCQlyZXR1cm4gLTE7DQo+IC0N Cj4gLQlpZiAoZGV2LT5xdWV1ZV9wYWlycyA+IDEpIHsNCj4gLQkJcmV0ID0gdmlydGlvX3VzZXJf aGFuZGxlX21xKGRldiwgZGV2LT5xdWV1ZV9wYWlycyk7DQo+IC0JCWlmIChyZXQgIT0gMCkgew0K PiAtCQkJUE1EX0lOSVRfTE9HKEVSUiwgIkZhaWxzIHRvIGVuYWJsZSBtdWx0aS1xdWV1ZSBwYWly cyEiKTsNCj4gLQkJCXJldHVybiAtMTsNCj4gLQkJfQ0KPiAtCX0NCj4gLQlpZiAoZXRoX2Rldi0+ ZGF0YS0+ZGV2X2ZsYWdzICYgUlRFX0VUSF9ERVZfSU5UUl9MU0MpIHsNCj4gLQkJaWYgKHJ0ZV9p bnRyX2Rpc2FibGUoZXRoX2Rldi0+aW50cl9oYW5kbGUpIDwgMCkgew0KPiAtCQkJUE1EX0RSVl9M T0coRVJSLCAiaW50ZXJydXB0IGRpc2FibGUgZmFpbGVkIik7DQo+IC0JCQlyZXR1cm4gLTE7DQo+ IC0JCX0NCj4gLQkJcnRlX2ludHJfY2FsbGJhY2tfdW5yZWdpc3RlcihldGhfZGV2LT5pbnRyX2hh bmRsZSwNCj4gLQkJCQkJICAgICB2aXJ0aW9faW50ZXJydXB0X2hhbmRsZXIsDQo+IC0JCQkJCSAg ICAgZXRoX2Rldik7DQo+IC0JCWV0aF9kZXYtPmludHJfaGFuZGxlLT5mZCA9IGNvbm5lY3RmZDsN Cj4gLQkJcnRlX2ludHJfY2FsbGJhY2tfcmVnaXN0ZXIoZXRoX2Rldi0+aW50cl9oYW5kbGUsDQo+ IC0JCQkJCSAgIHZpcnRpb19pbnRlcnJ1cHRfaGFuZGxlciwgZXRoX2Rldik7DQo+IC0NCj4gLQkJ aWYgKHJ0ZV9pbnRyX2VuYWJsZShldGhfZGV2LT5pbnRyX2hhbmRsZSkgPCAwKSB7DQo+IC0JCQlQ TURfRFJWX0xPRyhFUlIsICJpbnRlcnJ1cHQgZW5hYmxlIGZhaWxlZCIpOw0KPiAtCQkJcmV0dXJu IC0xOw0KPiAtCQl9DQo+IC0JfQ0KPiAtCVBNRF9JTklUX0xPRyhOT1RJQ0UsICJzZXJ2ZXIgbW9k ZSB2aXJ0aW8tdXNlciByZWNvbm5lY3Rpb24gc3VjY2VlZHMhIik7DQo+IC0JcmV0dXJuIDA7DQo+ IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkDQo+IC12aXJ0aW9fdXNlcl9kZWxheWVkX2hhbmRsZXIo dm9pZCAqcGFyYW0pDQo+IC17DQo+IC0Jc3RydWN0IHZpcnRpb19odyAqaHcgPSAoc3RydWN0IHZp cnRpb19odyAqKXBhcmFtOw0KPiAtCXN0cnVjdCBydGVfZXRoX2RldiAqZXRoX2RldiA9ICZydGVf ZXRoX2RldmljZXNbaHctPnBvcnRfaWRdOw0KPiAtCXN0cnVjdCB2aXJ0aW9fdXNlcl9kZXYgKmRl diA9IHZpcnRpb191c2VyX2dldF9kZXYoaHcpOw0KPiAtDQo+IC0JaWYgKHJ0ZV9pbnRyX2Rpc2Fi bGUoZXRoX2Rldi0+aW50cl9oYW5kbGUpIDwgMCkgew0KPiAtCQlQTURfRFJWX0xPRyhFUlIsICJp bnRlcnJ1cHQgZGlzYWJsZSBmYWlsZWQiKTsNCj4gLQkJcmV0dXJuOw0KPiAtCX0NCj4gLQlydGVf aW50cl9jYWxsYmFja191bnJlZ2lzdGVyKGV0aF9kZXYtPmludHJfaGFuZGxlLA0KPiAtCQkJCSAg ICAgdmlydGlvX2ludGVycnVwdF9oYW5kbGVyLCBldGhfZGV2KTsNCj4gLQlpZiAoZGV2LT5pc19z ZXJ2ZXIpIHsNCj4gLQkJaWYgKGRldi0+dmhvc3RmZCA+PSAwKSB7DQo+IC0JCQljbG9zZShkZXYt PnZob3N0ZmQpOw0KPiAtCQkJZGV2LT52aG9zdGZkID0gLTE7DQo+IC0JCX0NCj4gLQkJZXRoX2Rl di0+aW50cl9oYW5kbGUtPmZkID0gZGV2LT5saXN0ZW5mZDsNCj4gLQkJcnRlX2ludHJfY2FsbGJh Y2tfcmVnaXN0ZXIoZXRoX2Rldi0+aW50cl9oYW5kbGUsDQo+IC0JCQkJCSAgIHZpcnRpb19pbnRl cnJ1cHRfaGFuZGxlciwgZXRoX2Rldik7DQo+IC0JCWlmIChydGVfaW50cl9lbmFibGUoZXRoX2Rl di0+aW50cl9oYW5kbGUpIDwgMCkgew0KPiAtCQkJUE1EX0RSVl9MT0coRVJSLCAiaW50ZXJydXB0 IGVuYWJsZSBmYWlsZWQiKTsNCj4gLQkJCXJldHVybjsNCj4gLQkJfQ0KPiAtCX0NCj4gLX0NCj4g LQ0KPiAgc3RhdGljIHZvaWQNCj4gIHZpcnRpb191c2VyX3JlYWRfZGV2X2NvbmZpZyhzdHJ1Y3Qg dmlydGlvX2h3ICpodywgc2l6ZV90IG9mZnNldCwNCj4gIAkJICAgICB2b2lkICpkc3QsIGludCBs ZW5ndGgpDQo+IEBAIC0xODMsNDQgKzQzLDcgQEAgdmlydGlvX3VzZXJfcmVhZF9kZXZfY29uZmln KHN0cnVjdCB2aXJ0aW9faHcgKmh3LCBzaXplX3QNCj4gb2Zmc2V0LA0KPiAgCX0NCj4gDQo+ICAJ aWYgKG9mZnNldCA9PSBvZmZzZXRvZihzdHJ1Y3QgdmlydGlvX25ldF9jb25maWcsIHN0YXR1cykp IHsNCj4gLQkJY2hhciBidWZbMTI4XTsNCj4gLQ0KPiAtCQlpZiAoZGV2LT52aG9zdGZkID49IDAp IHsNCj4gLQkJCWludCByOw0KPiAtCQkJaW50IGZsYWdzOw0KPiAtDQo+IC0JCQlmbGFncyA9IGZj bnRsKGRldi0+dmhvc3RmZCwgRl9HRVRGTCk7DQo+IC0JCQlpZiAoZmNudGwoZGV2LT52aG9zdGZk LCBGX1NFVEZMLA0KPiAtCQkJCQlmbGFncyB8IE9fTk9OQkxPQ0spID09IC0xKSB7DQo+IC0JCQkJ UE1EX0RSVl9MT0coRVJSLCAiZXJyb3Igc2V0dGluZyBPX05PTkJMT0NLIGZsYWciKTsNCj4gLQkJ CQlyZXR1cm47DQo+IC0JCQl9DQo+IC0JCQlyID0gcmVjdihkZXYtPnZob3N0ZmQsIGJ1ZiwgMTI4 LCBNU0dfUEVFSyk7DQo+IC0JCQlpZiAociA9PSAwIHx8IChyIDwgMCAmJiBlcnJubyAhPSBFQUdB SU4pKSB7DQo+IC0JCQkJZGV2LT5uZXRfc3RhdHVzICY9ICh+VklSVElPX05FVF9TX0xJTktfVVAp Ow0KPiAtCQkJCVBNRF9EUlZfTE9HKEVSUiwgInZpcnRpby11c2VyIHBvcnQgJXUgaXMgZG93biIs DQo+IC0JCQkJCSAgICBody0+cG9ydF9pZCk7DQo+IC0NCj4gLQkJCQkvKiBUaGlzIGZ1bmN0aW9u IGNvdWxkIGJlIGNhbGxlZCBpbiB0aGUgcHJvY2Vzcw0KPiAtCQkJCSAqIG9mIGludGVycnVwdCBo YW5kbGluZywgY2FsbGJhY2sgY2Fubm90IGJlDQo+IC0JCQkJICogdW5yZWdpc3RlcmVkIGhlcmUs IHNldCBhbiBhbGFybSB0byBkbyBpdC4NCj4gLQkJCQkgKi8NCj4gLQkJCQlydGVfZWFsX2FsYXJt X3NldCgxLA0KPiAtCQkJCQkJICB2aXJ0aW9fdXNlcl9kZWxheWVkX2hhbmRsZXIsDQo+IC0JCQkJ CQkgICh2b2lkICopaHcpOw0KPiAtCQkJfSBlbHNlIHsNCj4gLQkJCQlkZXYtPm5ldF9zdGF0dXMg fD0gVklSVElPX05FVF9TX0xJTktfVVA7DQo+IC0JCQl9DQo+IC0JCQlpZiAoZmNudGwoZGV2LT52 aG9zdGZkLCBGX1NFVEZMLA0KPiAtCQkJCQlmbGFncyAmIH5PX05PTkJMT0NLKSA9PSAtMSkgew0K PiAtCQkJCVBNRF9EUlZfTE9HKEVSUiwgImVycm9yIGNsZWFyaW5nIE9fTk9OQkxPQ0sgZmxhZyIp Ow0KPiAtCQkJCXJldHVybjsNCj4gLQkJCX0NCj4gLQkJfSBlbHNlIGlmIChkZXYtPmlzX3NlcnZl cikgew0KPiAtCQkJZGV2LT5uZXRfc3RhdHVzICY9ICh+VklSVElPX05FVF9TX0xJTktfVVApOw0K PiAtCQkJaWYgKHZpcnRpb191c2VyX3NlcnZlcl9yZWNvbm5lY3QoZGV2KSA+PSAwKQ0KPiAtCQkJ CWRldi0+bmV0X3N0YXR1cyB8PSBWSVJUSU9fTkVUX1NfTElOS19VUDsNCj4gLQkJfQ0KPiArCQl2 aXJ0aW9fdXNlcl9kZXZfdXBkYXRlX2xpbmtfc3RhdGUoZGV2KTsNCj4gDQo+ICAJCSoodWludDE2 X3QgKilkc3QgPSBkZXYtPm5ldF9zdGF0dXM7DQo+ICAJfQ0KPiAtLQ0KPiAyLjI5LjINCg0KUmV2 aWV3ZWQtYnk6IENoZW5ibyBYaWEgPGNoZW5iby54aWFAaW50ZWwuY29tPg0K