From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 99B63C433FE for ; Mon, 18 Apr 2022 04:55:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234614AbiDRE5r (ORCPT ); Mon, 18 Apr 2022 00:57:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58892 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231514AbiDRE5q (ORCPT ); Mon, 18 Apr 2022 00:57:46 -0400 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80045.outbound.protection.outlook.com [40.107.8.45]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 57455B4; Sun, 17 Apr 2022 21:55:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RxA/hOIO2esJEziMDyorIfSp/sv3LNuc4asrkAv+jZwsTKTKhu46l/FVxij4angEf9LHaKR1vHKOBnrxv0jhosdDCQOXNJQRZNlUbeTCWMSuKdD9yvxZQcKcmEo4lakCj7oRv9rvhjPGFQmd4+n8t0sU0iFwHOAJ5x09XL+w3vKuBDPZIWitGXhI7zQNdH6wJCQfi5PrmJV5AI46WQYCh+FzRXcWVk8oaUYCaDsA742gnW/LIXCni6IlOwdUImP5Ycr6V1D9JF72S1pgYd0lABy1CydAgnz2vNjIPjgF8U/YoJnIFhnEHRK96F2FvLMa88w3eVxBPmfK+Cx9WA33aQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LpzSqw/hgMbG+4NmHtuAtWwV6ja0IO6CS2fQFATYUvk=; b=en5sar7ZyEb/8TWzNbVrYrXa2bZE3Z0FvvUpI9eVuvtIFRWxR1C2TvDdfYDI9zfMceApU04JIjjqrsUDXAY2qxLZPl2SAJ5XcBtuSRuDdkn1Q09jN0ydL7jt7uhBHlslJJDFHaJuWg2E8x7WP+uLmmHq01hS4o2cXnZPr/cGp0tKH2FzWTjIIJKshfqlDevUiE4u6LtsLhcXwR/FbCa30qZQDomtXrCy9SQFlZRK4fsrsjH4Bteg/n8WsPGwULrrWj9w/2pT3sB0IB74bszTnC10mNJxRuTDcoR947aTkJrDaCdg69p8bbchEsz5eJZc5RI3/XL0sKhzYADuWCBN3Q== 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=LpzSqw/hgMbG+4NmHtuAtWwV6ja0IO6CS2fQFATYUvk=; b=A5tRHSJ25lybCoSA66g6SXPThSTW9NvPmhsB0iupqTIwnWsXvTVwcJtU9dUWDBhpaeKXVUoTlevX64bTHirlU/v6lzopmYEltMUme9F+YZa+cMVDcRO+cavXJN/dxcdyUUsr2X9ErtocRwsUaSXKCkU89WPIRG0M7xtcC6RdbT0= Received: from AS8PR04MB8676.eurprd04.prod.outlook.com (2603:10a6:20b:42b::10) by HE1PR0402MB3433.eurprd04.prod.outlook.com (2603:10a6:7:87::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.20; Mon, 18 Apr 2022 04:55:05 +0000 Received: from AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::ecea:cb09:5ff2:1800]) by AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::ecea:cb09:5ff2:1800%5]) with mapi id 15.20.5164.025; Mon, 18 Apr 2022 04:55:05 +0000 From: Hongxing Zhu To: Lucas Stach , "p.zabel@pengutronix.de" , "bhelgaas@google.com" , "lorenzo.pieralisi@arm.com" , "robh@kernel.org" , "shawnguo@kernel.org" , "vkoul@kernel.org" , "alexander.stein@ew.tq-group.com" CC: "linux-phy@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-pci@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "kernel@pengutronix.de" , dl-linux-imx Subject: RE: [PATCH v2 3/7] phy: freescale: imx8m-pcie: Add iMX8MP PCIe PHY support Thread-Topic: [PATCH v2 3/7] phy: freescale: imx8m-pcie: Add iMX8MP PCIe PHY support Thread-Index: AQHYMgQLdclbTtObJUa7gaiTaiiHY6zwIMkAgAU0JqA= Date: Mon, 18 Apr 2022 04:55:05 +0000 Message-ID: References: <1646644054-24421-1-git-send-email-hongxing.zhu@nxp.com> <1646644054-24421-4-git-send-email-hongxing.zhu@nxp.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3e70250a-f30c-4bec-e5b2-08da20f79b0a x-ms-traffictypediagnostic: HE1PR0402MB3433:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: scw80YaATcuL0m3u75bsh3JhkBnuhiuFk5o2+v7iTLj47Cnzsh4yctKB0xYHYWLcfJ42mNH4BefZUxDU7dLUUdWRADCNpZby0Bz/yStHDj2Nlv3ecaO9jC9Lz2sVHiQlxHFYb4uN2sZvLWy1FBfBAZgHExLv+8krGj20v8AussSID0ZCAm6FY/lXHnzabgCpnfq/X0/8KMsIssp36duVPWErz6ZWkMuSXqTl1iwDA8TxkTKzMphIDEyygBhRLJ/9iGHxu/P83cSUGCxbKRaWpCGtHiK24NLeI11zN5GFfa9P78cRF+W+gNiwz9IYQhbXb812lSxrk+0xvYLy2pGZnWPBsk+nuTDLKBlB2C5lNiKmO988ncgE4CvfCiL/4NQD8MvzWSdotuisl7lh03P5DM+Q6dZVtAuuXul9+Ul10XOI7/s1Ex4lbKg6lgYqOhND7VsdTBNvYP7Pc4ZZBzq66KEu49lwFYucqWYG6uJismf3TZe80d7SrXf72F3ctfSP2D+/xwphONdliFqn1Yjnrn/DNqe9gOB4MNZfca6YLAxk8ei3kRUt2tPuXCtGbuhrmtDqH/uUMhOTLZ+VoLjMrfJ97qlQ5VVcTJh195hM25ytI9x2h9H/SDCIOA7Q12XJX0r4ebX9oq6RFRZFo3lCe0Z3g991B5xnMvmwQLjsG/IyjTCZq08GDilIpQ41ZZDpmeo2THu5Iu30+CBWi59/Kbaf2Gwh2s+q5ra3TAPYPaE= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR04MB8676.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(86362001)(33656002)(38070700005)(508600001)(110136005)(83380400001)(186003)(26005)(9686003)(53546011)(6506007)(122000001)(38100700002)(44832011)(30864003)(7416002)(7696005)(2906002)(5660300002)(54906003)(71200400001)(8936002)(4326008)(52536014)(76116006)(316002)(66946007)(66446008)(64756008)(55016003)(8676002)(66476007)(66556008)(32563001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UkZCRTdKL2FrTlduK2NrMnkxaVRpc0VITTByZ2VCVGNPTFMwc3RuSXNqNnZ5?= =?utf-8?B?bnEvUXlVVjlUWEk1Y3o5TUY1UDQza055MVRlREU3Wmd0M3ZoSHB0cm5MQlVK?= =?utf-8?B?b3lBTEt1QUh4WEduSWpseFc1M3M3RTI1L0s1dTNDbVJMSDM0V2ZOUnpCNDFv?= =?utf-8?B?cTJ1U3IxODRCd2MrazRxMlZMaThOVmo1RkdIbkJvZUU5Z0Jmdzk3bWN6RXZF?= =?utf-8?B?OXlDMWUyZWYvSE94MFgvOGJtY2haTklyek5GYkVhbGtTRkhMYnhZR1NLREVn?= =?utf-8?B?R21hUHJsVVl4SkZqczJNV05NalhZbnQ5b20zWEZvVUlmNllyL3dZclpRY09y?= =?utf-8?B?K0Nlc0I1dVVpOWZjSld1MUlFMjRjNitFbklQRnl4YUtJeEF2VTZjTWFQajRG?= =?utf-8?B?MVNidVQzbFp1QWEwZzNJeGU2Zll4dW50ZEcrc1dhYzVld1R0MnhFSGIwNmN0?= =?utf-8?B?aWRNNkFhcmZvRkFXNHEwTlA4dm1VMUtBTGtmRCtXVHdqYXJURGpKWHVkdFhz?= =?utf-8?B?ZzN2WkZsR2hKeFA2REN1ODVrcExlM2g4TXEwOGNzRktKc1RNK3BTYWd3RmxL?= =?utf-8?B?RmNIWDV2VXJJcjhHVjdrRVJuK2w3eVNiRXAyMTNTcUFmbHBQQlZWYmkweEdE?= =?utf-8?B?QXJlR2hGR1lwemJkWkpPVS8wTTJFUVJXbVBsZ2pJTmU3RHQ4WjBLcFZYSlFN?= =?utf-8?B?VytxZlBSeFlJMW9FSEJRak9HcVFoR2VlZnRzaHFlb3pvV2I3VkgzZjFiQ2Zr?= =?utf-8?B?ZG05Yk5ZWkt2S2U0ZW1QakVscUt4UTNjajVHR0RBRkt0UzhkeXZkdjBwQ01n?= =?utf-8?B?YWxRTTU1Rm1BMDAybFI1VHBwTFl6U2F6WlhsL2lickFIWjFmc282R1IxMzIr?= =?utf-8?B?SlhEUFltUHQ2b2dNK1E4TlNxMEtLRFFCaDBEM2hSMUpCeXB0dlhmSDVLcitZ?= =?utf-8?B?d1hMZnBrQUNFajVRZi9KeGxsMm54T1JyTXRKbHJZUjdsaWhZNUZPQ1hDWklW?= =?utf-8?B?cldwdE1jbUpNVmVnVDlWZzEvbnZoTU1sY0ZJcStyeFpkWXJxU0UxbDNWVTFF?= =?utf-8?B?K0I0b1QyK1lyRHo3SHpBMEF4OFhOOG4vRCtKc3l6dEdFZElJYUU2R0l1ekpV?= =?utf-8?B?UE8zRExTdC9ielRCUDNNR250ZFFvSUUrbGtYZjlvNkFvUHVEa3R2aThVM1R3?= =?utf-8?B?TFF1cUIraUdtcnFsaTBNeWNGT25KNkVWKzZaUlRzWm92clV5K2syQzRueE5p?= =?utf-8?B?WjJlQ1Y5aVlCQjNYUFlmVDUzQXFpQU1CL2pudm9HV1J4bkcrdk5ZNVh2am8z?= =?utf-8?B?eVFXbVU2Vml0Z2tyMnIxZmJ6aEYyYUFVNWlLUGF3T3B6WEk4SDNkYXI1aXRq?= =?utf-8?B?QUwzNzE0RUZEejBydkJxZUlmeENqREsyU0hGM2JoQVp1NmExT0lMQXBTbUti?= =?utf-8?B?REJTVy9kV3hQaXp3OFpsN1M3dzN4RlI3VHhKbnhLWHpXZVJJOVd1UXFCQWY4?= =?utf-8?B?MlZMV2RtVEtURXdmQmJIRStyZys5d1o5SkN5MjZRYnQwd2l4Y0Z0Y1BqRFNZ?= =?utf-8?B?cUZXUDlvZ01pN2wwSXZTdmRnSXhOSzRNTzFVeVJuMzRnR0F4VTUyZ1ZtTC9m?= =?utf-8?B?bEtEdnM4V1BSQ0RLZDJaNnVuYXRPM3loSXhrbjk4ZWNBNGJwMGlOSEVmVU9l?= =?utf-8?B?QjJjR0RtUDhYUU5BR0RLK2RGVUMwQWpNM2UrNTIwRWlrV3NNTFhSZnFrM0cx?= =?utf-8?B?cm4yR2dxNDNvN2JWeWJuQzExcU4yTVoxSlRvWDB3WjNOS3VYWW1kR1djSTRk?= =?utf-8?B?ZlhuVTRFdmI0YXNkM1c4WXUyV2x4cVJNVWNkUGJKRlBiaHYyNTF6Y0JTL1gx?= =?utf-8?B?S05jZ1lXb3RXcXYxbTEwcjMvbXdmQ3QvRFgvVHZhcVhYdk1sRTVnUkxxTjBN?= =?utf-8?B?aCtrSk5GV0tqVjZDck5WUHp4elRuemR2L2FPMFZMbEw0a1Fhc2hWYUExMmhX?= =?utf-8?B?YUMwS1hjQTNhM3FQcEg5R2VqbG9kNTdrYUc4Q0NkRU1PRHFqUjJ4WHJnUnFy?= =?utf-8?B?Z29IZjdPYUFzZC92WDVuSXJYS0c1bnFCcHdHamFaTHJmMkhPNHZaNmo3NFdt?= =?utf-8?B?Ync0cTEyYzhnZnlUd3VHVi82eTF3SkJWT0FzbmxkQlFkRk5pa29PUUg4OUJY?= =?utf-8?B?dUU4aGwzYVFoSWsxMnZVcnN2N2pZQUlxTW92cnZRL21vV2dJR3hhb0JiR0Zq?= =?utf-8?B?Z2ZjME05b0JKRlZmWFN2Ky9QaS9wbEJlN3ZxUHZ6Q1lzYzZ1Nkh6dlFPd25i?= =?utf-8?B?RldJWDZtZDNSK2dMMlA3NWdhT1pwK1ZzdkdmQ3dOSUk4YUFNRmhjdz09?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8676.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e70250a-f30c-4bec-e5b2-08da20f79b0a X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Apr 2022 04:55:05.5134 (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: VFVYjFrR9tSRAWUZIb0P+QB9/ZAwCTMMICvIkalsn3eqpwtpgpEZoa4wz7ojlSw/sES9QYfPPqzpeBnKq+XB7A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0402MB3433 Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMdWNhcyBTdGFjaCA8bC5zdGFj aEBwZW5ndXRyb25peC5kZT4NCj4gU2VudDogMjAyMuW5tDTmnIgxNeaXpSA0OjU5DQo+IFRvOiBI b25neGluZyBaaHUgPGhvbmd4aW5nLnpodUBueHAuY29tPjsgcC56YWJlbEBwZW5ndXRyb25peC5k ZTsNCj4gYmhlbGdhYXNAZ29vZ2xlLmNvbTsgbG9yZW56by5waWVyYWxpc2lAYXJtLmNvbTsgcm9i aEBrZXJuZWwub3JnOw0KPiBzaGF3bmd1b0BrZXJuZWwub3JnOyB2a291bEBrZXJuZWwub3JnOyBh bGV4YW5kZXIuc3RlaW5AZXcudHEtZ3JvdXAuY29tDQo+IENjOiBsaW51eC1waHlAbGlzdHMuaW5m cmFkZWFkLm9yZzsgZGV2aWNldHJlZUB2Z2VyLmtlcm5lbC5vcmc7DQo+IGxpbnV4LXBjaUB2Z2Vy Lmtlcm5lbC5vcmc7IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZzsNCj4gbGlu dXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsga2VybmVsQHBlbmd1dHJvbml4LmRlOyBkbC1saW51 eC1pbXgNCj4gPGxpbnV4LWlteEBueHAuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYyIDMv N10gcGh5OiBmcmVlc2NhbGU6IGlteDhtLXBjaWU6IEFkZCBpTVg4TVAgUENJZSBQSFkNCj4gc3Vw cG9ydA0KPiANCj4gQW0gTW9udGFnLCBkZW0gMDcuMDMuMjAyMiB1bSAxNzowNyArMDgwMCBzY2hy aWViIFJpY2hhcmQgWmh1Og0KPiA+IEFkZCB0aGUgaS5NWDhNUCBQQ0llIFBIWSBzdXBwb3J0DQo+ ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFpodSA8aG9uZ3hpbmcuemh1QG54cC5jb20+ DQo+ID4gLS0tDQo+ID4gIGRyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNsLWlteDhtLXBjaWUu YyB8IDIwNQ0KPiA+ICsrKysrKysrKysrKysrKystLS0tLQ0KPiA+ICAxIGZpbGUgY2hhbmdlZCwg MTYzIGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNsLWlteDhtLXBjaWUuYw0KPiA+IGIvZHJpdmVy cy9waHkvZnJlZXNjYWxlL3BoeS1mc2wtaW14OG0tcGNpZS5jDQo+ID4gaW5kZXggMDRiMWFhZmIy OWY0Li4zZDAxZGE0MzIzYTYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9waHkvZnJlZXNjYWxl L3BoeS1mc2wtaW14OG0tcGNpZS5jDQo+ID4gKysrIGIvZHJpdmVycy9waHkvZnJlZXNjYWxlL3Bo eS1mc2wtaW14OG0tcGNpZS5jDQo+ID4gQEAgLTExLDYgKzExLDggQEANCj4gPiAgI2luY2x1ZGUg PGxpbnV4L21mZC9zeXNjb24uaD4NCj4gPiAgI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24vaW14 Ny1pb211eGMtZ3ByLmg+DQo+ID4gICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gPiArI2lu Y2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L29mX2Rldmlj ZS5oPg0KPiA+ICAjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPg0KPiA+ICAjaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ID4gICNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4NCj4g PiBAQCAtMzAsMTIgKzMyLDEwIEBADQo+ID4gICNkZWZpbmUgSU1YOE1NX1BDSUVfUEhZX0NNTl9S RUcwNjUJMHgxOTQNCj4gPiAgI2RlZmluZSAgQU5BX0FVWF9SWF9URVJNCQkoQklUKDcpIHwgQklU KDQpKQ0KPiA+ICAjZGVmaW5lICBBTkFfQVVYX1RYX0xWTAkJCUdFTk1BU0soMywgMCkNCj4gPiAt I2RlZmluZSBJTVg4TU1fUENJRV9QSFlfQ01OX1JFRzc1CTB4MUQ0DQo+ID4gLSNkZWZpbmUgIFBD SUVfUEhZX0NNTl9SRUc3NV9QTExfRE9ORQkweDMNCj4gPiArI2RlZmluZSBJTVg4TU1fUENJRV9Q SFlfQ01OX1JFRzA3NQkweDFENA0KPiA+ICsjZGVmaW5lICBBTkFfUExMX0RPTkUJCQkweDMNCj4g DQo+IFdoeSBkbyB5b3UgZHJvcCB0aGUgcmVnaXN0ZXIgcHJlZml4IGZyb20gdGhlIG5hbWUgaGVy ZT8NClRvIHByZXZlbnQgdGhlIGNvZGVzIGZyb20gZXhjZWVkaW5nIHRoZSA4MCBjb2x1bW5zIGFu ZCBhbGlnbiB3aXRoIHRoZSBvdGhlcg0KIGJpdCBkZWZpbml0aW9ucywgZHJvcCB0aGUgcHJlZml4 IGFuZCBrZWVwIHRoZSBiaXQgZGVmaW5pdGlvbnMgYXMgc2hvcnQgYXMNCiBwb3NzaWJsZS4NCg0K PiANCj4gPiAgI2RlZmluZSBQQ0lFX1BIWV9UUlNWX1JFRzUJCTB4NDE0DQo+ID4gLSNkZWZpbmUg IFBDSUVfUEhZX1RSU1ZfUkVHNV9HRU4xX0RFRU1QCTB4MkQNCj4gPiAgI2RlZmluZSBQQ0lFX1BI WV9UUlNWX1JFRzYJCTB4NDE4DQo+ID4gLSNkZWZpbmUgIFBDSUVfUEhZX1RSU1ZfUkVHNl9HRU4y X0RFRU1QCTB4Rg0KPiA+DQo+ID4gICNkZWZpbmUgSU1YOE1NX0dQUl9QQ0lFX1JFRl9DTEtfU0VM CUdFTk1BU0soMjUsIDI0KQ0KPiA+ICAjZGVmaW5lIElNWDhNTV9HUFJfUENJRV9SRUZfQ0xLX1BM TA0KPiAJRklFTERfUFJFUChJTVg4TU1fR1BSX1BDSUVfUkVGX0NMS19TRUwsIDB4MykNCj4gPiBA QCAtNDYsMTYgKzQ2LDQzIEBADQo+ID4gICNkZWZpbmUgSU1YOE1NX0dQUl9QQ0lFX1NTQ19FTgkJ QklUKDE2KQ0KPiA+ICAjZGVmaW5lIElNWDhNTV9HUFJfUENJRV9BVVhfRU5fT1ZFUlJJREUJQklU KDkpDQo+ID4NCj4gPiArI2RlZmluZSBJTVg4TVBfR1BSX1JFRzAJCQkweDANCj4gPiArI2RlZmlu ZSBJTVg4TVBfR1BSX0NMS19NT0RfRU4JCUJJVCgwKQ0KPiA+ICsjZGVmaW5lIElNWDhNUF9HUFJf UEhZX0FQQl9SU1QJCUJJVCg0KQ0KPiA+ICsjZGVmaW5lIElNWDhNUF9HUFJfUEhZX0lOSVRfUlNU CQlCSVQoNSkNCj4gPiArI2RlZmluZSBJTVg4TVBfR1BSX1JFRzEJCQkweDQNCj4gPiArI2RlZmlu ZSBJTVg4TVBfR1BSX1BNX0VOX0NPUkVfQ0xLCUJJVCgwKQ0KPiA+ICsjZGVmaW5lIElNWDhNUF9H UFJfUExMX0xPQ0sJCUJJVCgxMykNCj4gPiArI2RlZmluZSBJTVg4TVBfR1BSX1JFRzIJCQkweDgN Cj4gPiArI2RlZmluZSBJTVg4TVBfR1BSX1BfUExMX01BU0sJCUdFTk1BU0soNSwgMCkNCj4gPiAr I2RlZmluZSBJTVg4TVBfR1BSX01fUExMX01BU0sJCUdFTk1BU0soMTUsIDYpDQo+ID4gKyNkZWZp bmUgSU1YOE1QX0dQUl9TX1BMTF9NQVNLCQlHRU5NQVNLKDE4LCAxNikNCj4gPiArI2RlZmluZSBJ TVg4TVBfR1BSX1BfUExMCQkoMHhjIDw8IDApDQo+ID4gKyNkZWZpbmUgSU1YOE1QX0dQUl9NX1BM TAkJKDB4MzIwIDw8IDYpDQo+ID4gKyNkZWZpbmUgSU1YOE1QX0dQUl9TX1BMTAkJKDB4NCA8PCAx NikNCj4gPiArI2RlZmluZSBJTVg4TVBfR1BSX1JFRzMJCQkweGMNCj4gPiArI2RlZmluZSBJTVg4 TVBfR1BSX1BMTF9DS0UJCUJJVCgxNykNCj4gPiArI2RlZmluZSBJTVg4TVBfR1BSX1BMTF9SU1QJ CUJJVCgzMSkNCj4gPiArDQo+ID4gK2VudW0gaW14OF9wY2llX3BoeV90eXBlIHsNCj4gPiArCUlN WDhNTSwNCj4gPiArCUlNWDhNUCwNCj4gPiArfTsNCj4gPiArDQo+ID4gIHN0cnVjdCBpbXg4X3Bj aWVfcGh5IHsNCj4gPiAgCXZvaWQgX19pb21lbQkJKmJhc2U7DQo+ID4gKwlzdHJ1Y3QgZGV2aWNl CQkqZGV2Ow0KPiA+ICAJc3RydWN0IGNsawkJKmNsazsNCj4gPiAgCXN0cnVjdCBwaHkJCSpwaHk7 DQo+ID4gKwlzdHJ1Y3QgcmVnbWFwCQkqaHNpb19ibGtfY3RybDsNCj4gPiAgCXN0cnVjdCByZWdt YXAJCSppb211eGNfZ3ByOw0KPiA+ICAJc3RydWN0IHJlc2V0X2NvbnRyb2wJKnJlc2V0Ow0KPiA+ ICsJc3RydWN0IHJlc2V0X2NvbnRyb2wJKnBlcnN0Ow0KPiA+ICAJdTMyCQkJcmVmY2xrX3BhZF9t b2RlOw0KPiA+ICAJdTMyCQkJdHhfZGVlbXBoX2dlbjE7DQo+ID4gIAl1MzIJCQl0eF9kZWVtcGhf Z2VuMjsNCj4gPiAgCWJvb2wJCQljbGtyZXFfdW51c2VkOw0KPiA+ICsJZW51bSBpbXg4X3BjaWVf cGh5X3R5cGUJdmFyaWFudDsNCj4gPiAgfTsNCj4gPg0KPiA+ICBzdGF0aWMgaW50IGlteDhfcGNp ZV9waHlfaW5pdChzdHJ1Y3QgcGh5ICpwaHkpIEBAIC02Nyw2ICs5NCw4NyBAQA0KPiA+IHN0YXRp YyBpbnQgaW14OF9wY2llX3BoeV9pbml0KHN0cnVjdCBwaHkgKnBoeSkNCj4gPiAgCXJlc2V0X2Nv bnRyb2xfYXNzZXJ0KGlteDhfcGh5LT5yZXNldCk7DQo+ID4NCj4gPiAgCXBhZF9tb2RlID0gaW14 OF9waHktPnJlZmNsa19wYWRfbW9kZTsNCj4gPiArCXN3aXRjaCAoaW14OF9waHktPnZhcmlhbnQp IHsNCj4gPiArCWNhc2UgSU1YOE1NOg0KPiA+ICsJCS8qIFR1bmUgUEhZIGRlLWVtcGhhc2lzIHNl dHRpbmcgdG8gcGFzcyBQQ0llIGNvbXBsaWFuY2UuICovDQo+ID4gKwkJaWYgKGlteDhfcGh5LT50 eF9kZWVtcGhfZ2VuMSkNCj4gPiArCQkJd3JpdGVsKGlteDhfcGh5LT50eF9kZWVtcGhfZ2VuMSwN Cj4gPiArCQkJICAgICAgIGlteDhfcGh5LT5iYXNlICsgUENJRV9QSFlfVFJTVl9SRUc1KTsNCj4g PiArCQlpZiAoaW14OF9waHktPnR4X2RlZW1waF9nZW4yKQ0KPiA+ICsJCQl3cml0ZWwoaW14OF9w aHktPnR4X2RlZW1waF9nZW4yLA0KPiA+ICsJCQkgICAgICAgaW14OF9waHktPmJhc2UgKyBQQ0lF X1BIWV9UUlNWX1JFRzYpOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBJTVg4TVA6DQo+ID4g KwkJcmVzZXRfY29udHJvbF9hc3NlcnQoaW14OF9waHktPnBlcnN0KTsNCj4gDQo+IENvdWxkIHlv dSB0ZWxsIHVzIHNvbWV0aGluZyBtb3JlIGFib3V0IHRoaXMgcmVzZXQuIFdoYXQgZXhhY3RseSBp cyBpdCByZXNldHRpbmcuDQo+IERvIHdlIHJlYWxseSBuZWVkIHRvIGFzc2VydCBpdCBiZWZvcmUg c3RhcnRpbmcgdGhlIEhTSU8gUExMPw0KWWVzLCB0aGlzIHJlc2V0IHNob3VsZCBiZSBhc3NlcnRl ZCwgb3RoZXJ3aXNlLCB0aGUgUENJZSB3b3VsZG4ndCB3b3JrLg0KSSdtIGFza2luZyBtb3JlIGRl dGFpbHMgb2YgdGhpcyByZXNldCBiaXQgZnJvbSBkZXNpZ24gdGVhbSwgYW5kIHdvdWxkIHVwZGF0 ZQ0KIGxhdGVyIGFmdGVyIEkgZ2V0IHRoZSByZXNwb25zZS4NCg0KPiBBRkFJQ1MgdGhlIFBMTCBz aG91bGQgYmUgcHJldHR5IG11Y2ggaW5kZXBlbmRlbnQgb2YgdGhlIFBIWS4NCkFncmVlLg0KDQo+ IA0KPiBEbyB3ZSBuZWVkIHRvIGVuYWJsZSB0aGlzIFBMTCB3aGVuIHRoZSBQSFkgZ2V0cyBhbiBl eHRlcm5hbCByZWZjbG9jaz8gSQ0KPiBjb3VsZG4ndCB0ZXN0IGl0IHlldCwgYnV0IEkgc3VzcGVj dCB0aGF0IHRoZSBIU0lPIFBMTCBpcyBvbmx5IG5lZWRlZCBhcyBhbg0KPiBpbnRlcm5hbCByZWZl cmVuY2UsIHdoZW4gdGhlIGkuTVg4TVAgaXMgdGhlIHJlZmNsb2NrIHNvdXJjZSwgZWl0aGVyIHRo cm91Z2gNCj4gdGhlIFBIWSBwYWRzIG9yIHZpYSBhIGNsa291dCBmcm9tIHRoZSBQTEwuDQo+IA0K UmVmZXIgdG8gbXkgZXhwZXJpZW5jZSwgdGhlIEhTSU8gUExMIHNob3VsZCBiZSBlbmFibGVkIGZp cnN0bHkuDQoNCj4gPiArCQkvKiBTZXQgUD0xMixNPTgwMCxTPTQgYW5kIG11c3Qgc2V0IElDUD0y J2IwMS4gKi8NCj4gPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14OF9waHktPmhzaW9fYmxrX2N0 cmwsIElNWDhNUF9HUFJfUkVHMiwNCj4gPiArCQkJCSAgIElNWDhNUF9HUFJfUF9QTExfTUFTSyB8 DQo+ID4gKwkJCQkgICBJTVg4TVBfR1BSX01fUExMX01BU0sgfA0KPiA+ICsJCQkJICAgSU1YOE1Q X0dQUl9TX1BMTF9NQVNLLA0KPiA+ICsJCQkJICAgSU1YOE1QX0dQUl9QX1BMTCB8DQo+ID4gKwkJ CQkgICBJTVg4TVBfR1BSX01fUExMIHwNCj4gPiArCQkJCSAgIElNWDhNUF9HUFJfU19QTEwpOw0K PiA+ICsJCS8qIHdhaXQgZ3JlYXRlciB0aGFuIDEvRl9GUkVGID0xLzJNSFo9MC41dXMgKi8NCj4g PiArCQl1ZGVsYXkoMSk7DQo+ID4gKw0KPiA+ICsJCXJlZ21hcF91cGRhdGVfYml0cyhpbXg4X3Bo eS0+aHNpb19ibGtfY3RybCwgSU1YOE1QX0dQUl9SRUczLA0KPiA+ICsJCQkJICAgSU1YOE1QX0dQ Ul9QTExfUlNULA0KPiA+ICsJCQkJICAgSU1YOE1QX0dQUl9QTExfUlNUKTsNCj4gPiArCQl1ZGVs YXkoMTApOw0KPiA+ICsNCj4gPiArCQkvKiBTZXQgMSB0byBwbGxfY2tlIG9mIEdQUl9SRUczICov DQo+ID4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDhfcGh5LT5oc2lvX2Jsa19jdHJsLCBJTVg4 TVBfR1BSX1JFRzMsDQo+ID4gKwkJCQkgICBJTVg4TVBfR1BSX1BMTF9DS0UsDQo+ID4gKwkJCQkg ICBJTVg4TVBfR1BSX1BMTF9DS0UpOw0KPiA+ICsNCj4gPiArCQkvKiBMb2NrIHRpbWUgc2hvdWxk IGJlIGdyZWF0ZXIgdGhhbiAzMDBjeWNsZT0zMDAqMC41dXM9MTUwdXMgKi8NCj4gPiArCQlyZXQg PSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQoaW14OF9waHktPmhzaW9fYmxrX2N0cmwsDQo+ID4g KwkJCQkJICAgICBJTVg4TVBfR1BSX1JFRzEsIHZhbCwNCj4gPiArCQkJCQkgICAgIHZhbCAmIElN WDhNUF9HUFJfUExMX0xPQ0ssDQo+ID4gKwkJCQkJICAgICAxMCwgMTAwMCk7DQo+ID4gKwkJaWYg KHJldCkgew0KPiA+ICsJCQlkZXZfZXJyKGlteDhfcGh5LT5kZXYsICJQQ0llIFBMTCBsb2NrIHRp bWVvdXRcbiIpOw0KPiA+ICsJCQlyZXR1cm4gcmV0Ow0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJ LyogcGNpZV9jbG9ja19tb2R1bGVfZW4gKi8NCj4gPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMoaW14 OF9waHktPmhzaW9fYmxrX2N0cmwsIElNWDhNUF9HUFJfUkVHMCwNCj4gPiArCQkJCSAgIElNWDhN UF9HUFJfQ0xLX01PRF9FTiwNCj4gPiArCQkJCSAgIElNWDhNUF9HUFJfQ0xLX01PRF9FTik7DQo+ IA0KPiBZb3Ugc2hvdWxkbid0IG5lZWQgdG8gdG91Y2ggdGhpcyBiaXQuIFRoZSBIU0lPIGJsay1j dHJsIGFscmVhZHkgZW5hYmxlcyB0aGlzIGJpdA0KPiB3aGVuIHRoZSBQQ0llIHBvd2VyLWRvbWFp biBpcyBwb3dlcmVkIHVwLg0KT2theSwgZ290IHRoYXQuDQoNCj4gDQo+ID4gKwkJdWRlbGF5KDEw KTsNCj4gPiArDQo+ID4gKwkJcmVzZXRfY29udHJvbF9kZWFzc2VydChpbXg4X3BoeS0+cmVzZXQp Ow0KPiA+ICsJCXJlc2V0X2NvbnRyb2xfZGVhc3NlcnQoaW14OF9waHktPnBlcnN0KTsNCj4gPiAr DQo+ID4gKwkJLyogcmVsZWFzZSBwY2llX3BoeV9hcGJfcmVzZXQgYW5kIHBjaWVfcGh5X2luaXRf cmVzZXRuICovDQo+ID4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDhfcGh5LT5oc2lvX2Jsa19j dHJsLCBJTVg4TVBfR1BSX1JFRzAsDQo+ID4gKwkJCQkgICBJTVg4TVBfR1BSX1BIWV9BUEJfUlNU IHwNCj4gPiArCQkJCSAgIElNWDhNUF9HUFJfUEhZX0lOSVRfUlNULA0KPiA+ICsJCQkJICAgSU1Y OE1QX0dQUl9QSFlfQVBCX1JTVCB8DQo+ID4gKwkJCQkgICBJTVg4TVBfR1BSX1BIWV9JTklUX1JT VCk7DQo+IA0KPiBOb3Qgc3VyZSBhYm91dCB0aG9zZSB5ZXQuIFdlIG1pZ2h0IHdhbnQgdG8gdG9n Z2xlIHRoZW0gdmlhIGEgdmlydHVhbCBQRCBpbiB0aGUNCj4gSFNJTyBibGstY3RybC4NClJlZmVy IHRvIG15IHVuZGVyc3RhbmQsIHRoZXNlIHJlc2V0IHNob3VsZCBiZSBhIHBhcnQgb2YgcG93ZXIt dXAgc2VxdWVuY2Ugb2YNCiB0aGUgUEhZLiBJdCdzIHJlYXNvbmFibGUgdG8gdG9nZ2xlIHRoZW0g dmlhIGEgUEQuDQoNCj4gDQo+ID4gKwkJYnJlYWs7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYg KHBhZF9tb2RlID09IElNWDhfUENJRV9SRUZDTEtfUEFEX0lOUFVUKSB7DQo+ID4gKwkJLyogQ29u ZmlndXJlIHRoZSBwYWQgYXMgaW5wdXQgKi8NCj4gPiArCQl2YWwgPSByZWFkbChpbXg4X3BoeS0+ YmFzZSArIElNWDhNTV9QQ0lFX1BIWV9DTU5fUkVHMDYxKTsNCj4gPiArCQl3cml0ZWwodmFsICYg fkFOQV9QTExfQ0xLX09VVF9UT19FWFRfSU9fRU4sDQo+ID4gKwkJICAgICAgIGlteDhfcGh5LT5i YXNlICsgSU1YOE1NX1BDSUVfUEhZX0NNTl9SRUcwNjEpOw0KPiA+ICsJfSBlbHNlIGlmIChwYWRf bW9kZSA9PSBJTVg4X1BDSUVfUkVGQ0xLX1BBRF9PVVRQVVQpIHsNCj4gPiArCQkvKiBDb25maWd1 cmUgdGhlIFBIWSB0byBvdXRwdXQgdGhlIHJlZmNsb2NrIHZpYSBwYWQgKi8NCj4gPiArCQl3cml0 ZWwoQU5BX1BMTF9DTEtfT1VUX1RPX0VYVF9JT19FTiwNCj4gPiArCQkgICAgICAgaW14OF9waHkt PmJhc2UgKyBJTVg4TU1fUENJRV9QSFlfQ01OX1JFRzA2MSk7DQo+ID4gKwkJd3JpdGVsKEFOQV9Q TExfQ0xLX09VVF9UT19FWFRfSU9fU0VMLA0KPiA+ICsJCSAgICAgICBpbXg4X3BoeS0+YmFzZSAr IElNWDhNTV9QQ0lFX1BIWV9DTU5fUkVHMDYyKTsNCj4gPiArCQl3cml0ZWwoQVVYX1BMTF9SRUZD TEtfU0VMX1NZU19QTEwsDQo+ID4gKwkJICAgICAgIGlteDhfcGh5LT5iYXNlICsgSU1YOE1NX1BD SUVfUEhZX0NNTl9SRUcwNjMpOw0KPiA+ICsJCXZhbCA9IEFOQV9BVVhfUlhfVFhfU0VMX1RYIHwg QU5BX0FVWF9UWF9URVJNOw0KPiA+ICsJCXdyaXRlbCh2YWwgfCBBTkFfQVVYX1JYX1RFUk1fR05E X0VOLA0KPiA+ICsJCSAgICAgICBpbXg4X3BoeS0+YmFzZSArIElNWDhNTV9QQ0lFX1BIWV9DTU5f UkVHMDY0KTsNCj4gPiArCQl3cml0ZWwoQU5BX0FVWF9SWF9URVJNIHwgQU5BX0FVWF9UWF9MVkws DQo+ID4gKwkJICAgICAgIGlteDhfcGh5LT5iYXNlICsgSU1YOE1NX1BDSUVfUEhZX0NNTl9SRUcw NjUpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAgCS8qIFNldCBBVVhfRU5fT1ZFUlJJREUgMSdiMCwg d2hlbiB0aGUgQ0xLUkVRIyBpc24ndCBob29rZWQgKi8NCj4gPiAgCXJlZ21hcF91cGRhdGVfYml0 cyhpbXg4X3BoeS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjE0LA0KPiA+ICAJCQkgICBJTVg4TU1f R1BSX1BDSUVfQVVYX0VOX09WRVJSSURFLCBAQCAtOTEsNDINCj4gKzE5OSwzMCBAQCBzdGF0aWMN Cj4gPiBpbnQgaW14OF9wY2llX3BoeV9pbml0KHN0cnVjdCBwaHkgKnBoeSkNCj4gPiAgCXJlZ21h cF91cGRhdGVfYml0cyhpbXg4X3BoeS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjE0LA0KPiA+ICAJ CQkgICBJTVg4TU1fR1BSX1BDSUVfQ01OX1JTVCwNCj4gPiAgCQkJICAgSU1YOE1NX0dQUl9QQ0lF X0NNTl9SU1QpOw0KPiA+IC0JdXNsZWVwX3JhbmdlKDIwMCwgNTAwKTsNCj4gPg0KPiA+IC0JaWYg KHBhZF9tb2RlID09IElNWDhfUENJRV9SRUZDTEtfUEFEX0lOUFVUKSB7DQo+ID4gLQkJLyogQ29u ZmlndXJlIHRoZSBwYWQgYXMgaW5wdXQgKi8NCj4gPiAtCQl2YWwgPSByZWFkbChpbXg4X3BoeS0+ YmFzZSArIElNWDhNTV9QQ0lFX1BIWV9DTU5fUkVHMDYxKTsNCj4gPiAtCQl3cml0ZWwodmFsICYg fkFOQV9QTExfQ0xLX09VVF9UT19FWFRfSU9fRU4sDQo+ID4gLQkJICAgICAgIGlteDhfcGh5LT5i YXNlICsgSU1YOE1NX1BDSUVfUEhZX0NNTl9SRUcwNjEpOw0KPiA+IC0JfSBlbHNlIGlmIChwYWRf bW9kZSA9PSBJTVg4X1BDSUVfUkVGQ0xLX1BBRF9PVVRQVVQpIHsNCj4gPiAtCQkvKiBDb25maWd1 cmUgdGhlIFBIWSB0byBvdXRwdXQgdGhlIHJlZmNsb2NrIHZpYSBwYWQgKi8NCj4gPiAtCQl3cml0 ZWwoQU5BX1BMTF9DTEtfT1VUX1RPX0VYVF9JT19FTiwNCj4gPiAtCQkgICAgICAgaW14OF9waHkt PmJhc2UgKyBJTVg4TU1fUENJRV9QSFlfQ01OX1JFRzA2MSk7DQo+ID4gLQkJd3JpdGVsKEFOQV9Q TExfQ0xLX09VVF9UT19FWFRfSU9fU0VMLA0KPiA+IC0JCSAgICAgICBpbXg4X3BoeS0+YmFzZSAr IElNWDhNTV9QQ0lFX1BIWV9DTU5fUkVHMDYyKTsNCj4gPiAtCQl3cml0ZWwoQVVYX1BMTF9SRUZD TEtfU0VMX1NZU19QTEwsDQo+ID4gLQkJICAgICAgIGlteDhfcGh5LT5iYXNlICsgSU1YOE1NX1BD SUVfUEhZX0NNTl9SRUcwNjMpOw0KPiA+IC0JCXZhbCA9IEFOQV9BVVhfUlhfVFhfU0VMX1RYIHwg QU5BX0FVWF9UWF9URVJNOw0KPiA+IC0JCXdyaXRlbCh2YWwgfCBBTkFfQVVYX1JYX1RFUk1fR05E X0VOLA0KPiA+IC0JCSAgICAgICBpbXg4X3BoeS0+YmFzZSArIElNWDhNTV9QQ0lFX1BIWV9DTU5f UkVHMDY0KTsNCj4gPiAtCQl3cml0ZWwoQU5BX0FVWF9SWF9URVJNIHwgQU5BX0FVWF9UWF9MVkws DQo+ID4gLQkJICAgICAgIGlteDhfcGh5LT5iYXNlICsgSU1YOE1NX1BDSUVfUEhZX0NNTl9SRUcw NjUpOw0KPiA+ICsJc3dpdGNoIChpbXg4X3BoeS0+dmFyaWFudCkgew0KPiA+ICsJY2FzZSBJTVg4 TU06DQo+ID4gKwkJcmVzZXRfY29udHJvbF9kZWFzc2VydChpbXg4X3BoeS0+cmVzZXQpOw0KPiA+ ICsJCXVzbGVlcF9yYW5nZSgyMDAsIDUwMCk7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKw0KPiA+ICsJ Y2FzZSBJTVg4TVA6DQo+ID4gKwkJLyogd2FpdCBmb3IgY29yZV9jbGsgZW5hYmxlZCAqLw0KPiA+ ICsJCXJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChpbXg4X3BoeS0+aHNpb19ibGtfY3Ry bCwNCj4gPiArCQkJCQkgICAgIElNWDhNUF9HUFJfUkVHMSwgdmFsLA0KPiA+ICsJCQkJCSAgICAg dmFsICYgSU1YOE1QX0dQUl9QTV9FTl9DT1JFX0NMSywNCj4gPiArCQkJCQkgICAgIDEwLCAyMDAw MCk7DQo+ID4gKwkJaWYgKHJldCkgew0KPiA+ICsJCQlkZXZfZXJyKGlteDhfcGh5LT5kZXYsICJQ Q0llIENPUkUgQ0xLIGVuYWJsZSBmYWlsZWRcbiIpOw0KPiA+ICsJCQlyZXR1cm4gcmV0Ow0KPiA+ ICsJCX0NCj4gPiArDQo+ID4gKwkJYnJlYWs7DQo+ID4gIAl9DQo+ID4NCj4gPiAtCS8qIFR1bmUg UEhZIGRlLWVtcGhhc2lzIHNldHRpbmcgdG8gcGFzcyBQQ0llIGNvbXBsaWFuY2UuICovDQo+ID4g LQlpZiAoaW14OF9waHktPnR4X2RlZW1waF9nZW4xKQ0KPiA+IC0JCXdyaXRlbChpbXg4X3BoeS0+ dHhfZGVlbXBoX2dlbjEsDQo+ID4gLQkJICAgICAgIGlteDhfcGh5LT5iYXNlICsgUENJRV9QSFlf VFJTVl9SRUc1KTsNCj4gPiAtCWlmIChpbXg4X3BoeS0+dHhfZGVlbXBoX2dlbjIpDQo+ID4gLQkJ d3JpdGVsKGlteDhfcGh5LT50eF9kZWVtcGhfZ2VuMiwNCj4gPiAtCQkgICAgICAgaW14OF9waHkt PmJhc2UgKyBQQ0lFX1BIWV9UUlNWX1JFRzYpOw0KPiA+IC0NCj4gPiAtCXJlc2V0X2NvbnRyb2xf ZGVhc3NlcnQoaW14OF9waHktPnJlc2V0KTsNCj4gPiAtDQo+ID4gIAkvKiBQb2xsaW5nIHRvIGNo ZWNrIHRoZSBwaHkgaXMgcmVhZHkgb3Igbm90LiAqLw0KPiA+IC0JcmV0ID0gcmVhZGxfcG9sbF90 aW1lb3V0KGlteDhfcGh5LT5iYXNlICsNCj4gSU1YOE1NX1BDSUVfUEhZX0NNTl9SRUc3NSwNCj4g PiAtCQkJCSB2YWwsIHZhbCA9PSBQQ0lFX1BIWV9DTU5fUkVHNzVfUExMX0RPTkUsDQo+ID4gLQkJ CQkgMTAsIDIwMDAwKTsNCj4gPiArCXJldCA9IHJlYWRsX3BvbGxfdGltZW91dChpbXg4X3BoeS0+ YmFzZSArDQo+IElNWDhNTV9QQ0lFX1BIWV9DTU5fUkVHMDc1LA0KPiA+ICsJCQkJIHZhbCwgdmFs ID09IEFOQV9QTExfRE9ORSwgMTAsIDIwMDAwKTsNCj4gPiAgCXJldHVybiByZXQ7DQo+ID4gIH0N Cj4gPg0KPiA+IEBAIC0xNTMsMTggKzI0OSwzMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBoeV9v cHMgaW14OF9wY2llX3BoeV9vcHMgPQ0KPiB7DQo+ID4gIAkub3duZXIJCT0gVEhJU19NT0RVTEUs DQo+ID4gIH07DQo+ID4NCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW14 OF9wY2llX3BoeV9vZl9tYXRjaFtdID0gew0KPiA+ICsJey5jb21wYXRpYmxlID0gImZzbCxpbXg4 bW0tcGNpZS1waHkiLCAuZGF0YSA9ICh2b2lkICopSU1YOE1NfSwNCj4gPiArCXsuY29tcGF0aWJs ZSA9ICJmc2wsaW14OG1wLXBjaWUtcGh5IiwgLmRhdGEgPSAodm9pZCAqKUlNWDhNUH0sDQo+ID4g Kwl7IH0sDQo+ID4gK307DQo+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGlteDhfcGNpZV9w aHlfb2ZfbWF0Y2gpOw0KPiA+ICsNCj4gPiAgc3RhdGljIGludCBpbXg4X3BjaWVfcGh5X3Byb2Jl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpICB7DQo+ID4gIAlzdHJ1Y3QgcGh5X3Byb3Zp ZGVyICpwaHlfcHJvdmlkZXI7DQo+ID4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2 Ow0KPiA+ICsJY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfaWQ7DQo+ID4gIAlzdHJ1Y3Qg ZGV2aWNlX25vZGUgKm5wID0gZGV2LT5vZl9ub2RlOw0KPiA+ICAJc3RydWN0IGlteDhfcGNpZV9w aHkgKmlteDhfcGh5Ow0KPiA+ICAJc3RydWN0IHJlc291cmNlICpyZXM7DQo+ID4NCj4gPiArCW9m X2lkID0gb2ZfbWF0Y2hfZGV2aWNlKGlteDhfcGNpZV9waHlfb2ZfbWF0Y2gsIGRldik7DQo+ID4g KwlpZiAoIW9mX2lkKQ0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiAgCWlteDhf cGh5ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCppbXg4X3BoeSksIEdGUF9LRVJORUwpOw0K PiA+ICAJaWYgKCFpbXg4X3BoeSkNCj4gPiAgCQlyZXR1cm4gLUVOT01FTTsNCj4gPg0KPiA+ICsJ aW14OF9waHktPmRldiA9IGRldjsNCj4gPiArCWlteDhfcGh5LT52YXJpYW50ID0gKGVudW0gaW14 OF9wY2llX3BoeV90eXBlKW9mX2lkLT5kYXRhOw0KPiA+ICsNCj4gPiAgCS8qIGdldCBQSFkgcmVm Y2xrIHBhZCBtb2RlICovDQo+ID4gIAlvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImZzbCxyZWZj bGstcGFkLW1vZGUiLA0KPiA+ICAJCQkgICAgICZpbXg4X3BoeS0+cmVmY2xrX3BhZF9tb2RlKTsN Cj4gPiBAQCAtMjAxLDYgKzMxMiwyMiBAQCBzdGF0aWMgaW50IGlteDhfcGNpZV9waHlfcHJvYmUo c3RydWN0DQo+IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPiAgCQlkZXZfZXJyKGRldiwgIkZh aWxlZCB0byBnZXQgUENJRVBIWSByZXNldCBjb250cm9sXG4iKTsNCj4gPiAgCQlyZXR1cm4gUFRS X0VSUihpbXg4X3BoeS0+cmVzZXQpOw0KPiA+ICAJfQ0KPiA+ICsJaWYgKGlteDhfcGh5LT52YXJp YW50ID09IElNWDhNUCkgew0KPiA+ICsJCS8qIEdyYWIgSFNJTyBNSVggY29uZmlnIHJlZ2lzdGVy IHJhbmdlICovDQo+ID4gKwkJaW14OF9waHktPmhzaW9fYmxrX2N0cmwgPQ0KPiA+ICsNCj4gc3lz Y29uX3JlZ21hcF9sb29rdXBfYnlfY29tcGF0aWJsZSgiZnNsLGlteDhtcC1oc2lvLWJsay1jdHJs Iik7DQo+ID4gKwkJaWYgKElTX0VSUihpbXg4X3BoeS0+aHNpb19ibGtfY3RybCkpIHsNCj4gPiAr CQkJZGV2X2VycihkZXYsICJ1bmFibGUgdG8gZmluZCBoc2lvIG1peCByZWdpc3RlcnNcbiIpOw0K PiA+ICsJCQlyZXR1cm4gUFRSX0VSUihpbXg4X3BoeS0+aHNpb19ibGtfY3RybCk7DQo+ID4gKwkJ fQ0KPiA+ICsNCj4gPiArCQlpbXg4X3BoeS0+cGVyc3QgPQ0KPiA+ICsJCQlkZXZtX3Jlc2V0X2Nv bnRyb2xfZ2V0X2V4Y2x1c2l2ZShkZXYsICJwZXJzdCIpOw0KPiA+ICsJCWlmIChJU19FUlIoaW14 OF9waHktPnBlcnN0KSkgew0KPiA+ICsJCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQgUENJ RVBIWSBwZXJzdCBjb250cm9sXG4iKTsNCj4gPiArCQkJcmV0dXJuIFBUUl9FUlIoaW14OF9waHkt PnBlcnN0KTsNCj4gPiArCQl9DQo+ID4gKwl9DQo+IA0KPiBJIHN0aWxsIGhvcGUgdGhhdCB3ZSBj YW4gcHVzaCBhbGwgdGhlIEhTSU8gYmxrLWN0cmwgcmVnaXN0ZXIgYWNjZXNzIGludG8gdGhlDQo+ IGJsay1jdHJsIGRyaXZlciwgYnkgYWRkaW5nIHRoZSBQTEwgYXMgYSBjbG9jayB0aGVyZSBhbmQg bWF5YmUgYWJzdHJhY3RpbmcgdGhlDQo+IFBIWSByZXNldCBiaXRzIGEgdmlydHVhbCBQRCBmb3Ig dGhlIFBIWSwgc28gd2UgZG9uJ3QgbmVlZCB0aGlzIGRpcmVjdCBhY2Nlc3MgaW4NCj4gdGhlIFBI WSBkcml2ZXIuIERlcGVuZHMgYSBiaXQgb24gd2VhdGhlciB3ZSBhcmUgYWJsZSB0byBnZXQgdGhl IHNlcXVlbmNpbmcNCj4gcmlnaHQgd2hlbiBzcGxpdHRpbmcgdGhpbmdzIGFjcm9zcyBtdWx0aXBs ZSBkcml2ZXJzLg0KDQpBZ3JlZSwgdGhhbmtzIGZvciB5b3VyIGNvbnNpZGVyYXRpb25zLg0KDQpC ZXN0IFJlZ2FyZHMNClJpY2hhcmQgWmh1DQo+IA0KPiBSZWdhcmRzLA0KPiBMdWNhcw0KPiANCj4g Pg0KPiA+ICAJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVN LCAwKTsNCj4gPiAgCWlteDhfcGh5LT5iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwg cmVzKTsgQEAgLTIxOCwxMiArMzQ1LDYNCj4gPiBAQCBzdGF0aWMgaW50IGlteDhfcGNpZV9waHlf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPiAgCXJldHVybiBQVFJfRVJS X09SX1pFUk8ocGh5X3Byb3ZpZGVyKTsgIH0NCj4gPg0KPiA+IC1zdGF0aWMgY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCBpbXg4X3BjaWVfcGh5X29mX21hdGNoW10gPSB7DQo+ID4gLQl7LmNvbXBh dGlibGUgPSAiZnNsLGlteDhtbS1wY2llLXBoeSIsfSwNCj4gPiAtCXsgfSwNCj4gPiAtfTsNCj4g PiAtTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW14OF9wY2llX3BoeV9vZl9tYXRjaCk7DQo+ID4g LQ0KPiA+ICBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpbXg4X3BjaWVfcGh5X2RyaXZl ciA9IHsNCj4gPiAgCS5wcm9iZQk9IGlteDhfcGNpZV9waHlfcHJvYmUsDQo+ID4gIAkuZHJpdmVy ID0gew0KPiANCg0K