Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp4248424pxf; Tue, 6 Apr 2021 11:23:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxa47fiWBGOG1Vm1e/D4c9GzAO8gYntLK/dYhmCrsLP544x7TjbGKEbgTqfDgbNzkyg36Xk X-Received: by 2002:a02:8801:: with SMTP id r1mr30627474jai.51.1617733392546; Tue, 06 Apr 2021 11:23:12 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1617733392; cv=pass; d=google.com; s=arc-20160816; b=w83hG7BPNI3eRFVkjaxXmsZDV8izctz6ms2KdNx5hJSaF9kfNp9bqgJbzuz97Dux2F zCwZCgIcllSXkyDIxHIJBGyEPO6jsEUZLKHzpTitMYNlrzwdPDDp+SNAXIVoLssVKtVc gNhnm7a1L/z5y8Fhoer3g+IPxU77fuUS8wnQptow+ZtbH1NyLUcs7brbJROKy42TgYBE sC0COooXHkYjODnFiOrfnoiCPUXoRQ4bIf6sgaO2r4AKuQ+dOHas5SyrDPQYdSIU7ggU ytNMy93JZn653pm1xvEhfR+0zvIEDHBdYUHsD/SzWYDF67Vtyf2OqP3gWyLANZvSwEI+ uCNA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=O+5WdO9c5Vg4VitxJyk8KAe/aUblEC4loNoM9G0E6FA=; b=aSNfWhIqMYFSV4piJVthAVaPVq69VQGwckXC0NHMkC9Tkp7QakV9BdX7Xc/PGiPLor K2/j6W9wnNGfXrVkU/gzduq/3IbRwhBmhJpLU0HOs/rcbpGBzAWtZ/lHTCmxruEuFoLH L2opueuxDSMHlCZMmpIvdej1yGS4knN2UMZaMeS16J8qzbmc/xrQgtNLFsIdjTA6dRvd oH1EAKYeV0VCzXw37RnJMLai/eLr7il/dGN3j4JjPoIels+8LJogmsTAMcSFDtW8YEke s8uAs9MJRsUD9iVJSKOT/oAE8z+N2zYgAvek/iMDzWjDLtUFA+0DLaVCql62HEBcXYLO exmA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=XksPoEhb; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k4si6021134ilu.71.2021.04.06.11.22.59; Tue, 06 Apr 2021 11:23:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=XksPoEhb; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236475AbhDFJOw (ORCPT + 99 others); Tue, 6 Apr 2021 05:14:52 -0400 Received: from mail-eopbgr40063.outbound.protection.outlook.com ([40.107.4.63]:13637 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S235194AbhDFJOv (ORCPT ); Tue, 6 Apr 2021 05:14:51 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Dd4JZokOlSsURtotCUIftJQxSpXiUg2OuLtCgYVqZ2aQredvR7M1nfve8jX+LNchp6PItJan/7pkXqZ1ZM25ijsVJUfLHa/Y+YL8mwZzHxKAdU9hKKmzoSHqhveLnZyablndoGx9IAz9hqo4Z/5PHmj7Fwi++CSI5YYC/xYK9i4R1/bA2gupiR89x7/hp6VW8C+j9X/CN0Ckk1YkCI4omj0CxkojLbtavHvXB85SkusgUk7HyUKrLbQT1e7cBLGFq/oNiDye2NP2UwBdugK/k4sZaCGfQz13CCOwxrexRfSUaM8vsnz62XycLcjTAlRJ/QkMpffWoTL7imoFSAwCow== 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=O+5WdO9c5Vg4VitxJyk8KAe/aUblEC4loNoM9G0E6FA=; b=nZ9+PsIAiek8O4D2lGjb596Gs65SO8FUZ8NE7I/cg9MpAdTxSdJIF5gcDsQ2xc0x48xUMBBNd3kegJPB1lXl0V7l7DCMXOUEt58v+3oPapAvQuHpSw8Kc48FRShexlDkw9nwDjbLNb0T4bXCOLeKqcdSR6F8Jc0whvAjrrKsTFuXUWEQWbEGd4+SARH4SYg9eAk9w5cmRNT3vDQj8HQvYmMkR3FeyVhcsZwzS48XWGXPxW9ebJpJUf5v+Zb2mIWzFgpIsPzczssync3Dq57RACaP4eNV2cPQyH/KC1dL1DhjRVBUkDqgVs3io0NxznUE9IreUrLzPMOTOZmSWb2VRA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=O+5WdO9c5Vg4VitxJyk8KAe/aUblEC4loNoM9G0E6FA=; b=XksPoEhbGZaioeRDwvm8H07A8z9g5aBzwrn87SD+zP+mQg9yuW/mducKEDuOjvTpP6xrJe4pqf/zjo7lRgti2aq/7kcbx/6BcqWN+DuoMuJ5nBqX86onNCiL7j5RqtJ9lKbzEmpdCmQLUfo/9aaY8a8UwGIDabiQ0qsCewXqovI= Received: from HE1PR0402MB3371.eurprd04.prod.outlook.com (2603:10a6:7:85::27) by HE1PR0401MB2300.eurprd04.prod.outlook.com (2603:10a6:3:29::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.28; Tue, 6 Apr 2021 09:14:37 +0000 Received: from HE1PR0402MB3371.eurprd04.prod.outlook.com ([fe80::5df8:1a69:47c3:44fc]) by HE1PR0402MB3371.eurprd04.prod.outlook.com ([fe80::5df8:1a69:47c3:44fc%3]) with mapi id 15.20.3999.032; Tue, 6 Apr 2021 09:14:36 +0000 From: "Z.q. Hou" To: "linux-pci@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "lorenzo.pieralisi@arm.com" , "robh@kernel.org" , "bhelgaas@google.com" CC: Kishon Vijay Abraham I , Jingoo Han , Richard Zhu , Lucas Stach , Murali Karicheri , "M.h. Lian" , Mingkai Hu , Roy Zang , Yue Wang , Jonathan Chocron , Thomas Petazzoni , Jesper Nilsson , Gustavo Pimentel , Xiaowei Song , Binghui Wang , Stanimir Varbanov , Pratyush Anand , Kunihiko Hayashi , Jason Yan , Thierry Reding Subject: RE: [PATCH] PCI: dwc: Change the inheritance between the abstracted structures Thread-Topic: [PATCH] PCI: dwc: Change the inheritance between the abstracted structures Thread-Index: AQHW9iGVq/tDrPz9oUWaAcv7P5JmOKqnnVnQ Date: Tue, 6 Apr 2021 09:14:36 +0000 Message-ID: References: <20210129094003.18102-1-Zhiqiang.Hou@nxp.com> In-Reply-To: <20210129094003.18102-1-Zhiqiang.Hou@nxp.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=nxp.com; x-originating-ip: [119.31.174.73] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 67065f4f-7f71-4d45-172a-08d8f8dc668d x-ms-traffictypediagnostic: HE1PR0401MB2300: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: VZ7aZwh7Nr+kf10SINA7y0iMRbhX+rFW0TMA4M46twLavZL4vm7eBF917CMj3ZSx4EVLWyy7mPXUtXHVLJcPHhdD7uPEEat3PhZ4V820ToCdjaS+NPbVTtaV6OL2BZ08aQp19yTHGa8VKVDRtM+2BlSN29E4ftkhqBQJOB6JI7FqzzlqGBnhjap89jbgJ3wJs2wmsMWumt6S7Ph5tWiyBrvqits2hLIL2JJnAyzzQN4bsnlrhUkEeuYI3Nthd9E4882QEujEZNQpDnyIMp/YKNuxH18IqwZ/0uJ2l1EbIeX1VAu+ySIDbCxpCpdX5cPSMRsOtEHl5HDGwy4P+gFn9w6QdE0OAH6M0j25jXm49KTtsbkMNmDotiJAyGe6E8+02p5a+PGdfcxWH3JDpaZg/240ygXzkzqBI+PrPAEu8FjjGHP7pwTvKbSx6sPH2R6HMFTmwfd66ftscxXe8nvisMekZo4mI9R1PzQvaF6bqY54lsAFrdWjwLsE3C953jHIcq5MCGIGiMXlR6W34gMCfE+AVgyl9e+FSmrEc4Bx76dM8NA2TNigkzBX9e/Ts6fv6mBubWl6P948KNK2jQ29heigxOJkHgUuOTm69oaYW6hucQBbs3yNUAAuSn2BjSIHItp8d7+KUprMXawc9pG390r3yACgFo1DOgKMbL+L0sg/wYHPe+ASjxhgkgBuPhRu x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3371.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(39860400002)(366004)(396003)(136003)(346002)(376002)(186003)(8936002)(66446008)(55016002)(64756008)(26005)(5660300002)(66946007)(76116006)(8676002)(2906002)(66476007)(478600001)(4326008)(6506007)(33656002)(83380400001)(53546011)(9686003)(30864003)(54906003)(7696005)(71200400001)(86362001)(52536014)(316002)(38100700001)(110136005)(66556008)(7416002)(218113003)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?gb2312?B?ejBzSThzVVc0U3dsNGgzYnRrRkJlZitPZDZOMmdIRmRTUCtlSnNIRjJEaUxv?= =?gb2312?B?UzMwZDBGTzV4YjdxUkVKNFlNekh0Z09id2UzbWJ2VnBvMEpRMGNYOEY2YTBt?= =?gb2312?B?SGtGVXV6UEh4aU9uVXpYWTN1Q00yK2x0TU9Qc3RWRnVoQ2JzQ0N2Y3dZZEpv?= =?gb2312?B?b2xDOElxT0VMQ3JDbEh6eGlvZlh0MnA5TlJrZ1piR0RVY2ZLSk43UGRqMmhC?= =?gb2312?B?QnBEU2hpc21UTEE5NXBzQzU3OEpsWUF4RHdiN0JEVkQzb1ZmQkRHczc0aUFj?= =?gb2312?B?aGJ6UUNiZGtUK0Y2dmtSbUlIU2tmWlpwaDFqMkZISVVhRGM5TFFMejgwMFVK?= =?gb2312?B?RU1JdUNoRWQxYXgxYlZxU1duTEl6QmdmeGVNenBXZGp5a3lQUXVISjMyRldT?= =?gb2312?B?N2dWTlp6STY2c2U0YVZZeG53U1F5Vlh0Q2x4MXNuQU5GZEZ4bFN0d1YzN25Q?= =?gb2312?B?aW82MzBJT21FZ3I0a1AxemRFOHZSR0FMRnNPWk1WSDJKTjJ4Q3ZSVXcyb0Zs?= =?gb2312?B?WkJFVTg5YzdFSmJkNEZNVFROaml4cHRWLzcwV2M5TU04bm5LT1oxelZWTGxY?= =?gb2312?B?NythSUdwQ1ZWV0R5WXNWbGxnQldwSnFhNjY1b0NaWVRKRDBvakxpeUpYMkVK?= =?gb2312?B?SGx5ZVN6eUtkcEsyaXhYK2tmK1hGYTBJSyt4TmdBTTQ0WHNuWnlVZlZEWXRB?= =?gb2312?B?cDlieFplSGd3QXo4S2xBZWluYWZyM3NFUHB5OFlUVTZWNkZ4V1o2NVo0RlZC?= =?gb2312?B?OFhsblVZc3lnbGpDZkZyYTVlZVFUOE0yUnZpYlI5U2twOW9lKzlwRDNZVmJM?= =?gb2312?B?MEh0bzgrbWwvc2Z4MVY0b2JuWFJaeXVNTVpJc3pIMFVJRWNpTFJOZlNBWVha?= =?gb2312?B?ZmFoTWVKaW91dVcwTlN1L2lTOG9XTkUvclFHeHpiVk5LYm9DS3dlQnB2Ylgy?= =?gb2312?B?ZGxJa1NncXIrUWpXMkhHWjIvSWZnejh2OGpHSDdFMnRFZXBWbzY5a2hFZUsw?= =?gb2312?B?VTNRNzEzTVNQZDFKWmlheE1aYUxxdmZQa3lFQ1pwK2k0N0IyYTZ3SlEvUHh0?= =?gb2312?B?eGplNkpZVDZCUGgrcC85Z3I5aDZjUmdSTnlncVR5VUtQU1pQUm9PcFlHR0FK?= =?gb2312?B?NTgwYXo4YWNqR29wTklQMkZLREluZi9WZDRmNkJmcFBZaWhiYUZVQVhYbEdG?= =?gb2312?B?NVBGQTFUV0lLRVdFS3Rwc0NIQUdKUDE2cVhENzYzdUVKRUgyNFFoakNlZCtE?= =?gb2312?B?ZjZxRzZWSW1yd250aWRtTGRsSi8rUFR0RE0zT0ZodXIxTzh6UkNXWXdHMWNV?= =?gb2312?B?bzduV3poK0Vra3hTeXRSY25FNlhkMWp2OS9va24wbS9ESWdpdWVRSzJoY3NL?= =?gb2312?B?by8xS3BVMjJSRUtta3NxOVJndW9zVXprUXY5WHZmN1grVUJuV2lYUUpzQ1Zt?= =?gb2312?B?bVhDSk12V0JPazRQVS9JSUpaMTgwQ1JwNldTbFpXM3ZkeHVLNWdqTy9hVzFJ?= =?gb2312?B?WHBld2lQQmVITDV3YlN5QjFSK2FOMGttdDhLL0tRVm5pUFZ1RHZramRPbXpP?= =?gb2312?B?RkhydmlBbDFCYlVTR0dnNjA4MkNSUGNITkx0TmlNanlGK2hCb2lKVnJPMDI5?= =?gb2312?B?UVBvNyt6V3NiMGpSL0U5OHRpajBQc250MHJ2SmVDeStQakRlY2ExWkZKMXl2?= =?gb2312?B?WlNWNjdUeEczRG9PSVBVVVBaY1pxd3h0dWQrRWN2Y0FDcW5KSnowTFU1dnla?= =?gb2312?Q?/fLR5qzp0Nem+988kvhTurIdqa95R9evlZ8GXzg?= Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3371.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 67065f4f-7f71-4d45-172a-08d8f8dc668d X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Apr 2021 09:14:36.6643 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Ha/Rr6DX6ZyG2vIv7R/rwX+M1MdqDbX9RQmxwKMjxerRphMCxas2MlsQqkEDAHUGOQglunr0Syv7LUoMM/PX6Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0401MB2300 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgTG9yZW56byBhbmQgQWxsLA0KDQpBbnkgY29tbWVudHMgb24gdGhpcyBwYXRjaD8NCg0KVGhh bmtzLA0KWmhpcWlhbmcNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBa LnEuIEhvdSA8emhpcWlhbmcuaG91QG54cC5jb20+DQo+IFNlbnQ6IDIwMjHE6jHUwjI5yNUgMTc6 NDANCj4gVG86IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtl cm5lbC5vcmc7DQo+IGxvcmVuem8ucGllcmFsaXNpQGFybS5jb207IHJvYmhAa2VybmVsLm9yZzsg YmhlbGdhYXNAZ29vZ2xlLmNvbQ0KPiBDYzogWi5xLiBIb3UgPHpoaXFpYW5nLmhvdUBueHAuY29t PjsgS2lzaG9uIFZpamF5IEFicmFoYW0gSQ0KPiA8a2lzaG9uQHRpLmNvbT47IEppbmdvbyBIYW4g PGppbmdvb2hhbjFAZ21haWwuY29tPjsgUmljaGFyZCBaaHUNCj4gPGhvbmd4aW5nLnpodUBueHAu Y29tPjsgTHVjYXMgU3RhY2ggPGwuc3RhY2hAcGVuZ3V0cm9uaXguZGU+OyBNdXJhbGkNCj4gS2Fy aWNoZXJpIDxtLWthcmljaGVyaTJAdGkuY29tPjsgTS5oLiBMaWFuIDxtaW5naHVhbi5saWFuQG54 cC5jb20+Ow0KPiBNaW5na2FpIEh1IDxtaW5na2FpLmh1QG54cC5jb20+OyBSb3kgWmFuZyA8cm95 LnphbmdAbnhwLmNvbT47IFl1ZQ0KPiBXYW5nIDx5dWUud2FuZ0BBbWxvZ2ljLmNvbT47IEpvbmF0 aGFuIENob2Nyb24NCj4gPGpvbm55Y0BhbWF6b24uY29tPjsgVGhvbWFzIFBldGF6em9uaQ0KPiA8 dGhvbWFzLnBldGF6em9uaUBib290bGluLmNvbT47IEplc3BlciBOaWxzc29uDQo+IDxqZXNwZXIu bmlsc3NvbkBheGlzLmNvbT47IEd1c3Rhdm8gUGltZW50ZWwNCj4gPGd1c3Rhdm8ucGltZW50ZWxA c3lub3BzeXMuY29tPjsgWGlhb3dlaSBTb25nDQo+IDxzb25neGlhb3dlaUBoaXNpbGljb24uY29t PjsgQmluZ2h1aSBXYW5nIDx3YW5nYmluZ2h1aUBoaXNpbGljb24uY29tPjsNCj4gU3RhbmltaXIg VmFyYmFub3YgPHN2YXJiYW5vdkBtbS1zb2wuY29tPjsgUHJhdHl1c2ggQW5hbmQNCj4gPHByYXR5 dXNoLmFuYW5kQGdtYWlsLmNvbT47IEt1bmloaWtvIEhheWFzaGkNCj4gPGhheWFzaGkua3VuaWhp a29Ac29jaW9uZXh0LmNvbT47IEphc29uIFlhbiA8eWFuYWlqaWVAaHVhd2VpLmNvbT47DQo+IFRo aWVycnkgUmVkaW5nIDx0aGllcnJ5LnJlZGluZ0BnbWFpbC5jb20+DQo+IFN1YmplY3Q6IFtQQVRD SF0gUENJOiBkd2M6IENoYW5nZSB0aGUgaW5oZXJpdGFuY2UgYmV0d2VlbiB0aGUgYWJzdHJhY3Rl ZA0KPiBzdHJ1Y3R1cmVzDQo+IA0KPiBGcm9tOiBIb3UgWmhpcWlhbmcgPFpoaXFpYW5nLkhvdUBu eHAuY29tPg0KPiANCj4gQ3VycmVudGx5IHRoZSBjb3JlIHN0cnVjdCBkd19wY2llIGluY2x1ZGVz IGJvdGggc3RydWN0IHBjaWVfcG9ydA0KPiBhbmQgZHdfcGNpZV9lcCBhbmQgdGhlIFJDIGFuZCBF UCBwbGF0Zm9ybSBkcml2ZXJzIGRpcmVjdGx5DQo+IGluY2x1ZGVzIHRoZSBkd19wY2llLiBTbyBp dCByZXN1bHRzIGluIGEgUkMgb3IgRVAgcGxhdGZvcm0gZHJpdmVyDQo+IGhhcyAyIGluZGlyZWN0 IHBhcmVudHMgcGNpZV9wb3J0IGFuZCBkd19wY2llX2VwLCBidXQgaXQgZG9lc24ndA0KPiBtYWtl IHNlbnNlIGxldCBSQyBwbGF0Zm9ybSBkcml2ZXIgaW5jbHVkZXMgdGhlIGR3X3BjaWVfZXAgYW5k DQo+IHNvIGRvZXMgdGhlIEVQIHBsYXRmb3JtIGRyaXZlci4NCj4gDQo+IFRoaXMgcGF0Y2ggbWFr ZXMgdGhlIHN0cnVjdCBwY2llX3BvcnQgYW5kIGR3X3BjaWVfZXAgaW5jbHVkZXMNCj4gdGhlIGNv cmUgc3RydWN0IGR3X3BjaWUgYW5kIHRoZSBSQyBhbmQgRVAgcGxhdGZvcm0gZHJpdmVycw0KPiBp bmNsdWRlIHN0cnVjdCBwY2llX3BvcnQgYW5kIGR3X3BjaWVfZXAgcmVzcGVjdGl2ZWx5Lg0KPiAN Cj4gU2lnbmVkLW9mZi1ieTogSG91IFpoaXFpYW5nIDxaaGlxaWFuZy5Ib3VAbnhwLmNvbT4NCj4g Q2M6IEtpc2hvbiBWaWpheSBBYnJhaGFtIEkgPGtpc2hvbkB0aS5jb20+DQo+IENjOiBMb3Jlbnpv IFBpZXJhbGlzaSA8bG9yZW56by5waWVyYWxpc2lAYXJtLmNvbT4NCj4gQ2M6IFJvYiBIZXJyaW5n IDxyb2JoQGtlcm5lbC5vcmc+DQo+IENjOiBCam9ybiBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUu Y29tPg0KPiBDYzogSmluZ29vIEhhbiA8amluZ29vaGFuMUBnbWFpbC5jb20+DQo+IENjOiBSaWNo YXJkIFpodSA8aG9uZ3hpbmcuemh1QG54cC5jb20+DQo+IENjOiBMdWNhcyBTdGFjaCA8bC5zdGFj aEBwZW5ndXRyb25peC5kZT4NCj4gQ2M6IE11cmFsaSBLYXJpY2hlcmkgPG0ta2FyaWNoZXJpMkB0 aS5jb20+DQo+IENjOiBNaW5naHVhbiBMaWFuIDxtaW5naHVhbi5MaWFuQG54cC5jb20+DQo+IENj OiBNaW5na2FpIEh1IDxtaW5na2FpLmh1QG54cC5jb20+DQo+IENjOiBSb3kgWmFuZyA8cm95Lnph bmdAbnhwLmNvbT4NCj4gQ2M6IFl1ZSBXYW5nIDx5dWUud2FuZ0BBbWxvZ2ljLmNvbT4NCj4gQ2M6 IEpvbmF0aGFuIENob2Nyb24gPGpvbm55Y0BhbWF6b24uY29tPg0KPiBDYzogVGhvbWFzIFBldGF6 em9uaSA8dGhvbWFzLnBldGF6em9uaUBib290bGluLmNvbT4NCj4gQ2M6IEplc3BlciBOaWxzc29u IDxqZXNwZXIubmlsc3NvbkBheGlzLmNvbT4NCj4gQ2M6IEd1c3Rhdm8gUGltZW50ZWwgPGd1c3Rh dm8ucGltZW50ZWxAc3lub3BzeXMuY29tPg0KPiBDYzogWGlhb3dlaSBTb25nIDxzb25neGlhb3dl aUBoaXNpbGljb24uY29tPg0KPiBDYzogQmluZ2h1aSBXYW5nIDx3YW5nYmluZ2h1aUBoaXNpbGlj b24uY29tPg0KPiBDYzogU3RhbmltaXIgVmFyYmFub3YgPHN2YXJiYW5vdkBtbS1zb2wuY29tPg0K PiBDYzogUHJhdHl1c2ggQW5hbmQgPHByYXR5dXNoLmFuYW5kQGdtYWlsLmNvbT4NCj4gQ2M6IEt1 bmloaWtvIEhheWFzaGkgPGhheWFzaGkua3VuaWhpa29Ac29jaW9uZXh0LmNvbT4NCj4gQ2M6IEph c29uIFlhbiA8eWFuYWlqaWVAaHVhd2VpLmNvbT4NCj4gQ2M6IFRoaWVycnkgUmVkaW5nIDx0aGll cnJ5LnJlZGluZ0BnbWFpbC5jb20+DQo+IC0tLQ0KPiAgZHJpdmVycy9wY2kvY29udHJvbGxlci9k d2MvcGNpLWRyYTd4eC5jICAgICAgIHwgIDc0ICsrKysrLS0tDQo+ICBkcml2ZXJzL3BjaS9jb250 cm9sbGVyL2R3Yy9wY2ktZXh5bm9zLmMgICAgICAgfCAgMjYgKy0tDQo+ICBkcml2ZXJzL3BjaS9j b250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jICAgICAgICAgfCAgNDYgKysrLS0NCj4gIGRyaXZlcnMv cGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1rZXlzdG9uZS5jICAgICB8ICA3OSArKysrKy0tLQ0KPiAg Li4uL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktbGF5ZXJzY2FwZS1lcC5jICAgIHwgIDE4ICstDQo+ ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktbGF5ZXJzY2FwZS5jICAgfCAgNTEgKysr LS0tDQo+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktbWVzb24uYyAgICAgICAgfCAg MjUgKy0tDQo+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWFsLmMgICAgICAgICAg fCAgMjEgKystDQo+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWFybWFkYThrLmMg ICAgfCAgMTcgKy0NCj4gIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtYXJ0cGVjNi5j ICAgICB8ICA3NCArKysrKy0tLQ0KPiAgLi4uL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2ln bndhcmUtaG9zdC5jIHwgICAyICstDQo+ICAuLi4vcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVz aWdud2FyZS1wbGF0LmMgfCAgMzggKystLQ0KPiAgZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2Mv cGNpZS1kZXNpZ253YXJlLmggIHwgIDcyICsrKystLS0tDQo+ICBkcml2ZXJzL3BjaS9jb250cm9s bGVyL2R3Yy9wY2llLWhpc3RiLmMgICAgICAgfCAgMjcgKy0tDQo+ICBkcml2ZXJzL3BjaS9jb250 cm9sbGVyL2R3Yy9wY2llLWludGVsLWd3LmMgICAgfCAgNDIgKysrLS0NCj4gIGRyaXZlcnMvcGNp L2NvbnRyb2xsZXIvZHdjL3BjaWUta2lyaW4uYyAgICAgICB8ICA0MiArKystLQ0KPiAgZHJpdmVy cy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1xY29tLmMgICAgICAgIHwgIDQwICsrLS0tDQo+ICBk cml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLXNwZWFyMTN4eC5jICAgfCAgMTYgKy0NCj4g IGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtdGVncmExOTQuYyAgICB8IDE2OSArKysr KysrKysrKy0tLS0tLS0NCj4gIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtdW5pcGhp ZXItZXAuYyB8ICAxNCArLQ0KPiAgZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS11bmlw aGllci5jICAgIHwgIDE3ICstDQo+ICAyMSBmaWxlcyBjaGFuZ2VkLCA1NTcgaW5zZXJ0aW9ucygr KSwgMzUzIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRy b2xsZXIvZHdjL3BjaS1kcmE3eHguYw0KPiBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3Bj aS1kcmE3eHguYw0KPiBpbmRleCAxMjcyNmM2MzM2NmYuLjBlOTE0ZGY2ZWFiYSAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWRyYTd4eC5jDQo+ICsrKyBiL2Ry aXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1kcmE3eHguYw0KPiBAQCAtODUsNyArODUsOCBA QA0KPiAgI2RlZmluZSBQQ0lFX0IwX0IxX1RTWU5DRU4JCQkJQklUKDApDQo+IA0KPiAgc3RydWN0 IGRyYTd4eF9wY2llIHsNCj4gLQlzdHJ1Y3QgZHdfcGNpZQkJKnBjaTsNCj4gKwlzdHJ1Y3QgcGNp ZV9wb3J0CSpwcDsNCj4gKwlzdHJ1Y3QgZHdfcGNpZV9lcAkqZXA7DQo+ICAJdm9pZCBfX2lvbWVt CQkqYmFzZTsJCS8qIERUIHRpX2NvbmYgKi8NCj4gIAlpbnQJCQlwaHlfY291bnQ7CS8qIERUIHBo eS1uYW1lcyBjb3VudCAqLw0KPiAgCXN0cnVjdCBwaHkJCSoqcGh5Ow0KPiBAQCAtMjkwLDExICsy OTEsMTkgQEAgc3RhdGljIHZvaWQgZHJhN3h4X3BjaWVfbXNpX2lycV9oYW5kbGVyKHN0cnVjdA0K PiBpcnFfZGVzYyAqZGVzYykNCj4gIHN0YXRpYyBpcnFyZXR1cm5fdCBkcmE3eHhfcGNpZV9pcnFf aGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpDQo+ICB7DQo+ICAJc3RydWN0IGRyYTd4eF9wY2ll ICpkcmE3eHggPSBhcmc7DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9IGRyYTd4eC0+cGNpOw0K PiAtCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ZGV2Ow0KPiAtCXN0cnVjdCBkd19wY2llX2Vw ICplcCA9ICZwY2ktPmVwOw0KPiArCXN0cnVjdCBkd19wY2llX2VwICplcDsNCj4gKwlzdHJ1Y3Qg ZHdfcGNpZSAqcGNpOw0KPiArCXN0cnVjdCBkZXZpY2UgKmRldjsNCj4gIAl1MzIgcmVnOw0KPiAN Cj4gKwlpZiAoZHJhN3h4LT5tb2RlID09IERXX1BDSUVfUkNfVFlQRSkgew0KPiArCQlwY2kgPSB0 b19kd19wY2llX2Zyb21fcHAoZHJhN3h4LT5wcCk7DQo+ICsJfSBlbHNlIHsNCj4gKwkJZXAgPSBk cmE3eHgtPmVwOw0KPiArCQlwY2kgPSB0b19kd19wY2llX2Zyb21fZXAoZXApOw0KPiArCX0NCj4g Kw0KPiArCWRldiA9IHBjaS0+ZGV2Ow0KPiAgCXJlZyA9IGRyYTd4eF9wY2llX3JlYWRsKGRyYTd4 eCwNCj4gUENJRUNUUkxfRFJBN1hYX0NPTkZfSVJRU1RBVFVTX01BSU4pOw0KPiANCj4gIAlpZiAo cmVnICYgRVJSX1NZUykNCj4gQEAgLTQ0NywxMSArNDU2LDEwIEBAIHN0YXRpYyBpbnQgX19pbml0 IGRyYTd4eF9hZGRfcGNpZV9lcChzdHJ1Y3QNCj4gZHJhN3h4X3BjaWUgKmRyYTd4eCwNCj4gIAkJ CQkgICAgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICB7DQo+ICAJaW50IHJldDsN Cj4gLQlzdHJ1Y3QgZHdfcGNpZV9lcCAqZXA7DQo+ICsJc3RydWN0IGR3X3BjaWVfZXAgKmVwID0g ZHJhN3h4LT5lcDsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX2Vw KGVwKTsNCj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiAtCXN0cnVjdCBk d19wY2llICpwY2kgPSBkcmE3eHgtPnBjaTsNCj4gDQo+IC0JZXAgPSAmcGNpLT5lcDsNCj4gIAll cC0+b3BzID0gJnBjaWVfZXBfb3BzOw0KPiANCj4gIAlwY2ktPmRiaV9iYXNlID0gZGV2bV9wbGF0 Zm9ybV9pb3JlbWFwX3Jlc291cmNlX2J5bmFtZShwZGV2LA0KPiAiZXBfZGJpY3MiKTsNCj4gQEAg LTQ3Niw4ICs0ODQsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBkcmE3eHhfYWRkX3BjaWVfcG9ydChz dHJ1Y3QNCj4gZHJhN3h4X3BjaWUgKmRyYTd4eCwNCj4gIAkJCQkgICAgICAgc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikNCj4gIHsNCj4gIAlpbnQgcmV0Ow0KPiAtCXN0cnVjdCBkd19wY2ll ICpwY2kgPSBkcmE3eHgtPnBjaTsNCj4gLQlzdHJ1Y3QgcGNpZV9wb3J0ICpwcCA9ICZwY2ktPnBw Ow0KPiArCXN0cnVjdCBwY2llX3BvcnQgKnBwID0gZHJhN3h4LT5wcDsNCj4gKwlzdHJ1Y3QgZHdf cGNpZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKHBwKTsNCj4gIAlzdHJ1Y3QgZGV2aWNlICpk ZXYgPSBwY2ktPmRldjsNCj4gDQo+ICAJcHAtPmlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwg MSk7DQo+IEBAIC02OTMsNiArNzAxLDggQEAgc3RhdGljIGludCBfX2luaXQgZHJhN3h4X3BjaWVf cHJvYmUoc3RydWN0DQo+IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIAlzdHJ1Y3QgZGV2aWNl X2xpbmsgKipsaW5rOw0KPiAgCXZvaWQgX19pb21lbSAqYmFzZTsNCj4gIAlzdHJ1Y3QgZHdfcGNp ZSAqcGNpOw0KPiArCXN0cnVjdCBwY2llX3BvcnQgKnBwOw0KPiArCXN0cnVjdCBkd19wY2llX2Vw ICplcDsNCj4gIAlzdHJ1Y3QgZHJhN3h4X3BjaWUgKmRyYTd4eDsNCj4gIAlzdHJ1Y3QgZGV2aWNl ICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYtPm9m X25vZGU7DQo+IEBAIC03MTUsMTMgKzcyNSw2IEBAIHN0YXRpYyBpbnQgX19pbml0IGRyYTd4eF9w Y2llX3Byb2JlKHN0cnVjdA0KPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAJaWYgKCFkcmE3 eHgpDQo+ICAJCXJldHVybiAtRU5PTUVNOw0KPiANCj4gLQlwY2kgPSBkZXZtX2t6YWxsb2MoZGV2 LCBzaXplb2YoKnBjaSksIEdGUF9LRVJORUwpOw0KPiAtCWlmICghcGNpKQ0KPiAtCQlyZXR1cm4g LUVOT01FTTsNCj4gLQ0KPiAtCXBjaS0+ZGV2ID0gZGV2Ow0KPiAtCXBjaS0+b3BzID0gJmR3X3Bj aWVfb3BzOw0KPiAtDQo+ICAJaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsNCj4gIAlp ZiAoaXJxIDwgMCkNCj4gIAkJcmV0dXJuIGlycTsNCj4gQEAgLTc1OSw3ICs3NjIsNiBAQCBzdGF0 aWMgaW50IF9faW5pdCBkcmE3eHhfcGNpZV9wcm9iZShzdHJ1Y3QNCj4gcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQ0KPiANCj4gIAlkcmE3eHgtPmJhc2UgPSBiYXNlOw0KPiAgCWRyYTd4eC0+cGh5ID0g cGh5Ow0KPiAtCWRyYTd4eC0+cGNpID0gcGNpOw0KPiAgCWRyYTd4eC0+cGh5X2NvdW50ID0gcGh5 X2NvdW50Ow0KPiANCj4gIAlpZiAocGh5X2NvdW50ID09IDIpIHsNCj4gQEAgLTc5Niw2ICs3OTgs MTcgQEAgc3RhdGljIGludCBfX2luaXQgZHJhN3h4X3BjaWVfcHJvYmUoc3RydWN0DQo+IHBsYXRm b3JtX2RldmljZSAqcGRldikNCj4gDQo+ICAJc3dpdGNoIChtb2RlKSB7DQo+ICAJY2FzZSBEV19Q Q0lFX1JDX1RZUEU6DQo+ICsJCXBwID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcCksIEdG UF9LRVJORUwpOw0KPiArCQlpZiAoIXBwKSB7DQo+ICsJCQlyZXQgPSAtRU5PTUVNOw0KPiArCQkJ Z290byBlcnJfZ3BpbzsNCj4gKwkJfQ0KPiArDQo+ICsJCXBjaSA9ICZwcC0+cGNpZTsNCj4gKwkJ cGNpLT5kZXYgPSBkZXY7DQo+ICsJCXBjaS0+b3BzID0gJmR3X3BjaWVfb3BzOw0KPiArCQlkcmE3 eHgtPnBwID0gcHA7DQo+ICsNCj4gIAkJaWYgKCFJU19FTkFCTEVEKENPTkZJR19QQ0lfRFJBN1hY X0hPU1QpKSB7DQo+ICAJCQlyZXQgPSAtRU5PREVWOw0KPiAgCQkJZ290byBlcnJfZ3BpbzsNCj4g QEAgLTgxMyw2ICs4MjYsMTcgQEAgc3RhdGljIGludCBfX2luaXQgZHJhN3h4X3BjaWVfcHJvYmUo c3RydWN0DQo+IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIAkJCWdvdG8gZXJyX2dwaW87DQo+ ICAJCWJyZWFrOw0KPiAgCWNhc2UgRFdfUENJRV9FUF9UWVBFOg0KPiArCQllcCA9IGRldm1fa3ph bGxvYyhkZXYsIHNpemVvZigqZXApLCBHRlBfS0VSTkVMKTsNCj4gKwkJaWYgKCFlcCkgew0KPiAr CQkJcmV0ID0gLUVOT01FTTsNCj4gKwkJCWdvdG8gZXJyX2dwaW87DQo+ICsJCX0NCj4gKw0KPiAr CQlwY2kgPSAmZXAtPnBjaWU7DQo+ICsJCXBjaS0+ZGV2ID0gZGV2Ow0KPiArCQlwY2ktPm9wcyA9 ICZkd19wY2llX29wczsNCj4gKwkJZHJhN3h4LT5lcCA9IGVwOw0KPiArDQo+ICAJCWlmICghSVNf RU5BQkxFRChDT05GSUdfUENJX0RSQTdYWF9FUCkpIHsNCj4gIAkJCXJldCA9IC1FTk9ERVY7DQo+ ICAJCQlnb3RvIGVycl9ncGlvOw0KPiBAQCAtODYwLDEyICs4ODQsMTQgQEAgc3RhdGljIGludCBf X2luaXQgZHJhN3h4X3BjaWVfcHJvYmUoc3RydWN0DQo+IHBsYXRmb3JtX2RldmljZSAqcGRldikN Cj4gIHN0YXRpYyBpbnQgZHJhN3h4X3BjaWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ ICB7DQo+ICAJc3RydWN0IGRyYTd4eF9wY2llICpkcmE3eHggPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gZHJhN3h4LT5wY2k7DQo+ICsJc3RydWN0IGR3 X3BjaWUgKnBjaTsNCj4gIAl1MzIgdmFsOw0KPiANCj4gIAlpZiAoZHJhN3h4LT5tb2RlICE9IERX X1BDSUVfUkNfVFlQRSkNCj4gIAkJcmV0dXJuIDA7DQo+IA0KPiArCXBjaSA9IHRvX2R3X3BjaWVf ZnJvbV9wcChkcmE3eHgtPnBwKTsNCj4gKw0KPiAgCS8qIGNsZWFyIE1TRSAqLw0KPiAgCXZhbCA9 IGR3X3BjaWVfcmVhZGxfZGJpKHBjaSwgUENJX0NPTU1BTkQpOw0KPiAgCXZhbCAmPSB+UENJX0NP TU1BTkRfTUVNT1JZOw0KPiBAQCAtODc3LDEyICs5MDMsMTQgQEAgc3RhdGljIGludCBkcmE3eHhf cGNpZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gIHN0YXRpYyBpbnQgZHJhN3h4X3Bj aWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gIHsNCj4gIAlzdHJ1Y3QgZHJhN3h4X3Bj aWUgKmRyYTd4eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiAtCXN0cnVjdCBkd19wY2llICpw Y2kgPSBkcmE3eHgtPnBjaTsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpOw0KPiAgCXUzMiB2YWw7 DQo+IA0KPiAgCWlmIChkcmE3eHgtPm1vZGUgIT0gRFdfUENJRV9SQ19UWVBFKQ0KPiAgCQlyZXR1 cm4gMDsNCj4gDQo+ICsJcGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKGRyYTd4eC0+cHApOw0KPiAr DQo+ICAJLyogc2V0IE1TRSAqLw0KPiAgCXZhbCA9IGR3X3BjaWVfcmVhZGxfZGJpKHBjaSwgUENJ X0NPTU1BTkQpOw0KPiAgCXZhbCB8PSBQQ0lfQ09NTUFORF9NRU1PUlk7DQo+IEBAIC05MTksOSAr OTQ3LDE1IEBAIHN0YXRpYyB2b2lkIGRyYTd4eF9wY2llX3NodXRkb3duKHN0cnVjdA0KPiBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICB7DQo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYt PmRldjsNCj4gIAlzdHJ1Y3QgZHJhN3h4X3BjaWUgKmRyYTd4eCA9IGRldl9nZXRfZHJ2ZGF0YShk ZXYpOw0KPiArCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAoZHJhN3h4 LT5wcCk7DQo+ICAJaW50IHJldDsNCj4gDQo+IC0JZHJhN3h4X3BjaWVfc3RvcF9saW5rKGRyYTd4 eC0+cGNpKTsNCj4gKwlpZiAoZHJhN3h4LT5tb2RlID09IERXX1BDSUVfUkNfVFlQRSkNCj4gKwkJ cGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKGRyYTd4eC0+cHApOw0KPiArCWVsc2UNCj4gKwkJcGNp ID0gdG9fZHdfcGNpZV9mcm9tX2VwKGRyYTd4eC0+ZXApOw0KPiArDQo+ICsJZHJhN3h4X3BjaWVf c3RvcF9saW5rKHBjaSk7DQo+IA0KPiAgCXJldCA9IHBtX3J1bnRpbWVfcHV0X3N5bmMoZGV2KTsN Cj4gIAlpZiAocmV0IDwgMCkNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIv ZHdjL3BjaS1leHlub3MuYw0KPiBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1leHlu b3MuYw0KPiBpbmRleCBjMjRkYWIzODM2NTQuLmFiNWFjZmE3OWZhYSAxMDA2NDQNCj4gLS0tIGEv ZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWV4eW5vcy5jDQo+ICsrKyBiL2RyaXZlcnMv cGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1leHlub3MuYw0KPiBAQCAtNTEsNyArNTEsNyBAQA0KPiAg I2RlZmluZSBQQ0lFX0VMQklfU0xWX0RCSV9FTkFCTEUJQklUKDIxKQ0KPiANCj4gIHN0cnVjdCBl eHlub3NfcGNpZSB7DQo+IC0Jc3RydWN0IGR3X3BjaWUJCQlwY2k7DQo+ICsJc3RydWN0IHBjaWVf cG9ydAkJcHA7DQo+ICAJdm9pZCBfX2lvbWVtCQkJKmVsYmlfYmFzZTsNCj4gIAlzdHJ1Y3QgY2xr CQkJKmNsazsNCj4gIAlzdHJ1Y3QgY2xrCQkJKmJ1c19jbGs7DQo+IEBAIC02MSw3ICs2MSw4IEBA IHN0cnVjdCBleHlub3NfcGNpZSB7DQo+IA0KPiAgc3RhdGljIGludCBleHlub3NfcGNpZV9pbml0 X2Nsa19yZXNvdXJjZXMoc3RydWN0IGV4eW5vc19wY2llICplcCkNCj4gIHsNCj4gLQlzdHJ1Y3Qg ZGV2aWNlICpkZXYgPSBlcC0+cGNpLmRldjsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9f ZHdfcGNpZV9mcm9tX3BwKCZlcC0+cHApOw0KPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ ZGV2Ow0KPiAgCWludCByZXQ7DQo+IA0KPiAgCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShlcC0+ Y2xrKTsNCj4gQEAgLTIxNCw3ICsyMTUsOCBAQCBzdGF0aWMgdm9pZCBleHlub3NfcGNpZV93cml0 ZV9kYmkoc3RydWN0IGR3X3BjaWUNCj4gKnBjaSwgdm9pZCBfX2lvbWVtICpiYXNlLA0KPiAgc3Rh dGljIGludCBleHlub3NfcGNpZV9yZF9vd25fY29uZihzdHJ1Y3QgcGNpX2J1cyAqYnVzLCB1bnNp Z25lZCBpbnQNCj4gZGV2Zm4sDQo+ICAJCQkJICAgaW50IHdoZXJlLCBpbnQgc2l6ZSwgdTMyICp2 YWwpDQo+ICB7DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChi dXMtPnN5c2RhdGEpOw0KPiArCXN0cnVjdCBwY2llX3BvcnQgKnBwID0gYnVzLT5zeXNkYXRhOw0K PiArCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAocHApOw0KPiANCj4g IAlpZiAoUENJX1NMT1QoZGV2Zm4pKSB7DQo+ICAJCSp2YWwgPSB+MDsNCj4gQEAgLTIyOCw3ICsy MzAsOCBAQCBzdGF0aWMgaW50IGV4eW5vc19wY2llX3JkX293bl9jb25mKHN0cnVjdCBwY2lfYnVz DQo+ICpidXMsIHVuc2lnbmVkIGludCBkZXZmbiwNCj4gIHN0YXRpYyBpbnQgZXh5bm9zX3BjaWVf d3Jfb3duX2NvbmYoc3RydWN0IHBjaV9idXMgKmJ1cywgdW5zaWduZWQgaW50DQo+IGRldmZuLA0K PiAgCQkJCSAgIGludCB3aGVyZSwgaW50IHNpemUsIHUzMiB2YWwpDQo+ICB7DQo+IC0Jc3RydWN0 IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChidXMtPnN5c2RhdGEpOw0KPiArCXN0 cnVjdCBwY2llX3BvcnQgKnBwID0gYnVzLT5zeXNkYXRhOw0KPiArCXN0cnVjdCBkd19wY2llICpw Y2kgPSB0b19kd19wY2llX2Zyb21fcHAocHApOw0KPiANCj4gIAlpZiAoUENJX1NMT1QoZGV2Zm4p KQ0KPiAgCQlyZXR1cm4gUENJQklPU19ERVZJQ0VfTk9UX0ZPVU5EOw0KPiBAQCAtMjc2LDggKzI3 OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdfcGNpZV9ob3N0X29wcw0KPiBleHlub3NfcGNp ZV9ob3N0X29wcyA9IHsNCj4gIHN0YXRpYyBpbnQgZXh5bm9zX2FkZF9wY2llX3BvcnQoc3RydWN0 IGV4eW5vc19wY2llICplcCwNCj4gIAkJCQkgICAgICAgc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikNCj4gIHsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gJmVwLT5wY2k7DQo+IC0Jc3Ry dWN0IHBjaWVfcG9ydCAqcHAgPSAmcGNpLT5wcDsNCj4gKwlzdHJ1Y3QgcGNpZV9wb3J0ICpwcCA9 ICZlcC0+cHA7DQo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4gIAlpbnQg cmV0Ow0KPiANCj4gQEAgLTMxNSw2ICszMTcsNyBAQCBzdGF0aWMgaW50IGV4eW5vc19wY2llX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UNCj4gKnBkZXYpDQo+ICB7DQo+ICAJc3RydWN0IGRl dmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4gIAlzdHJ1Y3QgZXh5bm9zX3BjaWUgKmVwOw0KPiAr CXN0cnVjdCBkd19wY2llICpwY2k7DQo+ICAJc3RydWN0IGRldmljZV9ub2RlICpucCA9IGRldi0+ b2Zfbm9kZTsNCj4gIAlpbnQgcmV0Ow0KPiANCj4gQEAgLTMyMiw4ICszMjUsOSBAQCBzdGF0aWMg aW50IGV4eW5vc19wY2llX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UNCj4gKnBkZXYpDQo+ ICAJaWYgKCFlcCkNCj4gIAkJcmV0dXJuIC1FTk9NRU07DQo+IA0KPiAtCWVwLT5wY2kuZGV2ID0g ZGV2Ow0KPiAtCWVwLT5wY2kub3BzID0gJmR3X3BjaWVfb3BzOw0KPiArCXBjaSA9ICZlcC0+cHAu cGNpZTsNCj4gKwlwY2ktPmRldiA9IGRldjsNCj4gKwlwY2ktPm9wcyA9ICZkd19wY2llX29wczsN Cj4gDQo+ICAJZXAtPnBoeSA9IGRldm1fb2ZfcGh5X2dldChkZXYsIG5wLCBOVUxMKTsNCj4gIAlp ZiAoSVNfRVJSKGVwLT5waHkpKQ0KPiBAQCAtMzgxLDcgKzM4NSw3IEBAIHN0YXRpYyBpbnQgX19l eGl0IGV4eW5vc19wY2llX3JlbW92ZShzdHJ1Y3QNCj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0K PiAgew0KPiAgCXN0cnVjdCBleHlub3NfcGNpZSAqZXAgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShw ZGV2KTsNCj4gDQo+IC0JZHdfcGNpZV9ob3N0X2RlaW5pdCgmZXAtPnBjaS5wcCk7DQo+ICsJZHdf cGNpZV9ob3N0X2RlaW5pdCgmZXAtPnBwKTsNCj4gIAlleHlub3NfcGNpZV9hc3NlcnRfY29yZV9y ZXNldChlcCk7DQo+ICAJcGh5X3Bvd2VyX29mZihlcC0+cGh5KTsNCj4gIAlwaHlfZXhpdChlcC0+ cGh5KTsNCj4gQEAgLTQwNiw4ICs0MTAsOCBAQCBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkDQo+ IGV4eW5vc19wY2llX3N1c3BlbmRfbm9pcnEoc3RydWN0IGRldmljZSAqZGV2KQ0KPiAgc3RhdGlj IGludCBfX21heWJlX3VudXNlZCBleHlub3NfcGNpZV9yZXN1bWVfbm9pcnEoc3RydWN0IGRldmlj ZSAqZGV2KQ0KPiAgew0KPiAgCXN0cnVjdCBleHlub3NfcGNpZSAqZXAgPSBkZXZfZ2V0X2RydmRh dGEoZGV2KTsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gJmVwLT5wY2k7DQo+IC0Jc3RydWN0 IHBjaWVfcG9ydCAqcHAgPSAmcGNpLT5wcDsNCj4gKwlzdHJ1Y3QgcGNpZV9wb3J0ICpwcCA9ICZl cC0+cHA7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChwcCk7 DQo+ICAJaW50IHJldDsNCj4gDQo+ICAJcmV0ID0gcmVndWxhdG9yX2J1bGtfZW5hYmxlKEFSUkFZ X1NJWkUoZXAtPnN1cHBsaWVzKSwgZXAtPnN1cHBsaWVzKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1pbXg2LmMNCj4gYi9kcml2ZXJzL3BjaS9jb250cm9s bGVyL2R3Yy9wY2ktaW14Ni5jDQo+IGluZGV4IDBjZjEzMzNjMDQ0MC4uNTdhNzVhMGEwZDlmIDEw MDY0NA0KPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jDQo+ICsr KyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1pbXg2LmMNCj4gQEAgLTYxLDcgKzYx LDcgQEAgc3RydWN0IGlteDZfcGNpZV9kcnZkYXRhIHsNCj4gIH07DQo+IA0KPiAgc3RydWN0IGlt eDZfcGNpZSB7DQo+IC0Jc3RydWN0IGR3X3BjaWUJCSpwY2k7DQo+ICsJc3RydWN0IHBjaWVfcG9y dAkqcHA7DQo+ICAJaW50CQkJcmVzZXRfZ3BpbzsNCj4gIAlib29sCQkJZ3Bpb19hY3RpdmVfaGln aDsNCj4gIAlzdHJ1Y3QgY2xrCQkqcGNpZV9idXM7DQo+IEBAIC0xNDMsNyArMTQzLDcgQEAgc3Ry dWN0IGlteDZfcGNpZSB7DQo+IA0KPiAgc3RhdGljIGludCBwY2llX3BoeV9wb2xsX2FjayhzdHJ1 Y3QgaW14Nl9wY2llICppbXg2X3BjaWUsIGJvb2wgZXhwX3ZhbCkNCj4gIHsNCj4gLQlzdHJ1Y3Qg ZHdfcGNpZSAqcGNpID0gaW14Nl9wY2llLT5wY2k7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9 IHRvX2R3X3BjaWVfZnJvbV9wcChpbXg2X3BjaWUtPnBwKTsNCj4gIAlib29sIHZhbDsNCj4gIAl1 MzIgbWF4X2l0ZXJhdGlvbnMgPSAxMDsNCj4gIAl1MzIgd2FpdF9jb3VudGVyID0gMDsNCj4gQEAg LTE2NCw3ICsxNjQsNyBAQCBzdGF0aWMgaW50IHBjaWVfcGh5X3BvbGxfYWNrKHN0cnVjdCBpbXg2 X3BjaWUNCj4gKmlteDZfcGNpZSwgYm9vbCBleHBfdmFsKQ0KPiANCj4gIHN0YXRpYyBpbnQgcGNp ZV9waHlfd2FpdF9hY2soc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llLCBpbnQgYWRkcikNCj4g IHsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gaW14Nl9wY2llLT5wY2k7DQo+ICsJc3RydWN0 IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChpbXg2X3BjaWUtPnBwKTsNCj4gIAl1 MzIgdmFsOw0KPiAgCWludCByZXQ7DQo+IA0KPiBAQCAtMTg3LDcgKzE4Nyw3IEBAIHN0YXRpYyBp bnQgcGNpZV9waHlfd2FpdF9hY2soc3RydWN0IGlteDZfcGNpZQ0KPiAqaW14Nl9wY2llLCBpbnQg YWRkcikNCj4gIC8qIFJlYWQgZnJvbSB0aGUgMTYtYml0IFBDSWUgUEhZIGNvbnRyb2wgcmVnaXN0 ZXJzIChub3QgbWVtb3J5LW1hcHBlZCkNCj4gKi8NCj4gIHN0YXRpYyBpbnQgcGNpZV9waHlfcmVh ZChzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUsIGludCBhZGRyLCB1MTYgKmRhdGEpDQo+ICB7 DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9IGlteDZfcGNpZS0+cGNpOw0KPiArCXN0cnVjdCBk d19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAoaW14Nl9wY2llLT5wcCk7DQo+ICAJdTMy IHBoeV9jdGw7DQo+ICAJaW50IHJldDsNCj4gDQo+IEBAIC0yMTMsNyArMjEzLDcgQEAgc3RhdGlj IGludCBwY2llX3BoeV9yZWFkKHN0cnVjdCBpbXg2X3BjaWUNCj4gKmlteDZfcGNpZSwgaW50IGFk ZHIsIHUxNiAqZGF0YSkNCj4gDQo+ICBzdGF0aWMgaW50IHBjaWVfcGh5X3dyaXRlKHN0cnVjdCBp bXg2X3BjaWUgKmlteDZfcGNpZSwgaW50IGFkZHIsIHUxNiBkYXRhKQ0KPiAgew0KPiAtCXN0cnVj dCBkd19wY2llICpwY2kgPSBpbXg2X3BjaWUtPnBjaTsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNp ID0gdG9fZHdfcGNpZV9mcm9tX3BwKGlteDZfcGNpZS0+cHApOw0KPiAgCXUzMiB2YXI7DQo+ICAJ aW50IHJldDsNCj4gDQo+IEBAIC0zNjQsNyArMzY0LDggQEAgc3RhdGljIGludCBpbXg2X3BjaWVf YXR0YWNoX3BkKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gDQo+ICBzdGF0aWMgdm9pZCBpbXg2X3Bj aWVfYXNzZXJ0X2NvcmVfcmVzZXQoc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llKQ0KPiAgew0K PiAtCXN0cnVjdCBkZXZpY2UgKmRldiA9IGlteDZfcGNpZS0+cGNpLT5kZXY7DQo+ICsJc3RydWN0 IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChpbXg2X3BjaWUtPnBwKTsNCj4gKwlz dHJ1Y3QgZGV2aWNlICpkZXYgPSBwY2ktPmRldjsNCj4gDQo+ICAJc3dpdGNoIChpbXg2X3BjaWUt PmRydmRhdGEtPnZhcmlhbnQpIHsNCj4gIAljYXNlIElNWDdEOg0KPiBAQCAtNDExLDcgKzQxMiw3 IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW14Nl9wY2llX2dycF9vZmZzZXQoY29uc3QNCj4gc3Ry dWN0IGlteDZfcGNpZSAqaW14Nl9wY2llKQ0KPiANCj4gIHN0YXRpYyBpbnQgaW14Nl9wY2llX2Vu YWJsZV9yZWZfY2xrKHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSkNCj4gIHsNCj4gLQlzdHJ1 Y3QgZHdfcGNpZSAqcGNpID0gaW14Nl9wY2llLT5wY2k7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBj aSA9IHRvX2R3X3BjaWVfZnJvbV9wcChpbXg2X3BjaWUtPnBwKTsNCj4gIAlzdHJ1Y3QgZGV2aWNl ICpkZXYgPSBwY2ktPmRldjsNCj4gIAl1bnNpZ25lZCBpbnQgb2Zmc2V0Ow0KPiAgCWludCByZXQg PSAwOw0KPiBAQCAtNDcxLDcgKzQ3Miw4IEBAIHN0YXRpYyBpbnQgaW14Nl9wY2llX2VuYWJsZV9y ZWZfY2xrKHN0cnVjdCBpbXg2X3BjaWUNCj4gKmlteDZfcGNpZSkNCj4gIHN0YXRpYyB2b2lkIGlt eDdkX3BjaWVfd2FpdF9mb3JfcGh5X3BsbF9sb2NrKHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNp ZSkNCj4gIHsNCj4gIAl1MzIgdmFsOw0KPiAtCXN0cnVjdCBkZXZpY2UgKmRldiA9IGlteDZfcGNp ZS0+cGNpLT5kZXY7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9w cChpbXg2X3BjaWUtPnBwKTsNCj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwY2ktPmRldjsNCj4g DQo+ICAJaWYgKHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChpbXg2X3BjaWUtPmlvbXV4Y19ncHIs DQo+ICAJCQkJICAgICBJT01VWENfR1BSMjIsIHZhbCwNCj4gQEAgLTQ4Myw3ICs0ODUsNyBAQCBz dGF0aWMgdm9pZCBpbXg3ZF9wY2llX3dhaXRfZm9yX3BoeV9wbGxfbG9jayhzdHJ1Y3QNCj4gaW14 Nl9wY2llICppbXg2X3BjaWUpDQo+IA0KPiAgc3RhdGljIHZvaWQgaW14Nl9wY2llX2RlYXNzZXJ0 X2NvcmVfcmVzZXQoc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llKQ0KPiAgew0KPiAtCXN0cnVj dCBkd19wY2llICpwY2kgPSBpbXg2X3BjaWUtPnBjaTsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNp ID0gdG9fZHdfcGNpZV9mcm9tX3BwKGlteDZfcGNpZS0+cHApOw0KPiAgCXN0cnVjdCBkZXZpY2Ug KmRldiA9IHBjaS0+ZGV2Ow0KPiAgCWludCByZXQ7DQo+IA0KPiBAQCAtNjYzLDYgKzY2NSw3IEBA IHN0YXRpYyB2b2lkIGlteDZfcGNpZV9pbml0X3BoeShzdHJ1Y3QgaW14Nl9wY2llDQo+ICppbXg2 X3BjaWUpDQo+ICBzdGF0aWMgaW50IGlteDZfc2V0dXBfcGh5X21wbGwoc3RydWN0IGlteDZfcGNp ZSAqaW14Nl9wY2llKQ0KPiAgew0KPiAgCXVuc2lnbmVkIGxvbmcgcGh5X3JhdGUgPSBjbGtfZ2V0 X3JhdGUoaW14Nl9wY2llLT5wY2llX3BoeSk7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRv X2R3X3BjaWVfZnJvbV9wcChpbXg2X3BjaWUtPnBwKTsNCj4gIAlpbnQgbXVsdCwgZGl2Ow0KPiAg CXUxNiB2YWw7DQo+IA0KPiBAQCAtNjg1LDcgKzY4OCw3IEBAIHN0YXRpYyBpbnQgaW14Nl9zZXR1 cF9waHlfbXBsbChzdHJ1Y3QgaW14Nl9wY2llDQo+ICppbXg2X3BjaWUpDQo+ICAJCWRpdiA9IDE7 DQo+ICAJCWJyZWFrOw0KPiAgCWRlZmF1bHQ6DQo+IC0JCWRldl9lcnIoaW14Nl9wY2llLT5wY2kt PmRldiwNCj4gKwkJZGV2X2VycihwY2ktPmRldiwNCj4gIAkJCSJVbnN1cHBvcnRlZCBQSFkgcmVm ZXJlbmNlIGNsb2NrIHJhdGUgJWx1XG4iLCBwaHlfcmF0ZSk7DQo+ICAJCXJldHVybiAtRUlOVkFM Ow0KPiAgCX0NCj4gQEAgLTcwOSw3ICs3MTIsNyBAQCBzdGF0aWMgaW50IGlteDZfc2V0dXBfcGh5 X21wbGwoc3RydWN0IGlteDZfcGNpZQ0KPiAqaW14Nl9wY2llKQ0KPiANCj4gIHN0YXRpYyBpbnQg aW14Nl9wY2llX3dhaXRfZm9yX3NwZWVkX2NoYW5nZShzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3Bj aWUpDQo+ICB7DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9IGlteDZfcGNpZS0+cGNpOw0KPiAr CXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAoaW14Nl9wY2llLT5wcCk7 DQo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7DQo+ICAJdTMyIHRtcDsNCj4gIAl1 bnNpZ25lZCBpbnQgcmV0cmllczsNCj4gQEAgLTg2Nyw3ICs4NzAsOCBAQCBzdGF0aWMgdm9pZCBp bXg2X3BjaWVfbHRzc21fZGlzYWJsZShzdHJ1Y3QgZGV2aWNlDQo+ICpkZXYpDQo+IA0KPiAgc3Rh dGljIHZvaWQgaW14Nl9wY2llX3BtX3R1cm5vZmYoc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2ll KQ0KPiAgew0KPiAtCXN0cnVjdCBkZXZpY2UgKmRldiA9IGlteDZfcGNpZS0+cGNpLT5kZXY7DQo+ ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChpbXg2X3BjaWUtPnBw KTsNCj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwY2ktPmRldjsNCj4gDQo+ICAJLyogU29tZSB2 YXJpYW50cyBoYXZlIGEgdHVybm9mZiByZXNldCBpbiBEVCAqLw0KPiAgCWlmIChpbXg2X3BjaWUt PnR1cm5vZmZfcmVzZXQpIHsNCj4gQEAgLTk0Miw3ICs5NDYsOCBAQCBzdGF0aWMgaW50IGlteDZf cGNpZV9yZXN1bWVfbm9pcnEoc3RydWN0IGRldmljZQ0KPiAqZGV2KQ0KPiAgew0KPiAgCWludCBy ZXQ7DQo+ICAJc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llID0gZGV2X2dldF9kcnZkYXRhKGRl dik7DQo+IC0Jc3RydWN0IHBjaWVfcG9ydCAqcHAgPSAmaW14Nl9wY2llLT5wY2ktPnBwOw0KPiAr CXN0cnVjdCBwY2llX3BvcnQgKnBwID0gaW14Nl9wY2llLT5wcDsNCj4gKwlzdHJ1Y3QgZHdfcGNp ZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKHBwKTsNCj4gDQo+ICAJaWYgKCEoaW14Nl9wY2ll LT5kcnZkYXRhLT5mbGFncyAmDQo+IElNWDZfUENJRV9GTEFHX1NVUFBPUlRTX1NVU1BFTkQpKQ0K PiAgCQlyZXR1cm4gMDsNCj4gQEAgLTk1Miw3ICs5NTcsNyBAQCBzdGF0aWMgaW50IGlteDZfcGNp ZV9yZXN1bWVfbm9pcnEoc3RydWN0IGRldmljZQ0KPiAqZGV2KQ0KPiAgCWlteDZfcGNpZV9kZWFz c2VydF9jb3JlX3Jlc2V0KGlteDZfcGNpZSk7DQo+ICAJZHdfcGNpZV9zZXR1cF9yYyhwcCk7DQo+ IA0KPiAtCXJldCA9IGlteDZfcGNpZV9zdGFydF9saW5rKGlteDZfcGNpZS0+cGNpKTsNCj4gKwly ZXQgPSBpbXg2X3BjaWVfc3RhcnRfbGluayhwY2kpOw0KPiAgCWlmIChyZXQgPCAwKQ0KPiAgCQlk ZXZfaW5mbyhkZXYsICJwY2llIGxpbmsgaXMgZG93biBhZnRlciByZXN1bWUuXG4iKTsNCj4gDQo+ IEBAIC05NjgsNiArOTczLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGlteDZf cGNpZV9wbV9vcHMNCj4gPSB7DQo+ICBzdGF0aWMgaW50IGlteDZfcGNpZV9wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgew0KPiAgCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZw ZGV2LT5kZXY7DQo+ICsJc3RydWN0IHBjaWVfcG9ydCAqcHA7DQo+ICAJc3RydWN0IGR3X3BjaWUg KnBjaTsNCj4gIAlzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWU7DQo+ICAJc3RydWN0IGRldmlj ZV9ub2RlICpucDsNCj4gQEAgLTk4MCwxNSArOTg2LDE3IEBAIHN0YXRpYyBpbnQgaW14Nl9wY2ll X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UNCj4gKnBkZXYpDQo+ICAJaWYgKCFpbXg2X3Bj aWUpDQo+ICAJCXJldHVybiAtRU5PTUVNOw0KPiANCj4gLQlwY2kgPSBkZXZtX2t6YWxsb2MoZGV2 LCBzaXplb2YoKnBjaSksIEdGUF9LRVJORUwpOw0KPiAtCWlmICghcGNpKQ0KPiArCXBwID0gZGV2 bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcCksIEdGUF9LRVJORUwpOw0KPiArCWlmICghcHApDQo+ ICAJCXJldHVybiAtRU5PTUVNOw0KPiANCj4gKwlwY2kgPSAmcHAtPnBjaWU7DQo+ICAJcGNpLT5k ZXYgPSBkZXY7DQo+ICAJcGNpLT5vcHMgPSAmZHdfcGNpZV9vcHM7DQo+IC0JcGNpLT5wcC5vcHMg PSAmaW14Nl9wY2llX2hvc3Rfb3BzOw0KPiArCXBwLT5vcHMgPSAmaW14Nl9wY2llX2hvc3Rfb3Bz Ow0KPiArDQo+ICsJaW14Nl9wY2llLT5wcCA9IHBwOw0KPiANCj4gLQlpbXg2X3BjaWUtPnBjaSA9 IHBjaTsNCj4gIAlpbXg2X3BjaWUtPmRydmRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEo ZGV2KTsNCj4gDQo+ICAJLyogRmluZCB0aGUgUEhZIGlmIG9uZSBpcyBkZWZpbmVkLCBvbmx5IGlt eDdkIHVzZXMgaXQgKi8NCj4gQEAgLTExMzYsNyArMTE0NCw3IEBAIHN0YXRpYyBpbnQgaW14Nl9w Y2llX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UNCj4gKnBkZXYpDQo+ICAJaWYgKHJldCkN Cj4gIAkJcmV0dXJuIHJldDsNCj4gDQo+IC0JcmV0ID0gZHdfcGNpZV9ob3N0X2luaXQoJnBjaS0+ cHApOw0KPiArCXJldCA9IGR3X3BjaWVfaG9zdF9pbml0KHBwKTsNCj4gIAlpZiAocmV0IDwgMCkN Cj4gIAkJcmV0dXJuIHJldDsNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9s bGVyL2R3Yy9wY2kta2V5c3RvbmUuYw0KPiBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3Bj aS1rZXlzdG9uZS5jDQo+IGluZGV4IDUzYWEzNWNiM2E0OS4uZTExY2I3ZWZhZDVjIDEwMDY0NA0K PiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2kta2V5c3RvbmUuYw0KPiArKysg Yi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2kta2V5c3RvbmUuYw0KPiBAQCAtMTEzLDcg KzExMyw4IEBAIHN0cnVjdCBrc19wY2llX29mX2RhdGEgew0KPiAgfTsNCj4gDQo+ICBzdHJ1Y3Qg a2V5c3RvbmVfcGNpZSB7DQo+IC0Jc3RydWN0IGR3X3BjaWUJCSpwY2k7DQo+ICsJc3RydWN0IHBj aWVfcG9ydAkqcHA7DQo+ICsJc3RydWN0IGR3X3BjaWVfZXAJKmVwOw0KPiAgCS8qIFBDSSBEZXZp Y2UgSUQgKi8NCj4gIAl1MzIJCQlkZXZpY2VfaWQ7DQo+ICAJaW50CQkJbGVnYWN5X2hvc3RfaXJx c1tQQ0lfTlVNX0lOVFhdOw0KPiBAQCAtMjU2LDcgKzI1Nyw3IEBAIHN0YXRpYyBpbnQga3NfcGNp ZV9tc2lfaG9zdF9pbml0KHN0cnVjdCBwY2llX3BvcnQNCj4gKnBwKQ0KPiAgc3RhdGljIHZvaWQg a3NfcGNpZV9oYW5kbGVfbGVnYWN5X2lycShzdHJ1Y3Qga2V5c3RvbmVfcGNpZSAqa3NfcGNpZSwN Cj4gIAkJCQkgICAgICBpbnQgb2Zmc2V0KQ0KPiAgew0KPiAtCXN0cnVjdCBkd19wY2llICpwY2kg PSBrc19wY2llLT5wY2k7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJv bV9wcChrc19wY2llLT5wcCk7DQo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7DQo+ ICAJdTMyIHBlbmRpbmc7DQo+ICAJaW50IHZpcnE7DQo+IEBAIC0yODEsNyArMjgyLDggQEAgc3Rh dGljIHZvaWQga3NfcGNpZV9lbmFibGVfZXJyb3JfaXJxKHN0cnVjdA0KPiBrZXlzdG9uZV9wY2ll ICprc19wY2llKQ0KPiAgc3RhdGljIGlycXJldHVybl90IGtzX3BjaWVfaGFuZGxlX2Vycm9yX2ly cShzdHJ1Y3Qga2V5c3RvbmVfcGNpZSAqa3NfcGNpZSkNCj4gIHsNCj4gIAl1MzIgcmVnOw0KPiAt CXN0cnVjdCBkZXZpY2UgKmRldiA9IGtzX3BjaWUtPnBjaS0+ZGV2Ow0KPiArCXN0cnVjdCBkd19w Y2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAoa3NfcGNpZS0+cHApOw0KPiArCXN0cnVjdCBk ZXZpY2UgKmRldiA9IHBjaS0+ZGV2Ow0KPiANCj4gIAlyZWcgPSBrc19wY2llX2FwcF9yZWFkbChr c19wY2llLCBFUlJfSVJRX1NUQVRVUyk7DQo+ICAJaWYgKCFyZWcpDQo+IEBAIC0zODgsOCArMzkw LDggQEAgc3RhdGljIHZvaWQga3NfcGNpZV9zZXR1cF9yY19hcHBfcmVncyhzdHJ1Y3QNCj4ga2V5 c3RvbmVfcGNpZSAqa3NfcGNpZSkNCj4gIHsNCj4gIAl1MzIgdmFsOw0KPiAgCXUzMiBudW1fdmll d3BvcnQgPSBrc19wY2llLT5udW1fdmlld3BvcnQ7DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9 IGtzX3BjaWUtPnBjaTsNCj4gLQlzdHJ1Y3QgcGNpZV9wb3J0ICpwcCA9ICZwY2ktPnBwOw0KPiAr CXN0cnVjdCBwY2llX3BvcnQgKnBwID0ga3NfcGNpZS0+cHA7DQo+ICsJc3RydWN0IGR3X3BjaWUg KnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChwcCk7DQo+ICAJdTY0IHN0YXJ0LCBlbmQ7DQo+ICAJ c3RydWN0IHJlc291cmNlICptZW07DQo+ICAJaW50IGk7DQo+IEBAIC01NjksOCArNTcxLDggQEAg c3RhdGljIHZvaWQga3NfcGNpZV9tc2lfaXJxX2hhbmRsZXIoc3RydWN0IGlycV9kZXNjDQo+ICpk ZXNjKQ0KPiAgCXVuc2lnbmVkIGludCBpcnEgPSBkZXNjLT5pcnFfZGF0YS5od2lycTsNCj4gIAlz dHJ1Y3Qga2V5c3RvbmVfcGNpZSAqa3NfcGNpZSA9IGlycV9kZXNjX2dldF9oYW5kbGVyX2RhdGEo ZGVzYyk7DQo+ICAJdTMyIG9mZnNldCA9IGlycSAtIGtzX3BjaWUtPm1zaV9ob3N0X2lycTsNCj4g LQlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0ga3NfcGNpZS0+cGNpOw0KPiAtCXN0cnVjdCBwY2llX3Bv cnQgKnBwID0gJnBjaS0+cHA7DQo+ICsJc3RydWN0IHBjaWVfcG9ydCAqcHAgPSBrc19wY2llLT5w cDsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKHBwKTsNCj4g IAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwY2ktPmRldjsNCj4gIAlzdHJ1Y3QgaXJxX2NoaXAgKmNo aXAgPSBpcnFfZGVzY19nZXRfY2hpcChkZXNjKTsNCj4gIAl1MzIgdmVjdG9yLCB2aXJxLCByZWcs IHBvczsNCj4gQEAgLTYxNSw3ICs2MTcsNyBAQCBzdGF0aWMgdm9pZCBrc19wY2llX2xlZ2FjeV9p cnFfaGFuZGxlcihzdHJ1Y3QNCj4gaXJxX2Rlc2MgKmRlc2MpDQo+ICB7DQo+ICAJdW5zaWduZWQg aW50IGlycSA9IGlycV9kZXNjX2dldF9pcnEoZGVzYyk7DQo+ICAJc3RydWN0IGtleXN0b25lX3Bj aWUgKmtzX3BjaWUgPSBpcnFfZGVzY19nZXRfaGFuZGxlcl9kYXRhKGRlc2MpOw0KPiAtCXN0cnVj dCBkd19wY2llICpwY2kgPSBrc19wY2llLT5wY2k7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9 IHRvX2R3X3BjaWVfZnJvbV9wcChrc19wY2llLT5wcCk7DQo+ICAJc3RydWN0IGRldmljZSAqZGV2 ID0gcGNpLT5kZXY7DQo+ICAJdTMyIGlycV9vZmZzZXQgPSBpcnEgLSBrc19wY2llLT5sZWdhY3lf aG9zdF9pcnFzWzBdOw0KPiAgCXN0cnVjdCBpcnFfY2hpcCAqY2hpcCA9IGlycV9kZXNjX2dldF9j aGlwKGRlc2MpOw0KPiBAQCAtNjM0LDcgKzYzNiw4IEBAIHN0YXRpYyB2b2lkIGtzX3BjaWVfbGVn YWN5X2lycV9oYW5kbGVyKHN0cnVjdA0KPiBpcnFfZGVzYyAqZGVzYykNCj4gDQo+ICBzdGF0aWMg aW50IGtzX3BjaWVfY29uZmlnX21zaV9pcnEoc3RydWN0IGtleXN0b25lX3BjaWUgKmtzX3BjaWUp DQo+ICB7DQo+IC0Jc3RydWN0IGRldmljZSAqZGV2ID0ga3NfcGNpZS0+cGNpLT5kZXY7DQo+ICsJ c3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChrc19wY2llLT5wcCk7DQo+ ICsJc3RydWN0IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7DQo+ICAJc3RydWN0IGRldmljZV9ub2Rl ICpucCA9IGtzX3BjaWUtPm5wOw0KPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqaW50Y19ucDsNCj4g IAlzdHJ1Y3QgaXJxX2RhdGEgKmlycV9kYXRhOw0KPiBAQCAtNjg4LDcgKzY5MSw4IEBAIHN0YXRp YyBpbnQga3NfcGNpZV9jb25maWdfbXNpX2lycShzdHJ1Y3QNCj4ga2V5c3RvbmVfcGNpZSAqa3Nf cGNpZSkNCj4gDQo+ICBzdGF0aWMgaW50IGtzX3BjaWVfY29uZmlnX2xlZ2FjeV9pcnEoc3RydWN0 IGtleXN0b25lX3BjaWUgKmtzX3BjaWUpDQo+ICB7DQo+IC0Jc3RydWN0IGRldmljZSAqZGV2ID0g a3NfcGNpZS0+cGNpLT5kZXY7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVf ZnJvbV9wcChrc19wY2llLT5wcCk7DQo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7 DQo+ICAJc3RydWN0IGlycV9kb21haW4gKmxlZ2FjeV9pcnFfZG9tYWluOw0KPiAgCXN0cnVjdCBk ZXZpY2Vfbm9kZSAqbnAgPSBrc19wY2llLT5ucDsNCj4gIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKmlu dGNfbnA7DQo+IEBAIC03NzEsNyArNzc1LDcgQEAgc3RhdGljIGludCBfX2luaXQga3NfcGNpZV9p bml0X2lkKHN0cnVjdCBrZXlzdG9uZV9wY2llDQo+ICprc19wY2llKQ0KPiAgCWludCByZXQ7DQo+ ICAJdW5zaWduZWQgaW50IGlkOw0KPiAgCXN0cnVjdCByZWdtYXAgKmRldmN0cmxfcmVnczsNCj4g LQlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0ga3NfcGNpZS0+cGNpOw0KPiArCXN0cnVjdCBkd19wY2ll ICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAoa3NfcGNpZS0+cHApOw0KPiAgCXN0cnVjdCBkZXZp Y2UgKmRldiA9IHBjaS0+ZGV2Ow0KPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYtPm9m X25vZGU7DQo+IA0KPiBAQCAtODc1LDcgKzg3OSw3IEBAIHN0YXRpYyB2b2lkIGtzX3BjaWVfYW02 NTRfZXBfaW5pdChzdHJ1Y3QNCj4gZHdfcGNpZV9lcCAqZXApDQo+IA0KPiAgc3RhdGljIHZvaWQg a3NfcGNpZV9hbTY1NF9yYWlzZV9sZWdhY3lfaXJxKHN0cnVjdCBrZXlzdG9uZV9wY2llICprc19w Y2llKQ0KPiAgew0KPiAtCXN0cnVjdCBkd19wY2llICpwY2kgPSBrc19wY2llLT5wY2k7DQo+ICsJ c3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9lcChrc19wY2llLT5lcCk7DQo+ ICAJdTggaW50X3BpbjsNCj4gDQo+ICAJaW50X3BpbiA9IGR3X3BjaWVfcmVhZGJfZGJpKHBjaSwg UENJX0lOVEVSUlVQVF9QSU4pOw0KPiBAQCAtMTA4Nyw2ICsxMDkxLDggQEAgc3RhdGljIGludCBf X2luaXQga3NfcGNpZV9wcm9iZShzdHJ1Y3QNCj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAg CWNvbnN0IHN0cnVjdCBrc19wY2llX29mX2RhdGEgKmRhdGE7DQo+ICAJY29uc3Qgc3RydWN0IG9m X2RldmljZV9pZCAqbWF0Y2g7DQo+ICAJZW51bSBkd19wY2llX2RldmljZV9tb2RlIG1vZGU7DQo+ ICsJc3RydWN0IGR3X3BjaWVfZXAgKmVwOw0KPiArCXN0cnVjdCBwY2llX3BvcnQgKnBwOw0KPiAg CXN0cnVjdCBkd19wY2llICpwY2k7DQo+ICAJc3RydWN0IGtleXN0b25lX3BjaWUgKmtzX3BjaWU7 DQo+ICAJc3RydWN0IGRldmljZV9saW5rICoqbGluazsNCj4gQEAgLTExMTYsMTAgKzExMjIsNiBA QCBzdGF0aWMgaW50IF9faW5pdCBrc19wY2llX3Byb2JlKHN0cnVjdA0KPiBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpDQo+ICAJaWYgKCFrc19wY2llKQ0KPiAgCQlyZXR1cm4gLUVOT01FTTsNCj4gDQo+ IC0JcGNpID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwY2kpLCBHRlBfS0VSTkVMKTsNCj4g LQlpZiAoIXBjaSkNCj4gLQkJcmV0dXJuIC1FTk9NRU07DQo+IC0NCj4gIAlyZXMgPSBwbGF0Zm9y bV9nZXRfcmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfTUVNLA0KPiAiYXBwIik7DQo+ ICAJa3NfcGNpZS0+dmFfYXBwX2Jhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMp Ow0KPiAgCWlmIChJU19FUlIoa3NfcGNpZS0+dmFfYXBwX2Jhc2UpKQ0KPiBAQCAtMTEzNSwxMiAr MTEzNyw2IEBAIHN0YXRpYyBpbnQgX19pbml0IGtzX3BjaWVfcHJvYmUoc3RydWN0DQo+IHBsYXRm b3JtX2RldmljZSAqcGRldikNCj4gIAlpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsICJ0 aSxhbTY1NC1wY2llLXJjIikpDQo+ICAJCWtzX3BjaWUtPmlzX2FtNiA9IHRydWU7DQo+IA0KPiAt CXBjaS0+ZGJpX2Jhc2UgPSBiYXNlOw0KPiAtCXBjaS0+ZGJpX2Jhc2UyID0gYmFzZTsNCj4gLQlw Y2ktPmRldiA9IGRldjsNCj4gLQlwY2ktPm9wcyA9ICZrc19wY2llX2R3X3BjaWVfb3BzOw0KPiAt CXBjaS0+dmVyc2lvbiA9IHZlcnNpb247DQo+IC0NCj4gIAlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJx KHBkZXYsIDApOw0KPiAgCWlmIChpcnEgPCAwKQ0KPiAgCQlyZXR1cm4gaXJxOw0KPiBAQCAtMTE4 NCw3ICsxMTgwLDYgQEAgc3RhdGljIGludCBfX2luaXQga3NfcGNpZV9wcm9iZShzdHJ1Y3QNCj4g cGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgCX0NCj4gDQo+ICAJa3NfcGNpZS0+bnAgPSBucDsN Cj4gLQlrc19wY2llLT5wY2kgPSBwY2k7DQo+ICAJa3NfcGNpZS0+bGluayA9IGxpbms7DQo+ICAJ a3NfcGNpZS0+bnVtX2xhbmVzID0gbnVtX2xhbmVzOw0KPiAgCWtzX3BjaWUtPnBoeSA9IHBoeTsN Cj4gQEAgLTEyMTIsNyArMTIwNyw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGtzX3BjaWVfcHJvYmUo c3RydWN0DQo+IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIAkJZ290byBlcnJfZ2V0X3N5bmM7 DQo+ICAJfQ0KPiANCj4gLQlpZiAocGNpLT52ZXJzaW9uID49IDB4NDgwQSkNCj4gKwlpZiAodmVy c2lvbiA+PSAweDQ4MEEpDQo+ICAJCXJldCA9IGtzX3BjaWVfYW02NTRfc2V0X21vZGUoZGV2LCBt b2RlKTsNCj4gIAllbHNlDQo+ICAJCXJldCA9IGtzX3BjaWVfc2V0X21vZGUoZGV2KTsNCj4gQEAg LTEyMjEsNiArMTIxNiwyMCBAQCBzdGF0aWMgaW50IF9faW5pdCBrc19wY2llX3Byb2JlKHN0cnVj dA0KPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+IA0KPiAgCXN3aXRjaCAobW9kZSkgew0KPiAg CWNhc2UgRFdfUENJRV9SQ19UWVBFOg0KPiArCQlwcCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVv ZigqcHApLCBHRlBfS0VSTkVMKTsNCj4gKwkJaWYgKCFwcCkgew0KPiArCQkJcmV0ID0gLUVOT01F TTsNCj4gKwkJCWdvdG8gZXJyX2dldF9zeW5jOw0KPiArCQl9DQo+ICsNCj4gKwkJa3NfcGNpZS0+ cHAgPSBwcDsNCj4gKwkJcGNpID0gJnBwLT5wY2llOw0KPiArCQlwY2ktPmRiaV9iYXNlID0gYmFz ZTsNCj4gKwkJcGNpLT5kYmlfYmFzZTIgPSBiYXNlOw0KPiArCQlwY2ktPmRldiA9IGRldjsNCj4g KwkJcGNpLT5vcHMgPSAma3NfcGNpZV9kd19wY2llX29wczsNCj4gKwkJcGNpLT52ZXJzaW9uID0g dmVyc2lvbjsNCj4gKw0KPiAgCQlpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1BDSV9LRVlTVE9ORV9I T1NUKSkgew0KPiAgCQkJcmV0ID0gLUVOT0RFVjsNCj4gIAkJCWdvdG8gZXJyX2dldF9zeW5jOw0K PiBAQCAtMTI0NiwxOSArMTI1NSwzMyBAQCBzdGF0aWMgaW50IF9faW5pdCBrc19wY2llX3Byb2Jl KHN0cnVjdA0KPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAJCX0NCj4gDQo+ICAJCWtzX3Bj aWUtPm51bV92aWV3cG9ydCA9IG51bV92aWV3cG9ydDsNCj4gLQkJcGNpLT5wcC5vcHMgPSBob3N0 X29wczsNCj4gLQkJcmV0ID0gZHdfcGNpZV9ob3N0X2luaXQoJnBjaS0+cHApOw0KPiArCQlwcC0+ b3BzID0gaG9zdF9vcHM7DQo+ICsJCXJldCA9IGR3X3BjaWVfaG9zdF9pbml0KHBwKTsNCj4gIAkJ aWYgKHJldCA8IDApDQo+ICAJCQlnb3RvIGVycl9nZXRfc3luYzsNCj4gIAkJYnJlYWs7DQo+ICAJ Y2FzZSBEV19QQ0lFX0VQX1RZUEU6DQo+ICsJCWVwID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9m KCplcCksIEdGUF9LRVJORUwpOw0KPiArCQlpZiAoIWVwKSB7DQo+ICsJCQlyZXQgPSAtRU5PTUVN Ow0KPiArCQkJZ290byBlcnJfZ2V0X3N5bmM7DQo+ICsJCX0NCj4gKw0KPiArCQlrc19wY2llLT5l cCA9IGVwOw0KPiArCQlwY2kgPSAmZXAtPnBjaWU7DQo+ICsJCXBjaS0+ZGJpX2Jhc2UgPSBiYXNl Ow0KPiArCQlwY2ktPmRiaV9iYXNlMiA9IGJhc2U7DQo+ICsJCXBjaS0+ZGV2ID0gZGV2Ow0KPiAr CQlwY2ktPm9wcyA9ICZrc19wY2llX2R3X3BjaWVfb3BzOw0KPiArCQlwY2ktPnZlcnNpb24gPSB2 ZXJzaW9uOw0KPiArDQo+ICAJCWlmICghSVNfRU5BQkxFRChDT05GSUdfUENJX0tFWVNUT05FX0VQ KSkgew0KPiAgCQkJcmV0ID0gLUVOT0RFVjsNCj4gIAkJCWdvdG8gZXJyX2dldF9zeW5jOw0KPiAg CQl9DQo+IA0KPiAtCQlwY2ktPmVwLm9wcyA9IGVwX29wczsNCj4gLQkJcmV0ID0gZHdfcGNpZV9l cF9pbml0KCZwY2ktPmVwKTsNCj4gKwkJZXAtPm9wcyA9IGVwX29wczsNCj4gKwkJcmV0ID0gZHdf cGNpZV9lcF9pbml0KGVwKTsNCj4gIAkJaWYgKHJldCA8IDApDQo+ICAJCQlnb3RvIGVycl9nZXRf c3luYzsNCj4gIAkJYnJlYWs7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVy L2R3Yy9wY2ktbGF5ZXJzY2FwZS1lcC5jDQo+IGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2Mv cGNpLWxheWVyc2NhcGUtZXAuYw0KPiBpbmRleCBkY2VlOTVlMTYxMzkuLmFiNThkZWRhYzQwMSAx MDA2NDQNCj4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWxheWVyc2NhcGUt ZXAuYw0KPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktbGF5ZXJzY2FwZS1l cC5jDQo+IEBAIC0yNyw3ICsyNyw3IEBAIHN0cnVjdCBsc19wY2llX2VwX2RydmRhdGEgew0KPiAg fTsNCj4gDQo+ICBzdHJ1Y3QgbHNfcGNpZV9lcCB7DQo+IC0Jc3RydWN0IGR3X3BjaWUJCQkqcGNp Ow0KPiArCXN0cnVjdCBkd19wY2llX2VwCQkqZXA7DQo+ICAJc3RydWN0IHBjaV9lcGNfZmVhdHVy ZXMJCSpsc19lcGM7DQo+ICAJY29uc3Qgc3RydWN0IGxzX3BjaWVfZXBfZHJ2ZGF0YSAqZHJ2ZGF0 YTsNCj4gIH07DQo+IEBAIC0xMjYsNiArMTI2LDcgQEAgc3RhdGljIGludCBfX2luaXQgbHNfcGNp ZV9lcF9wcm9iZShzdHJ1Y3QNCj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgew0KPiAgCXN0 cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+ICAJc3RydWN0IGR3X3BjaWUgKnBjaTsN Cj4gKwlzdHJ1Y3QgZHdfcGNpZV9lcCAqZXA7DQo+ICAJc3RydWN0IGxzX3BjaWVfZXAgKnBjaWU7 DQo+ICAJc3RydWN0IHBjaV9lcGNfZmVhdHVyZXMgKmxzX2VwYzsNCj4gIAlzdHJ1Y3QgcmVzb3Vy Y2UgKmRiaV9iYXNlOw0KPiBAQCAtMTM0LDIyICsxMzUsMjMgQEAgc3RhdGljIGludCBfX2luaXQg bHNfcGNpZV9lcF9wcm9iZShzdHJ1Y3QNCj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgCWlm ICghcGNpZSkNCj4gIAkJcmV0dXJuIC1FTk9NRU07DQo+IA0KPiAtCXBjaSA9IGRldm1fa3phbGxv YyhkZXYsIHNpemVvZigqcGNpKSwgR0ZQX0tFUk5FTCk7DQo+IC0JaWYgKCFwY2kpDQo+ICsJZXAg PSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmVwKSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCFl cCkNCj4gIAkJcmV0dXJuIC1FTk9NRU07DQo+IA0KPiAgCWxzX2VwYyA9IGRldm1fa3phbGxvYyhk ZXYsIHNpemVvZigqbHNfZXBjKSwgR0ZQX0tFUk5FTCk7DQo+ICAJaWYgKCFsc19lcGMpDQo+ICAJ CXJldHVybiAtRU5PTUVNOw0KPiANCj4gKwlsc19lcGMtPmJhcl9maXhlZF82NGJpdCA9ICgxIDw8 IEJBUl8yKSB8ICgxIDw8IEJBUl80KSwNCj4gKw0KPiAgCXBjaWUtPmRydmRhdGEgPSBvZl9kZXZp Y2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsNCj4gDQo+ICsJcGNpID0gJmVwLT5wY2llOw0KPiAgCXBj aS0+ZGV2ID0gZGV2Ow0KPiAgCXBjaS0+b3BzID0gcGNpZS0+ZHJ2ZGF0YS0+ZHdfcGNpZV9vcHM7 DQo+IA0KPiAtCWxzX2VwYy0+YmFyX2ZpeGVkXzY0Yml0ID0gKDEgPDwgQkFSXzIpIHwgKDEgPDwg QkFSXzQpLA0KPiAtDQo+IC0JcGNpZS0+cGNpID0gcGNpOw0KPiArCXBjaWUtPmVwID0gZXA7DQo+ ICAJcGNpZS0+bHNfZXBjID0gbHNfZXBjOw0KPiANCj4gIAlkYmlfYmFzZSA9IHBsYXRmb3JtX2dl dF9yZXNvdXJjZV9ieW5hbWUocGRldiwgSU9SRVNPVVJDRV9NRU0sDQo+ICJyZWdzIik7DQo+IEBA IC0xNTcsMTEgKzE1OSwxMSBAQCBzdGF0aWMgaW50IF9faW5pdCBsc19wY2llX2VwX3Byb2JlKHN0 cnVjdA0KPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAJaWYgKElTX0VSUihwY2ktPmRiaV9i YXNlKSkNCj4gIAkJcmV0dXJuIFBUUl9FUlIocGNpLT5kYmlfYmFzZSk7DQo+IA0KPiAtCXBjaS0+ ZXAub3BzID0gJmxzX3BjaWVfZXBfb3BzOw0KPiArCWVwLT5vcHMgPSAmbHNfcGNpZV9lcF9vcHM7 DQo+IA0KPiAgCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHBjaWUpOw0KPiANCj4gLQlyZXR1 cm4gZHdfcGNpZV9lcF9pbml0KCZwY2ktPmVwKTsNCj4gKwlyZXR1cm4gZHdfcGNpZV9lcF9pbml0 KGVwKTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBsc19wY2ll X2VwX2RyaXZlciA9IHsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdj L3BjaS1sYXllcnNjYXBlLmMNCj4gYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktbGF5 ZXJzY2FwZS5jDQo+IGluZGV4IGE1OTAxOTRjMGY5NS4uNmFjNGZiOGE5MjExIDEwMDY0NA0KPiAt LS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktbGF5ZXJzY2FwZS5jDQo+ICsrKyBi L2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1sYXllcnNjYXBlLmMNCj4gQEAgLTcxLDcg KzcxLDcgQEAgc3RydWN0IGxzX3BjaWVfZHJ2ZGF0YSB7DQo+ICB9Ow0KPiANCj4gIHN0cnVjdCBs c19wY2llIHsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSAqcGNpOw0KPiArCXN0cnVjdCBwY2llX3BvcnQg KnBwOw0KPiAgCWNvbnN0IHN0cnVjdCBsc19wY2llX2RydmRhdGEgKmRydmRhdGE7DQo+ICAJdm9p ZCBfX2lvbWVtICpwZl9iYXNlOw0KPiAgCXZvaWQgX19pb21lbSAqbHV0X2Jhc2U7DQo+IEBAIC04 OCw3ICs4OCw3IEBAIHN0cnVjdCBsc19wY2llIHsNCj4gDQo+ICBzdGF0aWMgYm9vbCBsc19wY2ll X2lzX2JyaWRnZShzdHJ1Y3QgbHNfcGNpZSAqcGNpZSkNCj4gIHsNCj4gLQlzdHJ1Y3QgZHdfcGNp ZSAqcGNpID0gcGNpZS0+cGNpOw0KPiArCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2ll X2Zyb21fcHAocGNpZS0+cHApOw0KPiAgCXUzMiBoZWFkZXJfdHlwZTsNCj4gDQo+ICAJaGVhZGVy X3R5cGUgPSBpb3JlYWQ4KHBjaS0+ZGJpX2Jhc2UgKyBQQ0lfSEVBREVSX1RZUEUpOw0KPiBAQCAt MTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBib29sIGxzX3BjaWVfaXNfYnJpZGdlKHN0cnVjdCBsc19w Y2llICpwY2llKQ0KPiAgLyogQ2xlYXIgbXVsdGktZnVuY3Rpb24gYml0ICovDQo+ICBzdGF0aWMg dm9pZCBsc19wY2llX2NsZWFyX211bHRpZnVuY3Rpb24oc3RydWN0IGxzX3BjaWUgKnBjaWUpDQo+ ICB7DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9IHBjaWUtPnBjaTsNCj4gKwlzdHJ1Y3QgZHdf cGNpZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKHBjaWUtPnBwKTsNCj4gDQo+ICAJaW93cml0 ZTgoUENJX0hFQURFUl9UWVBFX0JSSURHRSwgcGNpLT5kYmlfYmFzZSArDQo+IFBDSV9IRUFERVJf VFlQRSk7DQo+ICB9DQo+IEBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGljIHZvaWQgbHNfcGNpZV9j bGVhcl9tdWx0aWZ1bmN0aW9uKHN0cnVjdCBsc19wY2llDQo+ICpwY2llKQ0KPiAgc3RhdGljIHZv aWQgbHNfcGNpZV9kcm9wX21zZ190bHAoc3RydWN0IGxzX3BjaWUgKnBjaWUpDQo+ICB7DQo+ICAJ dTMyIHZhbDsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gcGNpZS0+cGNpOw0KPiArCXN0cnVj dCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAocGNpZS0+cHApOw0KPiANCj4gIAl2 YWwgPSBpb3JlYWQzMihwY2ktPmRiaV9iYXNlICsgUENJRV9TVFJGTVIxKTsNCj4gIAl2YWwgJj0g MHhERkZGRkZGRjsNCj4gQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgdm9pZCBsc19wY2llX2Ry b3BfbXNnX3RscChzdHJ1Y3QgbHNfcGNpZQ0KPiAqcGNpZSkNCj4gIC8qIEZvcndhcmQgZXJyb3Ig cmVzcG9uc2Ugb2Ygb3V0Ym91bmQgbm9uLXBvc3RlZCByZXF1ZXN0cyAqLw0KPiAgc3RhdGljIHZv aWQgbHNfcGNpZV9maXhfZXJyb3JfcmVzcG9uc2Uoc3RydWN0IGxzX3BjaWUgKnBjaWUpDQo+ICB7 DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9IHBjaWUtPnBjaTsNCj4gKwlzdHJ1Y3QgZHdfcGNp ZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKHBjaWUtPnBwKTsNCj4gDQo+ICAJaW93cml0ZTMy KFBDSUVfQUJTRVJSX1NFVFRJTkcsIHBjaS0+ZGJpX2Jhc2UgKyBQQ0lFX0FCU0VSUik7DQo+ICB9 DQo+IEBAIC0xNjIsNiArMTYyLDcgQEAgc3RhdGljIHZvaWQgbHNfcGNpZV9zZW5kX3R1cm5vZmZf bXNnKHN0cnVjdCBsc19wY2llDQo+ICpwY2llKQ0KPiAgew0KPiAgCXUzMiB2YWw7DQo+ICAJaW50 IHJldDsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKHBjaWUt PnBwKTsNCj4gDQo+ICAJdmFsID0gbHNfcGNpZV9wZl9yZWFkbChwY2llLCBMU19QQ0lFX1BGX01D Uik7DQo+ICAJdmFsIHw9IFBGX01DUl9QVE9NUjsNCj4gQEAgLTE3MCwxNSArMTcxLDE2IEBAIHN0 YXRpYyB2b2lkIGxzX3BjaWVfc2VuZF90dXJub2ZmX21zZyhzdHJ1Y3QNCj4gbHNfcGNpZSAqcGNp ZSkNCj4gIAlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQobHNfcGNpZV9wZl9yZWFkbF9hZGRyLCBM U19QQ0lFX1BGX01DUiwNCj4gIAkJCQkgdmFsLCAhKHZhbCAmIFBGX01DUl9QVE9NUiksIDEwMCwg MTAwMDApOw0KPiAgCWlmIChyZXQpDQo+IC0JCWRldl9pbmZvKHBjaWUtPnBjaS0+ZGV2LCAicG9s bCB0dXJuIG9mZiBtZXNzYWdlIHRpbWVvdXRcbiIpOw0KPiArCQlkZXZfaW5mbyhwY2ktPmRldiwg InBvbGwgdHVybiBvZmYgbWVzc2FnZSB0aW1lb3V0XG4iKTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMg dm9pZCBsczEwMjFhX3BjaWVfc2VuZF90dXJub2ZmX21zZyhzdHJ1Y3QgbHNfcGNpZSAqcGNpZSkN Cj4gIHsNCj4gIAl1MzIgdmFsOw0KPiArCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2ll X2Zyb21fcHAocGNpZS0+cHApOw0KPiANCj4gIAlpZiAoIXBjaWUtPnNjZmcpIHsNCj4gLQkJZGV2 X2RiZyhwY2llLT5wY2ktPmRldiwgIlNZU0NGRyBpcyBOVUxMXG4iKTsNCj4gKwkJZGV2X2RiZyhw Y2ktPmRldiwgIlNZU0NGRyBpcyBOVUxMXG4iKTsNCj4gIAkJcmV0dXJuOw0KPiAgCX0NCj4gDQo+ IEBAIC0xOTgsOSArMjAwLDEwIEBAIHN0YXRpYyB2b2lkIGxzMTAyMWFfcGNpZV9zZW5kX3R1cm5v ZmZfbXNnKHN0cnVjdA0KPiBsc19wY2llICpwY2llKQ0KPiAgc3RhdGljIHZvaWQgbHMxMDQzYV9w Y2llX3NlbmRfdHVybm9mZl9tc2coc3RydWN0IGxzX3BjaWUgKnBjaWUpDQo+ICB7DQo+ICAJdTMy IHZhbDsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKHBjaWUt PnBwKTsNCj4gDQo+ICAJaWYgKCFwY2llLT5zY2ZnKSB7DQo+IC0JCWRldl9kYmcocGNpZS0+cGNp LT5kZXYsICJTWVNDRkcgaXMgTlVMTFxuIik7DQo+ICsJCWRldl9kYmcocGNpLT5kZXYsICJTWVND RkcgaXMgTlVMTFxuIik7DQo+ICAJCXJldHVybjsNCj4gIAl9DQo+IA0KPiBAQCAtMjIxLDYgKzIy NCw3IEBAIHN0YXRpYyB2b2lkIGxzX3BjaWVfZXhpdF9mcm9tX2wyKHN0cnVjdCBsc19wY2llICpw Y2llKQ0KPiAgew0KPiAgCXUzMiB2YWw7DQo+ICAJaW50IHJldDsNCj4gKwlzdHJ1Y3QgZHdfcGNp ZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKHBjaWUtPnBwKTsNCj4gDQo+ICAJdmFsID0gbHNf cGNpZV9wZl9yZWFkbChwY2llLCBMU19QQ0lFX1BGX01DUik7DQo+ICAJdmFsIHw9IFBGX01DUl9F WEwyUzsNCj4gQEAgLTIyOSwxMiArMjMzLDEyIEBAIHN0YXRpYyB2b2lkIGxzX3BjaWVfZXhpdF9m cm9tX2wyKHN0cnVjdCBsc19wY2llDQo+ICpwY2llKQ0KPiAgCXJldCA9IHJlYWR4X3BvbGxfdGlt ZW91dChsc19wY2llX3BmX3JlYWRsX2FkZHIsIExTX1BDSUVfUEZfTUNSLA0KPiAgCQkJCSB2YWws ICEodmFsICYgUEZfTUNSX0VYTDJTKSwgMTAwLCAxMDAwMCk7DQo+ICAJaWYgKHJldCkNCj4gLQkJ ZGV2X2luZm8ocGNpZS0+cGNpLT5kZXYsICJwb2xsIGV4aXQgTDIgc3RhdGUgdGltZW91dFxuIik7 DQo+ICsJCWRldl9pbmZvKHBjaS0+ZGV2LCAicG9sbCBleGl0IEwyIHN0YXRlIHRpbWVvdXRcbiIp Ow0KPiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lkIGxzX3BjaWVfcmV0cmFpbl9saW5rKHN0cnVjdCBs c19wY2llICpwY2llKQ0KPiAgew0KPiAtCXN0cnVjdCBkd19wY2llICpwY2kgPSBwY2llLT5wY2k7 DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChwY2llLT5wcCk7 DQo+ICAJdTggb2Zmc2V0ID0gZHdfcGNpZV9maW5kX2NhcGFiaWxpdHkocGNpLCBQQ0lfQ0FQX0lE X0VYUCk7DQo+ICAJdTMyIHZhbDsNCj4gDQo+IEBAIC0yODYsNyArMjkwLDggQEAgc3RhdGljIHZv aWQgbHMxMDQzYV9wY2llX2V4aXRfZnJvbV9sMihzdHJ1Y3QgbHNfcGNpZQ0KPiAqcGNpZSkNCj4g DQo+ICBzdGF0aWMgaW50IGxzMTAyMWFfcGNpZV9wbV9pbml0KHN0cnVjdCBsc19wY2llICpwY2ll KQ0KPiAgew0KPiAtCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaWUtPnBjaS0+ZGV2Ow0KPiArCXN0 cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAocGNpZS0+cHApOw0KPiArCXN0 cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ZGV2Ow0KPiAgCXUzMiBpbmRleFsyXTsNCj4gIAlpbnQg cmV0Ow0KPiANCj4gQEAgLTMxOCw3ICszMjMsNyBAQCBzdGF0aWMgaW50IGxzX3BjaWVfcG1faW5p dChzdHJ1Y3QgbHNfcGNpZSAqcGNpZSkNCj4gDQo+ICBzdGF0aWMgdm9pZCBsc19wY2llX3NldF9k c3RhdGUoc3RydWN0IGxzX3BjaWUgKnBjaWUsIHUzMiBkc3RhdGUpDQo+ICB7DQo+IC0Jc3RydWN0 IGR3X3BjaWUgKnBjaSA9IHBjaWUtPnBjaTsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9f ZHdfcGNpZV9mcm9tX3BwKHBjaWUtPnBwKTsNCj4gIAl1OCBvZmZzZXQgPSBkd19wY2llX2ZpbmRf Y2FwYWJpbGl0eShwY2ksIFBDSV9DQVBfSURfUE0pOw0KPiAgCXUzMiB2YWw7DQo+IA0KPiBAQCAt NDEwLDYgKzQxNSw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGxzX3BjaWVfcHJvYmUoc3RydWN0DQo+ IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIHsNCj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAm cGRldi0+ZGV2Ow0KPiAgCXN0cnVjdCBkd19wY2llICpwY2k7DQo+ICsJc3RydWN0IHBjaWVfcG9y dCAqcHA7DQo+ICAJc3RydWN0IGxzX3BjaWUgKnBjaWU7DQo+ICAJc3RydWN0IHJlc291cmNlICpk YmlfYmFzZTsNCj4gDQo+IEBAIC00MTcsMTYgKzQyMywxNyBAQCBzdGF0aWMgaW50IF9faW5pdCBs c19wY2llX3Byb2JlKHN0cnVjdA0KPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAJaWYgKCFw Y2llKQ0KPiAgCQlyZXR1cm4gLUVOT01FTTsNCj4gDQo+IC0JcGNpID0gZGV2bV9remFsbG9jKGRl diwgc2l6ZW9mKCpwY2kpLCBHRlBfS0VSTkVMKTsNCj4gLQlpZiAoIXBjaSkNCj4gKwlwcCA9IGRl dm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHApLCBHRlBfS0VSTkVMKTsNCj4gKwlpZiAoIXBwKQ0K PiAgCQlyZXR1cm4gLUVOT01FTTsNCj4gDQo+ICAJcGNpZS0+ZHJ2ZGF0YSA9IG9mX2RldmljZV9n ZXRfbWF0Y2hfZGF0YShkZXYpOw0KPiANCj4gKwlwY2kgPSAmcHAtPnBjaWU7DQo+ICAJcGNpLT5k ZXYgPSBkZXY7DQo+IC0JcGNpLT5wcC5vcHMgPSBwY2llLT5kcnZkYXRhLT5vcHM7DQo+ICsJcHAt Pm9wcyA9IHBjaWUtPmRydmRhdGEtPm9wczsNCj4gDQo+IC0JcGNpZS0+cGNpID0gcGNpOw0KPiAr CXBjaWUtPnBwID0gcHA7DQo+IA0KPiAgCWRiaV9iYXNlID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNl X2J5bmFtZShwZGV2LCBJT1JFU09VUkNFX01FTSwNCj4gInJlZ3MiKTsNCj4gIAlwY2ktPmRiaV9i YXNlID0gZGV2bV9wY2lfcmVtYXBfY2ZnX3Jlc291cmNlKGRldiwgZGJpX2Jhc2UpOw0KPiBAQCAt NDQ2LDEzICs0NTMsMTUgQEAgc3RhdGljIGludCBfX2luaXQgbHNfcGNpZV9wcm9iZShzdHJ1Y3QN Cj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiANCj4gIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShw ZGV2LCBwY2llKTsNCj4gDQo+IC0JcmV0dXJuIGR3X3BjaWVfaG9zdF9pbml0KCZwY2ktPnBwKTsN Cj4gKwlyZXR1cm4gZHdfcGNpZV9ob3N0X2luaXQocHApOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBi b29sIGxzX3BjaWVfcG1fY2hlY2soc3RydWN0IGxzX3BjaWUgKnBjaWUpDQo+ICB7DQo+ICsJc3Ry dWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChwY2llLT5wcCk7DQo+ICsNCj4g IAlpZiAoIXBjaWUtPmVwX3ByZXNlbmNlKSB7DQo+IC0JCWRldl9kYmcocGNpZS0+cGNpLT5kZXYs ICJFbmRwb2ludCBpc24ndCBwcmVzZW50XG4iKTsNCj4gKwkJZGV2X2RiZyhwY2ktPmRldiwgIkVu ZHBvaW50IGlzbid0IHByZXNlbnRcbiIpOw0KPiAgCQlyZXR1cm4gZmFsc2U7DQo+ICAJfQ0KPiAN Cj4gQEAgLTQ2Niw3ICs0NzUsNyBAQCBzdGF0aWMgYm9vbCBsc19wY2llX3BtX2NoZWNrKHN0cnVj dCBsc19wY2llICpwY2llKQ0KPiAgc3RhdGljIGludCBsc19wY2llX3N1c3BlbmRfbm9pcnEoc3Ry dWN0IGRldmljZSAqZGV2KQ0KPiAgew0KPiAgCXN0cnVjdCBsc19wY2llICpwY2llID0gZGV2X2dl dF9kcnZkYXRhKGRldik7DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9IHBjaWUtPnBjaTsNCj4g KwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKHBjaWUtPnBwKTsNCj4g IAl1MzIgdmFsOw0KPiAgCWludCByZXQ7DQo+IA0KPiBAQCAtNDkxLDcgKzUwMCw3IEBAIHN0YXRp YyBpbnQgbHNfcGNpZV9zdXNwZW5kX25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gIHN0YXRp YyBpbnQgbHNfcGNpZV9yZXN1bWVfbm9pcnEoc3RydWN0IGRldmljZSAqZGV2KQ0KPiAgew0KPiAg CXN0cnVjdCBsc19wY2llICpwY2llID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+IC0Jc3RydWN0 IGR3X3BjaWUgKnBjaSA9IHBjaWUtPnBjaTsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9f ZHdfcGNpZV9mcm9tX3BwKHBjaWUtPnBwKTsNCj4gIAlpbnQgcmV0Ow0KPiANCj4gIAlpZiAoIWxz X3BjaWVfcG1fY2hlY2socGNpZSkpDQo+IEBAIC01MDQsNyArNTEzLDcgQEAgc3RhdGljIGludCBs c19wY2llX3Jlc3VtZV9ub2lycShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICAJLyogZGVsYXkgMTBt cyB0byBhY2Nlc3MgRVAgKi8NCj4gIAltZGVsYXkoMTApOw0KPiANCj4gLQlyZXQgPSBsc19wY2ll X2hvc3RfaW5pdCgmcGNpLT5wcCk7DQo+ICsJcmV0ID0gbHNfcGNpZV9ob3N0X2luaXQocGNpZS0+ cHApOw0KPiAgCWlmIChyZXQpIHsNCj4gIAkJZGV2X2VycihkZXYsICJsc19wY2llX2hvc3RfaW5p dCBmYWlsZWQhIHJldCA9IDB4JXhcbiIsIHJldCk7DQo+ICAJCXJldHVybiByZXQ7DQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktbWVzb24uYw0KPiBiL2RyaXZl cnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1tZXNvbi5jDQo+IGluZGV4IDY4NmRlZDAzNGYyMi4u ODk1ZGYzMGNiNDk3IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9w Y2ktbWVzb24uYw0KPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktbWVzb24u Yw0KPiBAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgbWVzb25fcGNpZV9yY19yZXNldCB7DQo+ICB9 Ow0KPiANCj4gIHN0cnVjdCBtZXNvbl9wY2llIHsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSBwY2k7DQo+ ICsJc3RydWN0IHBjaWVfcG9ydCBwcDsNCj4gIAl2b2lkIF9faW9tZW0gKmNmZ19iYXNlOw0KPiAg CXN0cnVjdCBtZXNvbl9wY2llX2Nsa19yZXMgY2xrX3JlczsNCj4gIAlzdHJ1Y3QgbWVzb25fcGNp ZV9yY19yZXNldCBtcnN0Ow0KPiBAQCAtNzcsNyArNzcsOCBAQCBzdGF0aWMgc3RydWN0IHJlc2V0 X2NvbnRyb2wNCj4gKm1lc29uX3BjaWVfZ2V0X3Jlc2V0KHN0cnVjdCBtZXNvbl9wY2llICptcCwN Cj4gIAkJCQkJCSAgY29uc3QgY2hhciAqaWQsDQo+ICAJCQkJCQkgIHUzMiByZXNldF90eXBlKQ0K PiAgew0KPiAtCXN0cnVjdCBkZXZpY2UgKmRldiA9IG1wLT5wY2kuZGV2Ow0KPiArCXN0cnVjdCBk d19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAoJm1wLT5wcCk7DQo+ICsJc3RydWN0IGRl dmljZSAqZGV2ID0gcGNpLT5kZXY7DQo+ICAJc3RydWN0IHJlc2V0X2NvbnRyb2wgKnJlc2V0Ow0K PiANCj4gIAlpZiAocmVzZXRfdHlwZSA9PSBQQ0lFX1NIQVJFRF9SRVNFVCkNCj4gQEAgLTEwOCw3 ICsxMDksNyBAQCBzdGF0aWMgaW50IG1lc29uX3BjaWVfZ2V0X3Jlc2V0cyhzdHJ1Y3QgbWVzb25f cGNpZQ0KPiAqbXApDQo+ICBzdGF0aWMgaW50IG1lc29uX3BjaWVfZ2V0X21lbXMoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldiwNCj4gIAkJCSAgICAgICBzdHJ1Y3QgbWVzb25fcGNpZSAqbXAp DQo+ICB7DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9ICZtcC0+cGNpOw0KPiArCXN0cnVjdCBk d19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAoJm1wLT5wcCk7DQo+IA0KPiAgCXBjaS0+ ZGJpX2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2VfYnluYW1lKHBkZXYsDQo+ ICJlbGJpIik7DQo+ICAJaWYgKElTX0VSUihwY2ktPmRiaV9iYXNlKSkNCj4gQEAgLTE5Niw3ICsx OTcsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBjbGsNCj4gKm1lc29uX3BjaWVfcHJvYmVfY2xv Y2soc3RydWN0IGRldmljZSAqZGV2LA0KPiANCj4gIHN0YXRpYyBpbnQgbWVzb25fcGNpZV9wcm9i ZV9jbG9ja3Moc3RydWN0IG1lc29uX3BjaWUgKm1wKQ0KPiAgew0KPiAtCXN0cnVjdCBkZXZpY2Ug KmRldiA9IG1wLT5wY2kuZGV2Ow0KPiArCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2ll X2Zyb21fcHAoJm1wLT5wcCk7DQo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7DQo+ ICAJc3RydWN0IG1lc29uX3BjaWVfY2xrX3JlcyAqcmVzID0gJm1wLT5jbGtfcmVzOw0KPiANCj4g IAlyZXMtPnBvcnRfY2xrID0gbWVzb25fcGNpZV9wcm9iZV9jbG9jayhkZXYsICJwb3J0IiwNCj4g UE9SVF9DTEtfUkFURSk7DQo+IEBAIC0yNDIsNyArMjQ0LDggQEAgc3RhdGljIHZvaWQgbWVzb25f cGNpZV9sdHNzbV9lbmFibGUoc3RydWN0DQo+IG1lc29uX3BjaWUgKm1wKQ0KPiANCj4gIHN0YXRp YyBpbnQgbWVzb25fc2l6ZV90b19wYXlsb2FkKHN0cnVjdCBtZXNvbl9wY2llICptcCwgaW50IHNp emUpDQo+ICB7DQo+IC0Jc3RydWN0IGRldmljZSAqZGV2ID0gbXAtPnBjaS5kZXY7DQo+ICsJc3Ry dWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcCgmbXAtPnBwKTsNCj4gKwlzdHJ1 Y3QgZGV2aWNlICpkZXYgPSBwY2ktPmRldjsNCj4gDQo+ICAJLyoNCj4gIAkgKiBkd2Mgc3VwcG9y dHMgMl4odmFsKzcpIHBheWxvYWQgc2l6ZSwgd2hpY2ggdmFsIGlzIDB+NSBkZWZhdWx0IHRvIDEu DQo+IEBAIC0yNTksNyArMjYyLDcgQEAgc3RhdGljIGludCBtZXNvbl9zaXplX3RvX3BheWxvYWQo c3RydWN0IG1lc29uX3BjaWUNCj4gKm1wLCBpbnQgc2l6ZSkNCj4gDQo+ICBzdGF0aWMgdm9pZCBt ZXNvbl9zZXRfbWF4X3BheWxvYWQoc3RydWN0IG1lc29uX3BjaWUgKm1wLCBpbnQgc2l6ZSkNCj4g IHsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gJm1wLT5wY2k7DQo+ICsJc3RydWN0IGR3X3Bj aWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcCgmbXAtPnBwKTsNCj4gIAl1MzIgdmFsOw0KPiAg CXUxNiBvZmZzZXQgPSBkd19wY2llX2ZpbmRfY2FwYWJpbGl0eShwY2ksIFBDSV9DQVBfSURfRVhQ KTsNCj4gIAlpbnQgbWF4X3BheWxvYWRfc2l6ZSA9IG1lc29uX3NpemVfdG9fcGF5bG9hZChtcCwg c2l6ZSk7DQo+IEBAIC0yNzUsNyArMjc4LDcgQEAgc3RhdGljIHZvaWQgbWVzb25fc2V0X21heF9w YXlsb2FkKHN0cnVjdA0KPiBtZXNvbl9wY2llICptcCwgaW50IHNpemUpDQo+IA0KPiAgc3RhdGlj IHZvaWQgbWVzb25fc2V0X21heF9yZF9yZXFfc2l6ZShzdHJ1Y3QgbWVzb25fcGNpZSAqbXAsIGlu dCBzaXplKQ0KPiAgew0KPiAtCXN0cnVjdCBkd19wY2llICpwY2kgPSAmbXAtPnBjaTsNCj4gKwlz dHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKCZtcC0+cHApOw0KPiAgCXUz MiB2YWw7DQo+ICAJdTE2IG9mZnNldCA9IGR3X3BjaWVfZmluZF9jYXBhYmlsaXR5KHBjaSwgUENJ X0NBUF9JRF9FWFApOw0KPiAgCWludCBtYXhfcmRfcmVxX3NpemUgPSBtZXNvbl9zaXplX3RvX3Bh eWxvYWQobXAsIHNpemUpOw0KPiBAQCAtMzk1LDYgKzM5OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHdfcGNpZV9vcHMgZHdfcGNpZV9vcHMgPSB7DQo+ICBzdGF0aWMgaW50IG1lc29uX3BjaWVf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIHsNCj4gIAlzdHJ1Y3QgZGV2 aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiArCXN0cnVjdCBwY2llX3BvcnQgKnBwOw0KPiAgCXN0 cnVjdCBkd19wY2llICpwY2k7DQo+ICAJc3RydWN0IG1lc29uX3BjaWUgKm1wOw0KPiAgCWludCBy ZXQ7DQo+IEBAIC00MDMsMTAgKzQwNywxMSBAQCBzdGF0aWMgaW50IG1lc29uX3BjaWVfcHJvYmUo c3RydWN0DQo+IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIAlpZiAoIW1wKQ0KPiAgCQlyZXR1 cm4gLUVOT01FTTsNCj4gDQo+IC0JcGNpID0gJm1wLT5wY2k7DQo+ICsJcHAgPSAmbXAtPnBwOw0K PiArCXBjaSA9ICZwcC0+cGNpZTsNCj4gIAlwY2ktPmRldiA9IGRldjsNCj4gIAlwY2ktPm9wcyA9 ICZkd19wY2llX29wczsNCj4gLQlwY2ktPnBwLm9wcyA9ICZtZXNvbl9wY2llX2hvc3Rfb3BzOw0K PiArCXBwLT5vcHMgPSAmbWVzb25fcGNpZV9ob3N0X29wczsNCj4gIAlwY2ktPm51bV9sYW5lcyA9 IDE7DQo+IA0KPiAgCW1wLT5waHkgPSBkZXZtX3BoeV9nZXQoZGV2LCAicGNpZSIpOw0KPiBAQCAt NDUzLDcgKzQ1OCw3IEBAIHN0YXRpYyBpbnQgbWVzb25fcGNpZV9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlDQo+ICpwZGV2KQ0KPiANCj4gIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBt cCk7DQo+IA0KPiAtCXJldCA9IGR3X3BjaWVfaG9zdF9pbml0KCZwY2ktPnBwKTsNCj4gKwlyZXQg PSBkd19wY2llX2hvc3RfaW5pdChwcCk7DQo+ICAJaWYgKHJldCA8IDApIHsNCj4gIAkJZGV2X2Vy cihkZXYsICJBZGQgUENJZSBwb3J0IGZhaWxlZCwgJWRcbiIsIHJldCk7DQo+ICAJCWdvdG8gZXJy X3BoeTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtYWwu Yw0KPiBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtYWwuYw0KPiBpbmRleCBhYmYz N2FhNjhlNTEuLmU5ZDQzODM1NDI3NSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJv bGxlci9kd2MvcGNpZS1hbC5jDQo+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3Bj aWUtYWwuYw0KPiBAQCAtMTI4LDcgKzEyOCw3IEBAIHN0cnVjdCBhbF9wY2llX3RhcmdldF9idXNf Y2ZnIHsNCj4gIH07DQo+IA0KPiAgc3RydWN0IGFsX3BjaWUgew0KPiAtCXN0cnVjdCBkd19wY2ll ICpwY2k7DQo+ICsJc3RydWN0IHBjaWVfcG9ydCAqcHA7DQo+ICAJdm9pZCBfX2lvbWVtICpjb250 cm9sbGVyX2Jhc2U7IC8qIGJhc2Ugb2YgUENJZSB1bml0IChub3QgRFcgY29yZSkgKi8NCj4gIAlz dHJ1Y3QgZGV2aWNlICpkZXY7DQo+ICAJcmVzb3VyY2Vfc2l6ZV90IGVjYW1fc2l6ZTsNCj4gQEAg LTIxOCwxNCArMjE4LDE1IEBAIHN0YXRpYyB2b2lkIF9faW9tZW0NCj4gKmFsX3BjaWVfY29uZl9h ZGRyX21hcF9idXMoc3RydWN0IHBjaV9idXMgKmJ1cywNCj4gIAkJCQkJICAgICAgIHVuc2lnbmVk IGludCBkZXZmbiwgaW50IHdoZXJlKQ0KPiAgew0KPiAgCXN0cnVjdCBwY2llX3BvcnQgKnBwID0g YnVzLT5zeXNkYXRhOw0KPiAtCXN0cnVjdCBhbF9wY2llICpwY2llID0gdG9fYWxfcGNpZSh0b19k d19wY2llX2Zyb21fcHAocHApKTsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9fZHdfcGNp ZV9mcm9tX3BwKHBwKTsNCj4gKwlzdHJ1Y3QgYWxfcGNpZSAqcGNpZSA9IHRvX2FsX3BjaWUocGNp KTsNCj4gIAl1bnNpZ25lZCBpbnQgYnVzbnIgPSBidXMtPm51bWJlcjsNCj4gIAlzdHJ1Y3QgYWxf cGNpZV90YXJnZXRfYnVzX2NmZyAqdGFyZ2V0X2J1c19jZmcgPQ0KPiAmcGNpZS0+dGFyZ2V0X2J1 c19jZmc7DQo+ICAJdW5zaWduZWQgaW50IGJ1c25yX2VjYW0gPSBidXNuciAmIHRhcmdldF9idXNf Y2ZnLT5lY2FtX21hc2s7DQo+ICAJdW5zaWduZWQgaW50IGJ1c25yX3JlZyA9IGJ1c25yICYgdGFy Z2V0X2J1c19jZmctPnJlZ19tYXNrOw0KPiANCj4gIAlpZiAoYnVzbnJfcmVnICE9IHRhcmdldF9i dXNfY2ZnLT5yZWdfdmFsKSB7DQo+IC0JCWRldl9kYmcocGNpZS0+cGNpLT5kZXYsICJDaGFuZ2lu ZyB0YXJnZXQgYnVzIGJ1c251bSB2YWwgZnJvbQ0KPiAweCV4IHRvIDB4JXhcbiIsDQo+ICsJCWRl dl9kYmcocGNpLT5kZXYsICJDaGFuZ2luZyB0YXJnZXQgYnVzIGJ1c251bSB2YWwgZnJvbSAweCV4 IHRvDQo+IDB4JXhcbiIsDQo+ICAJCQl0YXJnZXRfYnVzX2NmZy0+cmVnX3ZhbCwgYnVzbnJfcmVn KTsNCj4gIAkJdGFyZ2V0X2J1c19jZmctPnJlZ192YWwgPSBidXNucl9yZWc7DQo+ICAJCWFsX3Bj aWVfdGFyZ2V0X2J1c19zZXQocGNpZSwNCj4gQEAgLTI0NSw3ICsyNDYsNyBAQCBzdGF0aWMgc3Ry dWN0IHBjaV9vcHMgYWxfY2hpbGRfcGNpX29wcyA9IHsNCj4gIHN0YXRpYyB2b2lkIGFsX3BjaWVf Y29uZmlnX3ByZXBhcmUoc3RydWN0IGFsX3BjaWUgKnBjaWUpDQo+ICB7DQo+ICAJc3RydWN0IGFs X3BjaWVfdGFyZ2V0X2J1c19jZmcgKnRhcmdldF9idXNfY2ZnOw0KPiAtCXN0cnVjdCBwY2llX3Bv cnQgKnBwID0gJnBjaWUtPnBjaS0+cHA7DQo+ICsJc3RydWN0IHBjaWVfcG9ydCAqcHAgPSBwY2ll LT5wcDsNCj4gIAl1bnNpZ25lZCBpbnQgZWNhbV9idXNfbWFzazsNCj4gIAl1MzIgY2ZnX2NvbnRy b2xfb2Zmc2V0Ow0KPiAgCXU4IHN1Ym9yZGluYXRlX2J1czsNCj4gQEAgLTMyMywyMSArMzI0LDIz IEBAIHN0YXRpYyBpbnQgYWxfcGNpZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlDQo+ICpw ZGV2KQ0KPiAgCXN0cnVjdCByZXNvdXJjZSAqY29udHJvbGxlcl9yZXM7DQo+ICAJc3RydWN0IHJl c291cmNlICplY2FtX3JlczsNCj4gIAlzdHJ1Y3QgYWxfcGNpZSAqYWxfcGNpZTsNCj4gKwlzdHJ1 Y3QgcGNpZV9wb3J0ICpwcDsNCj4gIAlzdHJ1Y3QgZHdfcGNpZSAqcGNpOw0KPiANCj4gIAlhbF9w Y2llID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCphbF9wY2llKSwgR0ZQX0tFUk5FTCk7DQo+ ICAJaWYgKCFhbF9wY2llKQ0KPiAgCQlyZXR1cm4gLUVOT01FTTsNCj4gDQo+IC0JcGNpID0gZGV2 bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwY2kpLCBHRlBfS0VSTkVMKTsNCj4gLQlpZiAoIXBjaSkN Cj4gKwlwcCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHApLCBHRlBfS0VSTkVMKTsNCj4g KwlpZiAoIXBwKQ0KPiAgCQlyZXR1cm4gLUVOT01FTTsNCj4gDQo+ICsJcGNpID0gJnBwLT5wY2ll Ow0KPiAgCXBjaS0+ZGV2ID0gZGV2Ow0KPiAgCXBjaS0+b3BzID0gJmR3X3BjaWVfb3BzOw0KPiAt CXBjaS0+cHAub3BzID0gJmFsX3BjaWVfaG9zdF9vcHM7DQo+ICsJcHAtPm9wcyA9ICZhbF9wY2ll X2hvc3Rfb3BzOw0KPiANCj4gLQlhbF9wY2llLT5wY2kgPSBwY2k7DQo+ICsJYWxfcGNpZS0+cHAg PSBwcDsNCj4gIAlhbF9wY2llLT5kZXYgPSBkZXY7DQo+IA0KPiAgCWVjYW1fcmVzID0gcGxhdGZv cm1fZ2V0X3Jlc291cmNlX2J5bmFtZShwZGV2LCBJT1JFU09VUkNFX01FTSwNCj4gImNvbmZpZyIp Ow0KPiBAQCAtMzYwLDcgKzM2Myw3IEBAIHN0YXRpYyBpbnQgYWxfcGNpZV9wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlDQo+ICpwZGV2KQ0KPiANCj4gIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShw ZGV2LCBhbF9wY2llKTsNCj4gDQo+IC0JcmV0dXJuIGR3X3BjaWVfaG9zdF9pbml0KCZwY2ktPnBw KTsNCj4gKwlyZXR1cm4gZHdfcGNpZV9ob3N0X2luaXQocHApOw0KPiAgfQ0KPiANCj4gIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGFsX3BjaWVfb2ZfbWF0Y2hbXSA9IHsNCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtYXJtYWRhOGsuYw0KPiBi L2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtYXJtYWRhOGsuYw0KPiBpbmRleCA0ZTI1 NTJkY2Y5ODIuLjQ4NGNiMWRlZGRhYSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJv bGxlci9kd2MvcGNpZS1hcm1hZGE4ay5jDQo+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIv ZHdjL3BjaWUtYXJtYWRhOGsuYw0KPiBAQCAtMjgsNyArMjgsNyBAQA0KPiAgI2RlZmluZSBBUk1B REE4S19QQ0lFX01BWF9MQU5FUyBQQ0lFX0xOS19YNA0KPiANCj4gIHN0cnVjdCBhcm1hZGE4a19w Y2llIHsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSAqcGNpOw0KPiArCXN0cnVjdCBwY2llX3BvcnQgKnBw Ow0KPiAgCXN0cnVjdCBjbGsgKmNsazsNCj4gIAlzdHJ1Y3QgY2xrICpjbGtfcmVnOw0KPiAgCXN0 cnVjdCBwaHkgKnBoeVtBUk1BREE4S19QQ0lFX01BWF9MQU5FU107DQo+IEBAIC0xMTAsNyArMTEw LDcgQEAgc3RhdGljIGludCBhcm1hZGE4a19wY2llX2VuYWJsZV9waHlzKHN0cnVjdA0KPiBhcm1h ZGE4a19wY2llICpwY2llKQ0KPiANCj4gIHN0YXRpYyBpbnQgYXJtYWRhOGtfcGNpZV9zZXR1cF9w aHlzKHN0cnVjdCBhcm1hZGE4a19wY2llICpwY2llKQ0KPiAgew0KPiAtCXN0cnVjdCBkd19wY2ll ICpwY2kgPSBwY2llLT5wY2k7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVf ZnJvbV9wcChwY2llLT5wcCk7DQo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7DQo+ ICAJc3RydWN0IGRldmljZV9ub2RlICpub2RlID0gZGV2LT5vZl9ub2RlOw0KPiAgCWludCByZXQg PSAwOw0KPiBAQCAtMjExLDcgKzIxMSw3IEBAIHN0YXRpYyBpbnQgYXJtYWRhOGtfcGNpZV9ob3N0 X2luaXQoc3RydWN0IHBjaWVfcG9ydA0KPiAqcHApDQo+ICBzdGF0aWMgaXJxcmV0dXJuX3QgYXJt YWRhOGtfcGNpZV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpDQo+ICB7DQo+ICAJc3Ry dWN0IGFybWFkYThrX3BjaWUgKnBjaWUgPSBhcmc7DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9 IHBjaWUtPnBjaTsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX3Bw KHBjaWUtPnBwKTsNCj4gIAl1MzIgdmFsOw0KPiANCj4gIAkvKg0KPiBAQCAtMjMyLDggKzIzMiw3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdfcGNpZV9ob3N0X29wcw0KPiBhcm1hZGE4a19wY2ll X2hvc3Rfb3BzID0gew0KPiAgc3RhdGljIGludCBhcm1hZGE4a19hZGRfcGNpZV9wb3J0KHN0cnVj dCBhcm1hZGE4a19wY2llICpwY2llLA0KPiAgCQkJCSAgc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikNCj4gIHsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gcGNpZS0+cGNpOw0KPiAtCXN0 cnVjdCBwY2llX3BvcnQgKnBwID0gJnBjaS0+cHA7DQo+ICsJc3RydWN0IHBjaWVfcG9ydCAqcHAg PSBwY2llLT5wcDsNCj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiAgCWlu dCByZXQ7DQo+IA0KPiBAQCAtMjY3LDYgKzI2Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdf cGNpZV9vcHMgZHdfcGNpZV9vcHMgPSB7DQo+ICBzdGF0aWMgaW50IGFybWFkYThrX3BjaWVfcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIHsNCj4gIAlzdHJ1Y3QgZHdfcGNp ZSAqcGNpOw0KPiArCXN0cnVjdCBwY2llX3BvcnQgKnBwOw0KPiAgCXN0cnVjdCBhcm1hZGE4a19w Y2llICpwY2llOw0KPiAgCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+ICAJc3Ry dWN0IHJlc291cmNlICpiYXNlOw0KPiBAQCAtMjc2LDE0ICsyNzYsMTUgQEAgc3RhdGljIGludCBh cm1hZGE4a19wY2llX3Byb2JlKHN0cnVjdA0KPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAJ aWYgKCFwY2llKQ0KPiAgCQlyZXR1cm4gLUVOT01FTTsNCj4gDQo+IC0JcGNpID0gZGV2bV9remFs bG9jKGRldiwgc2l6ZW9mKCpwY2kpLCBHRlBfS0VSTkVMKTsNCj4gLQlpZiAoIXBjaSkNCj4gKwlw cCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHApLCBHRlBfS0VSTkVMKTsNCj4gKwlpZiAo IXBwKQ0KPiAgCQlyZXR1cm4gLUVOT01FTTsNCj4gDQo+ICsJcGNpID0gJnBwLT5wY2llOw0KPiAg CXBjaS0+ZGV2ID0gZGV2Ow0KPiAgCXBjaS0+b3BzID0gJmR3X3BjaWVfb3BzOw0KPiANCj4gLQlw Y2llLT5wY2kgPSBwY2k7DQo+ICsJcGNpZS0+cHAgPSBwcDsNCj4gDQo+ICAJcGNpZS0+Y2xrID0g ZGV2bV9jbGtfZ2V0KGRldiwgTlVMTCk7DQo+ICAJaWYgKElTX0VSUihwY2llLT5jbGspKQ0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1hcnRwZWM2LmMNCj4g Yi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWFydHBlYzYuYw0KPiBpbmRleCBmODMz ZGFmNmQ0MjIuLmYxY2NkNzRlZmY5ZCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJv bGxlci9kd2MvcGNpZS1hcnRwZWM2LmMNCj4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9k d2MvcGNpZS1hcnRwZWM2LmMNCj4gQEAgLTMwLDcgKzMwLDggQEAgZW51bSBhcnRwZWNfcGNpZV92 YXJpYW50cyB7DQo+ICB9Ow0KPiANCj4gIHN0cnVjdCBhcnRwZWM2X3BjaWUgew0KPiAtCXN0cnVj dCBkd19wY2llCQkqcGNpOw0KPiArCXN0cnVjdCBwY2llX3BvcnQJKnBwOw0KPiArCXN0cnVjdCBk d19wY2llX2VwCSplcDsNCj4gIAlzdHJ1Y3QgcmVnbWFwCQkqcmVnbWFwOwkvKiBEVCBheGlzLHN5 c2Nvbi1wY2llICovDQo+ICAJdm9pZCBfX2lvbWVtCQkqcGh5X2Jhc2U7CS8qIERUIHBoeSAqLw0K PiAgCWVudW0gYXJ0cGVjX3BjaWVfdmFyaWFudHMgdmFyaWFudDsNCj4gQEAgLTk3LDggKzk4LDgg QEAgc3RhdGljIHZvaWQgYXJ0cGVjNl9wY2llX3dyaXRlbChzdHJ1Y3QgYXJ0cGVjNl9wY2llDQo+ ICphcnRwZWM2X3BjaWUsIHUzMiBvZmZzZXQsIHUNCj4gIHN0YXRpYyB1NjQgYXJ0cGVjNl9wY2ll X2NwdV9hZGRyX2ZpeHVwKHN0cnVjdCBkd19wY2llICpwY2ksIHU2NCBwY2lfYWRkcikNCj4gIHsN Cj4gIAlzdHJ1Y3QgYXJ0cGVjNl9wY2llICphcnRwZWM2X3BjaWUgPSB0b19hcnRwZWM2X3BjaWUo cGNpKTsNCj4gLQlzdHJ1Y3QgcGNpZV9wb3J0ICpwcCA9ICZwY2ktPnBwOw0KPiAtCXN0cnVjdCBk d19wY2llX2VwICplcCA9ICZwY2ktPmVwOw0KPiArCXN0cnVjdCBwY2llX3BvcnQgKnBwID0gYXJ0 cGVjNl9wY2llLT5wcDsNCj4gKwlzdHJ1Y3QgZHdfcGNpZV9lcCAqZXAgPSBhcnRwZWM2X3BjaWUt PmVwOw0KPiANCj4gIAlzd2l0Y2ggKGFydHBlYzZfcGNpZS0+bW9kZSkgew0KPiAgCWNhc2UgRFdf UENJRV9SQ19UWVBFOg0KPiBAQCAtMTQxLDExICsxNDIsMTggQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBkd19wY2llX29wcyBkd19wY2llX29wcyA9IHsNCj4gDQo+ICBzdGF0aWMgdm9pZCBhcnRwZWM2 X3BjaWVfd2FpdF9mb3JfcGh5X2E2KHN0cnVjdCBhcnRwZWM2X3BjaWUNCj4gKmFydHBlYzZfcGNp ZSkNCj4gIHsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gYXJ0cGVjNl9wY2llLT5wY2k7DQo+ IC0Jc3RydWN0IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBj aTsNCj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7DQo+ICAJdTMyIHZhbDsNCj4gIAl1bnNpZ25lZCBp bnQgcmV0cmllczsNCj4gDQo+ICsJaWYgKGFydHBlYzZfcGNpZS0+bW9kZSA9PSBEV19QQ0lFX1JD X1RZUEUpDQo+ICsJCXBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChhcnRwZWM2X3BjaWUtPnBwKTsN Cj4gKwllbHNlDQo+ICsJCXBjaSA9IHRvX2R3X3BjaWVfZnJvbV9lcChhcnRwZWM2X3BjaWUtPmVw KTsNCj4gKw0KPiArCWRldiA9IHBjaS0+ZGV2Ow0KPiArDQo+ICAJcmV0cmllcyA9IDUwOw0KPiAg CWRvIHsNCj4gIAkJdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOw0KPiBAQCAtMTY4LDEyICsxNzYs MTkgQEAgc3RhdGljIHZvaWQgYXJ0cGVjNl9wY2llX3dhaXRfZm9yX3BoeV9hNihzdHJ1Y3QNCj4g YXJ0cGVjNl9wY2llICphcnRwZWM2X3BjaWUpDQo+IA0KPiAgc3RhdGljIHZvaWQgYXJ0cGVjNl9w Y2llX3dhaXRfZm9yX3BoeV9hNyhzdHJ1Y3QgYXJ0cGVjNl9wY2llDQo+ICphcnRwZWM2X3BjaWUp DQo+ICB7DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9IGFydHBlYzZfcGNpZS0+cGNpOw0KPiAt CXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ZGV2Ow0KPiArCXN0cnVjdCBkd19wY2llICpwY2k7 DQo+ICsJc3RydWN0IGRldmljZSAqZGV2Ow0KPiAgCXUzMiB2YWw7DQo+ICAJdTE2IHBoeV9zdGF0 dXNfdHgsIHBoeV9zdGF0dXNfcng7DQo+ICAJdW5zaWduZWQgaW50IHJldHJpZXM7DQo+IA0KPiAr CWlmIChhcnRwZWM2X3BjaWUtPm1vZGUgPT0gRFdfUENJRV9SQ19UWVBFKQ0KPiArCQlwY2kgPSB0 b19kd19wY2llX2Zyb21fcHAoYXJ0cGVjNl9wY2llLT5wcCk7DQo+ICsJZWxzZQ0KPiArCQlwY2kg PSB0b19kd19wY2llX2Zyb21fZXAoYXJ0cGVjNl9wY2llLT5lcCk7DQo+ICsNCj4gKwlkZXYgPSBw Y2ktPmRldjsNCj4gKw0KPiAgCXJldHJpZXMgPSA1MDsNCj4gIAlkbyB7DQo+ICAJCXVzbGVlcF9y YW5nZSgxMDAwLCAyMDAwKTsNCj4gQEAgLTI0MCwxMCArMjU1LDE1IEBAIHN0YXRpYyB2b2lkIGFy dHBlYzZfcGNpZV9pbml0X3BoeV9hNihzdHJ1Y3QNCj4gYXJ0cGVjNl9wY2llICphcnRwZWM2X3Bj aWUpDQo+IA0KPiAgc3RhdGljIHZvaWQgYXJ0cGVjNl9wY2llX2luaXRfcGh5X2E3KHN0cnVjdCBh cnRwZWM2X3BjaWUgKmFydHBlYzZfcGNpZSkNCj4gIHsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSAqcGNp ID0gYXJ0cGVjNl9wY2llLT5wY2k7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaTsNCj4gIAl1MzIg dmFsOw0KPiAgCWJvb2wgZXh0cmVmY2xrOw0KPiANCj4gKwlpZiAoYXJ0cGVjNl9wY2llLT5tb2Rl ID09IERXX1BDSUVfUkNfVFlQRSkNCj4gKwkJcGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKGFydHBl YzZfcGNpZS0+cHApOw0KPiArCWVsc2UNCj4gKwkJcGNpID0gdG9fZHdfcGNpZV9mcm9tX2VwKGFy dHBlYzZfcGNpZS0+ZXApOw0KPiArDQo+ICAJLyogQ2hlY2sgaWYgZXh0ZXJuYWwgcmVmZXJlbmNl IGNsb2NrIGlzIGNvbm5lY3RlZCAqLw0KPiAgCXZhbCA9IGFydHBlYzZfcGNpZV9yZWFkbChhcnRw ZWM2X3BjaWUsIFBDSUVTVEFUKTsNCj4gIAlleHRyZWZjbGsgPSAhISh2YWwgJiBQQ0lFU1RBVF9F WFRSRUZDTEspOw0KPiBAQCAtMzc3LDYgKzM5Nyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdf cGNpZV9lcF9vcHMgcGNpZV9lcF9vcHMgPSB7DQo+ICBzdGF0aWMgaW50IGFydHBlYzZfcGNpZV9w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgew0KPiAgCXN0cnVjdCBkZXZp Y2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+ICsJc3RydWN0IGR3X3BjaWVfZXAgKmVwOw0KPiArCXN0 cnVjdCBwY2llX3BvcnQgKnBwOw0KPiAgCXN0cnVjdCBkd19wY2llICpwY2k7DQo+ICAJc3RydWN0 IGFydHBlYzZfcGNpZSAqYXJ0cGVjNl9wY2llOw0KPiAgCWludCByZXQ7DQo+IEBAIC0zOTcsMTQg KzQxOSw2IEBAIHN0YXRpYyBpbnQgYXJ0cGVjNl9wY2llX3Byb2JlKHN0cnVjdA0KPiBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpDQo+ICAJaWYgKCFhcnRwZWM2X3BjaWUpDQo+ICAJCXJldHVybiAtRU5P TUVNOw0KPiANCj4gLQlwY2kgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnBjaSksIEdGUF9L RVJORUwpOw0KPiAtCWlmICghcGNpKQ0KPiAtCQlyZXR1cm4gLUVOT01FTTsNCj4gLQ0KPiAtCXBj aS0+ZGV2ID0gZGV2Ow0KPiAtCXBjaS0+b3BzID0gJmR3X3BjaWVfb3BzOw0KPiAtDQo+IC0JYXJ0 cGVjNl9wY2llLT5wY2kgPSBwY2k7DQo+ICAJYXJ0cGVjNl9wY2llLT52YXJpYW50ID0gdmFyaWFu dDsNCj4gIAlhcnRwZWM2X3BjaWUtPm1vZGUgPSBtb2RlOw0KPiANCj4gQEAgLTQyMywxOCArNDM3 LDM4IEBAIHN0YXRpYyBpbnQgYXJ0cGVjNl9wY2llX3Byb2JlKHN0cnVjdA0KPiBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpDQo+IA0KPiAgCXN3aXRjaCAoYXJ0cGVjNl9wY2llLT5tb2RlKSB7DQo+ICAJ Y2FzZSBEV19QQ0lFX1JDX1RZUEU6DQo+ICsJCXBwID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9m KCpwcCksIEdGUF9LRVJORUwpOw0KPiArCQlpZiAoIXBwKQ0KPiArCQkJcmV0dXJuIC1FTk9NRU07 DQo+ICsNCj4gKwkJcGNpID0gJnBwLT5wY2llOw0KPiArCQlwY2ktPmRldiA9IGRldjsNCj4gKwkJ cGNpLT5vcHMgPSAmZHdfcGNpZV9vcHM7DQo+ICsNCj4gKwkJYXJ0cGVjNl9wY2llLT5wcCA9IHBw Ow0KPiArDQo+ICAJCWlmICghSVNfRU5BQkxFRChDT05GSUdfUENJRV9BUlRQRUM2X0hPU1QpKQ0K PiAgCQkJcmV0dXJuIC1FTk9ERVY7DQo+IA0KPiAtCQlwY2ktPnBwLm9wcyA9ICZhcnRwZWM2X3Bj aWVfaG9zdF9vcHM7DQo+ICsJCXBwLT5vcHMgPSAmYXJ0cGVjNl9wY2llX2hvc3Rfb3BzOw0KPiAN Cj4gLQkJcmV0ID0gZHdfcGNpZV9ob3N0X2luaXQoJnBjaS0+cHApOw0KPiArCQlyZXQgPSBkd19w Y2llX2hvc3RfaW5pdChwcCk7DQo+ICAJCWlmIChyZXQgPCAwKQ0KPiAgCQkJcmV0dXJuIHJldDsN Cj4gIAkJYnJlYWs7DQo+ICAJY2FzZSBEV19QQ0lFX0VQX1RZUEU6IHsNCj4gIAkJdTMyIHZhbDsN Cj4gDQo+ICsJCWVwID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCplcCksIEdGUF9LRVJORUwp Ow0KPiArCQlpZiAoIWVwKQ0KPiArCQkJcmV0dXJuIC1FTk9NRU07DQo+ICsNCj4gKwkJcGNpID0g JmVwLT5wY2llOw0KPiArCQlwY2ktPmRldiA9IGRldjsNCj4gKwkJcGNpLT5vcHMgPSAmZHdfcGNp ZV9vcHM7DQo+ICsNCj4gKwkJYXJ0cGVjNl9wY2llLT5lcCA9IGVwOw0KPiArDQo+ICAJCWlmICgh SVNfRU5BQkxFRChDT05GSUdfUENJRV9BUlRQRUM2X0VQKSkNCj4gIAkJCXJldHVybiAtRU5PREVW Ow0KPiANCj4gQEAgLTQ0Miw5ICs0NzYsOSBAQCBzdGF0aWMgaW50IGFydHBlYzZfcGNpZV9wcm9i ZShzdHJ1Y3QNCj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgCQl2YWwgJj0gflBDSUVDRkdf REVWSUNFX1RZUEVfTUFTSzsNCj4gIAkJYXJ0cGVjNl9wY2llX3dyaXRlbChhcnRwZWM2X3BjaWUs IFBDSUVDRkcsIHZhbCk7DQo+IA0KPiAtCQlwY2ktPmVwLm9wcyA9ICZwY2llX2VwX29wczsNCj4g KwkJZXAtPm9wcyA9ICZwY2llX2VwX29wczsNCj4gDQo+IC0JCXJldHVybiBkd19wY2llX2VwX2lu aXQoJnBjaS0+ZXApOw0KPiArCQlyZXR1cm4gZHdfcGNpZV9lcF9pbml0KGVwKTsNCj4gIAkJYnJl YWs7DQo+ICAJfQ0KPiAgCWRlZmF1bHQ6DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250 cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtaG9zdC5jDQo+IGIvZHJpdmVycy9wY2kvY29udHJv bGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWhvc3QuYw0KPiBpbmRleCAwNDEzMjg0ZmRkOTMuLjI3 MjkyZTJmMzM4OSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNp ZS1kZXNpZ253YXJlLWhvc3QuYw0KPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9w Y2llLWRlc2lnbndhcmUtaG9zdC5jDQo+IEBAIC0yOTksNyArMjk5LDcgQEAgaW50IGR3X3BjaWVf aG9zdF9pbml0KHN0cnVjdCBwY2llX3BvcnQgKnBwKQ0KPiAgCXN0cnVjdCByZXNvdXJjZSAqY2Zn X3JlczsNCj4gIAlpbnQgcmV0Ow0KPiANCj4gLQlyYXdfc3Bpbl9sb2NrX2luaXQoJnBjaS0+cHAu bG9jayk7DQo+ICsJcmF3X3NwaW5fbG9ja19pbml0KCZwcC0+bG9jayk7DQo+IA0KPiAgCWNmZ19y ZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfTUVNLA0K PiAiY29uZmlnIik7DQo+ICAJaWYgKGNmZ19yZXMpIHsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv cGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS1wbGF0LmMNCj4gYi9kcml2ZXJzL3Bj aS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtcGxhdC5jDQo+IGluZGV4IDQ5ZDUxNTg0 YTU0Ny4uOGFhYzdmNmNlZjA4IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVy L2R3Yy9wY2llLWRlc2lnbndhcmUtcGxhdC5jDQo+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xs ZXIvZHdjL3BjaWUtZGVzaWdud2FyZS1wbGF0LmMNCj4gQEAgLTIyLDcgKzIyLDggQEANCj4gICNp bmNsdWRlICJwY2llLWRlc2lnbndhcmUuaCINCj4gDQo+ICBzdHJ1Y3QgZHdfcGxhdF9wY2llIHsN Cj4gLQlzdHJ1Y3QgZHdfcGNpZQkJCSpwY2k7DQo+ICsJc3RydWN0IHBjaWVfcG9ydAkJKnBwOw0K PiArCXN0cnVjdCBkd19wY2llX2VwCQkqZXA7DQo+ICAJc3RydWN0IHJlZ21hcAkJCSpyZWdtYXA7 DQo+ICAJZW51bSBkd19wY2llX2RldmljZV9tb2RlCW1vZGU7DQo+ICB9Ow0KPiBAQCAtOTQsOCAr OTUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGR3X3BjaWVfZXBfb3BzIHBjaWVfZXBfb3BzID0g ew0KPiAgc3RhdGljIGludCBkd19wbGF0X2FkZF9wY2llX3BvcnQoc3RydWN0IGR3X3BsYXRfcGNp ZSAqZHdfcGxhdF9wY2llLA0KPiAgCQkJCSBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0K PiAgew0KPiAtCXN0cnVjdCBkd19wY2llICpwY2kgPSBkd19wbGF0X3BjaWUtPnBjaTsNCj4gLQlz dHJ1Y3QgcGNpZV9wb3J0ICpwcCA9ICZwY2ktPnBwOw0KPiArCXN0cnVjdCBwY2llX3BvcnQgKnBw ID0gZHdfcGxhdF9wY2llLT5wcDsNCj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2 Ow0KPiAgCWludCByZXQ7DQo+IA0KPiBAQCAtMTE5LDYgKzExOSw4IEBAIHN0YXRpYyBpbnQgZHdf cGxhdF9wY2llX3Byb2JlKHN0cnVjdA0KPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICB7DQo+ ICAJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4gIAlzdHJ1Y3QgZHdfcGxhdF9w Y2llICpkd19wbGF0X3BjaWU7DQo+ICsJc3RydWN0IGR3X3BjaWVfZXAgKmVwOw0KPiArCXN0cnVj dCBwY2llX3BvcnQgKnBwOw0KPiAgCXN0cnVjdCBkd19wY2llICpwY2k7DQo+ICAJaW50IHJldDsN Cj4gIAljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaDsNCj4gQEAgLTEzNiwyMCArMTM4 LDIxIEBAIHN0YXRpYyBpbnQgZHdfcGxhdF9wY2llX3Byb2JlKHN0cnVjdA0KPiBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpDQo+ICAJaWYgKCFkd19wbGF0X3BjaWUpDQo+ICAJCXJldHVybiAtRU5PTUVN Ow0KPiANCj4gLQlwY2kgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnBjaSksIEdGUF9LRVJO RUwpOw0KPiAtCWlmICghcGNpKQ0KPiAtCQlyZXR1cm4gLUVOT01FTTsNCj4gLQ0KPiAtCXBjaS0+ ZGV2ID0gZGV2Ow0KPiAtCXBjaS0+b3BzID0gJmR3X3BjaWVfb3BzOw0KPiAtDQo+IC0JZHdfcGxh dF9wY2llLT5wY2kgPSBwY2k7DQo+ICAJZHdfcGxhdF9wY2llLT5tb2RlID0gbW9kZTsNCj4gDQo+ ICAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgZHdfcGxhdF9wY2llKTsNCj4gDQo+ICAJc3dp dGNoIChkd19wbGF0X3BjaWUtPm1vZGUpIHsNCj4gIAljYXNlIERXX1BDSUVfUkNfVFlQRToNCj4g KwkJcHAgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnBwKSwgR0ZQX0tFUk5FTCk7DQo+ICsJ CWlmICghcHApDQo+ICsJCQlyZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArCQlwY2kgPSAmcHAtPnBj aWU7DQo+ICsJCXBjaS0+ZGV2ID0gZGV2Ow0KPiArCQlwY2ktPm9wcyA9ICZkd19wY2llX29wczsN Cj4gKwkJZHdfcGxhdF9wY2llLT5wcCA9IHBwOw0KPiArDQo+ICAJCWlmICghSVNfRU5BQkxFRChD T05GSUdfUENJRV9EV19QTEFUX0hPU1QpKQ0KPiAgCQkJcmV0dXJuIC1FTk9ERVY7DQo+IA0KPiBA QCAtMTU4LDExICsxNjEsMjAgQEAgc3RhdGljIGludCBkd19wbGF0X3BjaWVfcHJvYmUoc3RydWN0 DQo+IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIAkJCXJldHVybiByZXQ7DQo+ICAJCWJyZWFr Ow0KPiAgCWNhc2UgRFdfUENJRV9FUF9UWVBFOg0KPiArCQllcCA9IGRldm1fa3phbGxvYyhkZXYs IHNpemVvZigqZXApLCBHRlBfS0VSTkVMKTsNCj4gKwkJaWYgKCFlcCkNCj4gKwkJCXJldHVybiAt RU5PTUVNOw0KPiArDQo+ICsJCXBjaSA9ICZlcC0+cGNpZTsNCj4gKwkJcGNpLT5kZXYgPSBkZXY7 DQo+ICsJCXBjaS0+b3BzID0gJmR3X3BjaWVfb3BzOw0KPiArCQlkd19wbGF0X3BjaWUtPmVwID0g ZXA7DQo+ICsNCj4gIAkJaWYgKCFJU19FTkFCTEVEKENPTkZJR19QQ0lFX0RXX1BMQVRfRVApKQ0K PiAgCQkJcmV0dXJuIC1FTk9ERVY7DQo+IA0KPiAtCQlwY2ktPmVwLm9wcyA9ICZwY2llX2VwX29w czsNCj4gLQkJcmV0dXJuIGR3X3BjaWVfZXBfaW5pdCgmcGNpLT5lcCk7DQo+ICsJCWVwLT5vcHMg PSAmcGNpZV9lcF9vcHM7DQo+ICsJCXJldHVybiBkd19wY2llX2VwX2luaXQoZXApOw0KPiAgCQli cmVhazsNCj4gIAlkZWZhdWx0Og0KPiAgCQlkZXZfZXJyKGRldiwgIklOVkFMSUQgZGV2aWNlIHR5 cGUgJWRcbiIsIGR3X3BsYXRfcGNpZS0+bW9kZSk7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Bj aS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUuaA0KPiBiL2RyaXZlcnMvcGNpL2NvbnRy b2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS5oDQo+IGluZGV4IDEwYmEwOTIzN2RlZi4uNjg5YzRj ODllMWY2IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRl c2lnbndhcmUuaA0KPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2ln bndhcmUuaA0KPiBAQCAtMTcxLDEyICsxNzEsNDQgQEAgZW51bSBkd19wY2llX2RldmljZV9tb2Rl IHsNCj4gIAlEV19QQ0lFX1JDX1RZUEUsDQo+ICB9Ow0KPiANCj4gK3N0cnVjdCBkd19wY2llX29w cyB7DQo+ICsJdTY0CSgqY3B1X2FkZHJfZml4dXApKHN0cnVjdCBkd19wY2llICpwY2llLCB1NjQg Y3B1X2FkZHIpOw0KPiArCXUzMgkoKnJlYWRfZGJpKShzdHJ1Y3QgZHdfcGNpZSAqcGNpZSwgdm9p ZCBfX2lvbWVtICpiYXNlLCB1MzIgcmVnLA0KPiArCQkJICAgIHNpemVfdCBzaXplKTsNCj4gKwl2 b2lkCSgqd3JpdGVfZGJpKShzdHJ1Y3QgZHdfcGNpZSAqcGNpZSwgdm9pZCBfX2lvbWVtICpiYXNl LCB1MzIgcmVnLA0KPiArCQkJICAgICBzaXplX3Qgc2l6ZSwgdTMyIHZhbCk7DQo+ICsJdm9pZCAg ICAoKndyaXRlX2RiaTIpKHN0cnVjdCBkd19wY2llICpwY2llLCB2b2lkIF9faW9tZW0gKmJhc2Us IHUzMg0KPiByZWcsDQo+ICsJCQkgICAgICBzaXplX3Qgc2l6ZSwgdTMyIHZhbCk7DQo+ICsJaW50 CSgqbGlua191cCkoc3RydWN0IGR3X3BjaWUgKnBjaWUpOw0KPiArCWludAkoKnN0YXJ0X2xpbmsp KHN0cnVjdCBkd19wY2llICpwY2llKTsNCj4gKwl2b2lkCSgqc3RvcF9saW5rKShzdHJ1Y3QgZHdf cGNpZSAqcGNpZSk7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgZHdfcGNpZSB7DQo+ICsJc3RydWN0 IGRldmljZQkJKmRldjsNCj4gKwl2b2lkIF9faW9tZW0JCSpkYmlfYmFzZTsNCj4gKwl2b2lkIF9f aW9tZW0JCSpkYmlfYmFzZTI7DQo+ICsJLyogVXNlZCB3aGVuIGlhdHVfdW5yb2xsX2VuYWJsZWQg aXMgdHJ1ZSAqLw0KPiArCXZvaWQgX19pb21lbQkJKmF0dV9iYXNlOw0KPiArCXNpemVfdAkJCWF0 dV9zaXplOw0KPiArCXUzMgkJCW51bV9pYl93aW5kb3dzOw0KPiArCXUzMgkJCW51bV9vYl93aW5k b3dzOw0KPiArCWNvbnN0IHN0cnVjdCBkd19wY2llX29wcyAqb3BzOw0KPiArCXVuc2lnbmVkIGlu dAkJdmVyc2lvbjsNCj4gKwlpbnQJCQludW1fbGFuZXM7DQo+ICsJaW50CQkJbGlua19nZW47DQo+ ICsJdTgJCQluX2Z0c1syXTsNCj4gKwlib29sCQkJaWF0dV91bnJvbGxfZW5hYmxlZDogMTsNCj4g Kwlib29sCQkJaW9fY2ZnX2F0dV9zaGFyZWQ6IDE7DQo+ICt9Ow0KPiArDQo+ICBzdHJ1Y3QgZHdf cGNpZV9ob3N0X29wcyB7DQo+ICAJaW50ICgqaG9zdF9pbml0KShzdHJ1Y3QgcGNpZV9wb3J0ICpw cCk7DQo+ICAJaW50ICgqbXNpX2hvc3RfaW5pdCkoc3RydWN0IHBjaWVfcG9ydCAqcHApOw0KPiAg fTsNCj4gDQo+ICBzdHJ1Y3QgcGNpZV9wb3J0IHsNCj4gKwlzdHJ1Y3QgZHdfcGNpZQkJcGNpZTsN Cj4gIAlib29sCQkJaGFzX21zaV9jdHJsOjE7DQo+ICAJdTY0CQkJY2ZnMF9iYXNlOw0KPiAgCXZv aWQgX19pb21lbQkJKnZhX2NmZzBfYmFzZTsNCj4gQEAgLTIyOCw2ICsyNjAsNyBAQCBzdHJ1Y3Qg ZHdfcGNpZV9lcF9mdW5jIHsNCj4gIH07DQo+IA0KPiAgc3RydWN0IGR3X3BjaWVfZXAgew0KPiAr CXN0cnVjdCBkd19wY2llCQlwY2llOw0KPiAgCXN0cnVjdCBwY2lfZXBjCQkqZXBjOw0KPiAgCXN0 cnVjdCBkd19wY2llX2VwX2Z1bmMJKmZ1bmNzOw0KPiAgCWNvbnN0IHN0cnVjdCBkd19wY2llX2Vw X29wcyAqb3BzOw0KPiBAQCAtMjQzLDQzICsyNzYsOCBAQCBzdHJ1Y3QgZHdfcGNpZV9lcCB7DQo+ ICAJc3RydWN0IHBjaV9lcGZfYmFyCSplcGZfYmFyW1BDSV9TVERfTlVNX0JBUlNdOw0KPiAgfTsN Cj4gDQo+IC1zdHJ1Y3QgZHdfcGNpZV9vcHMgew0KPiAtCXU2NAkoKmNwdV9hZGRyX2ZpeHVwKShz dHJ1Y3QgZHdfcGNpZSAqcGNpZSwgdTY0IGNwdV9hZGRyKTsNCj4gLQl1MzIJKCpyZWFkX2RiaSko c3RydWN0IGR3X3BjaWUgKnBjaWUsIHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIHJlZywNCj4gLQkJ CSAgICBzaXplX3Qgc2l6ZSk7DQo+IC0Jdm9pZAkoKndyaXRlX2RiaSkoc3RydWN0IGR3X3BjaWUg KnBjaWUsIHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIHJlZywNCj4gLQkJCSAgICAgc2l6ZV90IHNp emUsIHUzMiB2YWwpOw0KPiAtCXZvaWQgICAgKCp3cml0ZV9kYmkyKShzdHJ1Y3QgZHdfcGNpZSAq cGNpZSwgdm9pZCBfX2lvbWVtICpiYXNlLCB1MzINCj4gcmVnLA0KPiAtCQkJICAgICAgc2l6ZV90 IHNpemUsIHUzMiB2YWwpOw0KPiAtCWludAkoKmxpbmtfdXApKHN0cnVjdCBkd19wY2llICpwY2ll KTsNCj4gLQlpbnQJKCpzdGFydF9saW5rKShzdHJ1Y3QgZHdfcGNpZSAqcGNpZSk7DQo+IC0Jdm9p ZAkoKnN0b3BfbGluaykoc3RydWN0IGR3X3BjaWUgKnBjaWUpOw0KPiAtfTsNCj4gLQ0KPiAtc3Ry dWN0IGR3X3BjaWUgew0KPiAtCXN0cnVjdCBkZXZpY2UJCSpkZXY7DQo+IC0Jdm9pZCBfX2lvbWVt CQkqZGJpX2Jhc2U7DQo+IC0Jdm9pZCBfX2lvbWVtCQkqZGJpX2Jhc2UyOw0KPiAtCS8qIFVzZWQg d2hlbiBpYXR1X3Vucm9sbF9lbmFibGVkIGlzIHRydWUgKi8NCj4gLQl2b2lkIF9faW9tZW0JCSph dHVfYmFzZTsNCj4gLQlzaXplX3QJCQlhdHVfc2l6ZTsNCj4gLQl1MzIJCQludW1faWJfd2luZG93 czsNCj4gLQl1MzIJCQludW1fb2Jfd2luZG93czsNCj4gLQlzdHJ1Y3QgcGNpZV9wb3J0CXBwOw0K PiAtCXN0cnVjdCBkd19wY2llX2VwCWVwOw0KPiAtCWNvbnN0IHN0cnVjdCBkd19wY2llX29wcyAq b3BzOw0KPiAtCXVuc2lnbmVkIGludAkJdmVyc2lvbjsNCj4gLQlpbnQJCQludW1fbGFuZXM7DQo+ IC0JaW50CQkJbGlua19nZW47DQo+IC0JdTgJCQluX2Z0c1syXTsNCj4gLQlib29sCQkJaWF0dV91 bnJvbGxfZW5hYmxlZDogMTsNCj4gLQlib29sCQkJaW9fY2ZnX2F0dV9zaGFyZWQ6IDE7DQo+IC19 Ow0KPiAtDQo+IC0jZGVmaW5lIHRvX2R3X3BjaWVfZnJvbV9wcChwb3J0KSBjb250YWluZXJfb2Yo KHBvcnQpLCBzdHJ1Y3QgZHdfcGNpZSwgcHApDQo+IC0NCj4gLSNkZWZpbmUgdG9fZHdfcGNpZV9m cm9tX2VwKGVuZHBvaW50KSAgIFwNCj4gLQkJY29udGFpbmVyX29mKChlbmRwb2ludCksIHN0cnVj dCBkd19wY2llLCBlcCkNCj4gKyNkZWZpbmUgdG9fZHdfcGNpZV9mcm9tX3BwKHBvcnQpCSgmKHBv cnQpLT5wY2llKQ0KPiArI2RlZmluZSB0b19kd19wY2llX2Zyb21fZXAoZW5kcG9pbnQpCSgmKGVu ZHBvaW50KS0+cGNpZSkNCj4gDQo+ICB1OCBkd19wY2llX2ZpbmRfY2FwYWJpbGl0eShzdHJ1Y3Qg ZHdfcGNpZSAqcGNpLCB1OCBjYXApOw0KPiAgdTE2IGR3X3BjaWVfZmluZF9leHRfY2FwYWJpbGl0 eShzdHJ1Y3QgZHdfcGNpZSAqcGNpLCB1OCBjYXApOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9w Y2kvY29udHJvbGxlci9kd2MvcGNpZS1oaXN0Yi5jDQo+IGIvZHJpdmVycy9wY2kvY29udHJvbGxl ci9kd2MvcGNpZS1oaXN0Yi5jDQo+IGluZGV4IDg2ZjlkMTZjNTBkNy4uNjJkN2FlNGZiMTRiIDEw MDY0NA0KPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWhpc3RiLmMNCj4g KysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1oaXN0Yi5jDQo+IEBAIC01MCw3 ICs1MCw3IEBADQo+ICAjZGVmaW5lIFBDSUVfTFRTU01fU1RBVEVfQUNUSVZFCQkweDExDQo+IA0K PiAgc3RydWN0IGhpc3RiX3BjaWUgew0KPiAtCXN0cnVjdCBkd19wY2llICpwY2k7DQo+ICsJc3Ry dWN0IHBjaWVfcG9ydCAqcHA7DQo+ICAJc3RydWN0IGNsayAqYXV4X2NsazsNCj4gIAlzdHJ1Y3Qg Y2xrICpwaXBlX2NsazsNCj4gIAlzdHJ1Y3QgY2xrICpzeXNfY2xrOw0KPiBAQCAtMTA1LDExICsx MDUsMTIgQEAgc3RhdGljIHZvaWQgaGlzdGJfcGNpZV9kYmlfcl9tb2RlKHN0cnVjdA0KPiBwY2ll X3BvcnQgKnBwLCBib29sIGVuYWJsZSkNCj4gIHN0YXRpYyB1MzIgaGlzdGJfcGNpZV9yZWFkX2Ri aShzdHJ1Y3QgZHdfcGNpZSAqcGNpLCB2b2lkIF9faW9tZW0gKmJhc2UsDQo+ICAJCQkgICAgICAg dTMyIHJlZywgc2l6ZV90IHNpemUpDQo+ICB7DQo+ICsJc3RydWN0IGhpc3RiX3BjaWUgKmhpcGNp ZSA9IHRvX2hpc3RiX3BjaWUocGNpKTsNCj4gIAl1MzIgdmFsOw0KPiANCj4gLQloaXN0Yl9wY2ll X2RiaV9yX21vZGUoJnBjaS0+cHAsIHRydWUpOw0KPiArCWhpc3RiX3BjaWVfZGJpX3JfbW9kZSho aXBjaWUtPnBwLCB0cnVlKTsNCj4gIAlkd19wY2llX3JlYWQoYmFzZSArIHJlZywgc2l6ZSwgJnZh bCk7DQo+IC0JaGlzdGJfcGNpZV9kYmlfcl9tb2RlKCZwY2ktPnBwLCBmYWxzZSk7DQo+ICsJaGlz dGJfcGNpZV9kYmlfcl9tb2RlKGhpcGNpZS0+cHAsIGZhbHNlKTsNCj4gDQo+ICAJcmV0dXJuIHZh bDsNCj4gIH0NCj4gQEAgLTExNywxNSArMTE4LDE4IEBAIHN0YXRpYyB1MzIgaGlzdGJfcGNpZV9y ZWFkX2RiaShzdHJ1Y3QgZHdfcGNpZQ0KPiAqcGNpLCB2b2lkIF9faW9tZW0gKmJhc2UsDQo+ICBz dGF0aWMgdm9pZCBoaXN0Yl9wY2llX3dyaXRlX2RiaShzdHJ1Y3QgZHdfcGNpZSAqcGNpLCB2b2lk IF9faW9tZW0gKmJhc2UsDQo+ICAJCQkJIHUzMiByZWcsIHNpemVfdCBzaXplLCB1MzIgdmFsKQ0K PiAgew0KPiAtCWhpc3RiX3BjaWVfZGJpX3dfbW9kZSgmcGNpLT5wcCwgdHJ1ZSk7DQo+ICsJc3Ry dWN0IGhpc3RiX3BjaWUgKmhpcGNpZSA9IHRvX2hpc3RiX3BjaWUocGNpKTsNCj4gKw0KPiArCWhp c3RiX3BjaWVfZGJpX3dfbW9kZShoaXBjaWUtPnBwLCB0cnVlKTsNCj4gIAlkd19wY2llX3dyaXRl KGJhc2UgKyByZWcsIHNpemUsIHZhbCk7DQo+IC0JaGlzdGJfcGNpZV9kYmlfd19tb2RlKCZwY2kt PnBwLCBmYWxzZSk7DQo+ICsJaGlzdGJfcGNpZV9kYmlfd19tb2RlKGhpcGNpZS0+cHAsIGZhbHNl KTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgaW50IGhpc3RiX3BjaWVfcmRfb3duX2NvbmYoc3RydWN0 IHBjaV9idXMgKmJ1cywgdW5zaWduZWQgaW50IGRldmZuLA0KPiAgCQkJCSAgaW50IHdoZXJlLCBp bnQgc2l6ZSwgdTMyICp2YWwpDQo+ICB7DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3 X3BjaWVfZnJvbV9wcChidXMtPnN5c2RhdGEpOw0KPiArCXN0cnVjdCBwY2llX3BvcnQgKnBwID0g YnVzLT5zeXNkYXRhOw0KPiArCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21f cHAocHApOw0KPiANCj4gIAlpZiAoUENJX1NMT1QoZGV2Zm4pKSB7DQo+ICAJCSp2YWwgPSB+MDsN Cj4gQEAgLTEzOSw3ICsxNDMsOCBAQCBzdGF0aWMgaW50IGhpc3RiX3BjaWVfcmRfb3duX2NvbmYo c3RydWN0IHBjaV9idXMNCj4gKmJ1cywgdW5zaWduZWQgaW50IGRldmZuLA0KPiAgc3RhdGljIGlu dCBoaXN0Yl9wY2llX3dyX293bl9jb25mKHN0cnVjdCBwY2lfYnVzICpidXMsIHVuc2lnbmVkIGlu dCBkZXZmbiwNCj4gIAkJCQkgIGludCB3aGVyZSwgaW50IHNpemUsIHUzMiB2YWwpDQo+ICB7DQo+ IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChidXMtPnN5c2RhdGEp Ow0KPiArCXN0cnVjdCBwY2llX3BvcnQgKnBwID0gYnVzLT5zeXNkYXRhOw0KPiArCXN0cnVjdCBk d19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAocHApOw0KPiANCj4gIAlpZiAoUENJX1NM T1QoZGV2Zm4pKQ0KPiAgCQlyZXR1cm4gUENJQklPU19ERVZJQ0VfTk9UX0ZPVU5EOw0KPiBAQCAt MzEwLDEyICszMTUsMTIgQEAgc3RhdGljIGludCBoaXN0Yl9wY2llX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UNCj4gKnBkZXYpDQo+ICAJaWYgKCFoaXBjaWUpDQo+ICAJCXJldHVybiAtRU5P TUVNOw0KPiANCj4gLQlwY2kgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnBjaSksIEdGUF9L RVJORUwpOw0KPiAtCWlmICghcGNpKQ0KPiArCXBwID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9m KCpwcCksIEdGUF9LRVJORUwpOw0KPiArCWlmICghcHApDQo+ICAJCXJldHVybiAtRU5PTUVNOw0K PiANCj4gLQloaXBjaWUtPnBjaSA9IHBjaTsNCj4gLQlwcCA9ICZwY2ktPnBwOw0KPiArCWhpcGNp ZS0+cHAgPSBwcDsNCj4gKwlwY2kgPSAmcHAtPnBjaWU7DQo+ICAJcGNpLT5kZXYgPSBkZXY7DQo+ ICAJcGNpLT5vcHMgPSAmZHdfcGNpZV9vcHM7DQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9w Y2kvY29udHJvbGxlci9kd2MvcGNpZS1pbnRlbC1ndy5jDQo+IGIvZHJpdmVycy9wY2kvY29udHJv bGxlci9kd2MvcGNpZS1pbnRlbC1ndy5jDQo+IGluZGV4IDBjZWRkMWY5NWYzNy4uMjlkNTZiZGEy NTUwIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWludGVs LWd3LmMNCj4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1pbnRlbC1ndy5j DQo+IEBAIC02MSw3ICs2MSw3IEBAIHN0cnVjdCBpbnRlbF9wY2llX3NvYyB7DQo+ICB9Ow0KPiAN Cj4gIHN0cnVjdCBpbnRlbF9wY2llX3BvcnQgew0KPiAtCXN0cnVjdCBkd19wY2llCQlwY2k7DQo+ ICsJc3RydWN0IHBjaWVfcG9ydAlwcDsNCj4gIAl2b2lkIF9faW9tZW0JCSphcHBfYmFzZTsNCj4g IAlzdHJ1Y3QgZ3Bpb19kZXNjCSpyZXNldF9ncGlvOw0KPiAgCXUzMgkJCXJzdF9pbnRydmw7DQo+ IEBAIC05OSwxOCArOTksMjQgQEAgc3RhdGljIHZvaWQgcGNpZV9hcHBfd3JfbWFzayhzdHJ1Y3Qg aW50ZWxfcGNpZV9wb3J0DQo+ICpscHAsIHUzMiBvZnMsDQo+IA0KPiAgc3RhdGljIGlubGluZSB1 MzIgcGNpZV9yY19jZmdfcmQoc3RydWN0IGludGVsX3BjaWVfcG9ydCAqbHBwLCB1MzIgb2ZzKQ0K PiAgew0KPiAtCXJldHVybiBkd19wY2llX3JlYWRsX2RiaSgmbHBwLT5wY2ksIG9mcyk7DQo+ICsJ c3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChscHAtPnBwKTsNCj4gKw0K PiArCXJldHVybiBkd19wY2llX3JlYWRsX2RiaShwY2ksIG9mcyk7DQo+ICB9DQo+IA0KPiAgc3Rh dGljIGlubGluZSB2b2lkIHBjaWVfcmNfY2ZnX3dyKHN0cnVjdCBpbnRlbF9wY2llX3BvcnQgKmxw cCwgdTMyIG9mcywgdTMyDQo+IHZhbCkNCj4gIHsNCj4gLQlkd19wY2llX3dyaXRlbF9kYmkoJmxw cC0+cGNpLCBvZnMsIHZhbCk7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVf ZnJvbV9wcChscHAtPnBwKTsNCj4gKw0KPiArCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIG9mcywg dmFsKTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgdm9pZCBwY2llX3JjX2NmZ193cl9tYXNrKHN0cnVj dCBpbnRlbF9wY2llX3BvcnQgKmxwcCwgdTMyIG9mcywNCj4gIAkJCQl1MzIgbWFzaywgdTMyIHZh bCkNCj4gIHsNCj4gLQlwY2llX3VwZGF0ZV9iaXRzKGxwcC0+cGNpLmRiaV9iYXNlLCBvZnMsIG1h c2ssIHZhbCk7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChs cHAtPnBwKTsNCj4gKw0KPiArCXBjaWVfdXBkYXRlX2JpdHMocGNpLT5kYmlfYmFzZSwgb2ZzLCBt YXNrLCB2YWwpOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lkIGludGVsX3BjaWVfbHRzc21fZW5h YmxlKHN0cnVjdCBpbnRlbF9wY2llX3BvcnQgKmxwcCkNCj4gQEAgLTEyNyw3ICsxMzMsOCBAQCBz dGF0aWMgdm9pZCBpbnRlbF9wY2llX2x0c3NtX2Rpc2FibGUoc3RydWN0DQo+IGludGVsX3BjaWVf cG9ydCAqbHBwKQ0KPiAgc3RhdGljIHZvaWQgaW50ZWxfcGNpZV9saW5rX3NldHVwKHN0cnVjdCBp bnRlbF9wY2llX3BvcnQgKmxwcCkNCj4gIHsNCj4gIAl1MzIgdmFsOw0KPiAtCXU4IG9mZnNldCA9 IGR3X3BjaWVfZmluZF9jYXBhYmlsaXR5KCZscHAtPnBjaSwgUENJX0NBUF9JRF9FWFApOw0KPiAr CXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAobHBwLT5wcCk7DQo+ICsJ dTggb2Zmc2V0ID0gZHdfcGNpZV9maW5kX2NhcGFiaWxpdHkocGNpLCBQQ0lfQ0FQX0lEX0VYUCk7 DQo+IA0KPiAgCXZhbCA9IHBjaWVfcmNfY2ZnX3JkKGxwcCwgb2Zmc2V0ICsgUENJX0VYUF9MTktD VEwpOw0KPiANCj4gQEAgLTE1Myw3ICsxNjAsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wY2llX2lu aXRfbl9mdHMoc3RydWN0IGR3X3BjaWUgKnBjaSkNCj4gDQo+ICBzdGF0aWMgaW50IGludGVsX3Bj aWVfZXBfcnN0X2luaXQoc3RydWN0IGludGVsX3BjaWVfcG9ydCAqbHBwKQ0KPiAgew0KPiAtCXN0 cnVjdCBkZXZpY2UgKmRldiA9IGxwcC0+cGNpLmRldjsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNp ID0gdG9fZHdfcGNpZV9mcm9tX3BwKGxwcC0+cHApOw0KPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9 IHBjaS0+ZGV2Ow0KPiAgCWludCByZXQ7DQo+IA0KPiAgCWxwcC0+cmVzZXRfZ3BpbyA9IGRldm1f Z3Bpb2RfZ2V0KGRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0xPVyk7DQo+IEBAIC0yMTEsNyArMjE5 LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcGNpZV9jb3JlX2lycV9kaXNhYmxlKHN0cnVjdA0KPiBp bnRlbF9wY2llX3BvcnQgKmxwcCkNCj4gIHN0YXRpYyBpbnQgaW50ZWxfcGNpZV9nZXRfcmVzb3Vy Y2VzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICB7DQo+ICAJc3RydWN0IGludGVs X3BjaWVfcG9ydCAqbHBwID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQo+IC0Jc3RydWN0 IGR3X3BjaWUgKnBjaSA9ICZscHAtPnBjaTsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9f ZHdfcGNpZV9mcm9tX3BwKGxwcC0+cHApOw0KPiAgCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ ZGV2Ow0KPiAgCWludCByZXQ7DQo+IA0KPiBAQCAtMjU1LDcgKzI2Myw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfcGNpZV93YWl0X2wyKHN0cnVjdCBpbnRlbF9wY2llX3BvcnQNCj4gKmxwcCkNCj4gIHsN Cj4gIAl1MzIgdmFsdWU7DQo+ICAJaW50IHJldDsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0g JmxwcC0+cGNpOw0KPiArCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAo bHBwLT5wcCk7DQo+IA0KPiAgCWlmIChwY2ktPmxpbmtfZ2VuIDwgMykNCj4gIAkJcmV0dXJuIDA7 DQo+IEBAIC0yNjksMTQgKzI3NywxNiBAQCBzdGF0aWMgaW50IGludGVsX3BjaWVfd2FpdF9sMihz dHJ1Y3QgaW50ZWxfcGNpZV9wb3J0DQo+ICpscHApDQo+ICAJCQkJIHZhbHVlICYgUENJRV9BUFBf UE1DX0lOX0wyLCAyMCwNCj4gIAkJCQkgamlmZmllc190b191c2Vjcyg1ICogSFopKTsNCj4gIAlp ZiAocmV0KQ0KPiAtCQlkZXZfZXJyKGxwcC0+cGNpLmRldiwgIlBDSWUgbGluayBlbnRlciBMMiB0 aW1lb3V0IVxuIik7DQo+ICsJCWRldl9lcnIocGNpLT5kZXYsICJQQ0llIGxpbmsgZW50ZXIgTDIg dGltZW91dCFcbiIpOw0KPiANCj4gIAlyZXR1cm4gcmV0Ow0KPiAgfQ0KPiANCj4gIHN0YXRpYyB2 b2lkIGludGVsX3BjaWVfdHVybl9vZmYoc3RydWN0IGludGVsX3BjaWVfcG9ydCAqbHBwKQ0KPiAg ew0KPiAtCWlmIChkd19wY2llX2xpbmtfdXAoJmxwcC0+cGNpKSkNCj4gKwlzdHJ1Y3QgZHdfcGNp ZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKGxwcC0+cHApOw0KPiArDQo+ICsJaWYgKGR3X3Bj aWVfbGlua191cChwY2kpKQ0KPiAgCQlpbnRlbF9wY2llX3dhaXRfbDIobHBwKTsNCj4gDQo+ICAJ LyogUHV0IGVuZHBvaW50IGRldmljZSBpbiByZXNldCBzdGF0ZSAqLw0KPiBAQCAtMjg3LDcgKzI5 Nyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3BjaWVfdHVybl9vZmYoc3RydWN0IGludGVsX3BjaWVf cG9ydA0KPiAqbHBwKQ0KPiAgc3RhdGljIGludCBpbnRlbF9wY2llX2hvc3Rfc2V0dXAoc3RydWN0 IGludGVsX3BjaWVfcG9ydCAqbHBwKQ0KPiAgew0KPiAgCWludCByZXQ7DQo+IC0Jc3RydWN0IGR3 X3BjaWUgKnBjaSA9ICZscHAtPnBjaTsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9fZHdf cGNpZV9mcm9tX3BwKGxwcC0+cHApOw0KPiANCj4gIAlpbnRlbF9wY2llX2NvcmVfcnN0X2Fzc2Vy dChscHApOw0KPiAgCWludGVsX3BjaWVfZGV2aWNlX3JzdF9hc3NlcnQobHBwKTsNCj4gQEAgLTMw MCw3ICszMTAsNyBAQCBzdGF0aWMgaW50IGludGVsX3BjaWVfaG9zdF9zZXR1cChzdHJ1Y3QNCj4g aW50ZWxfcGNpZV9wb3J0ICpscHApDQo+IA0KPiAgCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShs cHAtPmNvcmVfY2xrKTsNCj4gIAlpZiAocmV0KSB7DQo+IC0JCWRldl9lcnIobHBwLT5wY2kuZGV2 LCAiQ29yZSBjbG9jayBlbmFibGUgZmFpbGVkOiAlZFxuIiwgcmV0KTsNCj4gKwkJZGV2X2Vycihw Y2ktPmRldiwgIkNvcmUgY2xvY2sgZW5hYmxlIGZhaWxlZDogJWRcbiIsIHJldCk7DQo+ICAJCWdv dG8gY2xrX2VycjsNCj4gIAl9DQo+IA0KPiBAQCAtMzA5LDcgKzMxOSw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfcGNpZV9ob3N0X3NldHVwKHN0cnVjdA0KPiBpbnRlbF9wY2llX3BvcnQgKmxwcCkNCj4g IAlpbnRlbF9wY2llX2x0c3NtX2Rpc2FibGUobHBwKTsNCj4gIAlpbnRlbF9wY2llX2xpbmtfc2V0 dXAobHBwKTsNCj4gIAlpbnRlbF9wY2llX2luaXRfbl9mdHMocGNpKTsNCj4gLQlkd19wY2llX3Nl dHVwX3JjKCZwY2ktPnBwKTsNCj4gKwlkd19wY2llX3NldHVwX3JjKGxwcC0+cHApOw0KPiAgCWR3 X3BjaWVfdXBjb25maWdfc2V0dXAocGNpKTsNCj4gDQo+ICAJaW50ZWxfcGNpZV9kZXZpY2VfcnN0 X2RlYXNzZXJ0KGxwcCk7DQo+IEBAIC0zNDYsNyArMzU2LDcgQEAgc3RhdGljIHZvaWQgX19pbnRl bF9wY2llX3JlbW92ZShzdHJ1Y3QNCj4gaW50ZWxfcGNpZV9wb3J0ICpscHApDQo+ICBzdGF0aWMg aW50IGludGVsX3BjaWVfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICB7 DQo+ICAJc3RydWN0IGludGVsX3BjaWVfcG9ydCAqbHBwID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEo cGRldik7DQo+IC0Jc3RydWN0IHBjaWVfcG9ydCAqcHAgPSAmbHBwLT5wY2kucHA7DQo+ICsJc3Ry dWN0IHBjaWVfcG9ydCAqcHAgPSBscHAtPnBwOw0KPiANCj4gIAlkd19wY2llX2hvc3RfZGVpbml0 KHBwKTsNCj4gIAlfX2ludGVsX3BjaWVfcmVtb3ZlKGxwcCk7DQo+IEBAIC00MTUsOSArNDI1LDkg QEAgc3RhdGljIGludCBpbnRlbF9wY2llX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UNCj4g KnBkZXYpDQo+ICAJCXJldHVybiAtRU5PTUVNOw0KPiANCj4gIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0 YShwZGV2LCBscHApOw0KPiAtCXBjaSA9ICZscHAtPnBjaTsNCj4gKwlwcCA9ICZscHAtPnBwOw0K PiArCXBjaSA9ICZwcC0+cGNpZTsNCj4gIAlwY2ktPmRldiA9IGRldjsNCj4gLQlwcCA9ICZwY2kt PnBwOw0KPiANCj4gIAlyZXQgPSBpbnRlbF9wY2llX2dldF9yZXNvdXJjZXMocGRldik7DQo+ICAJ aWYgKHJldCkNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUt a2lyaW4uYw0KPiBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUta2lyaW4uYw0KPiBp bmRleCAwMjZmZDFlNDJhNTUuLjZjYzM1YTRkNzM4ZiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9w Y2kvY29udHJvbGxlci9kd2MvcGNpZS1raXJpbi5jDQo+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRy b2xsZXIvZHdjL3BjaWUta2lyaW4uYw0KPiBAQCAtNzksMTcgKzc5LDE3IEBADQo+ICAjZGVmaW5l IFRJTUVfUEhZX1BEX01BWAkJMTENCj4gDQo+ICBzdHJ1Y3Qga2lyaW5fcGNpZSB7DQo+IC0Jc3Ry dWN0IGR3X3BjaWUJKnBjaTsNCj4gLQl2b2lkIF9faW9tZW0JKmFwYl9iYXNlOw0KPiAtCXZvaWQg X19pb21lbQkqcGh5X2Jhc2U7DQo+IC0Jc3RydWN0IHJlZ21hcAkqY3JnY3RybDsNCj4gLQlzdHJ1 Y3QgcmVnbWFwCSpzeXNjdHJsOw0KPiAtCXN0cnVjdCBjbGsJKmFwYl9zeXNfY2xrOw0KPiAtCXN0 cnVjdCBjbGsJKmFwYl9waHlfY2xrOw0KPiAtCXN0cnVjdCBjbGsJKnBoeV9yZWZfY2xrOw0KPiAt CXN0cnVjdCBjbGsJKnBjaWVfYWNsazsNCj4gLQlzdHJ1Y3QgY2xrCSpwY2llX2F1eF9jbGs7DQo+ IC0JaW50CQlncGlvX2lkX3Jlc2V0Ow0KPiArCXN0cnVjdCBwY2llX3BvcnQJKnBwOw0KPiArCXZv aWQgX19pb21lbQkJKmFwYl9iYXNlOw0KPiArCXZvaWQgX19pb21lbQkJKnBoeV9iYXNlOw0KPiAr CXN0cnVjdCByZWdtYXAJCSpjcmdjdHJsOw0KPiArCXN0cnVjdCByZWdtYXAJCSpzeXNjdHJsOw0K PiArCXN0cnVjdCBjbGsJCSphcGJfc3lzX2NsazsNCj4gKwlzdHJ1Y3QgY2xrCQkqYXBiX3BoeV9j bGs7DQo+ICsJc3RydWN0IGNsawkJKnBoeV9yZWZfY2xrOw0KPiArCXN0cnVjdCBjbGsJCSpwY2ll X2FjbGs7DQo+ICsJc3RydWN0IGNsawkJKnBjaWVfYXV4X2NsazsNCj4gKwlpbnQJCQlncGlvX2lk X3Jlc2V0Ow0KPiAgfTsNCj4gDQo+ICAvKiBSZWdpc3RlcnMgaW4gUENJZUNUUkwgKi8NCj4gQEAg LTE3Miw3ICsxNzIsOCBAQCBzdGF0aWMgbG9uZyBraXJpbl9wY2llX2dldF9yZXNvdXJjZShzdHJ1 Y3Qga2lyaW5fcGNpZQ0KPiAqa2lyaW5fcGNpZSwNCj4gDQo+ICBzdGF0aWMgaW50IGtpcmluX3Bj aWVfcGh5X2luaXQoc3RydWN0IGtpcmluX3BjaWUgKmtpcmluX3BjaWUpDQo+ICB7DQo+IC0Jc3Ry dWN0IGRldmljZSAqZGV2ID0ga2lyaW5fcGNpZS0+cGNpLT5kZXY7DQo+ICsJc3RydWN0IGR3X3Bj aWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChraXJpbl9wY2llLT5wcCk7DQo+ICsJc3RydWN0 IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7DQo+ICAJdTMyIHJlZ192YWw7DQo+IA0KPiAgCXJlZ192 YWwgPSBraXJpbl9hcGJfcGh5X3JlYWRsKGtpcmluX3BjaWUsIFBDSUVfQVBCX1BIWV9DVFJMMSk7 DQo+IEBAIC0zMjgsNyArMzI5LDggQEAgc3RhdGljIHZvaWQga2lyaW5fcGNpZV9zaWRlYmFuZF9k Ymlfcl9tb2RlKHN0cnVjdA0KPiBraXJpbl9wY2llICpraXJpbl9wY2llLA0KPiAgc3RhdGljIGlu dCBraXJpbl9wY2llX3JkX293bl9jb25mKHN0cnVjdCBwY2lfYnVzICpidXMsIHVuc2lnbmVkIGlu dCBkZXZmbiwNCj4gIAkJCQkgIGludCB3aGVyZSwgaW50IHNpemUsIHUzMiAqdmFsKQ0KPiAgew0K PiAtCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAoYnVzLT5zeXNkYXRh KTsNCj4gKwlzdHJ1Y3QgcGNpZV9wb3J0ICpwcCA9IGJ1cy0+c3lzZGF0YTsNCj4gKwlzdHJ1Y3Qg ZHdfcGNpZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKHBwKTsNCj4gDQo+ICAJaWYgKFBDSV9T TE9UKGRldmZuKSkgew0KPiAgCQkqdmFsID0gfjA7DQo+IEBAIC0zNDIsNyArMzQ0LDggQEAgc3Rh dGljIGludCBraXJpbl9wY2llX3JkX293bl9jb25mKHN0cnVjdCBwY2lfYnVzDQo+ICpidXMsIHVu c2lnbmVkIGludCBkZXZmbiwNCj4gIHN0YXRpYyBpbnQga2lyaW5fcGNpZV93cl9vd25fY29uZihz dHJ1Y3QgcGNpX2J1cyAqYnVzLCB1bnNpZ25lZCBpbnQgZGV2Zm4sDQo+ICAJCQkJICBpbnQgd2hl cmUsIGludCBzaXplLCB1MzIgdmFsKQ0KPiAgew0KPiAtCXN0cnVjdCBkd19wY2llICpwY2kgPSB0 b19kd19wY2llX2Zyb21fcHAoYnVzLT5zeXNkYXRhKTsNCj4gKwlzdHJ1Y3QgcGNpZV9wb3J0ICpw cCA9IGJ1cy0+c3lzZGF0YTsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9fZHdfcGNpZV9m cm9tX3BwKHBwKTsNCj4gDQo+ICAJaWYgKFBDSV9TTE9UKGRldmZuKSkNCj4gIAkJcmV0dXJuIFBD SUJJT1NfREVWSUNFX05PVF9GT1VORDsNCj4gQEAgLTQyMyw2ICs0MjYsNyBAQCBzdGF0aWMgaW50 IGtpcmluX3BjaWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZQ0KPiAqcGRldikNCj4gIHsN Cj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiAgCXN0cnVjdCBraXJpbl9w Y2llICpraXJpbl9wY2llOw0KPiArCXN0cnVjdCBwY2llX3BvcnQgKnBwOw0KPiAgCXN0cnVjdCBk d19wY2llICpwY2k7DQo+ICAJaW50IHJldDsNCj4gDQo+IEBAIC00MzUsMTQgKzQzOSwxNCBAQCBz dGF0aWMgaW50IGtpcmluX3BjaWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZQ0KPiAqcGRl dikNCj4gIAlpZiAoIWtpcmluX3BjaWUpDQo+ICAJCXJldHVybiAtRU5PTUVNOw0KPiANCj4gLQlw Y2kgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnBjaSksIEdGUF9LRVJORUwpOw0KPiAtCWlm ICghcGNpKQ0KPiArCXBwID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcCksIEdGUF9LRVJO RUwpOw0KPiArCWlmICghcHApDQo+ICAJCXJldHVybiAtRU5PTUVNOw0KPiANCj4gIAlwY2ktPmRl diA9IGRldjsNCj4gIAlwY2ktPm9wcyA9ICZraXJpbl9kd19wY2llX29wczsNCj4gLQlwY2ktPnBw Lm9wcyA9ICZraXJpbl9wY2llX2hvc3Rfb3BzOw0KPiAtCWtpcmluX3BjaWUtPnBjaSA9IHBjaTsN Cj4gKwlwcC0+b3BzID0gJmtpcmluX3BjaWVfaG9zdF9vcHM7DQo+ICsJa2lyaW5fcGNpZS0+cHAg PSBwcDsNCj4gDQo+ICAJcmV0ID0ga2lyaW5fcGNpZV9nZXRfY2xrKGtpcmluX3BjaWUsIHBkZXYp Ow0KPiAgCWlmIChyZXQpDQo+IEBAIC00NjcsNyArNDcxLDcgQEAgc3RhdGljIGludCBraXJpbl9w Y2llX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UNCj4gKnBkZXYpDQo+IA0KPiAgCXBsYXRm b3JtX3NldF9kcnZkYXRhKHBkZXYsIGtpcmluX3BjaWUpOw0KPiANCj4gLQlyZXR1cm4gZHdfcGNp ZV9ob3N0X2luaXQoJnBjaS0+cHApOw0KPiArCXJldHVybiBkd19wY2llX2hvc3RfaW5pdChwcCk7 DQo+ICB9DQo+IA0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQga2lyaW5fcGNp ZV9tYXRjaFtdID0gew0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2Mv cGNpZS1xY29tLmMNCj4gYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLXFjb20uYw0K PiBpbmRleCBhZmZhMjcxM2JmODAuLjBkMzc1YzdkOWY1MCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1xY29tLmMNCj4gKysrIGIvZHJpdmVycy9wY2kvY29u dHJvbGxlci9kd2MvcGNpZS1xY29tLmMNCj4gQEAgLTE4OCw3ICsxODgsNyBAQCBzdHJ1Y3QgcWNv bV9wY2llX29wcyB7DQo+ICB9Ow0KPiANCj4gIHN0cnVjdCBxY29tX3BjaWUgew0KPiAtCXN0cnVj dCBkd19wY2llICpwY2k7DQo+ICsJc3RydWN0IHBjaWVfcG9ydCAqcHA7DQo+ICAJdm9pZCBfX2lv bWVtICpwYXJmOwkJCS8qIERUIHBhcmYgKi8NCj4gIAl2b2lkIF9faW9tZW0gKmVsYmk7CQkJLyog RFQgZWxiaSAqLw0KPiAgCXVuaW9uIHFjb21fcGNpZV9yZXNvdXJjZXMgcmVzOw0KPiBAQCAtMjM3 LDcgKzIzNyw3IEBAIHN0YXRpYyB2b2lkIHFjb21fcGNpZV8yXzFfMF9sdHNzbV9lbmFibGUoc3Ry dWN0DQo+IHFjb21fcGNpZSAqcGNpZSkNCj4gIHN0YXRpYyBpbnQgcWNvbV9wY2llX2dldF9yZXNv dXJjZXNfMl8xXzAoc3RydWN0IHFjb21fcGNpZSAqcGNpZSkNCj4gIHsNCj4gIAlzdHJ1Y3QgcWNv bV9wY2llX3Jlc291cmNlc18yXzFfMCAqcmVzID0gJnBjaWUtPnJlcy52Ml8xXzA7DQo+IC0Jc3Ry dWN0IGR3X3BjaWUgKnBjaSA9IHBjaWUtPnBjaTsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0g dG9fZHdfcGNpZV9mcm9tX3BwKHBjaWUtPnBwKTsNCj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBw Y2ktPmRldjsNCj4gIAlpbnQgcmV0Ow0KPiANCj4gQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMg dm9pZCBxY29tX3BjaWVfZGVpbml0XzJfMV8wKHN0cnVjdA0KPiBxY29tX3BjaWUgKnBjaWUpDQo+ ICBzdGF0aWMgaW50IHFjb21fcGNpZV9pbml0XzJfMV8wKHN0cnVjdCBxY29tX3BjaWUgKnBjaWUp DQo+ICB7DQo+ICAJc3RydWN0IHFjb21fcGNpZV9yZXNvdXJjZXNfMl8xXzAgKnJlcyA9ICZwY2ll LT5yZXMudjJfMV8wOw0KPiAtCXN0cnVjdCBkd19wY2llICpwY2kgPSBwY2llLT5wY2k7DQo+ICsJ c3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChwY2llLT5wcCk7DQo+ICAJ c3RydWN0IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7DQo+ICAJc3RydWN0IGRldmljZV9ub2RlICpu b2RlID0gZGV2LT5vZl9ub2RlOw0KPiAgCXUzMiB2YWw7DQo+IEBAIC00MzQsNyArNDM0LDcgQEAg c3RhdGljIGludCBxY29tX3BjaWVfaW5pdF8yXzFfMChzdHJ1Y3QgcWNvbV9wY2llDQo+ICpwY2ll KQ0KPiAgc3RhdGljIGludCBxY29tX3BjaWVfZ2V0X3Jlc291cmNlc18xXzBfMChzdHJ1Y3QgcWNv bV9wY2llICpwY2llKQ0KPiAgew0KPiAgCXN0cnVjdCBxY29tX3BjaWVfcmVzb3VyY2VzXzFfMF8w ICpyZXMgPSAmcGNpZS0+cmVzLnYxXzBfMDsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gcGNp ZS0+cGNpOw0KPiArCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAocGNp ZS0+cHApOw0KPiAgCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ZGV2Ow0KPiANCj4gIAlyZXMt PnZkZGEgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoZGV2LCAidmRkYSIpOw0KPiBAQCAtNDc2LDcgKzQ3 Niw3IEBAIHN0YXRpYyB2b2lkIHFjb21fcGNpZV9kZWluaXRfMV8wXzAoc3RydWN0DQo+IHFjb21f cGNpZSAqcGNpZSkNCj4gIHN0YXRpYyBpbnQgcWNvbV9wY2llX2luaXRfMV8wXzAoc3RydWN0IHFj b21fcGNpZSAqcGNpZSkNCj4gIHsNCj4gIAlzdHJ1Y3QgcWNvbV9wY2llX3Jlc291cmNlc18xXzBf MCAqcmVzID0gJnBjaWUtPnJlcy52MV8wXzA7DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9IHBj aWUtPnBjaTsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKHBj aWUtPnBwKTsNCj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwY2ktPmRldjsNCj4gIAlpbnQgcmV0 Ow0KPiANCj4gQEAgLTU1NCw3ICs1NTQsNyBAQCBzdGF0aWMgdm9pZCBxY29tX3BjaWVfMl8zXzJf bHRzc21fZW5hYmxlKHN0cnVjdA0KPiBxY29tX3BjaWUgKnBjaWUpDQo+ICBzdGF0aWMgaW50IHFj b21fcGNpZV9nZXRfcmVzb3VyY2VzXzJfM18yKHN0cnVjdCBxY29tX3BjaWUgKnBjaWUpDQo+ICB7 DQo+ICAJc3RydWN0IHFjb21fcGNpZV9yZXNvdXJjZXNfMl8zXzIgKnJlcyA9ICZwY2llLT5yZXMu djJfM18yOw0KPiAtCXN0cnVjdCBkd19wY2llICpwY2kgPSBwY2llLT5wY2k7DQo+ICsJc3RydWN0 IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChwY2llLT5wcCk7DQo+ICAJc3RydWN0 IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7DQo+ICAJaW50IHJldDsNCj4gDQo+IEBAIC02MDcsNyAr NjA3LDcgQEAgc3RhdGljIHZvaWQgcWNvbV9wY2llX3Bvc3RfZGVpbml0XzJfM18yKHN0cnVjdA0K PiBxY29tX3BjaWUgKnBjaWUpDQo+ICBzdGF0aWMgaW50IHFjb21fcGNpZV9pbml0XzJfM18yKHN0 cnVjdCBxY29tX3BjaWUgKnBjaWUpDQo+ICB7DQo+ICAJc3RydWN0IHFjb21fcGNpZV9yZXNvdXJj ZXNfMl8zXzIgKnJlcyA9ICZwY2llLT5yZXMudjJfM18yOw0KPiAtCXN0cnVjdCBkd19wY2llICpw Y2kgPSBwY2llLT5wY2k7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJv bV9wcChwY2llLT5wcCk7DQo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7DQo+ICAJ dTMyIHZhbDsNCj4gIAlpbnQgcmV0Ow0KPiBAQCAtNjgxLDcgKzY4MSw3IEBAIHN0YXRpYyBpbnQg cWNvbV9wY2llX2luaXRfMl8zXzIoc3RydWN0IHFjb21fcGNpZQ0KPiAqcGNpZSkNCj4gIHN0YXRp YyBpbnQgcWNvbV9wY2llX3Bvc3RfaW5pdF8yXzNfMihzdHJ1Y3QgcWNvbV9wY2llICpwY2llKQ0K PiAgew0KPiAgCXN0cnVjdCBxY29tX3BjaWVfcmVzb3VyY2VzXzJfM18yICpyZXMgPSAmcGNpZS0+ cmVzLnYyXzNfMjsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gcGNpZS0+cGNpOw0KPiArCXN0 cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAocGNpZS0+cHApOw0KPiAgCXN0 cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ZGV2Ow0KPiAgCWludCByZXQ7DQo+IA0KPiBAQCAtNjk3 LDcgKzY5Nyw3IEBAIHN0YXRpYyBpbnQgcWNvbV9wY2llX3Bvc3RfaW5pdF8yXzNfMihzdHJ1Y3QN Cj4gcWNvbV9wY2llICpwY2llKQ0KPiAgc3RhdGljIGludCBxY29tX3BjaWVfZ2V0X3Jlc291cmNl c18yXzRfMChzdHJ1Y3QgcWNvbV9wY2llICpwY2llKQ0KPiAgew0KPiAgCXN0cnVjdCBxY29tX3Bj aWVfcmVzb3VyY2VzXzJfNF8wICpyZXMgPSAmcGNpZS0+cmVzLnYyXzRfMDsNCj4gLQlzdHJ1Y3Qg ZHdfcGNpZSAqcGNpID0gcGNpZS0+cGNpOw0KPiArCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19k d19wY2llX2Zyb21fcHAocGNpZS0+cHApOw0KPiAgCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ ZGV2Ow0KPiAgCWJvb2wgaXNfaXBxID0gb2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LT5vZl9u b2RlLA0KPiAicWNvbSxwY2llLWlwcTQwMTkiKTsNCj4gIAlpbnQgcmV0Ow0KPiBAQCAtNzk2LDcg Kzc5Niw3IEBAIHN0YXRpYyB2b2lkIHFjb21fcGNpZV9kZWluaXRfMl80XzAoc3RydWN0DQo+IHFj b21fcGNpZSAqcGNpZSkNCj4gIHN0YXRpYyBpbnQgcWNvbV9wY2llX2luaXRfMl80XzAoc3RydWN0 IHFjb21fcGNpZSAqcGNpZSkNCj4gIHsNCj4gIAlzdHJ1Y3QgcWNvbV9wY2llX3Jlc291cmNlc18y XzRfMCAqcmVzID0gJnBjaWUtPnJlcy52Ml80XzA7DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9 IHBjaWUtPnBjaTsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9fZHdfcGNpZV9mcm9tX3Bw KHBjaWUtPnBwKTsNCj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwY2ktPmRldjsNCj4gIAl1MzIg dmFsOw0KPiAgCWludCByZXQ7DQo+IEBAIC05NzAsNyArOTcwLDcgQEAgc3RhdGljIGludCBxY29t X3BjaWVfaW5pdF8yXzRfMChzdHJ1Y3QgcWNvbV9wY2llDQo+ICpwY2llKQ0KPiAgc3RhdGljIGlu dCBxY29tX3BjaWVfZ2V0X3Jlc291cmNlc18yXzNfMyhzdHJ1Y3QgcWNvbV9wY2llICpwY2llKQ0K PiAgew0KPiAgCXN0cnVjdCBxY29tX3BjaWVfcmVzb3VyY2VzXzJfM18zICpyZXMgPSAmcGNpZS0+ cmVzLnYyXzNfMzsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gcGNpZS0+cGNpOw0KPiArCXN0 cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAocGNpZS0+cHApOw0KPiAgCXN0 cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ZGV2Ow0KPiAgCWludCBpOw0KPiAgCWNvbnN0IGNoYXIg KnJzdF9uYW1lc1tdID0geyAiYXhpX20iLCAiYXhpX3MiLCAicGlwZSIsDQo+IEBAIC0xMDIwLDcg KzEwMjAsNyBAQCBzdGF0aWMgdm9pZCBxY29tX3BjaWVfZGVpbml0XzJfM18zKHN0cnVjdA0KPiBx Y29tX3BjaWUgKnBjaWUpDQo+ICBzdGF0aWMgaW50IHFjb21fcGNpZV9pbml0XzJfM18zKHN0cnVj dCBxY29tX3BjaWUgKnBjaWUpDQo+ICB7DQo+ICAJc3RydWN0IHFjb21fcGNpZV9yZXNvdXJjZXNf Ml8zXzMgKnJlcyA9ICZwY2llLT5yZXMudjJfM18zOw0KPiAtCXN0cnVjdCBkd19wY2llICpwY2kg PSBwY2llLT5wY2k7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9w cChwY2llLT5wcCk7DQo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7DQo+ICAJdTE2 IG9mZnNldCA9IGR3X3BjaWVfZmluZF9jYXBhYmlsaXR5KHBjaSwgUENJX0NBUF9JRF9FWFApOw0K PiAgCWludCBpLCByZXQ7DQo+IEBAIC0xMTMxLDcgKzExMzEsNyBAQCBzdGF0aWMgaW50IHFjb21f cGNpZV9pbml0XzJfM18zKHN0cnVjdCBxY29tX3BjaWUNCj4gKnBjaWUpDQo+ICBzdGF0aWMgaW50 IHFjb21fcGNpZV9nZXRfcmVzb3VyY2VzXzJfN18wKHN0cnVjdCBxY29tX3BjaWUgKnBjaWUpDQo+ ICB7DQo+ICAJc3RydWN0IHFjb21fcGNpZV9yZXNvdXJjZXNfMl83XzAgKnJlcyA9ICZwY2llLT5y ZXMudjJfN18wOw0KPiAtCXN0cnVjdCBkd19wY2llICpwY2kgPSBwY2llLT5wY2k7DQo+ICsJc3Ry dWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcChwY2llLT5wcCk7DQo+ICAJc3Ry dWN0IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7DQo+ICAJaW50IHJldDsNCj4gDQo+IEBAIC0xMTY0 LDcgKzExNjQsNyBAQCBzdGF0aWMgaW50IHFjb21fcGNpZV9nZXRfcmVzb3VyY2VzXzJfN18wKHN0 cnVjdA0KPiBxY29tX3BjaWUgKnBjaWUpDQo+ICBzdGF0aWMgaW50IHFjb21fcGNpZV9pbml0XzJf N18wKHN0cnVjdCBxY29tX3BjaWUgKnBjaWUpDQo+ICB7DQo+ICAJc3RydWN0IHFjb21fcGNpZV9y ZXNvdXJjZXNfMl83XzAgKnJlcyA9ICZwY2llLT5yZXMudjJfN18wOw0KPiAtCXN0cnVjdCBkd19w Y2llICpwY2kgPSBwY2llLT5wY2k7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3Bj aWVfZnJvbV9wcChwY2llLT5wcCk7DQo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7 DQo+ICAJdTMyIHZhbDsNCj4gIAlpbnQgcmV0Ow0KPiBAQCAtMTI3NCw3ICsxMjc0LDggQEAgc3Rh dGljIGludCBxY29tX3BjaWVfY29uZmlnX3NpZF9zbTgyNTAoc3RydWN0DQo+IHFjb21fcGNpZSAq cGNpZSkNCj4gIAkJdTMyIHNtbXVfc2lkX2xlbjsNCj4gIAl9ICptYXA7DQo+ICAJdm9pZCBfX2lv bWVtICpiZGZfdG9fc2lkX2Jhc2UgPSBwY2llLT5wYXJmICsNCj4gUENJRTIwX1BBUkZfQkRGX1RP X1NJRF9UQUJMRV9OOw0KPiAtCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaWUtPnBjaS0+ZGV2Ow0K PiArCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAocGNpZS0+cHApOw0K PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ZGV2Ow0KPiAgCXU4IHFjb21fcGNpZV9jcmM4 X3RhYmxlW0NSQzhfVEFCTEVfU0laRV07DQo+ICAJaW50IGksIG5yX21hcCwgc2l6ZSA9IDA7DQo+ ICAJdTMyIHNtbXVfc2lkX2Jhc2U7DQo+IEBAIC0xNDYzLDggKzE0NjQsOCBAQCBzdGF0aWMgaW50 IHFjb21fcGNpZV9wcm9iZShzdHJ1Y3QNCj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgCWlm ICghcGNpZSkNCj4gIAkJcmV0dXJuIC1FTk9NRU07DQo+IA0KPiAtCXBjaSA9IGRldm1fa3phbGxv YyhkZXYsIHNpemVvZigqcGNpKSwgR0ZQX0tFUk5FTCk7DQo+IC0JaWYgKCFwY2kpDQo+ICsJcHAg PSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnBwKSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCFw cCkNCj4gIAkJcmV0dXJuIC1FTk9NRU07DQo+IA0KPiAgCXBtX3J1bnRpbWVfZW5hYmxlKGRldik7 DQo+IEBAIC0xNDcyLDExICsxNDczLDEwIEBAIHN0YXRpYyBpbnQgcWNvbV9wY2llX3Byb2JlKHN0 cnVjdA0KPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAJaWYgKHJldCA8IDApDQo+ICAJCWdv dG8gZXJyX3BtX3J1bnRpbWVfcHV0Ow0KPiANCj4gKwlwY2kgPSAmcHAtPnBjaWU7DQo+ICAJcGNp LT5kZXYgPSBkZXY7DQo+ICAJcGNpLT5vcHMgPSAmZHdfcGNpZV9vcHM7DQo+IC0JcHAgPSAmcGNp LT5wcDsNCj4gLQ0KPiAtCXBjaWUtPnBjaSA9IHBjaTsNCj4gKwlwY2llLT5wcCA9IHBwOw0KPiAN Cj4gIAlwY2llLT5vcHMgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsNCj4gDQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLXNwZWFyMTN4eC5jDQo+ IGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1zcGVhcjEzeHguYw0KPiBpbmRleCAx YTllMzUzYmVmNTUuLmQ3MjExMThlOWVkOSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9wY2kvY29u dHJvbGxlci9kd2MvcGNpZS1zcGVhcjEzeHguYw0KPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9s bGVyL2R3Yy9wY2llLXNwZWFyMTN4eC5jDQo+IEBAIC0yMiw3ICsyMiw3IEBADQo+ICAjaW5jbHVk ZSAicGNpZS1kZXNpZ253YXJlLmgiDQo+IA0KPiAgc3RydWN0IHNwZWFyMTN4eF9wY2llIHsNCj4g LQlzdHJ1Y3QgZHdfcGNpZQkJKnBjaTsNCj4gKwlzdHJ1Y3QgcGNpZV9wb3J0CSpwcDsNCj4gIAl2 b2lkIF9faW9tZW0JCSphcHBfYmFzZTsNCj4gIAlzdHJ1Y3QgcGh5CQkqcGh5Ow0KPiAgCXN0cnVj dCBjbGsJCSpjbGs7DQo+IEBAIC04NCw4ICs4NCw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBzcGVh cjEzeHhfcGNpZV9pcnFfaGFuZGxlcihpbnQgaXJxLA0KPiB2b2lkICphcmcpDQo+ICB7DQo+ICAJ c3RydWN0IHNwZWFyMTN4eF9wY2llICpzcGVhcjEzeHhfcGNpZSA9IGFyZzsNCj4gIAlzdHJ1Y3Qg cGNpZV9hcHBfcmVnICphcHBfcmVnID0gc3BlYXIxM3h4X3BjaWUtPmFwcF9iYXNlOw0KPiAtCXN0 cnVjdCBkd19wY2llICpwY2kgPSBzcGVhcjEzeHhfcGNpZS0+cGNpOw0KPiAtCXN0cnVjdCBwY2ll X3BvcnQgKnBwID0gJnBjaS0+cHA7DQo+ICsJc3RydWN0IHBjaWVfcG9ydCAqcHAgPSBzcGVhcjEz eHhfcGNpZS0+cHA7DQo+ICAJdW5zaWduZWQgaW50IHN0YXR1czsNCj4gDQo+ICAJc3RhdHVzID0g cmVhZGwoJmFwcF9yZWctPmludF9zdHMpOw0KPiBAQCAtMTU0LDggKzE1Myw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZHdfcGNpZV9ob3N0X29wcw0KPiBzcGVhcjEzeHhfcGNpZV9ob3N0X29wcyA9 IHsNCj4gIHN0YXRpYyBpbnQgc3BlYXIxM3h4X2FkZF9wY2llX3BvcnQoc3RydWN0IHNwZWFyMTN4 eF9wY2llICpzcGVhcjEzeHhfcGNpZSwNCj4gIAkJCQkgICBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQ0KPiAgew0KPiAtCXN0cnVjdCBkd19wY2llICpwY2kgPSBzcGVhcjEzeHhfcGNpZS0+ cGNpOw0KPiAtCXN0cnVjdCBwY2llX3BvcnQgKnBwID0gJnBjaS0+cHA7DQo+ICsJc3RydWN0IHBj aWVfcG9ydCAqcHAgPSBzcGVhcjEzeHhfcGNpZS0+cHA7DQo+ICAJc3RydWN0IGRldmljZSAqZGV2 ID0gJnBkZXYtPmRldjsNCj4gIAlpbnQgcmV0Ow0KPiANCj4gQEAgLTE5MSw2ICsxODksNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGR3X3BjaWVfb3BzIGR3X3BjaWVfb3BzID0gew0KPiAgc3RhdGlj IGludCBzcGVhcjEzeHhfcGNpZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0K PiAgew0KPiAgCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+ICsJc3RydWN0IHBj aWVfcG9ydCAqcHA7DQo+ICAJc3RydWN0IGR3X3BjaWUgKnBjaTsNCj4gIAlzdHJ1Y3Qgc3BlYXIx M3h4X3BjaWUgKnNwZWFyMTN4eF9wY2llOw0KPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBk ZXYtPm9mX25vZGU7DQo+IEBAIC0yMDAsMTQgKzE5OSwxNSBAQCBzdGF0aWMgaW50IHNwZWFyMTN4 eF9wY2llX3Byb2JlKHN0cnVjdA0KPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAJaWYgKCFz cGVhcjEzeHhfcGNpZSkNCj4gIAkJcmV0dXJuIC1FTk9NRU07DQo+IA0KPiAtCXBjaSA9IGRldm1f a3phbGxvYyhkZXYsIHNpemVvZigqcGNpKSwgR0ZQX0tFUk5FTCk7DQo+IC0JaWYgKCFwY2kpDQo+ ICsJcHAgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnBwKSwgR0ZQX0tFUk5FTCk7DQo+ICsJ aWYgKCFwcCkNCj4gIAkJcmV0dXJuIC1FTk9NRU07DQo+IA0KPiArCXBjaSA9ICZwcC0+cGNpZTsN Cj4gIAlwY2ktPmRldiA9IGRldjsNCj4gIAlwY2ktPm9wcyA9ICZkd19wY2llX29wczsNCj4gDQo+ IC0Jc3BlYXIxM3h4X3BjaWUtPnBjaSA9IHBjaTsNCj4gKwlzcGVhcjEzeHhfcGNpZS0+cHAgPSBw cDsNCj4gDQo+ICAJc3BlYXIxM3h4X3BjaWUtPnBoeSA9IGRldm1fcGh5X2dldChkZXYsICJwY2ll LXBoeSIpOw0KPiAgCWlmIChJU19FUlIoc3BlYXIxM3h4X3BjaWUtPnBoeSkpIHsNCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtdGVncmExOTQuYw0KPiBiL2Ry aXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtdGVncmExOTQuYw0KPiBpbmRleCA1NTk3YjJh NDk1OTguLmVmMjA1MmJiNTBmZCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxl ci9kd2MvcGNpZS10ZWdyYTE5NC5jDQo+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdj L3BjaWUtdGVncmExOTQuYw0KPiBAQCAtMjcyLDcgKzI3Miw4IEBAIHN0cnVjdCB0ZWdyYV9wY2ll X2R3IHsNCj4gIAlzdHJ1Y3QgY2xrICpjb3JlX2NsazsNCj4gIAlzdHJ1Y3QgcmVzZXRfY29udHJv bCAqY29yZV9hcGJfcnN0Ow0KPiAgCXN0cnVjdCByZXNldF9jb250cm9sICpjb3JlX3JzdDsNCj4g LQlzdHJ1Y3QgZHdfcGNpZSBwY2k7DQo+ICsJc3RydWN0IHBjaWVfcG9ydCBwcDsNCj4gKwlzdHJ1 Y3QgZHdfcGNpZV9lcCBlcDsNCj4gIAlzdHJ1Y3QgdGVncmFfYnBtcCAqYnBtcDsNCj4gDQo+ICAJ ZW51bSBkd19wY2llX2RldmljZV9tb2RlIG1vZGU7DQo+IEBAIC0zMTEsMTAgKzMxMiw3IEBAIHN0 cnVjdCB0ZWdyYV9wY2llX2R3X29mX2RhdGEgew0KPiAgCWVudW0gZHdfcGNpZV9kZXZpY2VfbW9k ZSBtb2RlOw0KPiAgfTsNCj4gDQo+IC1zdGF0aWMgaW5saW5lIHN0cnVjdCB0ZWdyYV9wY2llX2R3 ICp0b190ZWdyYV9wY2llKHN0cnVjdCBkd19wY2llICpwY2kpDQo+IC17DQo+IC0JcmV0dXJuIGNv bnRhaW5lcl9vZihwY2ksIHN0cnVjdCB0ZWdyYV9wY2llX2R3LCBwY2kpOw0KPiAtfQ0KPiArI2Rl ZmluZSB0b190ZWdyYV9wY2llKHgpCWRldl9nZXRfZHJ2ZGF0YSgoeCktPmRldikNCj4gDQo+ICBz dGF0aWMgaW5saW5lIHZvaWQgYXBwbF93cml0ZWwoc3RydWN0IHRlZ3JhX3BjaWVfZHcgKnBjaWUs IGNvbnN0IHUzMiB2YWx1ZSwNCj4gIAkJCSAgICAgICBjb25zdCB1MzIgcmVnKQ0KPiBAQCAtMzY4 LDggKzM2Niw4IEBAIHN0YXRpYyB2b2lkIGFwcGx5X2JhZF9saW5rX3dvcmthcm91bmQoc3RydWN0 DQo+IHBjaWVfcG9ydCAqcHApDQo+ICBzdGF0aWMgaXJxcmV0dXJuX3QgdGVncmFfcGNpZV9ycF9p cnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpDQo+ICB7DQo+ICAJc3RydWN0IHRlZ3JhX3Bj aWVfZHcgKnBjaWUgPSBhcmc7DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9ICZwY2llLT5wY2k7 DQo+IC0Jc3RydWN0IHBjaWVfcG9ydCAqcHAgPSAmcGNpLT5wcDsNCj4gKwlzdHJ1Y3QgcGNpZV9w b3J0ICpwcCA9ICZwY2llLT5wcDsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9fZHdfcGNp ZV9mcm9tX3BwKHBwKTsNCj4gIAl1MzIgdmFsLCB0bXA7DQo+ICAJdTE2IHZhbF93Ow0KPiANCj4g QEAgLTQ2Nyw3ICs0NjUsNyBAQCBzdGF0aWMgdm9pZCBwZXhfZXBfZXZlbnRfaG90X3JzdF9kb25l KHN0cnVjdA0KPiB0ZWdyYV9wY2llX2R3ICpwY2llKQ0KPiAgc3RhdGljIGlycXJldHVybl90IHRl Z3JhX3BjaWVfZXBfaXJxX3RocmVhZChpbnQgaXJxLCB2b2lkICphcmcpDQo+ICB7DQo+ICAJc3Ry dWN0IHRlZ3JhX3BjaWVfZHcgKnBjaWUgPSBhcmc7DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9 ICZwY2llLT5wY2k7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9l cCgmcGNpZS0+ZXApOw0KPiAgCXUzMiB2YWwsIHNwZWVkOw0KPiANCj4gIAlzcGVlZCA9IGR3X3Bj aWVfcmVhZHdfZGJpKHBjaSwgcGNpZS0+cGNpZV9jYXBfYmFzZSArDQo+IFBDSV9FWFBfTE5LU1RB KSAmDQo+IEBAIC01MTMsNyArNTExLDcgQEAgc3RhdGljIGlycXJldHVybl90IHRlZ3JhX3BjaWVf ZXBfaXJxX3RocmVhZChpbnQgaXJxLA0KPiB2b2lkICphcmcpDQo+ICBzdGF0aWMgaXJxcmV0dXJu X3QgdGVncmFfcGNpZV9lcF9oYXJkX2lycShpbnQgaXJxLCB2b2lkICphcmcpDQo+ICB7DQo+ICAJ c3RydWN0IHRlZ3JhX3BjaWVfZHcgKnBjaWUgPSBhcmc7DQo+IC0Jc3RydWN0IGR3X3BjaWVfZXAg KmVwID0gJnBjaWUtPnBjaS5lcDsNCj4gKwlzdHJ1Y3QgZHdfcGNpZV9lcCAqZXAgPSAmcGNpZS0+ ZXA7DQo+ICAJaW50IHNwdXJpb3VzID0gMTsNCj4gIAl1MzIgdmFsLCB0bXA7DQo+IA0KPiBAQCAt NTk2LDMzICs1OTQsNDYgQEAgc3RhdGljIHN0cnVjdCBwY2lfb3BzIHRlZ3JhX3BjaV9vcHMgPSB7 DQo+ICAjaWYgZGVmaW5lZChDT05GSUdfUENJRUFTUE0pDQo+ICBzdGF0aWMgdm9pZCBkaXNhYmxl X2FzcG1fbDExKHN0cnVjdCB0ZWdyYV9wY2llX2R3ICpwY2llKQ0KPiAgew0KPiArCXN0cnVjdCBk d19wY2llICpwY2k7DQo+ICAJdTMyIHZhbDsNCj4gDQo+IC0JdmFsID0gZHdfcGNpZV9yZWFkbF9k YmkoJnBjaWUtPnBjaSwgcGNpZS0+Y2ZnX2xpbmtfY2FwX2wxc3ViKTsNCj4gKwlpZiAocGNpZS0+ bW9kZSA9PSBEV19QQ0lFX1JDX1RZUEUpDQo+ICsJCXBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcCgm cGNpZS0+cHApOw0KPiArCWVsc2UNCj4gKwkJcGNpID0gdG9fZHdfcGNpZV9mcm9tX2VwKCZwY2ll LT5lcCk7DQo+ICsNCj4gKwl2YWwgPSBkd19wY2llX3JlYWRsX2RiaShwY2ksIHBjaWUtPmNmZ19s aW5rX2NhcF9sMXN1Yik7DQo+ICAJdmFsICY9IH5QQ0lfTDFTU19DQVBfQVNQTV9MMV8xOw0KPiAt CWR3X3BjaWVfd3JpdGVsX2RiaSgmcGNpZS0+cGNpLCBwY2llLT5jZmdfbGlua19jYXBfbDFzdWIs IHZhbCk7DQo+ICsJZHdfcGNpZV93cml0ZWxfZGJpKHBjaSwgcGNpZS0+Y2ZnX2xpbmtfY2FwX2wx c3ViLCB2YWwpOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lkIGRpc2FibGVfYXNwbV9sMTIoc3Ry dWN0IHRlZ3JhX3BjaWVfZHcgKnBjaWUpDQo+ICB7DQo+ICsJc3RydWN0IGR3X3BjaWUgKnBjaTsN Cj4gIAl1MzIgdmFsOw0KPiANCj4gLQl2YWwgPSBkd19wY2llX3JlYWRsX2RiaSgmcGNpZS0+cGNp LCBwY2llLT5jZmdfbGlua19jYXBfbDFzdWIpOw0KPiArCWlmIChwY2llLT5tb2RlID09IERXX1BD SUVfUkNfVFlQRSkNCj4gKwkJcGNpID0gdG9fZHdfcGNpZV9mcm9tX3BwKCZwY2llLT5wcCk7DQo+ ICsJZWxzZQ0KPiArCQlwY2kgPSB0b19kd19wY2llX2Zyb21fZXAoJnBjaWUtPmVwKTsNCj4gKw0K PiArCXZhbCA9IGR3X3BjaWVfcmVhZGxfZGJpKHBjaSwgcGNpZS0+Y2ZnX2xpbmtfY2FwX2wxc3Vi KTsNCj4gIAl2YWwgJj0gflBDSV9MMVNTX0NBUF9BU1BNX0wxXzI7DQo+IC0JZHdfcGNpZV93cml0 ZWxfZGJpKCZwY2llLT5wY2ksIHBjaWUtPmNmZ19saW5rX2NhcF9sMXN1YiwgdmFsKTsNCj4gKwlk d19wY2llX3dyaXRlbF9kYmkocGNpLCBwY2llLT5jZmdfbGlua19jYXBfbDFzdWIsIHZhbCk7DQo+ ICB9DQo+IA0KPiAgc3RhdGljIGlubGluZSB1MzIgZXZlbnRfY291bnRlcl9wcm9nKHN0cnVjdCB0 ZWdyYV9wY2llX2R3ICpwY2llLCB1MzINCj4gZXZlbnQpDQo+ICB7DQo+ICsJc3RydWN0IGR3X3Bj aWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcCgmcGNpZS0+cHApOw0KPiAgCXUzMiB2YWw7DQo+ IA0KPiAtCXZhbCA9IGR3X3BjaWVfcmVhZGxfZGJpKCZwY2llLT5wY2ksIGV2ZW50X2NudHJfY3Ry bF9vZmZzZXRbcGNpZS0+Y2lkXSk7DQo+ICsJdmFsID0gZHdfcGNpZV9yZWFkbF9kYmkocGNpLCBl dmVudF9jbnRyX2N0cmxfb2Zmc2V0W3BjaWUtPmNpZF0pOw0KPiAgCXZhbCAmPSB+KEVWRU5UX0NP VU5URVJfRVZFTlRfU0VMX01BU0sgPDwNCj4gRVZFTlRfQ09VTlRFUl9FVkVOVF9TRUxfU0hJRlQp Ow0KPiAgCXZhbCB8PSBFVkVOVF9DT1VOVEVSX0dST1VQXzUgPDwNCj4gRVZFTlRfQ09VTlRFUl9H Uk9VUF9TRUxfU0hJRlQ7DQo+ICAJdmFsIHw9IGV2ZW50IDw8IEVWRU5UX0NPVU5URVJfRVZFTlRf U0VMX1NISUZUOw0KPiAgCXZhbCB8PSBFVkVOVF9DT1VOVEVSX0VOQUJMRV9BTEwgPDwNCj4gRVZF TlRfQ09VTlRFUl9FTkFCTEVfU0hJRlQ7DQo+IC0JZHdfcGNpZV93cml0ZWxfZGJpKCZwY2llLT5w Y2ksIGV2ZW50X2NudHJfY3RybF9vZmZzZXRbcGNpZS0+Y2lkXSwgdmFsKTsNCj4gLQl2YWwgPSBk d19wY2llX3JlYWRsX2RiaSgmcGNpZS0+cGNpLA0KPiBldmVudF9jbnRyX2RhdGFfb2Zmc2V0W3Bj aWUtPmNpZF0pOw0KPiArCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIGV2ZW50X2NudHJfY3RybF9v ZmZzZXRbcGNpZS0+Y2lkXSwgdmFsKTsNCj4gKwl2YWwgPSBkd19wY2llX3JlYWRsX2RiaShwY2ks IGV2ZW50X2NudHJfZGF0YV9vZmZzZXRbcGNpZS0+Y2lkXSk7DQo+IA0KPiAgCXJldHVybiB2YWw7 DQo+ICB9DQo+IEBAIC02MzEsNiArNjQyLDcgQEAgc3RhdGljIGludCBhc3BtX3N0YXRlX2NudChz dHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQNCj4gKmRhdGEpDQo+ICB7DQo+ICAJc3RydWN0IHRlZ3Jh X3BjaWVfZHcgKnBjaWUgPSAoc3RydWN0IHRlZ3JhX3BjaWVfZHcgKikNCj4gIAkJCQkgICAgIGRl dl9nZXRfZHJ2ZGF0YShzLT5wcml2YXRlKTsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gdG9f ZHdfcGNpZV9mcm9tX3BwKCZwY2llLT5wcCk7DQo+ICAJdTMyIHZhbDsNCj4gDQo+ICAJc2VxX3By aW50ZihzLCAiVHggTDBzIGVudHJ5IGNvdW50IDogJXVcbiIsDQo+IEBAIC02NDksMjIgKzY2MSwy NyBAQCBzdGF0aWMgaW50IGFzcG1fc3RhdGVfY250KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZA0K PiAqZGF0YSkNCj4gIAkJICAgZXZlbnRfY291bnRlcl9wcm9nKHBjaWUsIEVWRU5UX0NPVU5URVJf RVZFTlRfTDFfMikpOw0KPiANCj4gIAkvKiBDbGVhciBhbGwgY291bnRlcnMgKi8NCj4gLQlkd19w Y2llX3dyaXRlbF9kYmkoJnBjaWUtPnBjaSwgZXZlbnRfY250cl9jdHJsX29mZnNldFtwY2llLT5j aWRdLA0KPiArCWR3X3BjaWVfd3JpdGVsX2RiaShwY2ksIGV2ZW50X2NudHJfY3RybF9vZmZzZXRb cGNpZS0+Y2lkXSwNCj4gIAkJCSAgIEVWRU5UX0NPVU5URVJfQUxMX0NMRUFSKTsNCj4gDQo+ICAJ LyogUmUtZW5hYmxlIGNvdW50aW5nICovDQo+ICAJdmFsID0gRVZFTlRfQ09VTlRFUl9FTkFCTEVf QUxMIDw8DQo+IEVWRU5UX0NPVU5URVJfRU5BQkxFX1NISUZUOw0KPiAgCXZhbCB8PSBFVkVOVF9D T1VOVEVSX0dST1VQXzUgPDwNCj4gRVZFTlRfQ09VTlRFUl9HUk9VUF9TRUxfU0hJRlQ7DQo+IC0J ZHdfcGNpZV93cml0ZWxfZGJpKCZwY2llLT5wY2ksIGV2ZW50X2NudHJfY3RybF9vZmZzZXRbcGNp ZS0+Y2lkXSwgdmFsKTsNCj4gKwlkd19wY2llX3dyaXRlbF9kYmkocGNpLCBldmVudF9jbnRyX2N0 cmxfb2Zmc2V0W3BjaWUtPmNpZF0sIHZhbCk7DQo+IA0KPiAgCXJldHVybiAwOw0KPiAgfQ0KPiAN Cj4gIHN0YXRpYyB2b2lkIGluaXRfaG9zdF9hc3BtKHN0cnVjdCB0ZWdyYV9wY2llX2R3ICpwY2ll KQ0KPiAgew0KPiAtCXN0cnVjdCBkd19wY2llICpwY2kgPSAmcGNpZS0+cGNpOw0KPiArCXN0cnVj dCBkd19wY2llICpwY2k7DQo+ICAJdTMyIHZhbDsNCj4gDQo+ICsJaWYgKHBjaWUtPm1vZGUgPT0g RFdfUENJRV9SQ19UWVBFKQ0KPiArCQlwY2kgPSB0b19kd19wY2llX2Zyb21fcHAoJnBjaWUtPnBw KTsNCj4gKwllbHNlDQo+ICsJCXBjaSA9IHRvX2R3X3BjaWVfZnJvbV9lcCgmcGNpZS0+ZXApOw0K PiArDQo+ICAJdmFsID0gZHdfcGNpZV9maW5kX2V4dF9jYXBhYmlsaXR5KHBjaSwgUENJX0VYVF9D QVBfSURfTDFTUyk7DQo+ICAJcGNpZS0+Y2ZnX2xpbmtfY2FwX2wxc3ViID0gdmFsICsgUENJX0wx U1NfQ0FQOw0KPiANCj4gQEAgLTcyNiwxNSArNzQzLDE1IEBAIHN0YXRpYyB2b2lkDQo+IHRlZ3Jh X3BjaWVfZW5hYmxlX3N5c3RlbV9pbnRlcnJ1cHRzKHN0cnVjdCBwY2llX3BvcnQgKnBwKQ0KPiAg CQlhcHBsX3dyaXRlbChwY2llLCB2YWwsIEFQUExfSU5UUl9FTl9MMV8xOCk7DQo+ICAJfQ0KPiAN Cj4gLQl2YWxfdyA9IGR3X3BjaWVfcmVhZHdfZGJpKCZwY2llLT5wY2ksIHBjaWUtPnBjaWVfY2Fw X2Jhc2UgKw0KPiArCXZhbF93ID0gZHdfcGNpZV9yZWFkd19kYmkocGNpLCBwY2llLT5wY2llX2Nh cF9iYXNlICsNCj4gIAkJCQkgIFBDSV9FWFBfTE5LU1RBKTsNCj4gIAlwY2llLT5pbml0X2xpbmtf d2lkdGggPSAodmFsX3cgJiBQQ0lfRVhQX0xOS1NUQV9OTFcpID4+DQo+ICAJCQkJUENJX0VYUF9M TktTVEFfTkxXX1NISUZUOw0KPiANCj4gLQl2YWxfdyA9IGR3X3BjaWVfcmVhZHdfZGJpKCZwY2ll LT5wY2ksIHBjaWUtPnBjaWVfY2FwX2Jhc2UgKw0KPiArCXZhbF93ID0gZHdfcGNpZV9yZWFkd19k YmkocGNpLCBwY2llLT5wY2llX2NhcF9iYXNlICsNCj4gIAkJCQkgIFBDSV9FWFBfTE5LQ1RMKTsN Cj4gIAl2YWxfdyB8PSBQQ0lfRVhQX0xOS0NUTF9MQk1JRTsNCj4gLQlkd19wY2llX3dyaXRld19k YmkoJnBjaWUtPnBjaSwgcGNpZS0+cGNpZV9jYXBfYmFzZSArDQo+IFBDSV9FWFBfTE5LQ1RMLA0K PiArCWR3X3BjaWVfd3JpdGV3X2RiaShwY2ksIHBjaWUtPnBjaWVfY2FwX2Jhc2UgKyBQQ0lfRVhQ X0xOS0NUTCwNCj4gIAkJCSAgIHZhbF93KTsNCj4gIH0NCj4gDQo+IEBAIC04MDIsOSArODE5LDE0 IEBAIHN0YXRpYyB2b2lkIHRlZ3JhX3BjaWVfZW5hYmxlX2ludGVycnVwdHMoc3RydWN0DQo+IHBj aWVfcG9ydCAqcHApDQo+IA0KPiAgc3RhdGljIHZvaWQgY29uZmlnX2dlbjNfZ2VuNF9lcV9wcmVz ZXRzKHN0cnVjdCB0ZWdyYV9wY2llX2R3ICpwY2llKQ0KPiAgew0KPiAtCXN0cnVjdCBkd19wY2ll ICpwY2kgPSAmcGNpZS0+cGNpOw0KPiArCXN0cnVjdCBkd19wY2llICpwY2k7DQo+ICAJdTMyIHZh bCwgb2Zmc2V0LCBpOw0KPiANCj4gKwlpZiAocGNpZS0+bW9kZSA9PSBEV19QQ0lFX1JDX1RZUEUp DQo+ICsJCXBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcCgmcGNpZS0+cHApOw0KPiArCWVsc2UNCj4g KwkJcGNpID0gdG9fZHdfcGNpZV9mcm9tX2VwKCZwY2llLT5lcCk7DQo+ICsNCj4gIAkvKiBQcm9n cmFtIGluaXQgcHJlc2V0ICovDQo+ICAJZm9yIChpID0gMDsgaSA8IHBjaWUtPm51bV9sYW5lczsg aSsrKSB7DQo+ICAJCXZhbCA9IGR3X3BjaWVfcmVhZHdfZGJpKHBjaSwgQ0FQX1NQQ0lFX0NBUF9P RkYgKyAoaSAqIDIpKTsNCj4gQEAgLTg2MCw3ICs4ODIsNyBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9w Y2llX3ByZXBhcmVfaG9zdChzdHJ1Y3QNCj4gcGNpZV9wb3J0ICpwcCkNCj4gIAl1MzIgdmFsOw0K PiANCj4gIAlpZiAoIXBjaWUtPnBjaWVfY2FwX2Jhc2UpDQo+IC0JCXBjaWUtPnBjaWVfY2FwX2Jh c2UgPSBkd19wY2llX2ZpbmRfY2FwYWJpbGl0eSgmcGNpZS0+cGNpLA0KPiArCQlwY2llLT5wY2ll X2NhcF9iYXNlID0gZHdfcGNpZV9maW5kX2NhcGFiaWxpdHkocGNpLA0KPiAgCQkJCQkJCSAgICAg IFBDSV9DQVBfSURfRVhQKTsNCj4gDQo+ICAJdmFsID0gZHdfcGNpZV9yZWFkbF9kYmkocGNpLCBQ Q0lfSU9fQkFTRSk7DQo+IEBAIC0xMjE1LDcgKzEyMzcsNyBAQCBzdGF0aWMgaW50IHRlZ3JhX3Bj aWVfYnBtcF9zZXRfcGxsX3N0YXRlKHN0cnVjdA0KPiB0ZWdyYV9wY2llX2R3ICpwY2llLA0KPiAN Cj4gIHN0YXRpYyB2b2lkIHRlZ3JhX3BjaWVfZG93bnN0cmVhbV9kZXZfdG9fRDAoc3RydWN0IHRl Z3JhX3BjaWVfZHcNCj4gKnBjaWUpDQo+ICB7DQo+IC0Jc3RydWN0IHBjaWVfcG9ydCAqcHAgPSAm cGNpZS0+cGNpLnBwOw0KPiArCXN0cnVjdCBwY2llX3BvcnQgKnBwID0gJnBjaWUtPnBwOw0KPiAg CXN0cnVjdCBwY2lfYnVzICpjaGlsZCwgKnJvb3RfYnVzID0gTlVMTDsNCj4gIAlzdHJ1Y3QgcGNp X2RldiAqcGRldjsNCj4gDQo+IEBAIC0xNDQ1LDggKzE0NjcsNyBAQCBzdGF0aWMgdm9pZCB0ZWdy YV9wY2llX3VuY29uZmlnX2NvbnRyb2xsZXIoc3RydWN0DQo+IHRlZ3JhX3BjaWVfZHcgKnBjaWUp DQo+IA0KPiAgc3RhdGljIGludCB0ZWdyYV9wY2llX2luaXRfY29udHJvbGxlcihzdHJ1Y3QgdGVn cmFfcGNpZV9kdyAqcGNpZSkNCj4gIHsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gJnBjaWUt PnBjaTsNCj4gLQlzdHJ1Y3QgcGNpZV9wb3J0ICpwcCA9ICZwY2ktPnBwOw0KPiArCXN0cnVjdCBw Y2llX3BvcnQgKnBwID0gJnBjaWUtPnBwOw0KPiAgCWludCByZXQ7DQo+IA0KPiAgCXJldCA9IHRl Z3JhX3BjaWVfY29uZmlnX2NvbnRyb2xsZXIocGNpZSwgZmFsc2UpOw0KPiBAQCAtMTQ3MCw5ICsx NDkxLDEwIEBAIHN0YXRpYyBpbnQgdGVncmFfcGNpZV9pbml0X2NvbnRyb2xsZXIoc3RydWN0DQo+ IHRlZ3JhX3BjaWVfZHcgKnBjaWUpDQo+IA0KPiAgc3RhdGljIGludCB0ZWdyYV9wY2llX3RyeV9s aW5rX2wyKHN0cnVjdCB0ZWdyYV9wY2llX2R3ICpwY2llKQ0KPiAgew0KPiArCXN0cnVjdCBkd19w Y2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAoJnBjaWUtPnBwKTsNCj4gIAl1MzIgdmFsOw0K PiANCj4gLQlpZiAoIXRlZ3JhX3BjaWVfZHdfbGlua191cCgmcGNpZS0+cGNpKSkNCj4gKwlpZiAo IXRlZ3JhX3BjaWVfZHdfbGlua191cChwY2kpKQ0KPiAgCQlyZXR1cm4gMDsNCj4gDQo+ICAJdmFs ID0gYXBwbF9yZWFkbChwY2llLCBBUFBMX1JBRE1fU1RBVFVTKTsNCj4gQEAgLTE0ODYsMTAgKzE1 MDgsMTEgQEAgc3RhdGljIGludCB0ZWdyYV9wY2llX3RyeV9saW5rX2wyKHN0cnVjdA0KPiB0ZWdy YV9wY2llX2R3ICpwY2llKQ0KPiANCj4gIHN0YXRpYyB2b2lkIHRlZ3JhX3BjaWVfZHdfcG1lX3R1 cm5vZmYoc3RydWN0IHRlZ3JhX3BjaWVfZHcgKnBjaWUpDQo+ICB7DQo+ICsJc3RydWN0IGR3X3Bj aWUgKnBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcCgmcGNpZS0+cHApOw0KPiAgCXUzMiBkYXRhOw0K PiAgCWludCBlcnI7DQo+IA0KPiAtCWlmICghdGVncmFfcGNpZV9kd19saW5rX3VwKCZwY2llLT5w Y2kpKSB7DQo+ICsJaWYgKCF0ZWdyYV9wY2llX2R3X2xpbmtfdXAocGNpKSkgew0KPiAgCQlkZXZf ZGJnKHBjaWUtPmRldiwgIlBDSWUgbGluayBpcyBub3QgdXAuLi4hXG4iKTsNCj4gIAkJcmV0dXJu Ow0KPiAgCX0NCj4gQEAgLTE1MzksMTMgKzE1NjIsMTQgQEAgc3RhdGljIHZvaWQgdGVncmFfcGNp ZV9kd19wbWVfdHVybm9mZihzdHJ1Y3QNCj4gdGVncmFfcGNpZV9kdyAqcGNpZSkNCj4gIHN0YXRp YyB2b2lkIHRlZ3JhX3BjaWVfZGVpbml0X2NvbnRyb2xsZXIoc3RydWN0IHRlZ3JhX3BjaWVfZHcg KnBjaWUpDQo+ICB7DQo+ICAJdGVncmFfcGNpZV9kb3duc3RyZWFtX2Rldl90b19EMChwY2llKTsN Cj4gLQlkd19wY2llX2hvc3RfZGVpbml0KCZwY2llLT5wY2kucHApOw0KPiArCWR3X3BjaWVfaG9z dF9kZWluaXQoJnBjaWUtPnBwKTsNCj4gIAl0ZWdyYV9wY2llX2R3X3BtZV90dXJub2ZmKHBjaWUp Ow0KPiAgCXRlZ3JhX3BjaWVfdW5jb25maWdfY29udHJvbGxlcihwY2llKTsNCj4gIH0NCj4gDQo+ ICBzdGF0aWMgaW50IHRlZ3JhX3BjaWVfY29uZmlnX3JwKHN0cnVjdCB0ZWdyYV9wY2llX2R3ICpw Y2llKQ0KPiAgew0KPiArCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAo JnBjaWUtPnBwKTsNCj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwY2llLT5kZXY7DQo+ICAJY2hh ciAqbmFtZTsNCj4gIAlpbnQgcmV0Ow0KPiBAQCAtMTU3MSw3ICsxNTk1LDcgQEAgc3RhdGljIGlu dCB0ZWdyYV9wY2llX2NvbmZpZ19ycChzdHJ1Y3QNCj4gdGVncmFfcGNpZV9kdyAqcGNpZSkNCj4g IAkJZ290byBmYWlsX3BtX2dldF9zeW5jOw0KPiAgCX0NCj4gDQo+IC0JcGNpZS0+bGlua19zdGF0 ZSA9IHRlZ3JhX3BjaWVfZHdfbGlua191cCgmcGNpZS0+cGNpKTsNCj4gKwlwY2llLT5saW5rX3N0 YXRlID0gdGVncmFfcGNpZV9kd19saW5rX3VwKHBjaSk7DQo+ICAJaWYgKCFwY2llLT5saW5rX3N0 YXRlKSB7DQo+ICAJCXJldCA9IC1FTk9NRURJVU07DQo+ICAJCWdvdG8gZmFpbF9ob3N0X2luaXQ7 DQo+IEBAIC0xNjM3LDggKzE2NjEsOCBAQCBzdGF0aWMgdm9pZCBwZXhfZXBfZXZlbnRfcGV4X3Jz dF9hc3NlcnQoc3RydWN0DQo+IHRlZ3JhX3BjaWVfZHcgKnBjaWUpDQo+IA0KPiAgc3RhdGljIHZv aWQgcGV4X2VwX2V2ZW50X3BleF9yc3RfZGVhc3NlcnQoc3RydWN0IHRlZ3JhX3BjaWVfZHcgKnBj aWUpDQo+ICB7DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9ICZwY2llLT5wY2k7DQo+IC0Jc3Ry dWN0IGR3X3BjaWVfZXAgKmVwID0gJnBjaS0+ZXA7DQo+ICsJc3RydWN0IGR3X3BjaWVfZXAgKmVw ID0gJnBjaWUtPmVwOw0KPiArCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21f ZXAoZXApOw0KPiAgCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaWUtPmRldjsNCj4gIAl1MzIgdmFs Ow0KPiAgCWludCByZXQ7DQo+IEBAIC0xNzU3LDcgKzE3ODEsNyBAQCBzdGF0aWMgdm9pZCBwZXhf ZXBfZXZlbnRfcGV4X3JzdF9kZWFzc2VydChzdHJ1Y3QNCj4gdGVncmFfcGNpZV9kdyAqcGNpZSkN Cj4gIAl2YWwgJj0gfkdFTjNfUkVMQVRFRF9PRkZfR0VOM19aUlhEQ19OT05DT01QTDsNCj4gIAlk d19wY2llX3dyaXRlbF9kYmkocGNpLCBHRU4zX1JFTEFURURfT0ZGLCB2YWwpOw0KPiANCj4gLQlw Y2llLT5wY2llX2NhcF9iYXNlID0gZHdfcGNpZV9maW5kX2NhcGFiaWxpdHkoJnBjaWUtPnBjaSwN Cj4gKwlwY2llLT5wY2llX2NhcF9iYXNlID0gZHdfcGNpZV9maW5kX2NhcGFiaWxpdHkocGNpLA0K PiAgCQkJCQkJICAgICAgUENJX0NBUF9JRF9FWFApOw0KPiAgCWNsa19zZXRfcmF0ZShwY2llLT5j b3JlX2NsaywgR0VONF9DT1JFX0NMS19GUkVRKTsNCj4gDQo+IEBAIC0xODM0LDcgKzE4NTgsNyBA QCBzdGF0aWMgaW50IHRlZ3JhX3BjaWVfZXBfcmFpc2VfbXNpX2lycShzdHJ1Y3QNCj4gdGVncmFf cGNpZV9kdyAqcGNpZSwgdTE2IGlycSkNCj4gDQo+ICBzdGF0aWMgaW50IHRlZ3JhX3BjaWVfZXBf cmFpc2VfbXNpeF9pcnEoc3RydWN0IHRlZ3JhX3BjaWVfZHcgKnBjaWUsIHUxNg0KPiBpcnEpDQo+ ICB7DQo+IC0Jc3RydWN0IGR3X3BjaWVfZXAgKmVwID0gJnBjaWUtPnBjaS5lcDsNCj4gKwlzdHJ1 Y3QgZHdfcGNpZV9lcCAqZXAgPSAmcGNpZS0+ZXA7DQo+IA0KPiAgCXdyaXRlbChpcnEsIGVwLT5t c2lfbWVtKTsNCj4gDQo+IEBAIC0xODkwLDEzICsxOTE0LDEyIEBAIHN0YXRpYyBzdHJ1Y3QgZHdf cGNpZV9lcF9vcHMgcGNpZV9lcF9vcHMgPSB7DQo+ICBzdGF0aWMgaW50IHRlZ3JhX3BjaWVfY29u ZmlnX2VwKHN0cnVjdCB0ZWdyYV9wY2llX2R3ICpwY2llLA0KPiAgCQkJCXN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpDQo+ICB7DQo+IC0Jc3RydWN0IGR3X3BjaWUgKnBjaSA9ICZwY2llLT5w Y2k7DQo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gcGNpZS0+ZGV2Ow0KPiAgCXN0cnVjdCBkd19w Y2llX2VwICplcDsNCj4gIAljaGFyICpuYW1lOw0KPiAgCWludCByZXQ7DQo+IA0KPiAtCWVwID0g JnBjaS0+ZXA7DQo+ICsJZXAgPSAmcGNpZS0+ZXA7DQo+ICAJZXAtPm9wcyA9ICZwY2llX2VwX29w czsNCj4gDQo+ICAJZXAtPnBhZ2Vfc2l6ZSA9IFNaXzY0SzsNCj4gQEAgLTE5NjEsMTEgKzE5ODQs MTQgQEAgc3RhdGljIGludCB0ZWdyYV9wY2llX2R3X3Byb2JlKHN0cnVjdA0KPiBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpDQo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4gIAlz dHJ1Y3QgcmVzb3VyY2UgKmF0dV9kbWFfcmVzOw0KPiAgCXN0cnVjdCB0ZWdyYV9wY2llX2R3ICpw Y2llOw0KPiArCXZvaWQgX19pb21lbSAqYXR1X2Jhc2U7DQo+ICsJc3RydWN0IGR3X3BjaWVfZXAg KmVwOw0KPiAgCXN0cnVjdCBwY2llX3BvcnQgKnBwOw0KPiAgCXN0cnVjdCBkd19wY2llICpwY2k7 DQo+ICAJc3RydWN0IHBoeSAqKnBoeXM7DQo+ICsJc2l6ZV90IGF0dV9zaXplOw0KPiAgCWNoYXIg Km5hbWU7DQo+IC0JaW50IHJldDsNCj4gKwlpbnQgcmV0LCBpcnE7DQo+ICAJdTMyIGk7DQo+IA0K PiAgCWRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsNCj4gQEAgLTE5NzQsMTUg KzIwMDAsNiBAQCBzdGF0aWMgaW50IHRlZ3JhX3BjaWVfZHdfcHJvYmUoc3RydWN0DQo+IHBsYXRm b3JtX2RldmljZSAqcGRldikNCj4gIAlpZiAoIXBjaWUpDQo+ICAJCXJldHVybiAtRU5PTUVNOw0K PiANCj4gLQlwY2kgPSAmcGNpZS0+cGNpOw0KPiAtCXBjaS0+ZGV2ID0gJnBkZXYtPmRldjsNCj4g LQlwY2ktPm9wcyA9ICZ0ZWdyYV9kd19wY2llX29wczsNCj4gLQlwY2ktPm5fZnRzWzBdID0gTl9G VFNfVkFMOw0KPiAtCXBjaS0+bl9mdHNbMV0gPSBGVFNfVkFMOw0KPiAtCXBjaS0+dmVyc2lvbiA9 IDB4NDkwQTsNCj4gLQ0KPiAtCXBwID0gJnBjaS0+cHA7DQo+IC0JcHAtPm51bV92ZWN0b3JzID0g TUFYX01TSV9JUlFTOw0KPiAgCXBjaWUtPmRldiA9ICZwZGV2LT5kZXY7DQo+ICAJcGNpZS0+bW9k ZSA9IChlbnVtIGR3X3BjaWVfZGV2aWNlX21vZGUpZGF0YS0+bW9kZTsNCj4gDQo+IEBAIC0yMDc5 LDEwICsyMDk2LDEwIEBAIHN0YXRpYyBpbnQgdGVncmFfcGNpZV9kd19wcm9iZShzdHJ1Y3QNCj4g cGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgCX0NCj4gIAlwY2llLT5hdHVfZG1hX3JlcyA9IGF0 dV9kbWFfcmVzOw0KPiANCj4gLQlwY2ktPmF0dV9zaXplID0gcmVzb3VyY2Vfc2l6ZShhdHVfZG1h X3Jlcyk7DQo+IC0JcGNpLT5hdHVfYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIGF0 dV9kbWFfcmVzKTsNCj4gLQlpZiAoSVNfRVJSKHBjaS0+YXR1X2Jhc2UpKQ0KPiAtCQlyZXR1cm4g UFRSX0VSUihwY2ktPmF0dV9iYXNlKTsNCj4gKwlhdHVfc2l6ZSA9IHJlc291cmNlX3NpemUoYXR1 X2RtYV9yZXMpOw0KPiArCWF0dV9iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgYXR1 X2RtYV9yZXMpOw0KPiArCWlmIChJU19FUlIoYXR1X2Jhc2UpKQ0KPiArCQlyZXR1cm4gUFRSX0VS UihhdHVfYmFzZSk7DQo+IA0KPiAgCXBjaWUtPmNvcmVfcnN0ID0gZGV2bV9yZXNldF9jb250cm9s X2dldChkZXYsICJjb3JlIik7DQo+ICAJaWYgKElTX0VSUihwY2llLT5jb3JlX3JzdCkpIHsNCj4g QEAgLTIwOTEsOSArMjEwOCw5IEBAIHN0YXRpYyBpbnQgdGVncmFfcGNpZV9kd19wcm9iZShzdHJ1 Y3QNCj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgCQlyZXR1cm4gUFRSX0VSUihwY2llLT5j b3JlX3JzdCk7DQo+ICAJfQ0KPiANCj4gLQlwcC0+aXJxID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5h bWUocGRldiwgImludHIiKTsNCj4gLQlpZiAocHAtPmlycSA8IDApDQo+IC0JCXJldHVybiBwcC0+ aXJxOw0KPiArCWlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lKHBkZXYsICJpbnRyIik7DQo+ ICsJaWYgKGlycSA8IDApDQo+ICsJCXJldHVybiBpcnE7DQo+IA0KPiAgCXBjaWUtPmJwbXAgPSB0 ZWdyYV9icG1wX2dldChkZXYpOw0KPiAgCWlmIChJU19FUlIocGNpZS0+YnBtcCkpDQo+IEBAIC0y MTAzLDEwICsyMTIwLDIyIEBAIHN0YXRpYyBpbnQgdGVncmFfcGNpZV9kd19wcm9iZShzdHJ1Y3QN Cj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiANCj4gIAlzd2l0Y2ggKHBjaWUtPm1vZGUpIHsN Cj4gIAljYXNlIERXX1BDSUVfUkNfVFlQRToNCj4gLQkJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycShk ZXYsIHBwLT5pcnEsIHRlZ3JhX3BjaWVfcnBfaXJxX2hhbmRsZXIsDQo+ICsJCXBwID0gJnBjaWUt PnBwOw0KPiArCQlwY2kgPSAmcHAtPnBjaWU7DQo+ICsJCXBjaS0+ZGV2ID0gJnBkZXYtPmRldjsN Cj4gKwkJcGNpLT5vcHMgPSAmdGVncmFfZHdfcGNpZV9vcHM7DQo+ICsJCXBjaS0+bl9mdHNbMF0g PSBOX0ZUU19WQUw7DQo+ICsJCXBjaS0+bl9mdHNbMV0gPSBGVFNfVkFMOw0KPiArCQlwY2ktPnZl cnNpb24gPSAweDQ5MEE7DQo+ICsJCXBjaS0+YXR1X3NpemUgPSBhdHVfc2l6ZTsNCj4gKwkJcGNp LT5hdHVfYmFzZSA9IGF0dV9iYXNlOw0KPiArCQlwcC0+bnVtX3ZlY3RvcnMgPSBNQVhfTVNJX0lS UVM7DQo+ICsJCXBwLT5pcnEgPSBpcnE7DQo+ICsNCj4gKwkJcmV0ID0gZGV2bV9yZXF1ZXN0X2ly cShkZXYsIGlycSwgdGVncmFfcGNpZV9ycF9pcnFfaGFuZGxlciwNCj4gIAkJCQkgICAgICAgSVJR Rl9TSEFSRUQsICJ0ZWdyYS1wY2llLWludHIiLCBwY2llKTsNCj4gIAkJaWYgKHJldCkgew0KPiAt CQkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcmVxdWVzdCBJUlEgJWQ6ICVkXG4iLCBwcC0+aXJx LA0KPiArCQkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcmVxdWVzdCBJUlEgJWQ6ICVkXG4iLCBp cnEsDQo+ICAJCQkJcmV0KTsNCj4gIAkJCWdvdG8gZmFpbDsNCj4gIAkJfQ0KPiBAQCAtMjExOSwx MyArMjE0OCwyMyBAQCBzdGF0aWMgaW50IHRlZ3JhX3BjaWVfZHdfcHJvYmUoc3RydWN0DQo+IHBs YXRmb3JtX2RldmljZSAqcGRldikNCj4gIAkJYnJlYWs7DQo+IA0KPiAgCWNhc2UgRFdfUENJRV9F UF9UWVBFOg0KPiAtCQlyZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKGRldiwgcHAtPmly cSwNCj4gKwkJZXAgPSAmcGNpZS0+ZXA7DQo+ICsJCXBjaSA9ICZlcC0+cGNpZTsNCj4gKwkJcGNp LT5kZXYgPSAmcGRldi0+ZGV2Ow0KPiArCQlwY2ktPm9wcyA9ICZ0ZWdyYV9kd19wY2llX29wczsN Cj4gKwkJcGNpLT5uX2Z0c1swXSA9IE5fRlRTX1ZBTDsNCj4gKwkJcGNpLT5uX2Z0c1sxXSA9IEZU U19WQUw7DQo+ICsJCXBjaS0+dmVyc2lvbiA9IDB4NDkwQTsNCj4gKwkJcGNpLT5hdHVfc2l6ZSA9 IGF0dV9zaXplOw0KPiArCQlwY2ktPmF0dV9iYXNlID0gYXR1X2Jhc2U7DQo+ICsNCj4gKwkJcmV0 ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShkZXYsIGlycSwNCj4gIAkJCQkJCXRlZ3JhX3Bj aWVfZXBfaGFyZF9pcnEsDQo+ICAJCQkJCQl0ZWdyYV9wY2llX2VwX2lycV90aHJlYWQsDQo+ICAJ CQkJCQlJUlFGX1NIQVJFRCB8IElSUUZfT05FU0hPVCwNCj4gIAkJCQkJCSJ0ZWdyYS1wY2llLWVw LWludHIiLCBwY2llKTsNCj4gIAkJaWYgKHJldCkgew0KPiAtCQkJZGV2X2VycihkZXYsICJGYWls ZWQgdG8gcmVxdWVzdCBJUlEgJWQ6ICVkXG4iLCBwcC0+aXJxLA0KPiArCQkJZGV2X2VycihkZXYs ICJGYWlsZWQgdG8gcmVxdWVzdCBJUlEgJWQ6ICVkXG4iLCBpcnEsDQo+ICAJCQkJcmV0KTsNCj4g IAkJCWdvdG8gZmFpbDsNCj4gIAkJfQ0KPiBAQCAtMjE4MywxMiArMjIyMiwxNCBAQCBzdGF0aWMg aW50IHRlZ3JhX3BjaWVfZHdfc3VzcGVuZF9sYXRlKHN0cnVjdA0KPiBkZXZpY2UgKmRldikNCj4g IHN0YXRpYyBpbnQgdGVncmFfcGNpZV9kd19zdXNwZW5kX25vaXJxKHN0cnVjdCBkZXZpY2UgKmRl dikNCj4gIHsNCj4gIAlzdHJ1Y3QgdGVncmFfcGNpZV9kdyAqcGNpZSA9IGRldl9nZXRfZHJ2ZGF0 YShkZXYpOw0KPiArCXN0cnVjdCBkd19wY2llICpwY2k7DQo+IA0KPiAgCWlmICghcGNpZS0+bGlu a19zdGF0ZSkNCj4gIAkJcmV0dXJuIDA7DQo+IA0KPiArCXBjaSA9IHRvX2R3X3BjaWVfZnJvbV9w cCgmcGNpZS0+cHApOw0KPiAgCS8qIFNhdmUgTVNJIGludGVycnVwdCB2ZWN0b3IgKi8NCj4gLQlw Y2llLT5tc2lfY3RybF9pbnQgPSBkd19wY2llX3JlYWRsX2RiaSgmcGNpZS0+cGNpLA0KPiArCXBj aWUtPm1zaV9jdHJsX2ludCA9IGR3X3BjaWVfcmVhZGxfZGJpKHBjaSwNCj4gIAkJCQkJICAgICAg IFBPUlRfTE9HSUNfTVNJX0NUUkxfSU5UXzBfRU4pOw0KPiAgCXRlZ3JhX3BjaWVfZG93bnN0cmVh bV9kZXZfdG9fRDAocGNpZSk7DQo+ICAJdGVncmFfcGNpZV9kd19wbWVfdHVybm9mZihwY2llKTsN Cj4gQEAgLTIyMDAsMjMgKzIyNDEsMjUgQEAgc3RhdGljIGludCB0ZWdyYV9wY2llX2R3X3N1c3Bl bmRfbm9pcnEoc3RydWN0DQo+IGRldmljZSAqZGV2KQ0KPiAgc3RhdGljIGludCB0ZWdyYV9wY2ll X2R3X3Jlc3VtZV9ub2lycShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICB7DQo+ICAJc3RydWN0IHRl Z3JhX3BjaWVfZHcgKnBjaWUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKwlzdHJ1Y3QgZHdf cGNpZSAqcGNpOw0KPiAgCWludCByZXQ7DQo+IA0KPiAgCWlmICghcGNpZS0+bGlua19zdGF0ZSkN Cj4gIAkJcmV0dXJuIDA7DQo+IA0KPiArCXBjaSA9IHRvX2R3X3BjaWVfZnJvbV9wcCgmcGNpZS0+ cHApOw0KPiAgCXJldCA9IHRlZ3JhX3BjaWVfY29uZmlnX2NvbnRyb2xsZXIocGNpZSwgdHJ1ZSk7 DQo+ICAJaWYgKHJldCA8IDApDQo+ICAJCXJldHVybiByZXQ7DQo+IA0KPiAtCXJldCA9IHRlZ3Jh X3BjaWVfZHdfaG9zdF9pbml0KCZwY2llLT5wY2kucHApOw0KPiArCXJldCA9IHRlZ3JhX3BjaWVf ZHdfaG9zdF9pbml0KCZwY2llLT5wcCk7DQo+ICAJaWYgKHJldCA8IDApIHsNCj4gIAkJZGV2X2Vy cihkZXYsICJGYWlsZWQgdG8gaW5pdCBob3N0OiAlZFxuIiwgcmV0KTsNCj4gIAkJZ290byBmYWls X2hvc3RfaW5pdDsNCj4gIAl9DQo+IA0KPiAgCS8qIFJlc3RvcmUgTVNJIGludGVycnVwdCB2ZWN0 b3IgKi8NCj4gLQlkd19wY2llX3dyaXRlbF9kYmkoJnBjaWUtPnBjaSwgUE9SVF9MT0dJQ19NU0lf Q1RSTF9JTlRfMF9FTiwNCj4gKwlkd19wY2llX3dyaXRlbF9kYmkocGNpLCBQT1JUX0xPR0lDX01T SV9DVFJMX0lOVF8wX0VOLA0KPiAgCQkJICAgcGNpZS0+bXNpX2N0cmxfaW50KTsNCj4gDQo+ICAJ cmV0dXJuIDA7DQo+IEBAIC0yMjU2LDkgKzIyOTksOSBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9wY2ll X2R3X3NodXRkb3duKHN0cnVjdA0KPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAJZGVidWdm c19yZW1vdmVfcmVjdXJzaXZlKHBjaWUtPmRlYnVnZnMpOw0KPiAgCXRlZ3JhX3BjaWVfZG93bnN0 cmVhbV9kZXZfdG9fRDAocGNpZSk7DQo+IA0KPiAtCWRpc2FibGVfaXJxKHBjaWUtPnBjaS5wcC5p cnEpOw0KPiArCWRpc2FibGVfaXJxKHBjaWUtPnBwLmlycSk7DQo+ICAJaWYgKElTX0VOQUJMRUQo Q09ORklHX1BDSV9NU0kpKQ0KPiAtCQlkaXNhYmxlX2lycShwY2llLT5wY2kucHAubXNpX2lycSk7 DQo+ICsJCWRpc2FibGVfaXJxKHBjaWUtPnBwLm1zaV9pcnEpOw0KPiANCj4gIAl0ZWdyYV9wY2ll X2R3X3BtZV90dXJub2ZmKHBjaWUpOw0KPiAgCXRlZ3JhX3BjaWVfdW5jb25maWdfY29udHJvbGxl cihwY2llKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUt dW5pcGhpZXItZXAuYw0KPiBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtdW5pcGhp ZXItZXAuYw0KPiBpbmRleCAyMWUxODViZjkwZDYuLjdhM2Q2ZTM4NmU2YyAxMDA2NDQNCj4gLS0t IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS11bmlwaGllci1lcC5jDQo+ICsrKyBi L2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtdW5pcGhpZXItZXAuYw0KPiBAQCAtNTYs NyArNTYsNyBAQA0KPiANCj4gIHN0cnVjdCB1bmlwaGllcl9wY2llX2VwX3ByaXYgew0KPiAgCXZv aWQgX19pb21lbSAqYmFzZTsNCj4gLQlzdHJ1Y3QgZHdfcGNpZSBwY2k7DQo+ICsJc3RydWN0IGR3 X3BjaWVfZXAgZXA7DQo+ICAJc3RydWN0IGNsayAqY2xrLCAqY2xrX2dpbzsNCj4gIAlzdHJ1Y3Qg cmVzZXRfY29udHJvbCAqcnN0LCAqcnN0X2dpbzsNCj4gIAlzdHJ1Y3QgcGh5ICpwaHk7DQo+IEBA IC0yNzAsNiArMjcwLDggQEAgc3RhdGljIGludCB1bmlwaGllcl9wY2llX2VwX3Byb2JlKHN0cnVj dA0KPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICB7DQo+ICAJc3RydWN0IGRldmljZSAqZGV2 ID0gJnBkZXYtPmRldjsNCj4gIAlzdHJ1Y3QgdW5pcGhpZXJfcGNpZV9lcF9wcml2ICpwcml2Ow0K PiArCXN0cnVjdCBkd19wY2llX2VwICplcDsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpOw0KPiAg CWludCByZXQ7DQo+IA0KPiAgCXByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYp LCBHRlBfS0VSTkVMKTsNCj4gQEAgLTI4MCw4ICsyODIsMTAgQEAgc3RhdGljIGludCB1bmlwaGll cl9wY2llX2VwX3Byb2JlKHN0cnVjdA0KPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAJaWYg KFdBUk5fT04oIXByaXYtPmZlYXR1cmVzKSkNCj4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+IA0KPiAt CXByaXYtPnBjaS5kZXYgPSBkZXY7DQo+IC0JcHJpdi0+cGNpLm9wcyA9ICZkd19wY2llX29wczsN Cj4gKwllcCA9ICZwcml2LT5lcDsNCj4gKwlwY2kgPSAmZXAtPnBjaWU7DQo+ICsJcGNpLT5kZXYg PSBkZXY7DQo+ICsJcGNpLT5vcHMgPSAmZHdfcGNpZV9vcHM7DQo+IA0KPiAgCXByaXYtPmJhc2Ug PSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2VfYnluYW1lKHBkZXYsICJsaW5rIik7DQo+ ICAJaWYgKElTX0VSUihwcml2LT5iYXNlKSkNCj4gQEAgLTMxNiw4ICszMjAsOCBAQCBzdGF0aWMg aW50IHVuaXBoaWVyX3BjaWVfZXBfcHJvYmUoc3RydWN0DQo+IHBsYXRmb3JtX2RldmljZSAqcGRl dikNCj4gIAlpZiAocmV0KQ0KPiAgCQlyZXR1cm4gcmV0Ow0KPiANCj4gLQlwcml2LT5wY2kuZXAu b3BzID0gJnVuaXBoaWVyX3BjaWVfZXBfb3BzOw0KPiAtCXJldHVybiBkd19wY2llX2VwX2luaXQo JnByaXYtPnBjaS5lcCk7DQo+ICsJZXAtPm9wcyA9ICZ1bmlwaGllcl9wY2llX2VwX29wczsNCj4g KwlyZXR1cm4gZHdfcGNpZV9lcF9pbml0KGVwKTsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgY29uc3Qg c3RydWN0IHBjaV9lcGNfZmVhdHVyZXMgdW5pcGhpZXJfcHJvNV9kYXRhID0gew0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS11bmlwaGllci5jDQo+IGIvZHJp dmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS11bmlwaGllci5jDQo+IGluZGV4IDdlOGJhZDMy Njc3MC4uMjQ5NDMwZDQxNzNhIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVy L2R3Yy9wY2llLXVuaXBoaWVyLmMNCj4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2Mv cGNpZS11bmlwaGllci5jDQo+IEBAIC02Myw3ICs2Myw3IEBADQo+IA0KPiAgc3RydWN0IHVuaXBo aWVyX3BjaWVfcHJpdiB7DQo+ICAJdm9pZCBfX2lvbWVtICpiYXNlOw0KPiAtCXN0cnVjdCBkd19w Y2llIHBjaTsNCj4gKwlzdHJ1Y3QgcGNpZV9wb3J0IHBwOw0KPiAgCXN0cnVjdCBjbGsgKmNsazsN Cj4gIAlzdHJ1Y3QgcmVzZXRfY29udHJvbCAqcnN0Ow0KPiAgCXN0cnVjdCBwaHkgKnBoeTsNCj4g QEAgLTEyMCw2ICsxMjAsNyBAQCBzdGF0aWMgdm9pZCB1bmlwaGllcl9wY2llX2luaXRfcmMoc3Ry dWN0DQo+IHVuaXBoaWVyX3BjaWVfcHJpdiAqcHJpdikNCj4gDQo+ICBzdGF0aWMgaW50IHVuaXBo aWVyX3BjaWVfd2FpdF9yYyhzdHJ1Y3QgdW5pcGhpZXJfcGNpZV9wcml2ICpwcml2KQ0KPiAgew0K PiArCXN0cnVjdCBkd19wY2llICpwY2kgPSB0b19kd19wY2llX2Zyb21fcHAoJnByaXYtPnBwKTsN Cj4gIAl1MzIgc3RhdHVzOw0KPiAgCWludCByZXQ7DQo+IA0KPiBAQCAtMTI3LDcgKzEyOCw3IEBA IHN0YXRpYyBpbnQgdW5pcGhpZXJfcGNpZV93YWl0X3JjKHN0cnVjdA0KPiB1bmlwaGllcl9wY2ll X3ByaXYgKnByaXYpDQo+ICAJcmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KHByaXYtPmJhc2UgKyBQ Q0xfUElQRU1PTiwgc3RhdHVzLA0KPiAgCQkJCSBzdGF0dXMgJiBQQ0xfUENMS19BTElWRSwgMTAw MDAwLCAxMDAwMDAwKTsNCj4gIAlpZiAocmV0KSB7DQo+IC0JCWRldl9lcnIocHJpdi0+cGNpLmRl diwNCj4gKwkJZGV2X2VycihwY2ktPmRldiwNCj4gIAkJCSJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBj b250cm9sbGVyIGluIFJDIG1vZGVcbiIpOw0KPiAgCQlyZXR1cm4gcmV0Ow0KPiAgCX0NCj4gQEAg LTM2NSwxNCArMzY2LDE4IEBAIHN0YXRpYyBpbnQgdW5pcGhpZXJfcGNpZV9wcm9iZShzdHJ1Y3QN Cj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgew0KPiAgCXN0cnVjdCBkZXZpY2UgKmRldiA9 ICZwZGV2LT5kZXY7DQo+ICAJc3RydWN0IHVuaXBoaWVyX3BjaWVfcHJpdiAqcHJpdjsNCj4gKwlz dHJ1Y3QgcGNpZV9wb3J0ICpwcDsNCj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpOw0KPiAgCWludCBy ZXQ7DQo+IA0KPiAgCXByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBf S0VSTkVMKTsNCj4gIAlpZiAoIXByaXYpDQo+ICAJCXJldHVybiAtRU5PTUVNOw0KPiANCj4gLQlw cml2LT5wY2kuZGV2ID0gZGV2Ow0KPiAtCXByaXYtPnBjaS5vcHMgPSAmZHdfcGNpZV9vcHM7DQo+ ICsJcHAgPSAmcHJpdi0+cHA7DQo+ICsJcGNpID0gJnBwLT5wY2llOw0KPiArCXBjaS0+ZGV2ID0g ZGV2Ow0KPiArCXBjaS0+b3BzID0gJmR3X3BjaWVfb3BzOw0KPiANCj4gIAlwcml2LT5iYXNlID0g ZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlX2J5bmFtZShwZGV2LCAibGluayIpOw0KPiAg CWlmIChJU19FUlIocHJpdi0+YmFzZSkpDQo+IEBAIC0zOTYsOSArNDAxLDkgQEAgc3RhdGljIGlu dCB1bmlwaGllcl9wY2llX3Byb2JlKHN0cnVjdA0KPiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ ICAJaWYgKHJldCkNCj4gIAkJcmV0dXJuIHJldDsNCj4gDQo+IC0JcHJpdi0+cGNpLnBwLm9wcyA9 ICZ1bmlwaGllcl9wY2llX2hvc3Rfb3BzOw0KPiArCXBwLT5vcHMgPSAmdW5pcGhpZXJfcGNpZV9o b3N0X29wczsNCj4gDQo+IC0JcmV0dXJuIGR3X3BjaWVfaG9zdF9pbml0KCZwcml2LT5wY2kucHAp Ow0KPiArCXJldHVybiBkd19wY2llX2hvc3RfaW5pdChwcCk7DQo+ICB9DQo+IA0KPiAgc3RhdGlj IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdW5pcGhpZXJfcGNpZV9tYXRjaFtdID0gew0KPiAt LQ0KPiAyLjE3LjENCg0K