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 580E2A052A; Tue, 26 Jan 2021 06:56:19 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D4456140CFB; Tue, 26 Jan 2021 06:56:18 +0100 (CET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mails.dpdk.org (Postfix) with ESMTP id 3496D140CC2 for ; Tue, 26 Jan 2021 06:56:14 +0100 (CET) IronPort-SDR: CR+xD8feGFVh8UdPlimr0Jf8ywwx9dq1Eelvs2yVQtH2x2UZSJFDrt3ZN/puSauPa88X3n44Wm iBLifnfWoMVA== X-IronPort-AV: E=McAfee;i="6000,8403,9875"; a="179934263" X-IronPort-AV: E=Sophos;i="5.79,375,1602572400"; d="scan'208";a="179934263" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Jan 2021 21:56:12 -0800 IronPort-SDR: +/SsyT/gEnHZJWwLmKF8XFqJ2u1+kZyBAcEKB8Wnm00vcwBJcrzuAaO5mAK/XRQVtecqWUfg9I ttRUGYWwtMMg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,375,1602572400"; d="scan'208";a="410042001" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by FMSMGA003.fm.intel.com with ESMTP; 25 Jan 2021 21:56:12 -0800 Received: from fmsmsx605.amr.corp.intel.com (10.18.126.85) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Mon, 25 Jan 2021 21:56:12 -0800 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Mon, 25 Jan 2021 21:56:12 -0800 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.102) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Mon, 25 Jan 2021 21:55:55 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m4eEV9/oJXgdCRoxFW6EIcUzSxJqaJq63WL4fPXjwlFK4KoTvVF0ex3te/lxKjHUkatlZK3BcCscChrGSMc8PB/wibIY3vTYWlI/LkVQZxXvbj6XQTTsdRgnXZOxs2lBuIH0/aGvil/Pev/KgVE0RogXMJZE6geMhZEwLn+HHruIBcW/MA7g+/Dztf9pA7gBBQiAVCd6OcCFo4MnG6mGuzdqydcy0G/KLHhAXRHcpXYcvliRDczPPCmEJzOh/HeQOS723TIH/wb1POIxHW2a/+2zyTqnsamr0MTqrfBsmwmKylc0y4r72MwHI8xYh59V57juXw9/+ToJOkXkwLjvKA== 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=Ic+UXl8gG0+SmXhAe5DR7KimmA8xX6jJUIpbw3m6ZXI=; b=DoviGWYGTitpTn9BJCkvje3Qbf3mAf+SgSDTOLZzaXBiFYdW6I3HeRgqxHnPSq78O9OMK23OBM8TIVKCXKogVl0VjjX+fdtCX6uflO9LO9KJ5RFaSVvrLbxX/t0Oj8i5ynidqBrV6kHRltZNyKGFe1BOiQtbK7MWxFCICDDjPiMen0/9YYs4cB6IisGbNMqAbro5GvGHjq8OU18HNJJ2biacWpf1sHdH1+fT8nnicbS4VPfbaRqg2XeDmFpkvg2CL8NDArG9dKW9QEi7q7VDSTfskAelVukx49oSv1/GSqJbS3GiGFpLN67sJHl1xsnzTdcWMT2cgpGwCl97qoj7/w== 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=Ic+UXl8gG0+SmXhAe5DR7KimmA8xX6jJUIpbw3m6ZXI=; b=WSkGjSsZhKjcxPHT3DlK3Q71dad4s6qhamOUZrMrJXl8ZrBjhw0OehvdyoEZwZSo6poUq5Vs4NQwGDLHgcCbA1ZF5JJy4ri33/OLlwZiob0jeS6cRRHTfG5FB6/WHKbncjuMBYt5AS4u1fdqfPTP5+VyGp7e7v34UGUnsitPhZA= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22) by MN2PR11MB4014.namprd11.prod.outlook.com (2603:10b6:208:137::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.12; Tue, 26 Jan 2021 05:55:53 +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.3784.017; Tue, 26 Jan 2021 05:55:53 +0000 From: "Xia, Chenbo" To: Maxime Coquelin , "dev@dpdk.org" , "olivier.matz@6wind.com" , "amorenoz@redhat.com" , "david.marchand@redhat.com" Thread-Topic: [PATCH v3 19/44] net/virtio: move features definition to generic header Thread-Index: AQHW8z3ge9PCC/KplE2gmSnOj9mOHao5aSNg Date: Tue, 26 Jan 2021 05:55:53 +0000 Message-ID: References: <20210125171444.167241-1-maxime.coquelin@redhat.com> <20210125171444.167241-20-maxime.coquelin@redhat.com> In-Reply-To: <20210125171444.167241-20-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.39] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 44384fa6-7347-4d45-63a6-08d8c1bf0acc x-ms-traffictypediagnostic: MN2PR11MB4014: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:418; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: KlTmEb44zzgRJVd97IywPFf4Rjl7lFBbLsxH2WPZN3w9V37Elt+ZjiYzP126qMNBr1QXZyjV264EZ8cChurPtFPjUxGgzY6Hv6My1UHNQdZ8m3M10gcfrkqBM09+70ric/xxxqN7l3wam/7yOfoy3AFXxcRwEmVqptRntDWkvBVd6r5zqkGCy0cLHJDiXHT3ssMMBWGjM2BgCc/GLMqQA2k/brvhA42z0msqr2RjoMsi3U5ybz0FYL/iCFmZ1AQO1u+3JMLdq4Ny5owc3LddmCCj+KO/tqAIpYIn4GUKJ3I1JFs9ZXZp3btxoq5z7ugkmxbh8d29ssIBUv9zWqujIEnolNJzCkDsg2q/D0n59KcvsqHwd5Qf0EEJZkL/DYUvWg9QFanVmMKWxX8/IgHvksasqxD8aIOSvsB2JLCG0FWloefUitftOjlxgfb+JD93/NSxyWkJZ4fYN1J9Th1j+hNC7D4geU4HJ4OS5xdHzRui8+cZcCd8Ej4LawfLSG1ftQvaGNS/Iz5UUQmGGo4unmcpcPrBYTIJajtrQyYUaka+hd73hpPXxmaWzoHsxpLc 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)(366004)(136003)(39860400002)(376002)(346002)(396003)(478600001)(186003)(8936002)(8676002)(83380400001)(7696005)(66946007)(64756008)(66556008)(66476007)(76116006)(66446008)(110136005)(5660300002)(52536014)(86362001)(33656002)(53546011)(316002)(26005)(30864003)(9686003)(71200400001)(55016002)(2906002)(6506007)(41533002)(559001)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?bHo0eDJBUEJiN3FXS053MHdDMHdrQnFQeXRsTVFnZk93Qk5JL3kyNnY5TTEy?= =?utf-8?B?WWY2c3NST3FMWkFDVG5iUGNpNjNCZURRNXZGU3lZeEFPQW1BNEtLOFo4NVRj?= =?utf-8?B?Y2kwb2llOVRlTENFNXZIK0NpT3huQ3pYSlNrQVp5RGFMWloxWkRSVnRZanlV?= =?utf-8?B?UzlXbHdVRFo2THVkQkE4QnVyK3JEbDNkcWRkb0FoZ0Q3MVh4TEM5azZXOFhS?= =?utf-8?B?L3ZxZkQ4bExENm4vekpESXZ5RGl0UUVrZDNNNTA1ckZJWjBFWFJyU0E4cHNK?= =?utf-8?B?ekh3MndnOC9xNnNsYjY1TTBzMnZhV1hKN01KTmVEdjZWeURPQXF5MHUxRFdp?= =?utf-8?B?NkdVUks5Wlp1ZWJ0UmJudHh6T2ZDek5USFpqU2t2MHVsOStGMkViODJPRVB4?= =?utf-8?B?cGxQbFc2c1g1VlVEN1ZNTWhVSGxvL1RhYmlNbU5BSFZHSkQ4L00zNmg2ZjZx?= =?utf-8?B?UlNwblpXQStFdDdrcnk5VVU3M1hRbUN5UGwzQm1QUWsrN3diSnlCTUlLTG02?= =?utf-8?B?NUVLQUR1eWJxM2RNZXJrMmp3c1A4R2hJSm9jK3FJM3A4aUFsSHE1S24wa0Ju?= =?utf-8?B?MEoxemMvQTJIV2hSSzdOV0hldU11MDkvSFNXbEJRYk1iYXlqTEVRS2g4S2pE?= =?utf-8?B?ZFZvb2d4eHFGTWlESVVYaHBGcEtNSE1GbXl5Ym5RT29nN0NvRHlWd1NETG5Q?= =?utf-8?B?ajFJR3RHdnVUcldKdEh5UkhKMVAwMjZJU1VuRm1Ja2M5RkhtQ1U5VE1SM1pi?= =?utf-8?B?alpWdVNwbEFNckVRVkFOc2FCbzFnWElKdEFZa2VTeDVKNmFCYkNXbWlyUjJ2?= =?utf-8?B?TXVIeWlqaGlXZmVWblR0YzdlcnZNMTZldEZFMVpxWm9obXY5ZytFWXNVY1l2?= =?utf-8?B?akQyTGJTMTUrMjh1UTN1aDZLbW0zNTEvQk9hRnEyekpkWDEvNk9vNTRrb2FU?= =?utf-8?B?alA5WVRveXZpRk1HeFJDK3A5NTlpYUx5eTBZcEc4bytOc0dqOGt5LzhTd2do?= =?utf-8?B?M0JiWldJeEJqdm5LQ0FaVDZoMWJBTGdCZGFhVUxabXpsdXUrRkdMWEt3OFBR?= =?utf-8?B?UGpBMTdKR01lSjRES0h6dVhGMGg2N3U4NmM1QTBZMWU2U28vV0RWN2Y5Ti9I?= =?utf-8?B?VnlqeWRBRlpJVDFObDV2Tk1Pc2ZDOXIrZk8reHFSc1pWNlpDKy9hYWJKQzI5?= =?utf-8?B?V2VYQTJLa3UyaXVhbEJKeG56OTRDZ0J0ZkFYZitXZ0lOSXRxRWhkNTZHb2kr?= =?utf-8?B?Sm5zdFNwWUN2dGR4bTlkeHNiRWNCVElHYlFmWHFReGpvTGZVN2dRbTY2NDNO?= =?utf-8?B?ekd5QjFwZjg5Z3YxY3Fzb2xvVkV1V0VacVpxOUJ4Z0JqQ2lZZUJtYXpBcVQx?= =?utf-8?B?WERDQVVwdXBvdmFWM0JEWS9hY1RTanZmN1dCeVJjUy9xUTU5UVVweGhFUWJQ?= =?utf-8?Q?zUcyT+zI?= 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: 44384fa6-7347-4d45-63a6-08d8c1bf0acc X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Jan 2021 05:55:53.5427 (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: Y17IrKxmZCQ7XhXfOW9cwmBlEp6bl71e2rP7bquo4FAHRFcjv8sdffwvBQS6gcDIsS2Wo12uiB+dfgS7an256g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4014 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v3 19/44] net/virtio: move features definition to generic header 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 eGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBKYW51YXJ5IDI2LCAy MDIxIDE6MTQgQU0NCj4gVG86IGRldkBkcGRrLm9yZzsgWGlhLCBDaGVuYm8gPGNoZW5iby54aWFA aW50ZWwuY29tPjsgb2xpdmllci5tYXR6QDZ3aW5kLmNvbTsNCj4gYW1vcmVub3pAcmVkaGF0LmNv bTsgZGF2aWQubWFyY2hhbmRAcmVkaGF0LmNvbQ0KPiBDYzogTWF4aW1lIENvcXVlbGluIDxtYXhp bWUuY29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gU3ViamVjdDogW1BBVENIIHYzIDE5LzQ0XSBuZXQv dmlydGlvOiBtb3ZlIGZlYXR1cmVzIGRlZmluaXRpb24gdG8gZ2VuZXJpYw0KPiBoZWFkZXINCj4g DQo+IFRoaXMgcGF0Y2ggbW92ZXMgYWxsIHRoZSBWaXJ0aW8gZGVmaW5pdGlvbiB0byB0aGUgZ2Vu ZXJpYw0KPiBoZWFkZXIuIEl0IGFsc28gcmVuYW1lcyBzb21lIGhlbHBlcnMgdG8gbm8gbW9yZSBy ZWZlcmVuY2UNCj4gUENJLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTWF4aW1lIENvcXVlbGluIDxt YXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gLS0tDQo+ICBkcml2ZXJzL25ldC92aXJ0aW8v bWVzb24uYnVpbGQgICAgICAgICAgICAgICAgfCAgIDMgKy0NCj4gIGRyaXZlcnMvbmV0L3ZpcnRp by92aXJ0aW8uYyAgICAgICAgICAgICAgICAgICB8ICAyMiArKysrDQo+ICBkcml2ZXJzL25ldC92 aXJ0aW8vdmlydGlvLmggICAgICAgICAgICAgICAgICAgfCAgOTQgKysrKysrKysrKysrKysrDQo+ ICBkcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX2V0aGRldi5jICAgICAgICAgICAgfCAxMTQgKysr KysrKysrLS0tLS0tLS0tDQo+ICBkcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3BjaS5jICAgICAg ICAgICAgICAgfCAgMjEgKy0tLQ0KPiAgZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19wY2kuaCAg ICAgICAgICAgICAgIHwgIDkwIC0tLS0tLS0tLS0tLS0tDQo+ICBkcml2ZXJzL25ldC92aXJ0aW8v dmlydGlvX3JpbmcuaCAgICAgICAgICAgICAgfCAgIDIgKy0NCj4gIGRyaXZlcnMvbmV0L3ZpcnRp by92aXJ0aW9fcnh0eC5jICAgICAgICAgICAgICB8ICAzOCArKystLS0NCj4gIGRyaXZlcnMvbmV0 L3ZpcnRpby92aXJ0aW9fcnh0eF9wYWNrZWQuaCAgICAgICB8ICAgNiArLQ0KPiAgLi4uL25ldC92 aXJ0aW8vdmlydGlvX3VzZXIvdmhvc3Rfa2VybmVsX3RhcC5jIHwgICAyICstDQo+ICBkcml2ZXJz L25ldC92aXJ0aW8vdmlydGlvX3VzZXJfZXRoZGV2LmMgICAgICAgfCAgIDYgKy0NCj4gIGRyaXZl cnMvbmV0L3ZpcnRpby92aXJ0cXVldWUuYyAgICAgICAgICAgICAgICB8ICAgNCArLQ0KPiAgZHJp dmVycy9uZXQvdmlydGlvL3ZpcnRxdWV1ZS5oICAgICAgICAgICAgICAgIHwgICA4ICstDQo+ICAx MyBmaWxlcyBjaGFuZ2VkLCAyMTEgaW5zZXJ0aW9ucygrKSwgMTk5IGRlbGV0aW9ucygtKQ0KPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW8uYw0KPiANCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3ZpcnRpby9tZXNvbi5idWlsZCBiL2RyaXZlcnMvbmV0L3Zp cnRpby9tZXNvbi5idWlsZA0KPiBpbmRleCBmMjg3M2Q2MTgwLi5kNTk1Y2ZkY2FiIDEwMDY0NA0K PiAtLS0gYS9kcml2ZXJzL25ldC92aXJ0aW8vbWVzb24uYnVpbGQNCj4gKysrIGIvZHJpdmVycy9u ZXQvdmlydGlvL21lc29uLmJ1aWxkDQo+IEBAIC03LDcgKzcsOCBAQCBpZiBpc193aW5kb3dzDQo+ ICAJc3ViZGlyX2RvbmUoKQ0KPiAgZW5kaWYNCj4gDQo+IC1zb3VyY2VzICs9IGZpbGVzKCd2aXJ0 aW9fZXRoZGV2LmMnLA0KPiArc291cmNlcyArPSBmaWxlcygndmlydGlvLmMnLA0KPiArCSd2aXJ0 aW9fZXRoZGV2LmMnLA0KPiAgCSd2aXJ0aW9fcGNpX2V0aGRldi5jJywNCj4gIAkndmlydGlvX3Bj aS5jJywNCj4gIAkndmlydGlvX3J4dHguYycsDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92 aXJ0aW8vdmlydGlvLmMgYi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvLmMNCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uZDhkNmJmN2FkZA0KPiAtLS0gL2Rldi9u dWxsDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW8uYw0KPiBAQCAtMCwwICsxLDIy IEBADQo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ICsgKiBD b3B5cmlnaHQoYykgMjAxMC0yMDE0IEludGVsIENvcnBvcmF0aW9uDQo+ICsgKiBDb3B5cmlnaHQo YykgMjAyMCBSZWQgSGF0LCBJbmMuDQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgInZpcnRpby5o Ig0KPiArDQo+ICt1aW50NjRfdA0KPiArdmlydGlvX25lZ290aWF0ZV9mZWF0dXJlcyhzdHJ1Y3Qg dmlydGlvX2h3ICpodywgdWludDY0X3QgaG9zdF9mZWF0dXJlcykNCj4gK3sNCj4gKwl1aW50NjRf dCBmZWF0dXJlczsNCj4gKw0KPiArCS8qDQo+ICsJICogTGltaXQgbmVnb3RpYXRlZCBmZWF0dXJl cyB0byB3aGF0IHRoZSBkcml2ZXIsIHZpcnRxdWV1ZSwgYW5kDQo+ICsJICogaG9zdCBhbGwgc3Vw cG9ydC4NCj4gKwkgKi8NCj4gKwlmZWF0dXJlcyA9IGhvc3RfZmVhdHVyZXMgJiBody0+Z3Vlc3Rf ZmVhdHVyZXM7DQo+ICsJVklSVElPX09QUyhodyktPnNldF9mZWF0dXJlcyhodywgZmVhdHVyZXMp Ow0KPiArDQo+ICsJcmV0dXJuIGZlYXR1cmVzOw0KPiArfQ0KPiArDQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC92aXJ0aW8vdmlydGlvLmggYi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvLmgN Cj4gaW5kZXggZTU1ZTMzMjlmOS4uY2RmZWU1ZDE4MiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9u ZXQvdmlydGlvL3ZpcnRpby5oDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW8uaA0K PiBAQCAtOCw2ICs4LDg2IEBADQo+IA0KPiAgI2luY2x1ZGUgPHJ0ZV9ldGhlci5oPg0KPiANCj4g Ky8qIFRoZSBmZWF0dXJlIGJpdG1hcCBmb3IgdmlydGlvIG5ldCAqLw0KPiArI2RlZmluZSBWSVJU SU9fTkVUX0ZfQ1NVTQkwCS8qIEhvc3QgaGFuZGxlcyBwa3RzIHcvIHBhcnRpYWwgY3N1bSAqLw0K PiArI2RlZmluZSBWSVJUSU9fTkVUX0ZfR1VFU1RfQ1NVTQkxCS8qIEd1ZXN0IGhhbmRsZXMgcGt0 cyB3LyBwYXJ0aWFsDQo+IGNzdW0gKi8NCj4gKyNkZWZpbmUgVklSVElPX05FVF9GX01UVQkzCS8q IEluaXRpYWwgTVRVIGFkdmljZS4gKi8NCj4gKyNkZWZpbmUgVklSVElPX05FVF9GX01BQwk1CS8q IEhvc3QgaGFzIGdpdmVuIE1BQyBhZGRyZXNzLiAqLw0KPiArI2RlZmluZSBWSVJUSU9fTkVUX0Zf R1VFU1RfVFNPNAk3CS8qIEd1ZXN0IGNhbiBoYW5kbGUgVFNPdjQgaW4uICovDQo+ICsjZGVmaW5l IFZJUlRJT19ORVRfRl9HVUVTVF9UU082CTgJLyogR3Vlc3QgY2FuIGhhbmRsZSBUU092NiBpbi4g Ki8NCj4gKyNkZWZpbmUgVklSVElPX05FVF9GX0dVRVNUX0VDTgk5CS8qIEd1ZXN0IGNhbiBoYW5k bGUgVFNPWzZdIHcvIEVDTiBpbi4NCj4gKi8NCj4gKyNkZWZpbmUgVklSVElPX05FVF9GX0dVRVNU X1VGTwkxMAkvKiBHdWVzdCBjYW4gaGFuZGxlIFVGTyBpbi4gKi8NCj4gKyNkZWZpbmUgVklSVElP X05FVF9GX0hPU1RfVFNPNAkxMQkvKiBIb3N0IGNhbiBoYW5kbGUgVFNPdjQgaW4uICovDQo+ICsj ZGVmaW5lIFZJUlRJT19ORVRfRl9IT1NUX1RTTzYJMTIJLyogSG9zdCBjYW4gaGFuZGxlIFRTT3Y2 IGluLiAqLw0KPiArI2RlZmluZSBWSVJUSU9fTkVUX0ZfSE9TVF9FQ04JMTMJLyogSG9zdCBjYW4g aGFuZGxlIFRTT1s2XSB3LyBFQ04gaW4uDQo+ICovDQo+ICsjZGVmaW5lIFZJUlRJT19ORVRfRl9I T1NUX1VGTwkxNAkvKiBIb3N0IGNhbiBoYW5kbGUgVUZPIGluLiAqLw0KPiArI2RlZmluZSBWSVJU SU9fTkVUX0ZfTVJHX1JYQlVGCTE1CS8qIEhvc3QgY2FuIG1lcmdlIHJlY2VpdmUgYnVmZmVycy4N Cj4gKi8NCj4gKyNkZWZpbmUgVklSVElPX05FVF9GX1NUQVRVUwkxNgkvKiB2aXJ0aW9fbmV0X2Nv bmZpZy5zdGF0dXMgYXZhaWxhYmxlICovDQo+ICsjZGVmaW5lIFZJUlRJT19ORVRfRl9DVFJMX1ZR CTE3CS8qIENvbnRyb2wgY2hhbm5lbCBhdmFpbGFibGUgKi8NCj4gKyNkZWZpbmUgVklSVElPX05F VF9GX0NUUkxfUlgJMTgJLyogQ29udHJvbCBjaGFubmVsIFJYIG1vZGUgc3VwcG9ydCAqLw0KPiAr I2RlZmluZSBWSVJUSU9fTkVUX0ZfQ1RSTF9WTEFOCTE5CS8qIENvbnRyb2wgY2hhbm5lbCBWTEFO IGZpbHRlcmluZyAqLw0KPiArI2RlZmluZSBWSVJUSU9fTkVUX0ZfQ1RSTF9SWF9FWFRSQSAyMAkv KiBFeHRyYSBSWCBtb2RlIGNvbnRyb2wgc3VwcG9ydCAqLw0KPiArI2RlZmluZSBWSVJUSU9fTkVU X0ZfR1VFU1RfQU5OT1VOQ0UgMjEJLyogR3Vlc3QgY2FuIGFubm91bmNlIGRldmljZSBvbiB0aGUN Cj4gbmV0d29yayAqLw0KPiArI2RlZmluZSBWSVJUSU9fTkVUX0ZfTVEJCTIyCS8qIERldmljZSBz dXBwb3J0cyBSZWNlaXZlIEZsb3cNCj4gU3RlZXJpbmcgKi8NCj4gKyNkZWZpbmUgVklSVElPX05F VF9GX0NUUkxfTUFDX0FERFIgMjMJLyogU2V0IE1BQyBhZGRyZXNzICovDQo+ICsNCj4gKy8qDQo+ ICsgKiBEbyB3ZSBnZXQgY2FsbGJhY2tzIHdoZW4gdGhlIHJpbmcgaXMgY29tcGxldGVseSB1c2Vk LA0KPiArICogZXZlbiBpZiB3ZSd2ZSBzdXBwcmVzc2VkIHRoZW0/DQo+ICsgKi8NCj4gKyNkZWZp bmUgVklSVElPX0ZfTk9USUZZX09OX0VNUFRZCTI0DQo+ICsNCj4gKy8qIENhbiB0aGUgZGV2aWNl IGhhbmRsZSBhbnkgZGVzY3JpcHRvciBsYXlvdXQ/ICovDQo+ICsjZGVmaW5lIFZJUlRJT19GX0FO WV9MQVlPVVQJCTI3DQo+ICsNCj4gKy8qIFdlIHN1cHBvcnQgaW5kaXJlY3QgYnVmZmVyIGRlc2Ny aXB0b3JzICovDQo+ICsjZGVmaW5lIFZJUlRJT19SSU5HX0ZfSU5ESVJFQ1RfREVTQwkyOA0KPiAr DQo+ICsjZGVmaW5lIFZJUlRJT19GX1ZFUlNJT05fMQkJMzINCj4gKyNkZWZpbmUgVklSVElPX0Zf SU9NTVVfUExBVEZPUk0JMzMNCj4gKyNkZWZpbmUgVklSVElPX0ZfUklOR19QQUNLRUQJCTM0DQo+ ICsNCj4gKy8qDQo+ICsgKiBTb21lIFZpcnRJTyBmZWF0dXJlIGJpdHMgKGN1cnJlbnRseSBiaXRz IDI4IHRocm91Z2ggMzEpIGFyZQ0KPiArICogcmVzZXJ2ZWQgZm9yIHRoZSB0cmFuc3BvcnQgYmVp bmcgdXNlZCAoZWcuIHZpcnRpb19yaW5nKSwgdGhlDQo+ICsgKiByZXN0IGFyZSBwZXItZGV2aWNl IGZlYXR1cmUgYml0cy4NCj4gKyAqLw0KPiArI2RlZmluZSBWSVJUSU9fVFJBTlNQT1JUX0ZfU1RB UlQgMjgNCj4gKyNkZWZpbmUgVklSVElPX1RSQU5TUE9SVF9GX0VORCAgIDM0DQo+ICsNCj4gKy8q DQo+ICsgKiBJbm9yZGVyIGZlYXR1cmUgaW5kaWNhdGVzIHRoYXQgYWxsIGJ1ZmZlcnMgYXJlIHVz ZWQgYnkgdGhlIGRldmljZQ0KPiArICogaW4gdGhlIHNhbWUgb3JkZXIgaW4gd2hpY2ggdGhleSBo YXZlIGJlZW4gbWFkZSBhdmFpbGFibGUuDQo+ICsgKi8NCj4gKyNkZWZpbmUgVklSVElPX0ZfSU5f T1JERVIgMzUNCj4gKw0KPiArLyoNCj4gKyAqIFRoaXMgZmVhdHVyZSBpbmRpY2F0ZXMgdGhhdCBt ZW1vcnkgYWNjZXNzZXMgYnkgdGhlIGRyaXZlciBhbmQgdGhlIGRldmljZQ0KPiArICogYXJlIG9y ZGVyZWQgaW4gYSB3YXkgZGVzY3JpYmVkIGJ5IHRoZSBwbGF0Zm9ybS4NCj4gKyAqLw0KPiArI2Rl ZmluZSBWSVJUSU9fRl9PUkRFUl9QTEFURk9STSAzNg0KPiArDQo+ICsvKg0KPiArICogVGhpcyBm ZWF0dXJlIGluZGljYXRlcyB0aGF0IHRoZSBkcml2ZXIgcGFzc2VzIGV4dHJhIGRhdGEgKGJlc2lk ZXMNCj4gKyAqIGlkZW50aWZ5aW5nIHRoZSB2aXJ0cXVldWUpIGluIGl0cyBkZXZpY2Ugbm90aWZp Y2F0aW9ucy4NCj4gKyAqLw0KPiArI2RlZmluZSBWSVJUSU9fRl9OT1RJRklDQVRJT05fREFUQSAz OA0KPiArDQo+ICsvKiBEZXZpY2Ugc2V0IGxpbmtzcGVlZCBhbmQgZHVwbGV4ICovDQo+ICsjZGVm aW5lIFZJUlRJT19ORVRfRl9TUEVFRF9EVVBMRVggNjMNCj4gKw0KPiArLyoNCj4gKyAqIFRoZSBH dWVzdCBwdWJsaXNoZXMgdGhlIHVzZWQgaW5kZXggZm9yIHdoaWNoIGl0IGV4cGVjdHMgYW4gaW50 ZXJydXB0DQo+ICsgKiBhdCB0aGUgZW5kIG9mIHRoZSBhdmFpbCByaW5nLiBIb3N0IHNob3VsZCBp Z25vcmUgdGhlIGF2YWlsLT5mbGFncyBmaWVsZA0KPiArICoNCj4gKyAqIFRoZSBIb3N0IHB1Ymxp c2hlcyB0aGUgYXZhaWwgaW5kZXggZm9yIHdoaWNoIGl0IGV4cGVjdHMgYSBraWNrDQo+ICsgKiBh dCB0aGUgZW5kIG9mIHRoZSB1c2VkIHJpbmcuIEd1ZXN0IHNob3VsZCBpZ25vcmUgdGhlIHVzZWQt PmZsYWdzIGZpZWxkLg0KPiArICovDQo+ICsjZGVmaW5lIFZJUlRJT19SSU5HX0ZfRVZFTlRfSURY CQkyOQ0KPiArDQo+ICsjZGVmaW5lIFZJUlRJT19ORVRfU19MSU5LX1VQCTEJLyogTGluayBpcyB1 cCAqLw0KPiArI2RlZmluZSBWSVJUSU9fTkVUX1NfQU5OT1VOQ0UJMgkvKiBBbm5vdW5jZW1lbnQg aXMgbmVlZGVkICovDQo+ICsNCj4gIHN0cnVjdCB2aXJ0aW9faHcgew0KPiAgCXN0cnVjdCB2aXJ0 cXVldWUgKip2cXM7DQo+ICAJdWludDY0X3QgZ3Vlc3RfZmVhdHVyZXM7DQo+IEBAIC03MSw0ICsx NTEsMTggQEAgc3RydWN0IHZpcnRpb19od19pbnRlcm5hbCB7DQo+ICBleHRlcm4gc3RydWN0IHZp cnRpb19od19pbnRlcm5hbCB2aXJ0aW9faHdfaW50ZXJuYWxbUlRFX01BWF9FVEhQT1JUU107DQo+ IA0KPiANCj4gK3N0YXRpYyBpbmxpbmUgaW50DQo+ICt2aXJ0aW9fd2l0aF9mZWF0dXJlKHN0cnVj dCB2aXJ0aW9faHcgKmh3LCB1aW50NjRfdCBiaXQpDQo+ICt7DQo+ICsJcmV0dXJuIChody0+Z3Vl c3RfZmVhdHVyZXMgJiAoMVVMTCA8PCBiaXQpKSAhPSAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg aW5saW5lIGludA0KPiArdmlydGlvX3dpdGhfcGFja2VkX3F1ZXVlKHN0cnVjdCB2aXJ0aW9faHcg Kmh3KQ0KPiArew0KPiArCXJldHVybiB2aXJ0aW9fd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fRl9S SU5HX1BBQ0tFRCk7DQo+ICt9DQo+ICsNCj4gK3VpbnQ2NF90IHZpcnRpb19uZWdvdGlhdGVfZmVh dHVyZXMoc3RydWN0IHZpcnRpb19odyAqaHcsIHVpbnQ2NF90DQo+IGhvc3RfZmVhdHVyZXMpOw0K PiArDQo+ICAjZW5kaWYgLyogX1ZJUlRJT19IXyAqLw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvdmlydGlvL3ZpcnRpb19ldGhkZXYuYw0KPiBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9f ZXRoZGV2LmMNCj4gaW5kZXggNGIyMjYyMmQyZC4uMTc3MTg0NGZlNyAxMDA2NDQNCj4gLS0tIGEv ZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19ldGhkZXYuYw0KPiArKysgYi9kcml2ZXJzL25ldC92 aXJ0aW8vdmlydGlvX2V0aGRldi5jDQo+IEBAIC0zMzksNyArMzM5LDcgQEAgdmlydGlvX3NlbmRf Y29tbWFuZChzdHJ1Y3QgdmlydG5ldF9jdGwgKmN2cSwgc3RydWN0DQo+IHZpcnRpb19wbWRfY3Ry bCAqY3RybCwNCj4gIAltZW1jcHkoY3ZxLT52aXJ0aW9fbmV0X2hkcl9tei0+YWRkciwgY3RybCwN Cj4gIAkJc2l6ZW9mKHN0cnVjdCB2aXJ0aW9fcG1kX2N0cmwpKTsNCj4gDQo+IC0JaWYgKHZ0cGNp X3BhY2tlZF9xdWV1ZSh2cS0+aHcpKQ0KPiArCWlmICh2aXJ0aW9fd2l0aF9wYWNrZWRfcXVldWUo dnEtPmh3KSkNCj4gIAkJcmVzdWx0ID0gdmlydGlvX3NlbmRfY29tbWFuZF9wYWNrZWQoY3ZxLCBj dHJsLCBkbGVuLCBwa3RfbnVtKTsNCj4gIAllbHNlDQo+ICAJCXJlc3VsdCA9IHZpcnRpb19zZW5k X2NvbW1hbmRfc3BsaXQoY3ZxLCBjdHJsLCBkbGVuLCBwa3RfbnVtKTsNCj4gQEAgLTM4Myw3ICsz ODMsNyBAQCB2aXJ0aW9fZ2V0X25yX3ZxKHN0cnVjdCB2aXJ0aW9faHcgKmh3KQ0KPiAgew0KPiAg CXVpbnQxNl90IG5yX3ZxID0gaHctPm1heF9xdWV1ZV9wYWlycyAqIDI7DQo+IA0KPiAtCWlmICh2 dHBjaV93aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19ORVRfRl9DVFJMX1ZRKSkNCj4gKwlpZiAodmly dGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX0NUUkxfVlEpKQ0KPiAgCQlucl92cSAr PSAxOw0KPiANCj4gIAlyZXR1cm4gbnJfdnE7DQo+IEBAIC00MDUsNyArNDA1LDcgQEAgdmlydGlv X2luaXRfdnJpbmcoc3RydWN0IHZpcnRxdWV1ZSAqdnEpDQo+ICAJdnEtPnZxX2Rlc2NfdGFpbF9p ZHggPSAodWludDE2X3QpKHZxLT52cV9uZW50cmllcyAtIDEpOw0KPiAgCXZxLT52cV9mcmVlX2Nu dCA9IHZxLT52cV9uZW50cmllczsNCj4gIAltZW1zZXQodnEtPnZxX2Rlc2N4LCAwLCBzaXplb2Yo c3RydWN0IHZxX2Rlc2NfZXh0cmEpICogdnEtPnZxX25lbnRyaWVzKTsNCj4gLQlpZiAodnRwY2lf cGFja2VkX3F1ZXVlKHZxLT5odykpIHsNCj4gKwlpZiAodmlydGlvX3dpdGhfcGFja2VkX3F1ZXVl KHZxLT5odykpIHsNCj4gIAkJdnJpbmdfaW5pdF9wYWNrZWQoJnZxLT52cV9wYWNrZWQucmluZywg cmluZ19tZW0sDQo+ICAJCQkJICBWSVJUSU9fUENJX1ZSSU5HX0FMSUdOLCBzaXplKTsNCj4gIAkJ dnJpbmdfZGVzY19pbml0X3BhY2tlZCh2cSwgc2l6ZSk7DQo+IEBAIC00NTMsNyArNDUzLDcgQEAg dmlydGlvX2luaXRfcXVldWUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90DQo+IHZ0 cGNpX3F1ZXVlX2lkeCkNCj4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+ICAJfQ0KPiANCj4gLQlpZiAo IXZ0cGNpX3BhY2tlZF9xdWV1ZShodykgJiYgIXJ0ZV9pc19wb3dlcl9vZl8yKHZxX3NpemUpKSB7 DQo+ICsJaWYgKCF2aXJ0aW9fd2l0aF9wYWNrZWRfcXVldWUoaHcpICYmICFydGVfaXNfcG93ZXJf b2ZfMih2cV9zaXplKSkgew0KPiAgCQlQTURfSU5JVF9MT0coRVJSLCAic3BsaXQgdmlydHF1ZXVl IHNpemUgaXMgbm90IHBvd2VyIG9mIDIiKTsNCj4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+ICAJfQ0K PiBAQCAtNDg2LDcgKzQ4Niw3IEBAIHZpcnRpb19pbml0X3F1ZXVlKHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2LCB1aW50MTZfdA0KPiB2dHBjaV9xdWV1ZV9pZHgpDQo+ICAJdnEtPmh3ID0gaHc7DQo+ ICAJdnEtPnZxX3F1ZXVlX2luZGV4ID0gdnRwY2lfcXVldWVfaWR4Ow0KPiAgCXZxLT52cV9uZW50 cmllcyA9IHZxX3NpemU7DQo+IC0JaWYgKHZ0cGNpX3BhY2tlZF9xdWV1ZShodykpIHsNCj4gKwlp ZiAodmlydGlvX3dpdGhfcGFja2VkX3F1ZXVlKGh3KSkgew0KPiAgCQl2cS0+dnFfcGFja2VkLnVz ZWRfd3JhcF9jb3VudGVyID0gMTsNCj4gIAkJdnEtPnZxX3BhY2tlZC5jYWNoZWRfZmxhZ3MgPSBW UklOR19QQUNLRURfREVTQ19GX0FWQUlMOw0KPiAgCQl2cS0+dnFfcGFja2VkLmV2ZW50X2ZsYWdz X3NoYWRvdyA9IDA7DQo+IEBAIC01ODQsNyArNTg0LDcgQEAgdmlydGlvX2luaXRfcXVldWUoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90DQo+IHZ0cGNpX3F1ZXVlX2lkeCkNCj4gIAkJ bWVtc2V0KHR4ciwgMCwgdnFfc2l6ZSAqIHNpemVvZigqdHhyKSk7DQo+ICAJCWZvciAoaSA9IDA7 IGkgPCB2cV9zaXplOyBpKyspIHsNCj4gIAkJCS8qIGZpcnN0IGluZGlyZWN0IGRlc2NyaXB0b3Ig aXMgYWx3YXlzIHRoZSB0eCBoZWFkZXIgKi8NCj4gLQkJCWlmICghdnRwY2lfcGFja2VkX3F1ZXVl KGh3KSkgew0KPiArCQkJaWYgKCF2aXJ0aW9fd2l0aF9wYWNrZWRfcXVldWUoaHcpKSB7DQo+ICAJ CQkJc3RydWN0IHZyaW5nX2Rlc2MgKnN0YXJ0X2RwID0gdHhyW2ldLnR4X2luZGlyOw0KPiAgCQkJ CXZyaW5nX2Rlc2NfaW5pdF9zcGxpdChzdGFydF9kcCwNCj4gIAkJCQkJCSAgICAgIFJURV9ESU0o dHhyW2ldLnR4X2luZGlyKSk7DQo+IEBAIC03MjksNyArNzI5LDcgQEAgdmlydGlvX2Rldl9wcm9t aXNjdW91c19lbmFibGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpDQo+ICAJaW50IGRsZW5bMV07 DQo+ICAJaW50IHJldDsNCj4gDQo+IC0JaWYgKCF2dHBjaV93aXRoX2ZlYXR1cmUoaHcsIFZJUlRJ T19ORVRfRl9DVFJMX1JYKSkgew0KPiArCWlmICghdmlydGlvX3dpdGhfZmVhdHVyZShodywgVklS VElPX05FVF9GX0NUUkxfUlgpKSB7DQo+ICAJCVBNRF9JTklUX0xPRyhJTkZPLCAiaG9zdCBkb2Vz IG5vdCBzdXBwb3J0IHJ4IGNvbnRyb2wiKTsNCj4gIAkJcmV0dXJuIC1FTk9UU1VQOw0KPiAgCX0N Cj4gQEAgLTc1Niw3ICs3NTYsNyBAQCB2aXJ0aW9fZGV2X3Byb21pc2N1b3VzX2Rpc2FibGUoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYpDQo+ICAJaW50IGRsZW5bMV07DQo+ICAJaW50IHJldDsNCj4g DQo+IC0JaWYgKCF2dHBjaV93aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19ORVRfRl9DVFJMX1JYKSkg ew0KPiArCWlmICghdmlydGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX0NUUkxfUlgp KSB7DQo+ICAJCVBNRF9JTklUX0xPRyhJTkZPLCAiaG9zdCBkb2VzIG5vdCBzdXBwb3J0IHJ4IGNv bnRyb2wiKTsNCj4gIAkJcmV0dXJuIC1FTk9UU1VQOw0KPiAgCX0NCj4gQEAgLTc4Myw3ICs3ODMs NyBAQCB2aXJ0aW9fZGV2X2FsbG11bHRpY2FzdF9lbmFibGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpk ZXYpDQo+ICAJaW50IGRsZW5bMV07DQo+ICAJaW50IHJldDsNCj4gDQo+IC0JaWYgKCF2dHBjaV93 aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19ORVRfRl9DVFJMX1JYKSkgew0KPiArCWlmICghdmlydGlv X3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX0NUUkxfUlgpKSB7DQo+ICAJCVBNRF9JTklU X0xPRyhJTkZPLCAiaG9zdCBkb2VzIG5vdCBzdXBwb3J0IHJ4IGNvbnRyb2wiKTsNCj4gIAkJcmV0 dXJuIC1FTk9UU1VQOw0KPiAgCX0NCj4gQEAgLTgxMCw3ICs4MTAsNyBAQCB2aXJ0aW9fZGV2X2Fs bG11bHRpY2FzdF9kaXNhYmxlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQ0KPiAgCWludCBkbGVu WzFdOw0KPiAgCWludCByZXQ7DQo+IA0KPiAtCWlmICghdnRwY2lfd2l0aF9mZWF0dXJlKGh3LCBW SVJUSU9fTkVUX0ZfQ1RSTF9SWCkpIHsNCj4gKwlpZiAoIXZpcnRpb193aXRoX2ZlYXR1cmUoaHcs IFZJUlRJT19ORVRfRl9DVFJMX1JYKSkgew0KPiAgCQlQTURfSU5JVF9MT0coSU5GTywgImhvc3Qg ZG9lcyBub3Qgc3VwcG9ydCByeCBjb250cm9sIik7DQo+ICAJCXJldHVybiAtRU5PVFNVUDsNCj4g IAl9DQo+IEBAIC0xMTA0LDcgKzExMDQsNyBAQCB2aXJ0aW9fc2V0X2h3YWRkcihzdHJ1Y3Qgdmly dGlvX2h3ICpodykNCj4gIHN0YXRpYyB2b2lkDQo+ICB2aXJ0aW9fZ2V0X2h3YWRkcihzdHJ1Y3Qg dmlydGlvX2h3ICpodykNCj4gIHsNCj4gLQlpZiAodnRwY2lfd2l0aF9mZWF0dXJlKGh3LCBWSVJU SU9fTkVUX0ZfTUFDKSkgew0KPiArCWlmICh2aXJ0aW9fd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9f TkVUX0ZfTUFDKSkgew0KPiAgCQl2dHBjaV9yZWFkX2Rldl9jb25maWcoaHcsDQo+ICAJCQlvZmZz ZXRvZihzdHJ1Y3QgdmlydGlvX25ldF9jb25maWcsIG1hYyksDQo+ICAJCQkmaHctPm1hY19hZGRy LCBSVEVfRVRIRVJfQUREUl9MRU4pOw0KPiBAQCAtMTEyMiw3ICsxMTIyLDcgQEAgdmlydGlvX21h Y190YWJsZV9zZXQoc3RydWN0IHZpcnRpb19odyAqaHcsDQo+ICAJc3RydWN0IHZpcnRpb19wbWRf Y3RybCBjdHJsOw0KPiAgCWludCBlcnIsIGxlblsyXTsNCj4gDQo+IC0JaWYgKCF2dHBjaV93aXRo X2ZlYXR1cmUoaHcsIFZJUlRJT19ORVRfRl9DVFJMX01BQ19BRERSKSkgew0KPiArCWlmICghdmly dGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX0NUUkxfTUFDX0FERFIpKSB7DQo+ICAJ CVBNRF9EUlZfTE9HKElORk8sICJob3N0IGRvZXMgbm90IHN1cHBvcnQgbWFjIHRhYmxlIik7DQo+ ICAJCXJldHVybiAtMTsNCj4gIAl9DQo+IEBAIC0xMjE3LDcgKzEyMTcsNyBAQCB2aXJ0aW9fbWFj X2FkZHJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QNCj4gcnRlX2V0aGVyX2Fk ZHIgKm1hY19hZGRyKQ0KPiAgCW1lbWNweShody0+bWFjX2FkZHIsIG1hY19hZGRyLCBSVEVfRVRI RVJfQUREUl9MRU4pOw0KPiANCj4gIAkvKiBVc2UgYXRvbWljIHVwZGF0ZSBpZiBhdmFpbGFibGUg Ki8NCj4gLQlpZiAodnRwY2lfd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fTkVUX0ZfQ1RSTF9NQUNf QUREUikpIHsNCj4gKwlpZiAodmlydGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX0NU UkxfTUFDX0FERFIpKSB7DQo+ICAJCXN0cnVjdCB2aXJ0aW9fcG1kX2N0cmwgY3RybDsNCj4gIAkJ aW50IGxlbiA9IFJURV9FVEhFUl9BRERSX0xFTjsNCj4gDQo+IEBAIC0xMjI4LDcgKzEyMjgsNyBA QCB2aXJ0aW9fbWFjX2FkZHJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QNCj4g cnRlX2V0aGVyX2FkZHIgKm1hY19hZGRyKQ0KPiAgCQlyZXR1cm4gdmlydGlvX3NlbmRfY29tbWFu ZChody0+Y3ZxLCAmY3RybCwgJmxlbiwgMSk7DQo+ICAJfQ0KPiANCj4gLQlpZiAoIXZ0cGNpX3dp dGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX01BQykpDQo+ICsJaWYgKCF2aXJ0aW9fd2l0aF9m ZWF0dXJlKGh3LCBWSVJUSU9fTkVUX0ZfTUFDKSkNCj4gIAkJcmV0dXJuIC1FTk9UU1VQOw0KPiAN Cj4gIAl2aXJ0aW9fc2V0X2h3YWRkcihodyk7DQo+IEBAIC0xMjQyLDcgKzEyNDIsNyBAQCB2aXJ0 aW9fdmxhbl9maWx0ZXJfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MTZfdA0KPiB2 bGFuX2lkLCBpbnQgb24pDQo+ICAJc3RydWN0IHZpcnRpb19wbWRfY3RybCBjdHJsOw0KPiAgCWlu dCBsZW47DQo+IA0KPiAtCWlmICghdnRwY2lfd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fTkVUX0Zf Q1RSTF9WTEFOKSkNCj4gKwlpZiAoIXZpcnRpb193aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19ORVRf Rl9DVFJMX1ZMQU4pKQ0KPiAgCQlyZXR1cm4gLUVOT1RTVVA7DQo+IA0KPiAgCWN0cmwuaGRyLmNs YXNzID0gVklSVElPX05FVF9DVFJMX1ZMQU47DQo+IEBAIC0xMjk2LDcgKzEyOTYsNyBAQCB2aXJ0 aW9faW50cl9kaXNhYmxlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQ0KPiAgfQ0KPiANCj4gIHN0 YXRpYyBpbnQNCj4gLXZpcnRpb19uZWdvdGlhdGVfZmVhdHVyZXMoc3RydWN0IHZpcnRpb19odyAq aHcsIHVpbnQ2NF90IHJlcV9mZWF0dXJlcykNCj4gK3ZpcnRpb19ldGhkZXZfbmVnb3RpYXRlX2Zl YXR1cmVzKHN0cnVjdCB2aXJ0aW9faHcgKmh3LCB1aW50NjRfdCByZXFfZmVhdHVyZXMpDQo+ICB7 DQo+ICAJdWludDY0X3QgaG9zdF9mZWF0dXJlczsNCj4gDQo+IEBAIC0xMzI2LDE0ICsxMzI2LDE0 IEBAIHZpcnRpb19uZWdvdGlhdGVfZmVhdHVyZXMoc3RydWN0IHZpcnRpb19odyAqaHcsDQo+IHVp bnQ2NF90IHJlcV9mZWF0dXJlcykNCj4gIAkgKiBndWVzdCBmZWF0dXJlIGJpdHMuDQo+ICAJICov DQo+ICAJaHctPmd1ZXN0X2ZlYXR1cmVzID0gcmVxX2ZlYXR1cmVzOw0KPiAtCWh3LT5ndWVzdF9m ZWF0dXJlcyA9IHZ0cGNpX25lZ290aWF0ZV9mZWF0dXJlcyhodywgaG9zdF9mZWF0dXJlcyk7DQo+ ICsJaHctPmd1ZXN0X2ZlYXR1cmVzID0gdmlydGlvX25lZ290aWF0ZV9mZWF0dXJlcyhodywgaG9z dF9mZWF0dXJlcyk7DQo+ICAJUE1EX0lOSVRfTE9HKERFQlVHLCAiZmVhdHVyZXMgYWZ0ZXIgbmVn b3RpYXRlID0gJSIgUFJJeDY0LA0KPiAgCQlody0+Z3Vlc3RfZmVhdHVyZXMpOw0KPiANCj4gIAlp ZiAoVklSVElPX09QUyhodyktPmZlYXR1cmVzX29rKGh3KSA8IDApDQo+ICAJCXJldHVybiAtMTsN Cj4gDQo+IC0JaWYgKHZ0cGNpX3dpdGhfZmVhdHVyZShodywgVklSVElPX0ZfVkVSU0lPTl8xKSkg ew0KPiArCWlmICh2aXJ0aW9fd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fRl9WRVJTSU9OXzEpKSB7 DQo+ICAJCXZ0cGNpX3NldF9zdGF0dXMoaHcsIFZJUlRJT19DT05GSUdfU1RBVFVTX0ZFQVRVUkVT X09LKTsNCj4gDQo+ICAJCWlmICghKHZ0cGNpX2dldF9zdGF0dXMoaHcpICYgVklSVElPX0NPTkZJ R19TVEFUVVNfRkVBVFVSRVNfT0spKSB7DQo+IEBAIC0xNDY3LDcgKzE0NjcsNyBAQCB2aXJ0aW9f aW50ZXJydXB0X2hhbmRsZXIodm9pZCAqcGFyYW0pDQo+ICAJCQkJCQkgICAgIFJURV9FVEhfRVZF TlRfSU5UUl9MU0MsDQo+ICAJCQkJCQkgICAgIE5VTEwpOw0KPiANCj4gLQkJaWYgKHZ0cGNpX3dp dGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX1NUQVRVUykpIHsNCj4gKwkJaWYgKHZpcnRpb193 aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19ORVRfRl9TVEFUVVMpKSB7DQo+ICAJCQl2dHBjaV9yZWFk X2Rldl9jb25maWcoaHcsDQo+ICAJCQkJb2Zmc2V0b2Yoc3RydWN0IHZpcnRpb19uZXRfY29uZmln LCBzdGF0dXMpLA0KPiAgCQkJCSZzdGF0dXMsIHNpemVvZihzdGF0dXMpKTsNCj4gQEAgLTE0ODcs NyArMTQ4Nyw3IEBAIHNldF9yeHR4X2Z1bmNzKHN0cnVjdCBydGVfZXRoX2RldiAqZXRoX2RldikN Cj4gIAlzdHJ1Y3QgdmlydGlvX2h3ICpodyA9IGV0aF9kZXYtPmRhdGEtPmRldl9wcml2YXRlOw0K PiANCj4gIAlldGhfZGV2LT50eF9wa3RfcHJlcGFyZSA9IHZpcnRpb194bWl0X3BrdHNfcHJlcGFy ZTsNCj4gLQlpZiAodnRwY2lfcGFja2VkX3F1ZXVlKGh3KSkgew0KPiArCWlmICh2aXJ0aW9fd2l0 aF9wYWNrZWRfcXVldWUoaHcpKSB7DQo+ICAJCVBNRF9JTklUX0xPRyhJTkZPLA0KPiAgCQkJInZp cnRpbzogdXNpbmcgcGFja2VkIHJpbmcgJXMgVHggcGF0aCBvbiBwb3J0ICV1IiwNCj4gIAkJCWh3 LT51c2VfdmVjX3R4ID8gInZlY3Rvcml6ZWQiIDogInN0YW5kYXJkIiwNCj4gQEAgLTE1MDgsMTQg KzE1MDgsMTQgQEAgc2V0X3J4dHhfZnVuY3Moc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KQ0K PiAgCQl9DQo+ICAJfQ0KPiANCj4gLQlpZiAodnRwY2lfcGFja2VkX3F1ZXVlKGh3KSkgew0KPiAr CWlmICh2aXJ0aW9fd2l0aF9wYWNrZWRfcXVldWUoaHcpKSB7DQo+ICAJCWlmIChody0+dXNlX3Zl Y19yeCkgew0KPiAgCQkJUE1EX0lOSVRfTE9HKElORk8sDQo+ICAJCQkJInZpcnRpbzogdXNpbmcg cGFja2VkIHJpbmcgdmVjdG9yaXplZCBSeCBwYXRoIG9uDQo+IHBvcnQgJXUiLA0KPiAgCQkJCWV0 aF9kZXYtPmRhdGEtPnBvcnRfaWQpOw0KPiAgCQkJZXRoX2Rldi0+cnhfcGt0X2J1cnN0ID0NCj4g IAkJCQkmdmlydGlvX3JlY3ZfcGt0c19wYWNrZWRfdmVjOw0KPiAtCQl9IGVsc2UgaWYgKHZ0cGNp X3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX01SR19SWEJVRikpIHsNCj4gKwkJfSBlbHNl IGlmICh2aXJ0aW9fd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fTkVUX0ZfTVJHX1JYQlVGKSkgew0K PiAgCQkJUE1EX0lOSVRfTE9HKElORk8sDQo+ICAJCQkJInZpcnRpbzogdXNpbmcgcGFja2VkIHJp bmcgbWVyZ2VhYmxlIGJ1ZmZlciBSeCBwYXRoIG9uDQo+IHBvcnQgJXUiLA0KPiAgCQkJCWV0aF9k ZXYtPmRhdGEtPnBvcnRfaWQpOw0KPiBAQCAtMTUzNyw3ICsxNTM3LDcgQEAgc2V0X3J4dHhfZnVu Y3Moc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KQ0KPiAgCQkJCSJ2aXJ0aW86IHVzaW5nIGlu b3JkZXIgUnggcGF0aCBvbiBwb3J0ICV1IiwNCj4gIAkJCQlldGhfZGV2LT5kYXRhLT5wb3J0X2lk KTsNCj4gIAkJCWV0aF9kZXYtPnJ4X3BrdF9idXJzdCA9CSZ2aXJ0aW9fcmVjdl9wa3RzX2lub3Jk ZXI7DQo+IC0JCX0gZWxzZSBpZiAodnRwY2lfd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fTkVUX0Zf TVJHX1JYQlVGKSkgew0KPiArCQl9IGVsc2UgaWYgKHZpcnRpb193aXRoX2ZlYXR1cmUoaHcsIFZJ UlRJT19ORVRfRl9NUkdfUlhCVUYpKSB7DQo+ICAJCQlQTURfSU5JVF9MT0coSU5GTywNCj4gIAkJ CQkidmlydGlvOiB1c2luZyBtZXJnZWFibGUgYnVmZmVyIFJ4IHBhdGggb24gcG9ydCAldSIsDQo+ ICAJCQkJZXRoX2Rldi0+ZGF0YS0+cG9ydF9pZCk7DQo+IEBAIC0xNjYyLDEzICsxNjYyLDEzIEBA IHZpcnRpb19pbml0X2RldmljZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXYsDQo+IHVpbnQ2 NF90IHJlcV9mZWF0dXJlcykNCj4gDQo+ICAJLyogVGVsbCB0aGUgaG9zdCB3ZSd2ZSBrbm93biBo b3cgdG8gZHJpdmUgdGhlIGRldmljZS4gKi8NCj4gIAl2dHBjaV9zZXRfc3RhdHVzKGh3LCBWSVJU SU9fQ09ORklHX1NUQVRVU19EUklWRVIpOw0KPiAtCWlmICh2aXJ0aW9fbmVnb3RpYXRlX2ZlYXR1 cmVzKGh3LCByZXFfZmVhdHVyZXMpIDwgMCkNCj4gKwlpZiAodmlydGlvX2V0aGRldl9uZWdvdGlh dGVfZmVhdHVyZXMoaHcsIHJlcV9mZWF0dXJlcykgPCAwKQ0KPiAgCQlyZXR1cm4gLTE7DQo+IA0K PiAtCWh3LT53ZWFrX2JhcnJpZXJzID0gIXZ0cGNpX3dpdGhfZmVhdHVyZShodywgVklSVElPX0Zf T1JERVJfUExBVEZPUk0pOw0KPiArCWh3LT53ZWFrX2JhcnJpZXJzID0gIXZpcnRpb193aXRoX2Zl YXR1cmUoaHcsIFZJUlRJT19GX09SREVSX1BMQVRGT1JNKTsNCj4gDQo+ICAJLyogSWYgaG9zdCBk b2VzIG5vdCBzdXBwb3J0IGJvdGggc3RhdHVzIGFuZCBNU0ktWCB0aGVuIGRpc2FibGUgTFNDICov DQo+IC0JaWYgKHZ0cGNpX3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX1NUQVRVUykgJiYN Cj4gKwlpZiAodmlydGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX1NUQVRVUykgJiYN Cj4gIAkgICAgaHctPnVzZV9tc2l4ICE9IFZJUlRJT19NU0lYX05PTkUpDQo+ICAJCWV0aF9kZXYt PmRhdGEtPmRldl9mbGFncyB8PSBSVEVfRVRIX0RFVl9JTlRSX0xTQzsNCj4gIAllbHNlDQo+IEBA IC0xNjc3LDkgKzE2NzcsOSBAQCB2aXJ0aW9faW5pdF9kZXZpY2Uoc3RydWN0IHJ0ZV9ldGhfZGV2 ICpldGhfZGV2LCB1aW50NjRfdA0KPiByZXFfZmVhdHVyZXMpDQo+ICAJZXRoX2Rldi0+ZGF0YS0+ ZGV2X2ZsYWdzIHw9IFJURV9FVEhfREVWX0FVVE9GSUxMX1FVRVVFX1hTVEFUUzsNCj4gDQo+ICAJ LyogU2V0dGluZyB1cCByeF9oZWFkZXIgc2l6ZSBmb3IgdGhlIGRldmljZSAqLw0KPiAtCWlmICh2 dHBjaV93aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19ORVRfRl9NUkdfUlhCVUYpIHx8DQo+IC0JICAg IHZ0cGNpX3dpdGhfZmVhdHVyZShodywgVklSVElPX0ZfVkVSU0lPTl8xKSB8fA0KPiAtCSAgICB2 dHBjaV93aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19GX1JJTkdfUEFDS0VEKSkNCj4gKwlpZiAodmly dGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX01SR19SWEJVRikgfHwNCj4gKwkgICAg dmlydGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX0ZfVkVSU0lPTl8xKSB8fA0KPiArCSAgICB2 aXJ0aW9fd2l0aF9wYWNrZWRfcXVldWUoaHcpKQ0KPiAgCQlody0+dnRuZXRfaGRyX3NpemUgPSBz aXplb2Yoc3RydWN0IHZpcnRpb19uZXRfaGRyX21yZ19yeGJ1Zik7DQo+ICAJZWxzZQ0KPiAgCQlo dy0+dnRuZXRfaGRyX3NpemUgPSBzaXplb2Yoc3RydWN0IHZpcnRpb19uZXRfaGRyKTsNCj4gQEAg LTE2OTQsNyArMTY5NCw3IEBAIHZpcnRpb19pbml0X2RldmljZShzdHJ1Y3QgcnRlX2V0aF9kZXYg KmV0aF9kZXYsIHVpbnQ2NF90DQo+IHJlcV9mZWF0dXJlcykNCj4gIAkJICAgICBody0+bWFjX2Fk ZHJbM10sIGh3LT5tYWNfYWRkcls0XSwgaHctPm1hY19hZGRyWzVdKTsNCj4gDQo+ICAJaWYgKGh3 LT5zcGVlZCA9PSBFVEhfU1BFRURfTlVNX1VOS05PV04pIHsNCj4gLQkJaWYgKHZ0cGNpX3dpdGhf ZmVhdHVyZShodywgVklSVElPX05FVF9GX1NQRUVEX0RVUExFWCkpIHsNCj4gKwkJaWYgKHZpcnRp b193aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19ORVRfRl9TUEVFRF9EVVBMRVgpKSB7DQo+ICAJCQlj b25maWcgPSAmbG9jYWxfY29uZmlnOw0KPiAgCQkJdnRwY2lfcmVhZF9kZXZfY29uZmlnKGh3LA0K PiAgCQkJCW9mZnNldG9mKHN0cnVjdCB2aXJ0aW9fbmV0X2NvbmZpZywgc3BlZWQpLA0KPiBAQCAt MTcxMCwxNCArMTcxMCwxNCBAQCB2aXJ0aW9faW5pdF9kZXZpY2Uoc3RydWN0IHJ0ZV9ldGhfZGV2 ICpldGhfZGV2LA0KPiB1aW50NjRfdCByZXFfZmVhdHVyZXMpDQo+ICAJCWh3LT5kdXBsZXggPSBF VEhfTElOS19GVUxMX0RVUExFWDsNCj4gIAlQTURfSU5JVF9MT0coREVCVUcsICJsaW5rIHNwZWVk ID0gJWQsIGR1cGxleCA9ICVkIiwNCj4gIAkJaHctPnNwZWVkLCBody0+ZHVwbGV4KTsNCj4gLQlp ZiAodnRwY2lfd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fTkVUX0ZfQ1RSTF9WUSkpIHsNCj4gKwlp ZiAodmlydGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX0NUUkxfVlEpKSB7DQo+ICAJ CWNvbmZpZyA9ICZsb2NhbF9jb25maWc7DQo+IA0KPiAgCQl2dHBjaV9yZWFkX2Rldl9jb25maWco aHcsDQo+ICAJCQlvZmZzZXRvZihzdHJ1Y3QgdmlydGlvX25ldF9jb25maWcsIG1hYyksDQo+ICAJ CQkmY29uZmlnLT5tYWMsIHNpemVvZihjb25maWctPm1hYykpOw0KPiANCj4gLQkJaWYgKHZ0cGNp X3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX1NUQVRVUykpIHsNCj4gKwkJaWYgKHZpcnRp b193aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19ORVRfRl9TVEFUVVMpKSB7DQo+ICAJCQl2dHBjaV9y ZWFkX2Rldl9jb25maWcoaHcsDQo+ICAJCQkJb2Zmc2V0b2Yoc3RydWN0IHZpcnRpb19uZXRfY29u ZmlnLCBzdGF0dXMpLA0KPiAgCQkJCSZjb25maWctPnN0YXR1cywgc2l6ZW9mKGNvbmZpZy0+c3Rh dHVzKSk7DQo+IEBAIC0xNzI3LDcgKzE3MjcsNyBAQCB2aXJ0aW9faW5pdF9kZXZpY2Uoc3RydWN0 IHJ0ZV9ldGhfZGV2ICpldGhfZGV2LCB1aW50NjRfdA0KPiByZXFfZmVhdHVyZXMpDQo+ICAJCQlj b25maWctPnN0YXR1cyA9IDA7DQo+ICAJCX0NCj4gDQo+IC0JCWlmICh2dHBjaV93aXRoX2ZlYXR1 cmUoaHcsIFZJUlRJT19ORVRfRl9NUSkpIHsNCj4gKwkJaWYgKHZpcnRpb193aXRoX2ZlYXR1cmUo aHcsIFZJUlRJT19ORVRfRl9NUSkpIHsNCj4gIAkJCXZ0cGNpX3JlYWRfZGV2X2NvbmZpZyhodywN Cj4gIAkJCQlvZmZzZXRvZihzdHJ1Y3QgdmlydGlvX25ldF9jb25maWcsDQo+IG1heF92aXJ0cXVl dWVfcGFpcnMpLA0KPiAgCQkJCSZjb25maWctPm1heF92aXJ0cXVldWVfcGFpcnMsDQo+IEBAIC0x NzQwLDcgKzE3NDAsNyBAQCB2aXJ0aW9faW5pdF9kZXZpY2Uoc3RydWN0IHJ0ZV9ldGhfZGV2ICpl dGhfZGV2LCB1aW50NjRfdA0KPiByZXFfZmVhdHVyZXMpDQo+IA0KPiAgCQlody0+bWF4X3F1ZXVl X3BhaXJzID0gY29uZmlnLT5tYXhfdmlydHF1ZXVlX3BhaXJzOw0KPiANCj4gLQkJaWYgKHZ0cGNp X3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX01UVSkpIHsNCj4gKwkJaWYgKHZpcnRpb193 aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19ORVRfRl9NVFUpKSB7DQo+ICAJCQl2dHBjaV9yZWFkX2Rl dl9jb25maWcoaHcsDQo+ICAJCQkJb2Zmc2V0b2Yoc3RydWN0IHZpcnRpb19uZXRfY29uZmlnLCBt dHUpLA0KPiAgCQkJCSZjb25maWctPm10dSwNCj4gQEAgLTE4NTEsNyArMTg1MSw3IEBAIGV0aF92 aXJ0aW9fZGV2X2luaXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KQ0KPiAgCQlnb3RvIGVy cl92aXJ0aW9faW5pdDsNCj4gDQo+ICAJaWYgKHZlY3Rvcml6ZWQpIHsNCj4gLQkJaWYgKCF2dHBj aV9wYWNrZWRfcXVldWUoaHcpKSB7DQo+ICsJCWlmICghdmlydGlvX3dpdGhfcGFja2VkX3F1ZXVl KGh3KSkgew0KPiAgCQkJaHctPnVzZV92ZWNfcnggPSAxOw0KPiAgCQl9IGVsc2Ugew0KPiAgI2lm IGRlZmluZWQoQ0NfQVZYNTEyX1NVUFBPUlQpIHx8IGRlZmluZWQoUlRFX0FSQ0hfQVJNKQ0KPiBA QCAtMTk3NiwxNyArMTk3NiwxNyBAQCB2aXJ0aW9fZGV2X2RldmFyZ3NfcGFyc2Uoc3RydWN0IHJ0 ZV9kZXZhcmdzICpkZXZhcmdzLA0KPiB1aW50MzJfdCAqc3BlZWQsIGludCAqdmVjdA0KPiAgc3Rh dGljIHVpbnQ4X3QNCj4gIHJ4X29mZmxvYWRfZW5hYmxlZChzdHJ1Y3QgdmlydGlvX2h3ICpodykN Cj4gIHsNCj4gLQlyZXR1cm4gdnRwY2lfd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fTkVUX0ZfR1VF U1RfQ1NVTSkgfHwNCj4gLQkJdnRwY2lfd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fTkVUX0ZfR1VF U1RfVFNPNCkgfHwNCj4gLQkJdnRwY2lfd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fTkVUX0ZfR1VF U1RfVFNPNik7DQo+ICsJcmV0dXJuIHZpcnRpb193aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19ORVRf Rl9HVUVTVF9DU1VNKSB8fA0KPiArCQl2aXJ0aW9fd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fTkVU X0ZfR1VFU1RfVFNPNCkgfHwNCj4gKwkJdmlydGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX05F VF9GX0dVRVNUX1RTTzYpOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyB1aW50OF90DQo+ICB0eF9vZmZs b2FkX2VuYWJsZWQoc3RydWN0IHZpcnRpb19odyAqaHcpDQo+ICB7DQo+IC0JcmV0dXJuIHZ0cGNp X3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX0NTVU0pIHx8DQo+IC0JCXZ0cGNpX3dpdGhf ZmVhdHVyZShodywgVklSVElPX05FVF9GX0hPU1RfVFNPNCkgfHwNCj4gLQkJdnRwY2lfd2l0aF9m ZWF0dXJlKGh3LCBWSVJUSU9fTkVUX0ZfSE9TVF9UU082KTsNCj4gKwlyZXR1cm4gdmlydGlvX3dp dGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX0NTVU0pIHx8DQo+ICsJCXZpcnRpb193aXRoX2Zl YXR1cmUoaHcsIFZJUlRJT19ORVRfRl9IT1NUX1RTTzQpIHx8DQo+ICsJCXZpcnRpb193aXRoX2Zl YXR1cmUoaHcsIFZJUlRJT19ORVRfRl9IT1NUX1RTTzYpOw0KPiAgfQ0KPiANCj4gIC8qDQo+IEBA IC0yMDU5LDI5ICsyMDU5LDI5IEBAIHZpcnRpb19kZXZfY29uZmlndXJlKHN0cnVjdCBydGVfZXRo X2RldiAqZGV2KQ0KPiANCj4gIAlpZiAoKHJ4X29mZmxvYWRzICYgKERFVl9SWF9PRkZMT0FEX1VE UF9DS1NVTSB8DQo+ICAJCQkgICAgREVWX1JYX09GRkxPQURfVENQX0NLU1VNKSkgJiYNCj4gLQkJ IXZ0cGNpX3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX0dVRVNUX0NTVU0pKSB7DQo+ICsJ CSF2aXJ0aW9fd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fTkVUX0ZfR1VFU1RfQ1NVTSkpIHsNCj4g IAkJUE1EX0RSVl9MT0coRVJSLA0KPiAgCQkJInJ4IGNoZWNrc3VtIG5vdCBhdmFpbGFibGUgb24g dGhpcyBob3N0Iik7DQo+ICAJCXJldHVybiAtRU5PVFNVUDsNCj4gIAl9DQo+IA0KPiAgCWlmICgo cnhfb2ZmbG9hZHMgJiBERVZfUlhfT0ZGTE9BRF9UQ1BfTFJPKSAmJg0KPiAtCQkoIXZ0cGNpX3dp dGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX0dVRVNUX1RTTzQpIHx8DQo+IC0JCSAhdnRwY2lf d2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fTkVUX0ZfR1VFU1RfVFNPNikpKSB7DQo+ICsJCSghdmly dGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX0dVRVNUX1RTTzQpIHx8DQo+ICsJCSAh dmlydGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9GX0dVRVNUX1RTTzYpKSkgew0KPiAg CQlQTURfRFJWX0xPRyhFUlIsDQo+ICAJCQkiTGFyZ2UgUmVjZWl2ZSBPZmZsb2FkIG5vdCBhdmFp bGFibGUgb24gdGhpcyBob3N0Iik7DQo+ICAJCXJldHVybiAtRU5PVFNVUDsNCj4gIAl9DQo+IA0K PiAgCS8qIHN0YXJ0IGNvbnRyb2wgcXVldWUgKi8NCj4gLQlpZiAodnRwY2lfd2l0aF9mZWF0dXJl KGh3LCBWSVJUSU9fTkVUX0ZfQ1RSTF9WUSkpDQo+ICsJaWYgKHZpcnRpb193aXRoX2ZlYXR1cmUo aHcsIFZJUlRJT19ORVRfRl9DVFJMX1ZRKSkNCj4gIAkJdmlydGlvX2Rldl9jcV9zdGFydChkZXYp Ow0KPiANCj4gIAlpZiAocnhfb2ZmbG9hZHMgJiBERVZfUlhfT0ZGTE9BRF9WTEFOX1NUUklQKQ0K PiAgCQlody0+dmxhbl9zdHJpcCA9IDE7DQo+IA0KPiAtCWlmICgocnhfb2ZmbG9hZHMgJiBERVZf UlhfT0ZGTE9BRF9WTEFOX0ZJTFRFUikNCj4gLQkgICAgJiYgIXZ0cGNpX3dpdGhfZmVhdHVyZSho dywgVklSVElPX05FVF9GX0NUUkxfVkxBTikpIHsNCj4gKwlpZiAoKHJ4X29mZmxvYWRzICYgREVW X1JYX09GRkxPQURfVkxBTl9GSUxURVIpICYmDQo+ICsJCQkhdmlydGlvX3dpdGhfZmVhdHVyZSho dywgVklSVElPX05FVF9GX0NUUkxfVkxBTikpIHsNCj4gIAkJUE1EX0RSVl9MT0coRVJSLA0KPiAg CQkJICAgICJ2bGFuIGZpbHRlcmluZyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgaG9zdCIpOw0KPiAg CQlyZXR1cm4gLUVOT1RTVVA7DQo+IEBAIC0yMDk4LDEyICsyMDk4LDEyIEBAIHZpcnRpb19kZXZf Y29uZmlndXJlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQ0KPiAgCQkJcmV0dXJuIC1FQlVTWTsN Cj4gIAkJfQ0KPiANCj4gLQlpZiAodnRwY2lfcGFja2VkX3F1ZXVlKGh3KSkgew0KPiArCWlmICh2 aXJ0aW9fd2l0aF9wYWNrZWRfcXVldWUoaHcpKSB7DQo+ICAjaWYgZGVmaW5lZChSVEVfQVJDSF9Y ODZfNjQpICYmIGRlZmluZWQoQ0NfQVZYNTEyX1NVUFBPUlQpDQo+ICAJCWlmICgoaHctPnVzZV92 ZWNfcnggfHwgaHctPnVzZV92ZWNfdHgpICYmDQo+ICAJCSAgICAoIXJ0ZV9jcHVfZ2V0X2ZsYWdf ZW5hYmxlZChSVEVfQ1BVRkxBR19BVlg1MTJGKSB8fA0KPiAtCQkgICAgICF2dHBjaV93aXRoX2Zl YXR1cmUoaHcsIFZJUlRJT19GX0lOX09SREVSKSB8fA0KPiAtCQkgICAgICF2dHBjaV93aXRoX2Zl YXR1cmUoaHcsIFZJUlRJT19GX1ZFUlNJT05fMSkgfHwNCj4gKwkJICAgICAhdmlydGlvX3dpdGhf ZmVhdHVyZShodywgVklSVElPX0ZfSU5fT1JERVIpIHx8DQo+ICsJCSAgICAgIXZpcnRpb193aXRo X2ZlYXR1cmUoaHcsIFZJUlRJT19GX1ZFUlNJT05fMSkgfHwNCj4gIAkJICAgICBydGVfdmVjdF9n ZXRfbWF4X3NpbWRfYml0d2lkdGgoKSA8IFJURV9WRUNUX1NJTURfNTEyKSkgew0KPiAgCQkJUE1E X0RSVl9MT0coSU5GTywNCj4gIAkJCQkiZGlzYWJsZWQgcGFja2VkIHJpbmcgdmVjdG9yaXplZCBw YXRoIGZvciByZXF1aXJlbWVudHMNCj4gbm90IG1ldCIpOw0KPiBAQCAtMjExMyw4ICsyMTEzLDgg QEAgdmlydGlvX2Rldl9jb25maWd1cmUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpDQo+ICAjZWxp ZiBkZWZpbmVkKFJURV9BUkNIX0FSTSkNCj4gIAkJaWYgKChody0+dXNlX3ZlY19yeCB8fCBody0+ dXNlX3ZlY190eCkgJiYNCj4gIAkJICAgICghcnRlX2NwdV9nZXRfZmxhZ19lbmFibGVkKFJURV9D UFVGTEFHX05FT04pIHx8DQo+IC0JCSAgICAgIXZ0cGNpX3dpdGhfZmVhdHVyZShodywgVklSVElP X0ZfSU5fT1JERVIpIHx8DQo+IC0JCSAgICAgIXZ0cGNpX3dpdGhfZmVhdHVyZShodywgVklSVElP X0ZfVkVSU0lPTl8xKSB8fA0KPiArCQkgICAgICF2aXJ0aW9fd2l0aF9mZWF0dXJlKGh3LCBWSVJU SU9fRl9JTl9PUkRFUikgfHwNCj4gKwkJICAgICAhdmlydGlvX3dpdGhfZmVhdHVyZShodywgVklS VElPX0ZfVkVSU0lPTl8xKSB8fA0KPiAgCQkgICAgIHJ0ZV92ZWN0X2dldF9tYXhfc2ltZF9iaXR3 aWR0aCgpIDwgUlRFX1ZFQ1RfU0lNRF8xMjgpKSB7DQo+ICAJCQlQTURfRFJWX0xPRyhJTkZPLA0K PiAgCQkJCSJkaXNhYmxlZCBwYWNrZWQgcmluZyB2ZWN0b3JpemVkIHBhdGggZm9yIHJlcXVpcmVt ZW50cw0KPiBub3QgbWV0Iik7DQo+IEBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2aXJ0aW9fZGV2X2Nv bmZpZ3VyZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikNCj4gICNlbmRpZg0KPiANCj4gIAkJaWYg KGh3LT51c2VfdmVjX3J4KSB7DQo+IC0JCQlpZiAodnRwY2lfd2l0aF9mZWF0dXJlKGh3LCBWSVJU SU9fTkVUX0ZfTVJHX1JYQlVGKSkgew0KPiArCQkJaWYgKHZpcnRpb193aXRoX2ZlYXR1cmUoaHcs IFZJUlRJT19ORVRfRl9NUkdfUlhCVUYpKSB7DQo+ICAJCQkJUE1EX0RSVl9MT0coSU5GTywNCj4g IAkJCQkJImRpc2FibGVkIHBhY2tlZCByaW5nIHZlY3Rvcml6ZWQgcnggZm9yDQo+IG1yZ19yeGJ1 ZiBlbmFibGVkIik7DQo+ICAJCQkJaHctPnVzZV92ZWNfcnggPSAwOw0KPiBAQCAtMjE0MCw3ICsy MTQwLDcgQEAgdmlydGlvX2Rldl9jb25maWd1cmUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpDQo+ ICAJCQl9DQo+ICAJCX0NCj4gIAl9IGVsc2Ugew0KPiAtCQlpZiAodnRwY2lfd2l0aF9mZWF0dXJl KGh3LCBWSVJUSU9fRl9JTl9PUkRFUikpIHsNCj4gKwkJaWYgKHZpcnRpb193aXRoX2ZlYXR1cmUo aHcsIFZJUlRJT19GX0lOX09SREVSKSkgew0KPiAgCQkJaHctPnVzZV9pbm9yZGVyX3R4ID0gMTsN Cj4gIAkJCWh3LT51c2VfaW5vcmRlcl9yeCA9IDE7DQo+ICAJCQlody0+dXNlX3ZlY19yeCA9IDA7 DQo+IEBAIC0yMTU0LDcgKzIxNTQsNyBAQCB2aXJ0aW9fZGV2X2NvbmZpZ3VyZShzdHJ1Y3QgcnRl X2V0aF9kZXYgKmRldikNCj4gIAkJCQlody0+dXNlX3ZlY19yeCA9IDA7DQo+ICAJCQl9DQo+ICAj ZW5kaWYNCj4gLQkJCWlmICh2dHBjaV93aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19ORVRfRl9NUkdf UlhCVUYpKSB7DQo+ICsJCQlpZiAodmlydGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX05FVF9G X01SR19SWEJVRikpIHsNCj4gIAkJCQlQTURfRFJWX0xPRyhJTkZPLA0KPiAgCQkJCQkiZGlzYWJs ZWQgc3BsaXQgcmluZyB2ZWN0b3JpemVkIHJ4IGZvciBtcmdfcnhidWYNCj4gZW5hYmxlZCIpOw0K PiAgCQkJCWh3LT51c2VfdmVjX3J4ID0gMDsNCj4gQEAgLTIzNzIsNyArMjM3Miw3IEBAIHZpcnRp b19kZXZfbGlua191cGRhdGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+IF9fcnRlX3VudXNl ZCBpbnQgd2FpdF90b19jb21wbGV0DQo+ICAJaWYgKCFody0+c3RhcnRlZCkgew0KPiAgCQlsaW5r Lmxpbmtfc3RhdHVzID0gRVRIX0xJTktfRE9XTjsNCj4gIAkJbGluay5saW5rX3NwZWVkID0gRVRI X1NQRUVEX05VTV9OT05FOw0KPiAtCX0gZWxzZSBpZiAodnRwY2lfd2l0aF9mZWF0dXJlKGh3LCBW SVJUSU9fTkVUX0ZfU1RBVFVTKSkgew0KPiArCX0gZWxzZSBpZiAodmlydGlvX3dpdGhfZmVhdHVy ZShodywgVklSVElPX05FVF9GX1NUQVRVUykpIHsNCj4gIAkJUE1EX0lOSVRfTE9HKERFQlVHLCAi R2V0IGxpbmsgc3RhdHVzIGZyb20gaHciKTsNCj4gIAkJdnRwY2lfcmVhZF9kZXZfY29uZmlnKGh3 LA0KPiAgCQkJCW9mZnNldG9mKHN0cnVjdCB2aXJ0aW9fbmV0X2NvbmZpZywgc3RhdHVzKSwNCj4g QEAgLTI0MDMsNyArMjQwMyw3IEBAIHZpcnRpb19kZXZfdmxhbl9vZmZsb2FkX3NldChzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmRldiwgaW50DQo+IG1hc2spDQo+IA0KPiAgCWlmIChtYXNrICYgRVRIX1ZM QU5fRklMVEVSX01BU0spIHsNCj4gIAkJaWYgKChvZmZsb2FkcyAmIERFVl9SWF9PRkZMT0FEX1ZM QU5fRklMVEVSKSAmJg0KPiAtCQkJCSF2dHBjaV93aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19ORVRf Rl9DVFJMX1ZMQU4pKSB7DQo+ICsJCQkJIXZpcnRpb193aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19O RVRfRl9DVFJMX1ZMQU4pKSB7DQo+IA0KPiAgCQkJUE1EX0RSVl9MT0coTk9USUNFLA0KPiAgCQkJ CSJ2bGFuIGZpbHRlcmluZyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgaG9zdCIpOw0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19wY2kuYyBiL2RyaXZlcnMvbmV0L3ZpcnRp by92aXJ0aW9fcGNpLmMNCj4gaW5kZXggZTBkOGE1M2NhNi4uOTc3YTIxMzE3ZiAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19wY2kuYw0KPiArKysgYi9kcml2ZXJzL25l dC92aXJ0aW8vdmlydGlvX3BjaS5jDQo+IEBAIC00MTUsNyArNDE1LDcgQEAgbW9kZXJuX3NldF9m ZWF0dXJlcyhzdHJ1Y3QgdmlydGlvX2h3ICpodywgdWludDY0X3QNCj4gZmVhdHVyZXMpDQo+ICBz dGF0aWMgaW50DQo+ICBtb2Rlcm5fZmVhdHVyZXNfb2soc3RydWN0IHZpcnRpb19odyAqaHcpDQo+ ICB7DQo+IC0JaWYgKCF2dHBjaV93aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19GX1ZFUlNJT05fMSkp IHsNCj4gKwlpZiAoIXZpcnRpb193aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19GX1ZFUlNJT05fMSkp IHsNCj4gIAkJUE1EX0lOSVRfTE9HKEVSUiwgIlZlcnNpb24gMSsgcmVxdWlyZWQgd2l0aCBtb2Rl cm4gZGV2aWNlc1xuIik7DQo+ICAJCXJldHVybiAtMTsNCj4gIAl9DQo+IEBAIC01MzgsMTIgKzUz OCwxMiBAQCBtb2Rlcm5fbm90aWZ5X3F1ZXVlKHN0cnVjdCB2aXJ0aW9faHcgKmh3LCBzdHJ1Y3QN Cj4gdmlydHF1ZXVlICp2cSkNCj4gIHsNCj4gIAl1aW50MzJfdCBub3RpZnlfZGF0YTsNCj4gDQo+ IC0JaWYgKCF2dHBjaV93aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19GX05PVElGSUNBVElPTl9EQVRB KSkgew0KPiArCWlmICghdmlydGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX0ZfTk9USUZJQ0FU SU9OX0RBVEEpKSB7DQo+ICAJCXJ0ZV93cml0ZTE2KHZxLT52cV9xdWV1ZV9pbmRleCwgdnEtPm5v dGlmeV9hZGRyKTsNCj4gIAkJcmV0dXJuOw0KPiAgCX0NCj4gDQo+IC0JaWYgKHZ0cGNpX3dpdGhf ZmVhdHVyZShodywgVklSVElPX0ZfUklOR19QQUNLRUQpKSB7DQo+ICsJaWYgKHZpcnRpb193aXRo X3BhY2tlZF9xdWV1ZShodykpIHsNCj4gIAkJLyoNCj4gIAkJICogQml0WzA6MTVdOiB2cSBxdWV1 ZSBpbmRleA0KPiAgCQkgKiBCaXRbMTY6MzBdOiBhdmFpbCBpbmRleA0KPiBAQCAtNjE4LDIxICs2 MTgsNiBAQCB2dHBjaV93cml0ZV9kZXZfY29uZmlnKHN0cnVjdCB2aXJ0aW9faHcgKmh3LCBzaXpl X3QNCj4gb2Zmc2V0LA0KPiAgCVZJUlRJT19PUFMoaHcpLT53cml0ZV9kZXZfY2ZnKGh3LCBvZmZz ZXQsIHNyYywgbGVuZ3RoKTsNCj4gIH0NCj4gDQo+IC11aW50NjRfdA0KPiAtdnRwY2lfbmVnb3Rp YXRlX2ZlYXR1cmVzKHN0cnVjdCB2aXJ0aW9faHcgKmh3LCB1aW50NjRfdCBob3N0X2ZlYXR1cmVz KQ0KPiAtew0KPiAtCXVpbnQ2NF90IGZlYXR1cmVzOw0KPiAtDQo+IC0JLyoNCj4gLQkgKiBMaW1p dCBuZWdvdGlhdGVkIGZlYXR1cmVzIHRvIHdoYXQgdGhlIGRyaXZlciwgdmlydHF1ZXVlLCBhbmQN Cj4gLQkgKiBob3N0IGFsbCBzdXBwb3J0Lg0KPiAtCSAqLw0KPiAtCWZlYXR1cmVzID0gaG9zdF9m ZWF0dXJlcyAmIGh3LT5ndWVzdF9mZWF0dXJlczsNCj4gLQlWSVJUSU9fT1BTKGh3KS0+c2V0X2Zl YXR1cmVzKGh3LCBmZWF0dXJlcyk7DQo+IC0NCj4gLQlyZXR1cm4gZmVhdHVyZXM7DQo+IC19DQo+ IC0NCj4gIHZvaWQNCj4gIHZ0cGNpX3Jlc2V0KHN0cnVjdCB2aXJ0aW9faHcgKmh3KQ0KPiAgew0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19wY2kuaCBiL2RyaXZlcnMv bmV0L3ZpcnRpby92aXJ0aW9fcGNpLmgNCj4gaW5kZXggZjdmNTFmYmE3OS4uM2Q5M2U3NGYzNiAx MDA2NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19wY2kuaA0KPiArKysgYi9k cml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3BjaS5oDQo+IEBAIC03OSw4MyArNzksNiBAQCBzdHJ1 Y3QgdmlydG5ldF9jdGw7DQo+ICAgKi8NCj4gICNkZWZpbmUgVklSVElPX01BWF9JTkRJUkVDVCAo KGludCkgKFBBR0VfU0laRSAvIDE2KSkNCj4gDQo+IC0vKiBUaGUgZmVhdHVyZSBiaXRtYXAgZm9y IHZpcnRpbyBuZXQgKi8NCj4gLSNkZWZpbmUgVklSVElPX05FVF9GX0NTVU0JMAkvKiBIb3N0IGhh bmRsZXMgcGt0cyB3LyBwYXJ0aWFsIGNzdW0gKi8NCj4gLSNkZWZpbmUgVklSVElPX05FVF9GX0dV RVNUX0NTVU0JMQkvKiBHdWVzdCBoYW5kbGVzIHBrdHMgdy8gcGFydGlhbA0KPiBjc3VtICovDQo+ IC0jZGVmaW5lIFZJUlRJT19ORVRfRl9NVFUJMwkvKiBJbml0aWFsIE1UVSBhZHZpY2UuICovDQo+ IC0jZGVmaW5lIFZJUlRJT19ORVRfRl9NQUMJNQkvKiBIb3N0IGhhcyBnaXZlbiBNQUMgYWRkcmVz cy4gKi8NCj4gLSNkZWZpbmUgVklSVElPX05FVF9GX0dVRVNUX1RTTzQJNwkvKiBHdWVzdCBjYW4g aGFuZGxlIFRTT3Y0IGluLiAqLw0KPiAtI2RlZmluZSBWSVJUSU9fTkVUX0ZfR1VFU1RfVFNPNgk4 CS8qIEd1ZXN0IGNhbiBoYW5kbGUgVFNPdjYgaW4uICovDQo+IC0jZGVmaW5lIFZJUlRJT19ORVRf Rl9HVUVTVF9FQ04JOQkvKiBHdWVzdCBjYW4gaGFuZGxlIFRTT1s2XSB3LyBFQ04gaW4uDQo+ICov DQo+IC0jZGVmaW5lIFZJUlRJT19ORVRfRl9HVUVTVF9VRk8JMTAJLyogR3Vlc3QgY2FuIGhhbmRs ZSBVRk8gaW4uICovDQo+IC0jZGVmaW5lIFZJUlRJT19ORVRfRl9IT1NUX1RTTzQJMTEJLyogSG9z dCBjYW4gaGFuZGxlIFRTT3Y0IGluLiAqLw0KPiAtI2RlZmluZSBWSVJUSU9fTkVUX0ZfSE9TVF9U U082CTEyCS8qIEhvc3QgY2FuIGhhbmRsZSBUU092NiBpbi4gKi8NCj4gLSNkZWZpbmUgVklSVElP X05FVF9GX0hPU1RfRUNOCTEzCS8qIEhvc3QgY2FuIGhhbmRsZSBUU09bNl0gdy8gRUNOIGluLg0K PiAqLw0KPiAtI2RlZmluZSBWSVJUSU9fTkVUX0ZfSE9TVF9VRk8JMTQJLyogSG9zdCBjYW4gaGFu ZGxlIFVGTyBpbi4gKi8NCj4gLSNkZWZpbmUgVklSVElPX05FVF9GX01SR19SWEJVRgkxNQkvKiBI b3N0IGNhbiBtZXJnZSByZWNlaXZlIGJ1ZmZlcnMuDQo+ICovDQo+IC0jZGVmaW5lIFZJUlRJT19O RVRfRl9TVEFUVVMJMTYJLyogdmlydGlvX25ldF9jb25maWcuc3RhdHVzIGF2YWlsYWJsZSAqLw0K PiAtI2RlZmluZSBWSVJUSU9fTkVUX0ZfQ1RSTF9WUQkxNwkvKiBDb250cm9sIGNoYW5uZWwgYXZh aWxhYmxlICovDQo+IC0jZGVmaW5lIFZJUlRJT19ORVRfRl9DVFJMX1JYCTE4CS8qIENvbnRyb2wg Y2hhbm5lbCBSWCBtb2RlIHN1cHBvcnQgKi8NCj4gLSNkZWZpbmUgVklSVElPX05FVF9GX0NUUkxf VkxBTgkxOQkvKiBDb250cm9sIGNoYW5uZWwgVkxBTiBmaWx0ZXJpbmcgKi8NCj4gLSNkZWZpbmUg VklSVElPX05FVF9GX0NUUkxfUlhfRVhUUkEgMjAJLyogRXh0cmEgUlggbW9kZSBjb250cm9sIHN1 cHBvcnQgKi8NCj4gLSNkZWZpbmUgVklSVElPX05FVF9GX0dVRVNUX0FOTk9VTkNFIDIxCS8qIEd1 ZXN0IGNhbiBhbm5vdW5jZSBkZXZpY2Ugb24gdGhlDQo+IC0JCQkJCSAqIG5ldHdvcmsgKi8NCj4g LSNkZWZpbmUgVklSVElPX05FVF9GX01RCQkyMgkvKiBEZXZpY2Ugc3VwcG9ydHMgUmVjZWl2ZSBG bG93DQo+IC0JCQkJCSAqIFN0ZWVyaW5nICovDQo+IC0jZGVmaW5lIFZJUlRJT19ORVRfRl9DVFJM X01BQ19BRERSIDIzCS8qIFNldCBNQUMgYWRkcmVzcyAqLw0KPiAtDQo+IC0vKiBEbyB3ZSBnZXQg Y2FsbGJhY2tzIHdoZW4gdGhlIHJpbmcgaXMgY29tcGxldGVseSB1c2VkLCBldmVuIGlmIHdlJ3Zl DQo+IC0gKiBzdXBwcmVzc2VkIHRoZW0/ICovDQo+IC0jZGVmaW5lIFZJUlRJT19GX05PVElGWV9P Tl9FTVBUWQkyNA0KPiAtDQo+IC0vKiBDYW4gdGhlIGRldmljZSBoYW5kbGUgYW55IGRlc2NyaXB0 b3IgbGF5b3V0PyAqLw0KPiAtI2RlZmluZSBWSVJUSU9fRl9BTllfTEFZT1VUCQkyNw0KPiAtDQo+ IC0vKiBXZSBzdXBwb3J0IGluZGlyZWN0IGJ1ZmZlciBkZXNjcmlwdG9ycyAqLw0KPiAtI2RlZmlu ZSBWSVJUSU9fUklOR19GX0lORElSRUNUX0RFU0MJMjgNCj4gLQ0KPiAtI2RlZmluZSBWSVJUSU9f Rl9WRVJTSU9OXzEJCTMyDQo+IC0jZGVmaW5lIFZJUlRJT19GX0lPTU1VX1BMQVRGT1JNCTMzDQo+ IC0jZGVmaW5lIFZJUlRJT19GX1JJTkdfUEFDS0VECQkzNA0KPiAtDQo+IC0vKg0KPiAtICogU29t ZSBWaXJ0SU8gZmVhdHVyZSBiaXRzIChjdXJyZW50bHkgYml0cyAyOCB0aHJvdWdoIDMxKSBhcmUN Cj4gLSAqIHJlc2VydmVkIGZvciB0aGUgdHJhbnNwb3J0IGJlaW5nIHVzZWQgKGVnLiB2aXJ0aW9f cmluZyksIHRoZQ0KPiAtICogcmVzdCBhcmUgcGVyLWRldmljZSBmZWF0dXJlIGJpdHMuDQo+IC0g Ki8NCj4gLSNkZWZpbmUgVklSVElPX1RSQU5TUE9SVF9GX1NUQVJUIDI4DQo+IC0jZGVmaW5lIFZJ UlRJT19UUkFOU1BPUlRfRl9FTkQgICAzNA0KPiAtDQo+IC0vKg0KPiAtICogSW5vcmRlciBmZWF0 dXJlIGluZGljYXRlcyB0aGF0IGFsbCBidWZmZXJzIGFyZSB1c2VkIGJ5IHRoZSBkZXZpY2UNCj4g LSAqIGluIHRoZSBzYW1lIG9yZGVyIGluIHdoaWNoIHRoZXkgaGF2ZSBiZWVuIG1hZGUgYXZhaWxh YmxlLg0KPiAtICovDQo+IC0jZGVmaW5lIFZJUlRJT19GX0lOX09SREVSIDM1DQo+IC0NCj4gLS8q DQo+IC0gKiBUaGlzIGZlYXR1cmUgaW5kaWNhdGVzIHRoYXQgbWVtb3J5IGFjY2Vzc2VzIGJ5IHRo ZSBkcml2ZXIgYW5kIHRoZSBkZXZpY2UNCj4gLSAqIGFyZSBvcmRlcmVkIGluIGEgd2F5IGRlc2Ny aWJlZCBieSB0aGUgcGxhdGZvcm0uDQo+IC0gKi8NCj4gLSNkZWZpbmUgVklSVElPX0ZfT1JERVJf UExBVEZPUk0gMzYNCj4gLQ0KPiAtLyoNCj4gLSAqIFRoaXMgZmVhdHVyZSBpbmRpY2F0ZXMgdGhh dCB0aGUgZHJpdmVyIHBhc3NlcyBleHRyYSBkYXRhIChiZXNpZGVzDQo+IC0gKiBpZGVudGlmeWlu ZyB0aGUgdmlydHF1ZXVlKSBpbiBpdHMgZGV2aWNlIG5vdGlmaWNhdGlvbnMuDQo+IC0gKi8NCj4g LSNkZWZpbmUgVklSVElPX0ZfTk9USUZJQ0FUSU9OX0RBVEEgMzgNCj4gLQ0KPiAtLyogRGV2aWNl IHNldCBsaW5rc3BlZWQgYW5kIGR1cGxleCAqLw0KPiAtI2RlZmluZSBWSVJUSU9fTkVUX0ZfU1BF RURfRFVQTEVYIDYzDQo+IC0NCj4gLS8qIFRoZSBHdWVzdCBwdWJsaXNoZXMgdGhlIHVzZWQgaW5k ZXggZm9yIHdoaWNoIGl0IGV4cGVjdHMgYW4gaW50ZXJydXB0DQo+IC0gKiBhdCB0aGUgZW5kIG9m IHRoZSBhdmFpbCByaW5nLiBIb3N0IHNob3VsZCBpZ25vcmUgdGhlIGF2YWlsLT5mbGFncyBmaWVs ZC4NCj4gKi8NCj4gLS8qIFRoZSBIb3N0IHB1Ymxpc2hlcyB0aGUgYXZhaWwgaW5kZXggZm9yIHdo aWNoIGl0IGV4cGVjdHMgYSBraWNrDQo+IC0gKiBhdCB0aGUgZW5kIG9mIHRoZSB1c2VkIHJpbmcu IEd1ZXN0IHNob3VsZCBpZ25vcmUgdGhlIHVzZWQtPmZsYWdzIGZpZWxkLiAqLw0KPiAtI2RlZmlu ZSBWSVJUSU9fUklOR19GX0VWRU5UX0lEWAkJMjkNCj4gLQ0KPiAtI2RlZmluZSBWSVJUSU9fTkVU X1NfTElOS19VUAkxCS8qIExpbmsgaXMgdXAgKi8NCj4gLSNkZWZpbmUgVklSVElPX05FVF9TX0FO Tk9VTkNFCTIJLyogQW5ub3VuY2VtZW50IGlzIG5lZWRlZCAqLw0KPiAtDQo+ICAvKg0KPiAgICog TWF4aW11bSBudW1iZXIgb2YgdmlydHF1ZXVlcyBwZXIgZGV2aWNlLg0KPiAgICovDQo+IEBAIC0y NzAsMTcgKzE5Myw2IEBAIGVudW0gdmlydGlvX21zaXhfc3RhdHVzIHsNCj4gIAlWSVJUSU9fTVNJ WF9FTkFCTEVEID0gMg0KPiAgfTsNCj4gDQo+IC1zdGF0aWMgaW5saW5lIGludA0KPiAtdnRwY2lf d2l0aF9mZWF0dXJlKHN0cnVjdCB2aXJ0aW9faHcgKmh3LCB1aW50NjRfdCBiaXQpDQo+IC17DQo+ IC0JcmV0dXJuIChody0+Z3Vlc3RfZmVhdHVyZXMgJiAoMVVMTCA8PCBiaXQpKSAhPSAwOw0KPiAt fQ0KPiAtDQo+IC1zdGF0aWMgaW5saW5lIGludA0KPiAtdnRwY2lfcGFja2VkX3F1ZXVlKHN0cnVj dCB2aXJ0aW9faHcgKmh3KQ0KPiAtew0KPiAtCXJldHVybiB2dHBjaV93aXRoX2ZlYXR1cmUoaHcs IFZJUlRJT19GX1JJTkdfUEFDS0VEKTsNCj4gLX0NCj4gDQo+ICAvKg0KPiAgICogRnVuY3Rpb24g ZGVjbGFyYXRpb24gZnJvbSB2aXJ0aW9fcGNpLmMNCj4gQEAgLTI5Myw4ICsyMDUsNiBAQCB2b2lk IHZ0cGNpX3JlaW5pdF9jb21wbGV0ZShzdHJ1Y3QgdmlydGlvX2h3ICopOw0KPiAgdWludDhfdCB2 dHBjaV9nZXRfc3RhdHVzKHN0cnVjdCB2aXJ0aW9faHcgKik7DQo+ICB2b2lkIHZ0cGNpX3NldF9z dGF0dXMoc3RydWN0IHZpcnRpb19odyAqLCB1aW50OF90KTsNCj4gDQo+IC11aW50NjRfdCB2dHBj aV9uZWdvdGlhdGVfZmVhdHVyZXMoc3RydWN0IHZpcnRpb19odyAqLCB1aW50NjRfdCk7DQo+IC0N Cj4gIHZvaWQgdnRwY2lfd3JpdGVfZGV2X2NvbmZpZyhzdHJ1Y3QgdmlydGlvX2h3ICosIHNpemVf dCwgY29uc3Qgdm9pZCAqLCBpbnQpOw0KPiANCj4gIHZvaWQgdnRwY2lfcmVhZF9kZXZfY29uZmln KHN0cnVjdCB2aXJ0aW9faHcgKiwgc2l6ZV90LCB2b2lkICosIGludCk7DQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3JpbmcuaA0KPiBiL2RyaXZlcnMvbmV0L3ZpcnRp by92aXJ0aW9fcmluZy5oDQo+IGluZGV4IDBmNjU3NGY2ODQuLjE3YTU2YjBhNzMgMTAwNjQ0DQo+ IC0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fcmluZy5oDQo+ICsrKyBiL2RyaXZlcnMv bmV0L3ZpcnRpby92aXJ0aW9fcmluZy5oDQo+IEBAIC0xMzMsNyArMTMzLDcgQEAgdnJpbmdfc2l6 ZShzdHJ1Y3QgdmlydGlvX2h3ICpodywgdW5zaWduZWQgaW50IG51bSwNCj4gdW5zaWduZWQgbG9u ZyBhbGlnbikNCj4gIHsNCj4gIAlzaXplX3Qgc2l6ZTsNCj4gDQo+IC0JaWYgKHZ0cGNpX3BhY2tl ZF9xdWV1ZShodykpIHsNCj4gKwlpZiAodmlydGlvX3dpdGhfcGFja2VkX3F1ZXVlKGh3KSkgew0K PiAgCQlzaXplID0gbnVtICogc2l6ZW9mKHN0cnVjdCB2cmluZ19wYWNrZWRfZGVzYyk7DQo+ICAJ CXNpemUgKz0gc2l6ZW9mKHN0cnVjdCB2cmluZ19wYWNrZWRfZGVzY19ldmVudCk7DQo+ICAJCXNp emUgPSBSVEVfQUxJR05fQ0VJTChzaXplLCBhbGlnbik7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC92aXJ0aW8vdmlydGlvX3J4dHguYw0KPiBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9f cnh0eC5jDQo+IGluZGV4IDY4NzVjOGZiZWUuLjcyODA4NWU5OWIgMTAwNjQ0DQo+IC0tLSBhL2Ry aXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fcnh0eC5jDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRp by92aXJ0aW9fcnh0eC5jDQo+IEBAIC02ODUsMTQgKzY4NSwxNCBAQCB2aXJ0aW9fZGV2X3J4X3F1 ZXVlX3NldHVwX2ZpbmlzaChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gdWludDE2X3QgcXVl dWVfaWR4KQ0KPiAgCXN0cnVjdCBydGVfbWJ1ZiAqbTsNCj4gIAl1aW50MTZfdCBkZXNjX2lkeDsN Cj4gIAlpbnQgZXJyb3IsIG5idWZzLCBpOw0KPiAtCWJvb2wgaW5fb3JkZXIgPSB2dHBjaV93aXRo X2ZlYXR1cmUoaHcsIFZJUlRJT19GX0lOX09SREVSKTsNCj4gKwlib29sIGluX29yZGVyID0gdmly dGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX0ZfSU5fT1JERVIpOw0KPiANCj4gIAlQTURfSU5J VF9GVU5DX1RSQUNFKCk7DQo+IA0KPiAgCS8qIEFsbG9jYXRlIGJsYW5rIG1idWZzIGZvciB0aGUg ZWFjaCByeCBkZXNjcmlwdG9yICovDQo+ICAJbmJ1ZnMgPSAwOw0KPiANCj4gLQlpZiAoaHctPnVz ZV92ZWNfcnggJiYgIXZ0cGNpX3BhY2tlZF9xdWV1ZShodykpIHsNCj4gKwlpZiAoaHctPnVzZV92 ZWNfcnggJiYgIXZpcnRpb193aXRoX3BhY2tlZF9xdWV1ZShodykpIHsNCj4gIAkJZm9yIChkZXNj X2lkeCA9IDA7IGRlc2NfaWR4IDwgdnEtPnZxX25lbnRyaWVzOw0KPiAgCQkgICAgIGRlc2NfaWR4 KyspIHsNCj4gIAkJCXZxLT52cV9zcGxpdC5yaW5nLmF2YWlsLT5yaW5nW2Rlc2NfaWR4XSA9IGRl c2NfaWR4Ow0KPiBAQCAtNzEwLDEyICs3MTAsMTIgQEAgdmlydGlvX2Rldl9yeF9xdWV1ZV9zZXR1 cF9maW5pc2goc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+IHVpbnQxNl90IHF1ZXVlX2lkeCkN Cj4gIAkJCSZyeHZxLT5mYWtlX21idWY7DQo+ICAJfQ0KPiANCj4gLQlpZiAoaHctPnVzZV92ZWNf cnggJiYgIXZ0cGNpX3BhY2tlZF9xdWV1ZShodykpIHsNCj4gKwlpZiAoaHctPnVzZV92ZWNfcngg JiYgIXZpcnRpb193aXRoX3BhY2tlZF9xdWV1ZShodykpIHsNCj4gIAkJd2hpbGUgKHZxLT52cV9m cmVlX2NudCA+PSBSVEVfVklSVElPX1ZQTURfUlhfUkVBUk1fVEhSRVNIKSB7DQo+ICAJCQl2aXJ0 aW9fcnhxX3JlYXJtX3ZlYyhyeHZxKTsNCj4gIAkJCW5idWZzICs9IFJURV9WSVJUSU9fVlBNRF9S WF9SRUFSTV9USFJFU0g7DQo+ICAJCX0NCj4gLQl9IGVsc2UgaWYgKCF2dHBjaV9wYWNrZWRfcXVl dWUodnEtPmh3KSAmJiBpbl9vcmRlcikgew0KPiArCX0gZWxzZSBpZiAoIXZpcnRpb193aXRoX3Bh Y2tlZF9xdWV1ZSh2cS0+aHcpICYmIGluX29yZGVyKSB7DQo+ICAJCWlmICgoIXZpcnRxdWV1ZV9m dWxsKHZxKSkpIHsNCj4gIAkJCXVpbnQxNl90IGZyZWVfY250ID0gdnEtPnZxX2ZyZWVfY250Ow0K PiAgCQkJc3RydWN0IHJ0ZV9tYnVmICpwa3RzW2ZyZWVfY250XTsNCj4gQEAgLTc0MSw3ICs3NDEs NyBAQCB2aXJ0aW9fZGV2X3J4X3F1ZXVlX3NldHVwX2ZpbmlzaChzdHJ1Y3QgcnRlX2V0aF9kZXYg KmRldiwNCj4gdWludDE2X3QgcXVldWVfaWR4KQ0KPiAgCQkJCWJyZWFrOw0KPiANCj4gIAkJCS8q IEVucXVldWUgYWxsb2NhdGVkIGJ1ZmZlcnMgKi8NCj4gLQkJCWlmICh2dHBjaV9wYWNrZWRfcXVl dWUodnEtPmh3KSkNCj4gKwkJCWlmICh2aXJ0aW9fd2l0aF9wYWNrZWRfcXVldWUodnEtPmh3KSkN Cj4gIAkJCQllcnJvciA9IHZpcnRxdWV1ZV9lbnF1ZXVlX3JlY3ZfcmVmaWxsX3BhY2tlZCh2cSwN Cj4gIAkJCQkJCSZtLCAxKTsNCj4gIAkJCWVsc2UNCj4gQEAgLTc1NCw3ICs3NTQsNyBAQCB2aXJ0 aW9fZGV2X3J4X3F1ZXVlX3NldHVwX2ZpbmlzaChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4g dWludDE2X3QgcXVldWVfaWR4KQ0KPiAgCQkJbmJ1ZnMrKzsNCj4gIAkJfQ0KPiANCj4gLQkJaWYg KCF2dHBjaV9wYWNrZWRfcXVldWUodnEtPmh3KSkNCj4gKwkJaWYgKCF2aXJ0aW9fd2l0aF9wYWNr ZWRfcXVldWUodnEtPmh3KSkNCj4gIAkJCXZxX3VwZGF0ZV9hdmFpbF9pZHgodnEpOw0KPiAgCX0N Cj4gDQo+IEBAIC04MjksOCArODI5LDggQEAgdmlydGlvX2Rldl90eF9xdWV1ZV9zZXR1cF9maW5p c2goc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+IA0KPiAgCVBNRF9JTklUX0ZVTkNfVFJBQ0Uo KTsNCj4gDQo+IC0JaWYgKCF2dHBjaV9wYWNrZWRfcXVldWUoaHcpKSB7DQo+IC0JCWlmICh2dHBj aV93aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19GX0lOX09SREVSKSkNCj4gKwlpZiAoIXZpcnRpb193 aXRoX3BhY2tlZF9xdWV1ZShodykpIHsNCj4gKwkJaWYgKHZpcnRpb193aXRoX2ZlYXR1cmUoaHcs IFZJUlRJT19GX0lOX09SREVSKSkNCj4gIAkJCXZxLT52cV9zcGxpdC5yaW5nLmRlc2NbdnEtPnZx X25lbnRyaWVzIC0gMV0ubmV4dCA9IDA7DQo+ICAJfQ0KPiANCj4gQEAgLTg0Nyw3ICs4NDcsNyBA QCB2aXJ0aW9fZGlzY2FyZF9yeGJ1ZihzdHJ1Y3QgdmlydHF1ZXVlICp2cSwgc3RydWN0IHJ0ZV9t YnVmDQo+ICptKQ0KPiAgCSAqIFJlcXVldWUgdGhlIGRpc2NhcmRlZCBtYnVmLiBUaGlzIHNob3Vs ZCBhbHdheXMgYmUNCj4gIAkgKiBzdWNjZXNzZnVsIHNpbmNlIGl0IHdhcyBqdXN0IGRlcXVldWVk Lg0KPiAgCSAqLw0KPiAtCWlmICh2dHBjaV9wYWNrZWRfcXVldWUodnEtPmh3KSkNCj4gKwlpZiAo dmlydGlvX3dpdGhfcGFja2VkX3F1ZXVlKHZxLT5odykpDQo+ICAJCWVycm9yID0gdmlydHF1ZXVl X2VucXVldWVfcmVjdl9yZWZpbGxfcGFja2VkKHZxLCAmbSwgMSk7DQo+ICAJZWxzZQ0KPiAgCQll cnJvciA9IHZpcnRxdWV1ZV9lbnF1ZXVlX3JlY3ZfcmVmaWxsKHZxLCAmbSwgMSk7DQo+IEBAIC0x MjA5LDcgKzEyMDksNyBAQCB2aXJ0aW9fcmVjdl9wa3RzX2lub3JkZXIodm9pZCAqcnhfcXVldWUs DQo+ICAJCQkgKChjaGFyICopcnhtLT5idWZfYWRkciArIFJURV9QS1RNQlVGX0hFQURST09NDQo+ ICAJCQkgLSBoZHJfc2l6ZSk7DQo+IA0KPiAtCQlpZiAodnRwY2lfd2l0aF9mZWF0dXJlKGh3LCBW SVJUSU9fTkVUX0ZfTVJHX1JYQlVGKSkgew0KPiArCQlpZiAodmlydGlvX3dpdGhfZmVhdHVyZSho dywgVklSVElPX05FVF9GX01SR19SWEJVRikpIHsNCj4gIAkJCXNlZ19udW0gPSBoZWFkZXItPm51 bV9idWZmZXJzOw0KPiAgCQkJaWYgKHNlZ19udW0gPT0gMCkNCj4gIAkJCQlzZWdfbnVtID0gMTsN Cj4gQEAgLTE3MzUsNyArMTczNSw3IEBAIHZpcnRpb194bWl0X3BrdHNfcGFja2VkKHZvaWQgKnR4 X3F1ZXVlLCBzdHJ1Y3QgcnRlX21idWYNCj4gKip0eF9wa3RzLA0KPiAgCXN0cnVjdCB2aXJ0aW9f aHcgKmh3ID0gdnEtPmh3Ow0KPiAgCXVpbnQxNl90IGhkcl9zaXplID0gaHctPnZ0bmV0X2hkcl9z aXplOw0KPiAgCXVpbnQxNl90IG5iX3R4ID0gMDsNCj4gLQlib29sIGluX29yZGVyID0gdnRwY2lf d2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fRl9JTl9PUkRFUik7DQo+ICsJYm9vbCBpbl9vcmRlciA9 IHZpcnRpb193aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19GX0lOX09SREVSKTsNCj4gDQo+ICAJaWYg KHVubGlrZWx5KGh3LT5zdGFydGVkID09IDAgJiYgdHhfcGt0cyAhPSBody0+aW5qZWN0X3BrdHMp KQ0KPiAgCQlyZXR1cm4gbmJfdHg7DQo+IEBAIC0xNzU0LDggKzE3NTQsOCBAQCB2aXJ0aW9feG1p dF9wa3RzX3BhY2tlZCh2b2lkICp0eF9xdWV1ZSwgc3RydWN0IHJ0ZV9tYnVmDQo+ICoqdHhfcGt0 cywNCj4gIAkJaW50IGNhbl9wdXNoID0gMCwgdXNlX2luZGlyZWN0ID0gMCwgc2xvdHMsIG5lZWQ7 DQo+IA0KPiAgCQkvKiBvcHRpbWl6ZSByaW5nIHVzYWdlICovDQo+IC0JCWlmICgodnRwY2lfd2l0 aF9mZWF0dXJlKGh3LCBWSVJUSU9fRl9BTllfTEFZT1VUKSB8fA0KPiAtCQkgICAgICB2dHBjaV93 aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19GX1ZFUlNJT05fMSkpICYmDQo+ICsJCWlmICgodmlydGlv X3dpdGhfZmVhdHVyZShodywgVklSVElPX0ZfQU5ZX0xBWU9VVCkgfHwNCj4gKwkJICAgICAgdmly dGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX0ZfVkVSU0lPTl8xKSkgJiYNCj4gIAkJICAgIHJ0 ZV9tYnVmX3JlZmNudF9yZWFkKHR4bSkgPT0gMSAmJg0KPiAgCQkgICAgUlRFX01CVUZfRElSRUNU KHR4bSkgJiYNCj4gIAkJICAgIHR4bS0+bmJfc2VncyA9PSAxICYmDQo+IEBAIC0xNzYzLDcgKzE3 NjMsNyBAQCB2aXJ0aW9feG1pdF9wa3RzX3BhY2tlZCh2b2lkICp0eF9xdWV1ZSwgc3RydWN0IHJ0 ZV9tYnVmDQo+ICoqdHhfcGt0cywNCj4gIAkJICAgIHJ0ZV9pc19hbGlnbmVkKHJ0ZV9wa3RtYnVm X210b2QodHhtLCBjaGFyICopLA0KPiAgCQkJICAgX19hbGlnbm9mX18oc3RydWN0IHZpcnRpb19u ZXRfaGRyX21yZ19yeGJ1ZikpKQ0KPiAgCQkJY2FuX3B1c2ggPSAxOw0KPiAtCQllbHNlIGlmICh2 dHBjaV93aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19SSU5HX0ZfSU5ESVJFQ1RfREVTQykgJiYNCj4g KwkJZWxzZSBpZiAodmlydGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX1JJTkdfRl9JTkRJUkVD VF9ERVNDKSAmJg0KPiAgCQkJIHR4bS0+bmJfc2VncyA8IFZJUlRJT19NQVhfVFhfSU5ESVJFQ1Qp DQo+ICAJCQl1c2VfaW5kaXJlY3QgPSAxOw0KPiAgCQkvKiBIb3cgbWFueSBtYWluIHJpbmcgZW50 cmllcyBhcmUgbmVlZGVkIHRvIHRoaXMgVHg/DQo+IEBAIC0xODM1LDggKzE4MzUsOCBAQCB2aXJ0 aW9feG1pdF9wa3RzKHZvaWQgKnR4X3F1ZXVlLCBzdHJ1Y3QgcnRlX21idWYNCj4gKip0eF9wa3Rz LCB1aW50MTZfdCBuYl9wa3RzKQ0KPiAgCQlpbnQgY2FuX3B1c2ggPSAwLCB1c2VfaW5kaXJlY3Qg PSAwLCBzbG90cywgbmVlZDsNCj4gDQo+ICAJCS8qIG9wdGltaXplIHJpbmcgdXNhZ2UgKi8NCj4g LQkJaWYgKCh2dHBjaV93aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19GX0FOWV9MQVlPVVQpIHx8DQo+ IC0JCSAgICAgIHZ0cGNpX3dpdGhfZmVhdHVyZShodywgVklSVElPX0ZfVkVSU0lPTl8xKSkgJiYN Cj4gKwkJaWYgKCh2aXJ0aW9fd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fRl9BTllfTEFZT1VUKSB8 fA0KPiArCQkgICAgICB2aXJ0aW9fd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fRl9WRVJTSU9OXzEp KSAmJg0KPiAgCQkgICAgcnRlX21idWZfcmVmY250X3JlYWQodHhtKSA9PSAxICYmDQo+ICAJCSAg ICBSVEVfTUJVRl9ESVJFQ1QodHhtKSAmJg0KPiAgCQkgICAgdHhtLT5uYl9zZWdzID09IDEgJiYN Cj4gQEAgLTE4NDQsNyArMTg0NCw3IEBAIHZpcnRpb194bWl0X3BrdHModm9pZCAqdHhfcXVldWUs IHN0cnVjdCBydGVfbWJ1Zg0KPiAqKnR4X3BrdHMsIHVpbnQxNl90IG5iX3BrdHMpDQo+ICAJCSAg ICBydGVfaXNfYWxpZ25lZChydGVfcGt0bWJ1Zl9tdG9kKHR4bSwgY2hhciAqKSwNCj4gIAkJCQkg ICBfX2FsaWdub2ZfXyhzdHJ1Y3QgdmlydGlvX25ldF9oZHJfbXJnX3J4YnVmKSkpDQo+ICAJCQlj YW5fcHVzaCA9IDE7DQo+IC0JCWVsc2UgaWYgKHZ0cGNpX3dpdGhfZmVhdHVyZShodywgVklSVElP X1JJTkdfRl9JTkRJUkVDVF9ERVNDKSAmJg0KPiArCQllbHNlIGlmICh2aXJ0aW9fd2l0aF9mZWF0 dXJlKGh3LCBWSVJUSU9fUklOR19GX0lORElSRUNUX0RFU0MpICYmDQo+ICAJCQkgdHhtLT5uYl9z ZWdzIDwgVklSVElPX01BWF9UWF9JTkRJUkVDVCkNCj4gIAkJCXVzZV9pbmRpcmVjdCA9IDE7DQo+ IA0KPiBAQCAtMTkzNyw4ICsxOTM3LDggQEAgdmlydGlvX3htaXRfcGt0c19pbm9yZGVyKHZvaWQg KnR4X3F1ZXVlLA0KPiAgCQlpbnQgc2xvdHM7DQo+IA0KPiAgCQkvKiBvcHRpbWl6ZSByaW5nIHVz YWdlICovDQo+IC0JCWlmICgodnRwY2lfd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fRl9BTllfTEFZ T1VUKSB8fA0KPiAtCQkgICAgIHZ0cGNpX3dpdGhfZmVhdHVyZShodywgVklSVElPX0ZfVkVSU0lP Tl8xKSkgJiYNCj4gKwkJaWYgKCh2aXJ0aW9fd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fRl9BTllf TEFZT1VUKSB8fA0KPiArCQkgICAgIHZpcnRpb193aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19GX1ZF UlNJT05fMSkpICYmDQo+ICAJCSAgICAgcnRlX21idWZfcmVmY250X3JlYWQodHhtKSA9PSAxICYm DQo+ICAJCSAgICAgUlRFX01CVUZfRElSRUNUKHR4bSkgJiYNCj4gIAkJICAgICB0eG0tPm5iX3Nl Z3MgPT0gMSAmJg0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19yeHR4 X3BhY2tlZC5oDQo+IGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19yeHR4X3BhY2tlZC5oDQo+ IGluZGV4IGMwZmFkNDFjM2QuLjhkOTljYWVlYWQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbmV0 L3ZpcnRpby92aXJ0aW9fcnh0eF9wYWNrZWQuaA0KPiArKysgYi9kcml2ZXJzL25ldC92aXJ0aW8v dmlydGlvX3J4dHhfcGFja2VkLmgNCj4gQEAgLTExMSwxMiArMTExLDEyIEBAIHZpcnRxdWV1ZV9l bnF1ZXVlX3NpbmdsZV9wYWNrZWRfdmVjKHN0cnVjdCB2aXJ0bmV0X3R4DQo+ICp0eHZxLA0KPiAg CWludDE2X3QgbmVlZDsNCj4gDQo+ICAJLyogb3B0aW1pemUgcmluZyB1c2FnZSAqLw0KPiAtCWlm ICgodnRwY2lfd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fRl9BTllfTEFZT1VUKSB8fA0KPiAtCSAg ICAgdnRwY2lfd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fRl9WRVJTSU9OXzEpKSAmJg0KPiArCWlm ICgodmlydGlvX3dpdGhfZmVhdHVyZShodywgVklSVElPX0ZfQU5ZX0xBWU9VVCkgfHwNCj4gKwkg ICAgIHZpcnRpb193aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19GX1ZFUlNJT05fMSkpICYmDQo+ICAJ ICAgICBydGVfbWJ1Zl9yZWZjbnRfcmVhZCh0eG0pID09IDEgJiYgUlRFX01CVUZfRElSRUNUKHR4 bSkgJiYNCj4gIAkgICAgIHR4bS0+bmJfc2VncyA9PSAxICYmIHJ0ZV9wa3RtYnVmX2hlYWRyb29t KHR4bSkgPj0gaGRyX3NpemUpDQo+ICAJCWNhbl9wdXNoID0gMTsNCj4gLQllbHNlIGlmICh2dHBj aV93aXRoX2ZlYXR1cmUoaHcsIFZJUlRJT19SSU5HX0ZfSU5ESVJFQ1RfREVTQykgJiYNCj4gKwll bHNlIGlmICh2aXJ0aW9fd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fUklOR19GX0lORElSRUNUX0RF U0MpICYmDQo+ICAJCSB0eG0tPm5iX3NlZ3MgPCBWSVJUSU9fTUFYX1RYX0lORElSRUNUKQ0KPiAg CQl1c2VfaW5kaXJlY3QgPSAxOw0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3ZpcnRp by92aXJ0aW9fdXNlci92aG9zdF9rZXJuZWxfdGFwLmMNCj4gYi9kcml2ZXJzL25ldC92aXJ0aW8v dmlydGlvX3VzZXIvdmhvc3Rfa2VybmVsX3RhcC5jDQo+IGluZGV4IDc5Yjg0NDZmOGUuLmVhZGU3 MDJjNWMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fdXNlci92aG9z dF9rZXJuZWxfdGFwLmMNCj4gKysrIGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb191c2VyL3Zo b3N0X2tlcm5lbF90YXAuYw0KPiBAQCAtMTYsNyArMTYsNyBAQA0KPiANCj4gICNpbmNsdWRlICJ2 aG9zdF9rZXJuZWxfdGFwLmgiDQo+ICAjaW5jbHVkZSAiLi4vdmlydGlvX2xvZ3MuaCINCj4gLSNp bmNsdWRlICIuLi92aXJ0aW9fcGNpLmgiDQo+ICsjaW5jbHVkZSAiLi4vdmlydGlvLmgiDQo+IA0K PiAgaW50DQo+ICB2aG9zdF9rZXJuZWxfdGFwX3NldF9vZmZsb2FkKGludCBmZCwgdWludDY0X3Qg ZmVhdHVyZXMpDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXJf ZXRoZGV2LmMNCj4gYi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX3VzZXJfZXRoZGV2LmMNCj4g aW5kZXggNjU5N2MxNjUzOS4uOGU2MDkzMzNjNiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQv dmlydGlvL3ZpcnRpb191c2VyX2V0aGRldi5jDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpby92 aXJ0aW9fdXNlcl9ldGhkZXYuYw0KPiBAQCAtMTIyLDcgKzEyMiw3IEBAIHZpcnRpb191c2VyX3Nl cnZlcl9yZWNvbm5lY3Qoc3RydWN0IHZpcnRpb191c2VyX2RldiAqZGV2KQ0KPiAgCWRldi0+ZmVh dHVyZXMgJj0gZGV2LT5kZXZpY2VfZmVhdHVyZXM7DQo+IA0KPiAgCS8qIEZvciBwYWNrZWQgcmlu ZywgcmVzZXR0aW5nIHF1ZXVlcyBpcyByZXF1aXJlZCBpbiByZWNvbm5lY3Rpb24uICovDQo+IC0J aWYgKHZ0cGNpX3BhY2tlZF9xdWV1ZShodykgJiYNCj4gKwlpZiAodmlydGlvX3dpdGhfcGFja2Vk X3F1ZXVlKGh3KSAmJg0KPiAgCSAgIChvbGRfc3RhdHVzICYgVklSVElPX0NPTkZJR19TVEFUVVNf RFJJVkVSX09LKSkgew0KPiAgCQlQTURfSU5JVF9MT0coTk9USUNFLCAiUGFja2V0cyBvbiB0aGUg Zmx5IHdpbGwgYmUgZHJvcHBlZCINCj4gIAkJCQkiIHdoZW4gcGFja2VkIHJpbmcgcmVjb25uZWN0 aW5nLiIpOw0KPiBAQCAtNDIzLDcgKzQyMyw3IEBAIHZpcnRpb191c2VyX3NldHVwX3F1ZXVlKHN0 cnVjdCB2aXJ0aW9faHcgKmh3LCBzdHJ1Y3QNCj4gdmlydHF1ZXVlICp2cSkNCj4gIHsNCj4gIAlz dHJ1Y3QgdmlydGlvX3VzZXJfZGV2ICpkZXYgPSB2aXJ0aW9fdXNlcl9nZXRfZGV2KGh3KTsNCj4g DQo+IC0JaWYgKHZ0cGNpX3BhY2tlZF9xdWV1ZShodykpDQo+ICsJaWYgKHZpcnRpb193aXRoX3Bh Y2tlZF9xdWV1ZShodykpDQo+ICAJCXZpcnRpb191c2VyX3NldHVwX3F1ZXVlX3BhY2tlZCh2cSwg ZGV2KTsNCj4gIAllbHNlDQo+ICAJCXZpcnRpb191c2VyX3NldHVwX3F1ZXVlX3NwbGl0KHZxLCBk ZXYpOw0KPiBAQCAtNDU2LDcgKzQ1Niw3IEBAIHZpcnRpb191c2VyX25vdGlmeV9xdWV1ZShzdHJ1 Y3QgdmlydGlvX2h3ICpodywgc3RydWN0DQo+IHZpcnRxdWV1ZSAqdnEpDQo+ICAJc3RydWN0IHZp cnRpb191c2VyX2RldiAqZGV2ID0gdmlydGlvX3VzZXJfZ2V0X2Rldihodyk7DQo+IA0KPiAgCWlm IChody0+Y3ZxICYmIChody0+Y3ZxLT52cSA9PSB2cSkpIHsNCj4gLQkJaWYgKHZ0cGNpX3BhY2tl ZF9xdWV1ZSh2cS0+aHcpKQ0KPiArCQlpZiAodmlydGlvX3dpdGhfcGFja2VkX3F1ZXVlKHZxLT5o dykpDQo+ICAJCQl2aXJ0aW9fdXNlcl9oYW5kbGVfY3FfcGFja2VkKGRldiwgdnEtPnZxX3F1ZXVl X2luZGV4KTsNCj4gIAkJZWxzZQ0KPiAgCQkJdmlydGlvX3VzZXJfaGFuZGxlX2NxKGRldiwgdnEt PnZxX3F1ZXVlX2luZGV4KTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0 cXVldWUuYyBiL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0cXVldWUuYw0KPiBpbmRleCAyNzAyZTEy MGVlLi41OWEyY2I2NTk5IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydHF1 ZXVlLmMNCj4gKysrIGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRxdWV1ZS5jDQo+IEBAIC0zMiw3 ICszMiw3IEBAIHZpcnRxdWV1ZV9kZXRhY2hfdW51c2VkKHN0cnVjdCB2aXJ0cXVldWUgKnZxKQ0K PiAgCWVuZCA9ICh2cS0+dnFfYXZhaWxfaWR4ICsgdnEtPnZxX2ZyZWVfY250KSAmICh2cS0+dnFf bmVudHJpZXMgLSAxKTsNCj4gDQo+ICAJZm9yIChpZHggPSAwOyBpZHggPCB2cS0+dnFfbmVudHJp ZXM7IGlkeCsrKSB7DQo+IC0JCWlmIChody0+dXNlX3ZlY19yeCAmJiAhdnRwY2lfcGFja2VkX3F1 ZXVlKGh3KSAmJg0KPiArCQlpZiAoaHctPnVzZV92ZWNfcnggJiYgIXZpcnRpb193aXRoX3BhY2tl ZF9xdWV1ZShodykgJiYNCj4gIAkJICAgIHR5cGUgPT0gVlRORVRfUlEpIHsNCj4gIAkJCWlmIChz dGFydCA8PSBlbmQgJiYgaWR4ID49IHN0YXJ0ICYmIGlkeCA8IGVuZCkNCj4gIAkJCQljb250aW51 ZTsNCj4gQEAgLTEzNyw3ICsxMzcsNyBAQCB2aXJ0cXVldWVfcnh2cV9mbHVzaChzdHJ1Y3Qgdmly dHF1ZXVlICp2cSkNCj4gIHsNCj4gIAlzdHJ1Y3QgdmlydGlvX2h3ICpodyA9IHZxLT5odzsNCj4g DQo+IC0JaWYgKHZ0cGNpX3BhY2tlZF9xdWV1ZShodykpDQo+ICsJaWYgKHZpcnRpb193aXRoX3Bh Y2tlZF9xdWV1ZShodykpDQo+ICAJCXZpcnRxdWV1ZV9yeHZxX2ZsdXNoX3BhY2tlZCh2cSk7DQo+ ICAJZWxzZQ0KPiAgCQl2aXJ0cXVldWVfcnh2cV9mbHVzaF9zcGxpdCh2cSk7DQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC92aXJ0aW8vdmlydHF1ZXVlLmggYi9kcml2ZXJzL25ldC92aXJ0aW8v dmlydHF1ZXVlLmgNCj4gaW5kZXggNjI5M2NkMjYwNC4uZjQxOWMwYWE5OSAxMDA2NDQNCj4gLS0t IGEvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRxdWV1ZS5oDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3Zp cnRpby92aXJ0cXVldWUuaA0KPiBAQCAtMTIsNyArMTIsNyBAQA0KPiAgI2luY2x1ZGUgPHJ0ZV9t ZW1wb29sLmg+DQo+ICAjaW5jbHVkZSA8cnRlX25ldC5oPg0KPiANCj4gLSNpbmNsdWRlICJ2aXJ0 aW9fcGNpLmgiDQo+ICsjaW5jbHVkZSAidmlydGlvLmgiDQo+ICAjaW5jbHVkZSAidmlydGlvX3Jp bmcuaCINCj4gICNpbmNsdWRlICJ2aXJ0aW9fbG9ncy5oIg0KPiAgI2luY2x1ZGUgInZpcnRpb19y eHR4LmgiDQo+IEBAIC0zODUsNyArMzg1LDcgQEAgdmlydHF1ZXVlX2Rpc2FibGVfaW50cl9zcGxp dChzdHJ1Y3QgdmlydHF1ZXVlICp2cSkNCj4gIHN0YXRpYyBpbmxpbmUgdm9pZA0KPiAgdmlydHF1 ZXVlX2Rpc2FibGVfaW50cihzdHJ1Y3QgdmlydHF1ZXVlICp2cSkNCj4gIHsNCj4gLQlpZiAodnRw Y2lfcGFja2VkX3F1ZXVlKHZxLT5odykpDQo+ICsJaWYgKHZpcnRpb193aXRoX3BhY2tlZF9xdWV1 ZSh2cS0+aHcpKQ0KPiAgCQl2aXJ0cXVldWVfZGlzYWJsZV9pbnRyX3BhY2tlZCh2cSk7DQo+ICAJ ZWxzZQ0KPiAgCQl2aXJ0cXVldWVfZGlzYWJsZV9pbnRyX3NwbGl0KHZxKTsNCj4gQEAgLTQxOSw3 ICs0MTksNyBAQCB2aXJ0cXVldWVfZW5hYmxlX2ludHJfc3BsaXQoc3RydWN0IHZpcnRxdWV1ZSAq dnEpDQo+ICBzdGF0aWMgaW5saW5lIHZvaWQNCj4gIHZpcnRxdWV1ZV9lbmFibGVfaW50cihzdHJ1 Y3QgdmlydHF1ZXVlICp2cSkNCj4gIHsNCj4gLQlpZiAodnRwY2lfcGFja2VkX3F1ZXVlKHZxLT5o dykpDQo+ICsJaWYgKHZpcnRpb193aXRoX3BhY2tlZF9xdWV1ZSh2cS0+aHcpKQ0KPiAgCQl2aXJ0 cXVldWVfZW5hYmxlX2ludHJfcGFja2VkKHZxKTsNCj4gIAllbHNlDQo+ICAJCXZpcnRxdWV1ZV9l bmFibGVfaW50cl9zcGxpdCh2cSk7DQo+IEBAIC01NzIsNyArNTcyLDcgQEAgdmlydHF1ZXVlX25v dGlmeShzdHJ1Y3QgdmlydHF1ZXVlICp2cSkNCj4gIAl1c2VkX2lkeCA9IF9fYXRvbWljX2xvYWRf bigmKHZxKS0+dnFfc3BsaXQucmluZy51c2VkLT5pZHgsIFwNCj4gIAkJCQkgICBfX0FUT01JQ19S RUxBWEVEKTsgXA0KPiAgCW51c2VkID0gKHVpbnQxNl90KSh1c2VkX2lkeCAtICh2cSktPnZxX3Vz ZWRfY29uc19pZHgpOyBcDQo+IC0JaWYgKHZ0cGNpX3BhY2tlZF9xdWV1ZSgodnEpLT5odykpIHsg XA0KPiArCWlmICh2aXJ0aW9fd2l0aF9wYWNrZWRfcXVldWUoKHZxKS0+aHcpKSB7IFwNCj4gIAkJ UE1EX0lOSVRfTE9HKERFQlVHLCBcDQo+ICAJCSJWUTogLSBzaXplPSVkOyBmcmVlPSVkOyB1c2Vk X2NvbnNfaWR4PSVkOyBhdmFpbF9pZHg9JWQ7IiBcDQo+ICAJCSIgY2FjaGVkX2ZsYWdzPTB4JXg7 IHVzZWRfd3JhcF9jb3VudGVyPSVkIiwgXA0KPiAtLQ0KPiAyLjI5LjINCg0KUmV2aWV3ZWQtYnk6 IENoZW5ibyBYaWEgPGNoZW5iby54aWFAaW50ZWwuY29tPg0K