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 EE525C6FD19 for ; Mon, 13 Mar 2023 08:51:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230410AbjCMIvT (ORCPT ); Mon, 13 Mar 2023 04:51:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50966 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229836AbjCMIuj (ORCPT ); Mon, 13 Mar 2023 04:50:39 -0400 Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-sgaapc01on20612.outbound.protection.outlook.com [IPv6:2a01:111:f400:feab::612]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C47B537568; Mon, 13 Mar 2023 01:48:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HSwiSa9gbU72o50XyUgHG5aMt6fGibDEZlMBXDdgYu48YvqDjGYuIgNag5eDTlQ9MwzOT+Qxb67a7nBHUzeaDPGxuASeq/HSdaOSoSnHsQ3uB/SxMD7xmNiwzvZTV1zJjrQ/ex4P3BOumuKMFa/Lv0KTM0o+hC5foDE4WM9GWndv7hXWtI2EzX03wS1M32wSQ9Z2WEG3moAavTrTkIHaDfJ6C78Jt854HxM+lP1I5Hc9hDZLpiLtNcWEZPD9u9VtuhXcb3B6DSQJESxNMEURezwEW1/QpfTCTQHbYWnaRyHFgnQ4Br7GwcuXxmAOmAt2InykT7CIf2JF5ph9f0ZPfA== 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=a6Mt5ffJsXUCsicfRR2ZF8G8JMukl0nWdR3flzt5kXM=; b=mRi5K5J9BXTYbDHjc2S+WRMNMbZdpMlCtNv7KxbrWZm5Z0Ma+CWGhdEk9qf0wx3u8MRkYgpG/SF2ztZ2XNU4Gc8Vr1haDgIyhvDFt8gXX8kquYydHMq8z9wofX0L+DUv/+Nic4z40SGa0lOYwv39hG2E1G2YDaOZHEb3qLCb04yeIMY9O7US0+RXZiduSa9r2A7us0Yz8EjIkiU3xvDJPjmvyYvk+kTyqGfdI0I95vmbH0D2sLPjmu403WPHvInJd4d8GeGh1kXk+DWBjrKvdewozWdBddu14njFu/BBDX57sOVPly4AbG7sRgctss2iGdoiSu/S05jToTQptlbpjg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wiwynn.com; dmarc=pass action=none header.from=wiwynn.com; dkim=pass header.d=wiwynn.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wiwynn.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=a6Mt5ffJsXUCsicfRR2ZF8G8JMukl0nWdR3flzt5kXM=; b=ZWTJuyCKj87XclfLxN5rgxTQKtxA4OxBftSTP2WKLuQIKQ/UrQaSsKZFztzWeq1mxnqMssLlVZRXjNtoc7/0MBytH/PrIpbqXmy2lIPZuVv9H9ualr/YZ/rCGAggFq8abyLLnrp3kD0MPSgY0nbyOeWs/peMi1vhD4Gl/G/I7TDLOaRFC22rmqIis+a5AvdNkNcjyu+ERF+AlhXnHY/bE4uATbfPBkLxl1NVr7BaWITiTswc7u43QVsSCIGCHzWjf6diog1ji8VmyjOZ9KzusCriIf97tm1wE2gX+Fybn9DAtmhU7H4NYxS0CSI40ExsynvleDaaFBFLZvoMV8pdgg== Received: from TY2PR04MB4032.apcprd04.prod.outlook.com (2603:1096:404:8002::7) by SG2PR04MB4105.apcprd04.prod.outlook.com (2603:1096:0:5::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.24; Mon, 13 Mar 2023 08:48:03 +0000 Received: from TY2PR04MB4032.apcprd04.prod.outlook.com ([fe80::e8c5:5f9:2a10:ae23]) by TY2PR04MB4032.apcprd04.prod.outlook.com ([fe80::e8c5:5f9:2a10:ae23%6]) with mapi id 15.20.6178.024; Mon, 13 Mar 2023 08:48:03 +0000 From: Delphine_CC_Chiu/WYHQ/Wiwynn To: Krzysztof Kozlowski , Delphine_CC_Chiu/WYHQ/Wiwynn , "patrick@stwcx.xyz" , Derek Kiernan , Dragan Cvetic , Arnd Bergmann , Greg Kroah-Hartman CC: "garnermic@fb.com" , Rob Herring , Krzysztof Kozlowski , Stanislav Jakubek , Linus Walleij , Samuel Holland , "linux-i2c@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH v1 3/3] misc: Add meta cld driver Thread-Topic: [PATCH v1 3/3] misc: Add meta cld driver Thread-Index: AQHZKliEB9QfLl+uU0OkdbU+k336oa6ib5eAgFZIrvA= Date: Mon, 13 Mar 2023 08:48:03 +0000 Message-ID: References: <20230117094425.19004-1-Delphine_CC_Chiu@Wiwynn.com> <20230117094425.19004-4-Delphine_CC_Chiu@Wiwynn.com> <1e1a23e0-5aa7-9f8d-cb67-e2a847d0b6d5@linaro.org> In-Reply-To: <1e1a23e0-5aa7-9f8d-cb67-e2a847d0b6d5@linaro.org> Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=wiwynn.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TY2PR04MB4032:EE_|SG2PR04MB4105:EE_ x-ms-office365-filtering-correlation-id: 8c4aa580-14d5-4df9-6228-08db239fa84b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: L0NUFHwYVqgnatkdxE24j/XpEWi3end450VW+gljrKjRv1MOclrCz8IoWUVVfaBzb3ht9nu66dLsC1z4p3oFK81Pi1PMhrY/zewkji2FbOoWypHRXx/mPkOoD2Eo4JaqY6aVHvjUvM0gn0sRJVncddQg3Q1bANgq0ljcLGKcUH8dF7QhdYgQBR7EsmVZNyWgCzhXfOgwUfLgIOPVL7Hc7Gd18v3M9IoKkJ7go0yn/7Es+hBgWUL6QzsVFzkVrldC9MmsPd+rex3G/1oawbdqTHeTI8oIBbds54fcR/JmFkyYnMN70PgdSUp6uqmq47twUfR8mYiaQjyPhYEytf/dfedPrx3x6CjSUd1TVRvIN59msHB660Huj/2ZlvLmzk6PFUHvrjXOW3ESqgiatd4VpfVwYpgGlpgSeiQ4Wjnd4iUIYGquyrfvf0J5jTS4LmytA14wXDOfjzF5UCB+KS0Hn8ysCzJFB6yDLhQzvSldaxqdGPKyQUV1fb5MFXohczPIzGSzdYKXErqu0vK1sMPOD7UjTmOVDH6BjvPNBmX5ITq32EyStNSyAvHE4ZW2UlB1jQGKgRwO6hTf/9625bkryJIfIG8850CYM1/7duKpNuF7p9CYL5C+A30MYwKE7GOsI4ivED/I35zCq+8sbnG929haz1RVynH/yqXaVn66AZMYm+2tVcosF7ehCVYv4bPd98qPNpYJ2ENPUnajlHzYXw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY2PR04MB4032.apcprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(136003)(346002)(376002)(39860400002)(366004)(396003)(451199018)(7416002)(186003)(9686003)(53546011)(6506007)(26005)(8936002)(83380400001)(52536014)(38100700002)(30864003)(5660300002)(38070700005)(33656002)(66476007)(64756008)(55016003)(66556008)(66446008)(4326008)(76116006)(71200400001)(2906002)(7696005)(8676002)(41300700001)(122000001)(110136005)(478600001)(316002)(54906003)(86362001)(66946007)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VmpYWndiZW5IQ2VRNWtHS0NEanVvTXdhZmJCWmxISkZoWE9nNjdES1BIaFgx?= =?utf-8?B?dTBMcUFNaVUrNHkvQ3o3RmtrSFZrOXRiUGpLM3ZTeGgvWDVIdDlVODgzaUhN?= =?utf-8?B?bXNoMDVXcHdOUzRPaDZicENMdU9EUW1nMkRkVlhqSVlrVHk0RmFLcmU1QmFE?= =?utf-8?B?RWtDcWQ5ZE1tNmRlR2NCYS9EbEduSm9Nd2NZOWtGNldVVDRrK2N3MnBNbmQx?= =?utf-8?B?WXd5OUY0bm5nTzdCMGZONXhUbkxwUElGb2JTZ0FodytlZnljeHh2THdzQ0RJ?= =?utf-8?B?Myt5VWJsYk9XVGVtRit6bkN3TkpUa0hRb1BVOWRUa1FidXR3dy82cEt5SzYw?= =?utf-8?B?ZUlQRExkV1ZqSzlDREdvc2ZwZFBaTW1hYjZQaHV1V1FDMnI1QnlScFFDaHho?= =?utf-8?B?VTNSNERzaTN4dGo3U3c1dnoya0c4WDh6OThzSTIwRDNsTkZIbUpSVjA0RE00?= =?utf-8?B?Z1RNeC9aaWx2bWdxUUVDclFodmNlbTliNzF1Rmg4VDlUZUc0cm81eUZPWGdv?= =?utf-8?B?aWV3Z0duWVUrN1hDZ29icUtDL3MycTBzYW1QS1huRjRTWXl6U2VtTHQ0bGRr?= =?utf-8?B?ZmZWWThWN0R1OG1jc2xwOXQxeG5YcDdJOHRiTzU1UzlFL1JVQ2dGRFlhODFD?= =?utf-8?B?aFVBZ3ErQVk3SnJTZkpQN3dsa2RwcFJLTTN4d3ZTU3dlUlZOclRMaHlwWVB3?= =?utf-8?B?Q1pFSXNiNWcyZ2ZxTDBnZHVuVmhURVU5RTRRcXJzVGdRcXJEdjAwcS8xZmtq?= =?utf-8?B?WFBDK3gvZzlSMDdBSWt1bU85aVhyVjZyY0tlemU4Y0YwdmphcldrYjgrVUZ0?= =?utf-8?B?dEgxZXlDTGFCVmNFdWxRWEpVNVRlRVhwd0o2UTFxV3VMVysrSlkybk9odU10?= =?utf-8?B?aEVpbi9za0szei9IaTBuMnF2bWFzYlBwRVViUUtnTEF6MDBZTWpmeVlMaEVt?= =?utf-8?B?YUZqNHNvaDJJZVEvVElFbnYyMUIwTjdVd0JOSUIyN2U3T1dMbnpUVG9mQk9V?= =?utf-8?B?bUQ2MnB5MkNtVGFPcXFSNndOc3NVbnZPdnkxcjRWQVg1cVJIcU1iSHRhck8z?= =?utf-8?B?dHo2TWt1ak02eTN6bDJiVjZ5VmhIRkI3NlZjQzJpOEswancwZWJkZ09IRHFV?= =?utf-8?B?U25uWkZXaXpkQVdRM3RHZk5MUG5RSzZJcWFESkJDdjY2SnUvT09FTVBCQm1Y?= =?utf-8?B?Q0pRK0JLWjFMejAzZUJKdEdjMit1QzU1TkQrYWdIQ1p0WktIVTRsRThZUXJK?= =?utf-8?B?MTA3Vk1nN0lpUmNIQnFuWnhGS0NkZnlpNWRGNERpVUhFcVhOZEkzVUlvcnJ3?= =?utf-8?B?YXNkWTNzNjZWcFpYRTFwNEM0N3BBZGxrN1l2dFhBaC9vQzNlTldCbytRKzd2?= =?utf-8?B?Ti9Rb2ZQK01mcFlpSHZ5QWZWNU50aU5CbWV0cHJnMlZZcmFZd1BkaGxFLzBR?= =?utf-8?B?eWYyWVlpSEQrdVFwSkVxKzJ3QlIreUZIVkcvVTRMb2RMcEx2MFd0ZG9EOXBH?= =?utf-8?B?em4yeHE4TmVRQnJSajNwT3lTZTNMTnBLL0llQXFUemVmdlhlSFUrL0pIVXlJ?= =?utf-8?B?M3BPTWVCOThpaEhxSE10VDRxeXYxYnFqUmNVcHFON3R1aDF3ak41T3lVSGVv?= =?utf-8?B?b1E5cWE0d0FoR2pMWU55R3JUSitkZVJWOUlQbittRHJud0ozcjhteU5CTkgv?= =?utf-8?B?T3VDWHQ5OUsxSFJrTWdMRmp0TmQ3V3E4V1ZvWThJRVloWE0zRTQyNUZuZnh0?= =?utf-8?B?a2Y4SXl2aDArWEZqbFl2TG55eER0K0RwRGdHazFlMTRMdTBvTXQ1ZHBka04w?= =?utf-8?B?Q0srUWxmVU5JWUJyUWNKRmtXYU5JS00vSHY2ekdKNS9CYW5oQ2Q3Tmd4UEFO?= =?utf-8?B?emg3bmZXd2p6ZXV5alpUME1SNGliTUxZSTQ3Mi9OeWhsei9DUWJEMll6TjdD?= =?utf-8?B?SnJxVlVWTTQvNGsyTjJ3Q2UyU0dDN0V0Y0MvSVMvbVd3ajcxR3Mxd2pPczNI?= =?utf-8?B?anQ3YW1FY3gzYTVNYXZLaU1nSk8zYjQxMWt1V1ZwbnZPQzZMWFJMK1dodk15?= =?utf-8?B?Q1pIQy91U2wxUWVTQit4cUtXUUtjTVBERG5nWGZoVGhmNWxxQWYzb1A3MGJw?= =?utf-8?Q?6kMLe32lFE1mCZlIjcVDsPu95?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: wiwynn.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TY2PR04MB4032.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c4aa580-14d5-4df9-6228-08db239fa84b X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Mar 2023 08:48:03.3029 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: da6e0628-fc83-4caf-9dd2-73061cbab167 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: q11/Qe9rH2+z2vNXn1+xTE4yJeBB1Ne2I3Wg3lzbLIFY6vQV1ek/rIdVQpVl+2QOkyEjGLg/242O1kWF0m2Bzg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SG2PR04MB4105 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgS3J6eXN6dG9mLA0KDQpUaGFua3MgZm9yIHlvdXIgcmV2aWV3IGNvbW1lbnQuDQoNCj4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS3J6eXN6dG9mIEtvemxvd3NraSA8a3J6 eXN6dG9mLmtvemxvd3NraUBsaW5hcm8ub3JnPg0KPiBTZW50OiBUdWVzZGF5LCBKYW51YXJ5IDE3 LCAyMDIzIDY6NTUgUE0NCj4gVG86IERlbHBoaW5lX0NDX0NoaXUvV1lIUS9XaXd5bm4gPERlbHBo aW5lX0NDX0NoaXVAd2l3eW5uLmNvbT47DQo+IHBhdHJpY2tAc3R3Y3gueHl6OyBEZXJlayBLaWVy bmFuIDxkZXJlay5raWVybmFuQHhpbGlueC5jb20+OyBEcmFnYW4gQ3ZldGljDQo+IDxkcmFnYW4u Y3ZldGljQHhpbGlueC5jb20+OyBBcm5kIEJlcmdtYW5uIDxhcm5kQGFybmRiLmRlPjsgR3JlZw0K PiBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4NCj4gQ2M6IGdhcm5l cm1pY0BmYi5jb207IFJvYiBIZXJyaW5nIDxyb2JoK2R0QGtlcm5lbC5vcmc+OyBLcnp5c3p0b2YN Cj4gS296bG93c2tpIDxrcnp5c3p0b2Yua296bG93c2tpK2R0QGxpbmFyby5vcmc+OyBTdGFuaXNs YXYgSmFrdWJlaw0KPiA8c3Rhbm8uamFrdWJla0BnbWFpbC5jb20+OyBMaW51cyBXYWxsZWlqIDxs aW51cy53YWxsZWlqQGxpbmFyby5vcmc+OyBTYW11ZWwNCj4gSG9sbGFuZCA8c2FtdWVsQHNob2xs YW5kLm9yZz47IGxpbnV4LWkyY0B2Z2VyLmtlcm5lbC5vcmc7DQo+IGRldmljZXRyZWVAdmdlci5r ZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJlOiBb UEFUQ0ggdjEgMy8zXSBtaXNjOiBBZGQgbWV0YSBjbGQgZHJpdmVyDQo+IA0KPiAgIFNlY3VyaXR5 IFJlbWluZGVyOiBQbGVhc2UgYmUgYXdhcmUgdGhhdCB0aGlzIGVtYWlsIGlzIHNlbnQgYnkgYW4g ZXh0ZXJuYWwNCj4gc2VuZGVyLg0KPiANCj4gT24gMTcvMDEvMjAyMyAxMDo0NCwgRGVscGhpbmUg Q0MgQ2hpdSB3cm90ZToNCj4gPiBBZGQgc3VwcG9ydCBmb3IgbWV0YSBjb250cm9sLWxvZ2ljLWRl dmljZSBkcml2ZXIuIFRoZSBDTEQgbWFuYWdlcyB0aGUNCj4gPiBzZXJ2ZXIgc3lzdGVtIHBvd2Vy IHNxdWVuY2UgYW5kIG90aGVyIHN0YXRlIHN1Y2ggYXMgaG9zdC1wb3dlci1zdGF0ZSwNCj4gPiB1 YXJ0LXNlbGVjdGlvbiBhbmQgcHJlc2Vuc2Utc2xvdHMuIFRoZSBiYXNlYm9hcmQgbWFuYWdlbWVu dCBjb250cm9sbGVyDQo+ID4gKEJNQykgY2FuIGFjY2VzcyB0aGUgQ0xEIHRocm91Z2ggSTJDLg0K PiA+DQo+ID4gVGhlIHZlcnNpb24gMSBvZiBDTEQgZHJpdmVyIGlzIHN1cHBvcnRlZC4gVGhlIHJl Z2lzdGVycyBudW1iZXIsIG5hbWUNCj4gPiBhbmQgbW9kZSBvZiBDTEQgY2FuIGJlIGRlZmluZWQg aW4gZHRzIGZpbGUgZm9yIHZlcnNpb24gMS4gVGhlIGRyaXZlcg0KPiA+IGV4cG9ydHMgdGhlIGZp bGVzeXN0ZW0gZm9sbG93aW5nIHRoZSBkdHMgc2V0dGluZy4NCj4gPg0KPiA+IFNpZ25lZC1vZmYt Ynk6IERlbHBoaW5lIENDIENoaXUgPERlbHBoaW5lX0NDX0NoaXVAV2l3eW5uLmNvbT4NCj4gPiBU ZXN0ZWQtYnk6IEJvbm5pZSBMbyA8Qm9ubmllX0xvQFdpd3lubi5jb20+DQo+ID4gLS0tDQo+ID4g IE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsNCj4gPiAgZHJpdmVy cy9taXNjL0tjb25maWcgICAgICAgICAgICAgICAgfCAgIDkgKw0KPiA+ICBkcml2ZXJzL21pc2Mv TWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgMSArDQo+ID4gIGRyaXZlcnMvbWlzYy9jb250cm9s LWxvZ2ljLWRldmljZS5jIHwgNDQzDQo+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0K PiA+ICA0IGZpbGVzIGNoYW5nZWQsIDQ1OSBpbnNlcnRpb25zKCspDQo+ID4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL21pc2MvY29udHJvbC1sb2dpYy1kZXZpY2UuYw0KPiA+DQo+ID4gZGlm ZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMgaW5kZXgNCj4gPiA3NDgzODUzODgw YjYuLjQ2ZTI1MGEyYzMzNCAxMDA2NDQNCj4gPiAtLS0gYS9NQUlOVEFJTkVSUw0KPiA+ICsrKyBi L01BSU5UQUlORVJTDQo+ID4gQEAgLTEzMzg4LDYgKzEzMzg4LDEyIEBAIFQ6ICAgZ2l0IGdpdDov L2xpbnV4dHYub3JnL21lZGlhX3RyZWUuZ2l0DQo+ID4gIEY6ICAgRG9jdW1lbnRhdGlvbi9kZXZp Y2V0cmVlL2JpbmRpbmdzL21lZGlhL2FtbG9naWMsZ3gtdmRlYy55YW1sDQo+ID4gIEY6ICAgZHJp dmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvDQo+ID4NCj4gPiArTUVUQSBDUExEIERSSVZF Ug0KPiA+ICtNOiAgIERlbHBoaW5lIENDIENoaXUgPERlbHBoaW5lX0NDX0NoaXVAV2l3eW5uLmNv bT4NCj4gPiArTDogICBsaW51eC1pMmNAdmdlci5rZXJuZWwub3JnDQo+ID4gK1M6ICAgTWFpbnRh aW5lZA0KPiA+ICtGOg0KPiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9t ZXRhLGNvbnRyb2wtbG9naWMtZGV2aWNlLnR4dA0KPiANCj4gTWlzc2luZyBlbnRyaWVzIGZvciBk cml2ZXIgY29kZS4NCg0KV2Ugc2F3IHRoZXJlIGFyZSBlbnRyaWVzIGRlZmluZWQgaW4gTUFJTlRB SU5FUlMgZmlsZShNLCBSLCBMLCBTLCBXLCBRLCBCLCBDLCBQLCBULCBGLCBYLCBOLCBLKS4NCkNv dWxkIHlvdSBndWlkZSB1cyB3aGljaCBlbnRyaWVzIGFyZSBtdXN0IHRvIGhhdmU/DQoNCj4gDQo+ ID4gKw0KPiA+ICBNRVRIT0RFIFVEUFUgU1VQUE9SVA0KPiA+ICBNOiAgIFZsYWRpbWlyIFZpZCA8 dmxhZGltaXIudmlkQHNhcnR1cmEuaHI+DQo+ID4gIFM6ICAgTWFpbnRhaW5lZA0KPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL21pc2MvS2NvbmZpZyBiL2RyaXZlcnMvbWlzYy9LY29uZmlnIGluZGV4 DQo+ID4gMzU4YWQ1NmY2NTI0Li4yMWQzYmY4MjA0MzggMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVy cy9taXNjL0tjb25maWcNCj4gPiArKysgYi9kcml2ZXJzL21pc2MvS2NvbmZpZw0KPiA+IEBAIC00 OTYsNiArNDk2LDE1IEBAIGNvbmZpZyBWQ1BVX1NUQUxMX0RFVEVDVE9SDQo+ID4NCj4gPiAgICAg ICAgIElmIHlvdSBkbyBub3QgaW50ZW5kIHRvIHJ1biB0aGlzIGtlcm5lbCBhcyBhIGd1ZXN0LCBz YXkgTi4NCj4gPg0KPiA+ICtjb25maWcgQ09OVFJPTF9MT0dJQ19ERVZJQ0UNCj4gPiArICAgICAg ICBib29sICJNZXRhIENvbnRyb2wgTG9naWMgRGV2aWNlIERyaXZlciINCj4gDQo+IFRvbyBnZW5l cmljLi4uDQo+IA0KPiA+ICsgICAgICAgIGRlcGVuZHMgb24gSTJDICYmIFJFR01BUA0KPiA+ICsg ICAgICAgIGhlbHANCj4gPiArICAgICAgICAgIFNheSB5ZXMgaGVyZSB0byBhZGQgc3VwcG9ydCBm b3IgdGhlIE1ldGEgQ0xEIGRldmljZSBkcml2ZXIuIFRoZQ0KPiBkaXJ2ZXINCj4gPiArICAgICAg ICAgIGlzIHVzZWQgdG8gbW9uaXRvciBDTEQgcmVnaXN0ZXIgdmFsdWUgYW5kIG5vdGlmeSB0aGUg YXBwbGljYXRpb24NCj4gaWYNCj4gPiArICAgICAgICAgIHZhbHVlIGlzIGNoYW5nZWQuIEFwcGxp Y2F0aW9uIGFsc28gY2FuIGFjY2VzcyB0aGUgQ0xEIHJlZ2lzdGVyDQo+IHZhbHVlDQo+ID4gKyAg ICAgICAgICB0aHJvdWdoIHRoaXMgZHJpdmVyLg0KPiA+ICsNCj4gPiAgc291cmNlICJkcml2ZXJz L21pc2MvYzJwb3J0L0tjb25maWciDQo+ID4gIHNvdXJjZSAiZHJpdmVycy9taXNjL2VlcHJvbS9L Y29uZmlnIg0KPiA+ICBzb3VyY2UgImRyaXZlcnMvbWlzYy9jYjcxMC9LY29uZmlnIg0KPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvTWFrZWZpbGUgYi9kcml2ZXJzL21pc2MvTWFrZWZpbGUg aW5kZXgNCj4gPiBhYzliM2U3NTdiYTEuLjZmY2RkNTc1YTE0MyAxMDA2NDQNCj4gPiAtLS0gYS9k cml2ZXJzL21pc2MvTWFrZWZpbGUNCj4gPiArKysgYi9kcml2ZXJzL21pc2MvTWFrZWZpbGUNCj4g PiBAQCAtNjIsMyArNjIsNCBAQCBvYmotJChDT05GSUdfSEk2NDIxVjYwMF9JUlEpICAgICAgICAr PQ0KPiBoaTY0MjF2NjAwLWlycS5vDQo+ID4gIG9iai0kKENPTkZJR19PUEVOX0RJQ0UpICAgICAg ICAgICAgICArPSBvcGVuLWRpY2Uubw0KPiA+ICBvYmotJChDT05GSUdfR1BfUENJMVhYWFgpICAg ICs9IG1jaHBfcGNpMXh4eHgvDQo+ID4gIG9iai0kKENPTkZJR19WQ1BVX1NUQUxMX0RFVEVDVE9S KSAgICArPSB2Y3B1X3N0YWxsX2RldGVjdG9yLm8NCj4gPiArb2JqLSQoQ09ORklHX0NPTlRST0xf TE9HSUNfREVWSUNFKSArPSBjb250cm9sLWxvZ2ljLWRldmljZS5vDQo+IA0KPiBEb2VzIG5vdCBs b29rIGxpa2Ugb3JkZXJlZCBieSBuYW1lLg0KDQpUaGUgZmlsZSBsb29rIGxpa2Ugd2l0aG91dCBv cmRlcmVkIGJ5IG5hbWUgc28gd2UgYWRkZWQgdGhlIGNvbmZpZ3VyYXRpb24gaW4gdGhlIHRhaWwu DQpEbyB3ZSBuZWVkIHRvIG9yZGVyIHRoZSBNYWtlZmlsZT8NCg0KPiANCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9taXNjL2NvbnRyb2wtbG9naWMtZGV2aWNlLmMNCj4gPiBiL2RyaXZlcnMvbWlz Yy9jb250cm9sLWxvZ2ljLWRldmljZS5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBp bmRleCAwMDAwMDAwMDAwMDAuLjA3MTEzZGNiMDgzNg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiAr KysgYi9kcml2ZXJzL21pc2MvY29udHJvbC1sb2dpYy1kZXZpY2UuYw0KPiA+IEBAIC0wLDAgKzEs NDQzIEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4g PiArLyoNCj4gPiArICogQ29weXJpZ2h0IChjKSAyMDIyIE1ldGEgSW5jLg0KPiA+ICsgKi8NCj4g PiArDQo+ID4gKyAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+IA0KPiBEb24ndCBwcmVwZW5k IHdpdGggc3BhY2VzLiBDaGVjayB0aGUgY29kZSBmb3Igc3VjaCB0cml2aWFsIHN0eWxlIGlzc3Vl cyBmaXJzdC4NCg0KV2Ugd2lsbCByZXZpc2UgdGhpcy4NCg0KPiANCj4gPiArI2luY2x1ZGUgPGxp bnV4L2kyYy5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+DQo+ID4gKyNpbmNsdWRl IDxsaW51eC9zeXNmcy5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4NCj4gPiArI2luY2x1 ZGUgPGxpbnV4L29mX2RldmljZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvc3RkZGVmLmg+DQo+ ID4gKyNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+DQo+ID4gKw0KPiA+ICsjZGVmaW5lIENMRF9M QUJFTF9MRU4gIDY0IC8qIGxhYmVsID0gIm5hbWU6bW9kZTpvZmZzZXQiICovICNkZWZpbmUNCj4g PiArdG9fY2xkX3JlZyh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGNsZF9kYXRhLCBiaW4pDQo+ ID4gKw0KPiA+ICtzdHJ1Y3QgY2xkX3JlZ2lzdGVyX2luZm8gew0KPiA+ICsgICAgIGNvbnN0IGNo YXIgKm5hbWU7DQo+ID4gKyAgICAgdW1vZGVfdCBtb2RlOw0KPiA+ICsgICAgIHU4IHJlZzsNCj4g PiArICAgICB1OCB2YWx1ZTsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBjbGRfZGF0YSB7 DQo+ID4gKyAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0Ow0KPiA+ICsgICAgIHN0cnVjdCBiaW5f YXR0cmlidXRlIGJpbjsNCj4gPiArICAgICBzdHJ1Y3Qga2VybmZzX25vZGUgKmtuOw0KPiA+ICsg ICAgIHN0cnVjdCBjbGRfcmVnaXN0ZXJfaW5mbyBpbmZvOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr c3RydWN0IGNsZF9jbGllbnQgew0KPiA+ICsgICAgIHN0cnVjdCBiaW5fYXR0cmlidXRlIG5ld19y ZWdpc3Rlcl9iaW47DQo+ID4gKyAgICAgc3RydWN0IGJpbl9hdHRyaWJ1dGUgZGVsZXRfcmVnaXN0 ZXJfYmluOw0KPiA+ICsgICAgIHN0cnVjdCByZWdtYXAgKnJlZ21hcDsNCj4gPiArICAgICBzdHJ1 Y3QgZGV2aWNlICpkZXY7DQo+ID4gKyAgICAgc3RydWN0IGNsZF9kYXRhICpkYXRhOw0KPiA+ICsg ICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsNCj4gPiArICAgICBzaXplX3QgbnVtX2F0dHJp YnV0ZXM7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgbWV0YV9jbGRfb2Zfb3BzIHsNCj4g PiArICAgICBpbnQgKCpsb2FkX3JlZ2lzdGVycykoc3RydWN0IGNsZF9jbGllbnQgKmNsZCk7IH07 DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IHJlZ21hcF9jb25maWcgY2xkX3JlZ21hcF9jb25m aWcgPSB7DQo+ID4gKyAgICAgLnJlZ19iaXRzID0gOCwNCj4gPiArICAgICAudmFsX2JpdHMgPSA4 LA0KPiA+ICsgICAgIC5jYWNoZV90eXBlID0gUkVHQ0FDSEVfTk9ORSwNCj4gPiArfTsNCj4gPiAr DQo+ID4gK3N0YXRpYyBzc2l6ZV90IGNsZF9yZWdpc3Rlcl9yZWFkKHN0cnVjdCBmaWxlICpmbGlw LCBzdHJ1Y3Qga29iamVjdCAqa29iaiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZiwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbG9mZl90IHBvcywgc2l6ZV90IGNvdW50KSB7DQo+ID4gKyAg ICAgaW50IHJldDsNCj4gPiArICAgICB1bnNpZ25lZCBpbnQgdmFsdWU7DQo+ID4gKyAgICAgc3Ry dWN0IGRldmljZSAqZGV2ID0ga29ial90b19kZXYoa29iaik7DQo+ID4gKyAgICAgc3RydWN0IGNs ZF9jbGllbnQgKmNsZCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+ICsgICAgIHN0cnVjdCBj bGRfZGF0YSAqZGF0YSA9IHRvX2NsZF9yZWcoYXR0cik7DQo+ID4gKw0KPiA+ICsgICAgIHJldCA9 IHJlZ21hcF9yZWFkKGNsZC0+cmVnbWFwLCBkYXRhLT5pbmZvLnJlZywgJnZhbHVlKTsNCj4gPiAr ICAgICBpZiAocmV0ICE9IDApDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsN Cj4gPiArICAgICBpZiAoKGRhdGEtPmluZm8ubW9kZSAmIDA0MDApID09IDA0MDApDQo+ID4gKyAg ICAgICAgICAgICBkYXRhLT5pbmZvLnZhbHVlID0gdmFsdWU7DQo+ID4gKw0KPiA+ICsgICAgIHNu cHJpbnRmKGJ1Ziwgc2l6ZW9mKHZhbHVlKSwgIiVkXG4iLCB2YWx1ZSk7DQo+ID4gKw0KPiA+ICsg ICAgIHJldHVybiBzdHJsZW4oYnVmKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHNzaXpl X3QgY2xkX3JlZ2lzdGVyX3dyaXRlKHN0cnVjdCBmaWxlICpmbGlwLCBzdHJ1Y3Qga29iamVjdCAq a29iaiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBiaW5fYXR0 cmlidXRlICphdHRyLCBjaGFyICpidWYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsb2ZmX3QgcG9zLCBzaXplX3QgY291bnQpIHsNCj4gPiArICAgICBpbnQgcmV0Ow0KPiA+ ICsgICAgIHVuc2lnbmVkIGxvbmcgdmFsOw0KPiA+ICsgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9 IGtvYmpfdG9fZGV2KGtvYmopOw0KPiA+ICsgICAgIHN0cnVjdCBjbGRfY2xpZW50ICpjbGQgPSBk ZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiArICAgICBzdHJ1Y3QgY2xkX2RhdGEgKmRhdGEgPSB0 b19jbGRfcmVnKGF0dHIpOw0KPiA+ICsNCj4gPiArICAgICByZXQgPSBrc3RydG91bChidWYsIDAs ICZ2YWwpOw0KPiA+ICsgICAgIGlmIChyZXQpDQo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dDsN Cj4gPiArDQo+ID4gKyAgICAgaWYgKHZhbCA+PSBCSVQoOCkpIHsNCj4gPiArICAgICAgICAgICAg IHJldCA9IC1FSU5WQUw7DQo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dDsNCj4gPiArICAgICB9 DQo+ID4gKw0KPiA+ICsgICAgIHJldCA9IHJlZ21hcF93cml0ZShjbGQtPnJlZ21hcCwgZGF0YS0+ aW5mby5yZWcsIHZhbCk7DQo+ID4gKyAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgIGdv dG8gb3V0Ow0KPiA+ICsNCj4gPiArb3V0Og0KPiA+ICsgICAgIHJldHVybiByZXQgPyByZXQgOiBz dHJsZW4oYnVmKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBjbGRfYmluX3JlZ2lz dGVyKHN0cnVjdCBjbGRfcmVnaXN0ZXJfaW5mbyBpbmZvLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGNsZF9jbGllbnQgKmNsZCkgew0KPiA+ICsgICAgIGludCByZXQ7DQo+ ID4gKyAgICAgc3RydWN0IGNsZF9kYXRhICpkYXRhLCAqcG9zOw0KPiA+ICsgICAgIHN0cnVjdCBi aW5fYXR0cmlidXRlICpiaW47DQo+ID4gKyAgICAgc2l6ZV90IGxlbmd0aDsNCj4gPiArDQo+ID4g KyAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsICZjbGQtPmRhdGEtPmxpc3QsIGxpc3QpIHsN Cj4gPiArICAgICAgICAgICAgIGxlbmd0aCA9IChzdHJsZW4oaW5mby5uYW1lKSA+IHN0cmxlbihw b3MtPmluZm8ubmFtZSkpID8NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihpbmZv Lm5hbWUpOnN0cmxlbihwb3MtPmluZm8ubmFtZSk7DQo+ID4gKyAgICAgICAgICAgICBpZiAoIXN0 cm5jYXNlY21wKGluZm8ubmFtZSwgcG9zLT5pbmZvLm5hbWUsIGxlbmd0aCkpDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAtRUVYSVNUOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4g KyAgICAgZGF0YSA9IGRldm1fa3phbGxvYyhjbGQtPmRldiwgc2l6ZW9mKCpkYXRhKSwgR0ZQX0tF Uk5FTCk7DQo+ID4gKyAgICAgaWYgKCFkYXRhKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1F Tk9NRU07DQo+ID4gKw0KPiA+ICsgICAgIGJpbiA9ICZkYXRhLT5iaW47DQo+ID4gKyAgICAgZGF0 YS0+aW5mbyA9IGluZm87DQo+ID4gKw0KPiA+ICsgICAgIHN5c2ZzX2Jpbl9hdHRyX2luaXQoYmlu KTsNCj4gPiArICAgICBiaW4tPmF0dHIubmFtZSA9IGtzdHJkdXAoaW5mby5uYW1lLCBHRlBfS0VS TkVMKTsNCj4gPiArICAgICBpZiAoIWJpbi0+YXR0ci5uYW1lKQ0KPiA+ICsgICAgICAgICAgICAg cmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgYmluLT5hdHRyLm1vZGUgPSBpbmZvLm1vZGU7DQo+ ID4gKyAgICAgYmluLT5yZWFkID0gY2xkX3JlZ2lzdGVyX3JlYWQ7DQo+ID4gKyAgICAgYmluLT53 cml0ZSA9IGNsZF9yZWdpc3Rlcl93cml0ZTsNCj4gPiArICAgICBiaW4tPnNpemUgPSAxOw0KPiA+ ICsgICAgIHJldCA9IHN5c2ZzX2NyZWF0ZV9iaW5fZmlsZSgmY2xkLT5kZXYtPmtvYmosIGJpbik7 DQo+ID4gKyAgICAgaWYgKHJldCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycihjbGQtPmRl diwgIiVzOiBmYWlsZWQgdG8gY3JlYXRlIGZpbGU6ICVkXG4iLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICBpbmZvLm5hbWUsIHJldCk7DQo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dDsNCj4g PiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGRhdGEtPmtuID0ga2VybmZzX2ZpbmRfYW5kX2dl dChjbGQtPmRldi0+a29iai5zZCwgYmluLT5hdHRyLm5hbWUpOw0KPiA+ICsgICAgIGlmICghZGF0 YS0+a24pIHsNCj4gPiArICAgICAgICAgICAgIHN5c2ZzX3JlbW92ZV9iaW5fZmlsZSgmY2xkLT5k ZXYtPmtvYmosIGJpbik7DQo+ID4gKyAgICAgICAgICAgICByZXQgPSAtRUZBVUxUOw0KPiA+ICsg ICAgICAgICAgICAgZ290byBvdXQ7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBsaXN0 X2FkZF90YWlsKCZkYXRhLT5saXN0LCAmY2xkLT5kYXRhLT5saXN0KTsNCj4gPiArICAgICArK2Ns ZC0+bnVtX2F0dHJpYnV0ZXM7DQo+ID4gK291dDoNCj4gPiArICAgICByZXR1cm4gcmV0Ow0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGNsZF9iaW5fdW5yZWdpc3RlcihzdHJ1Y3QgY2xk X3JlZ2lzdGVyX2luZm8gaW5mbywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGNsZF9jbGllbnQgKmNsZCkgew0KPiA+ICsgICAgIHNpemVfdCBsZW5ndGg7DQo+ID4gKyAg ICAgc3RydWN0IGNsZF9kYXRhICpwb3M7DQo+ID4gKw0KPiA+ICsgICAgIGxpc3RfZm9yX2VhY2hf ZW50cnkocG9zLCAmY2xkLT5kYXRhLT5saXN0LCBsaXN0KSB7DQo+ID4gKyAgICAgICAgICAgICBs ZW5ndGggPSAoc3RybGVuKGluZm8ubmFtZSkgPiBzdHJsZW4ocG9zLT5pbmZvLm5hbWUpKSA/DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oaW5mby5uYW1lKTpzdHJsZW4ocG9zLT5p bmZvLm5hbWUpOw0KPiA+ICsgICAgICAgICAgICAgaWYgKCghc3RybmNhc2VjbXAoaW5mby5uYW1l LCBwb3MtPmluZm8ubmFtZSwgbGVuZ3RoKSkgJiYNCj4gPiArICAgICAgICAgICAgICAgICAoaW5m by5tb2RlID09IHBvcy0+aW5mby5tb2RlKSAmJg0KPiA+ICsgICAgICAgICAgICAgICAgIChpbmZv LnJlZyA9PSBwb3MtPmluZm8ucmVnKSkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBrZXJu ZnNfcHV0KHBvcy0+a24pOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBzeXNmc19yZW1vdmVf YmluX2ZpbGUoJmNsZC0+ZGV2LT5rb2JqLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJnBvcy0+YmluKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg bGlzdF9kZWwoJnBvcy0+bGlzdCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRldm1fa2Zy ZWUoY2xkLT5kZXYsIHBvcyk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIC0tY2xkLT5udW1f YXR0cmlidXRlczsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ID4gKyAg ICAgICAgICAgICB9DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBkZXZfZXJyKGNsZC0+ ZGV2LCAiJXM6IGNhbm5vdCBtYXRjaCBjbGQgZGF0YVxuIiwgaW5mby5uYW1lKTsNCj4gPiArICAg ICByZXR1cm4gLUVJTlZBTDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBjbGRfcGFy c2VfbGFiZWwoY2hhciAqbGFiZWwsIHN0cnVjdCBjbGRfcmVnaXN0ZXJfaW5mbw0KPiA+ICsqaW5m bykgew0KPiA+ICsgICAgIGNoYXIgbmFtZVtDTERfTEFCRUxfTEVOXSA9IHsgMCB9Ow0KPiA+ICsg ICAgIGNoYXIgKm1vZGVfc3RyLCAqcmVnX3N0cjsNCj4gPiArICAgICBpbnQgcmMsIGk7DQo+ID4g KyAgICAgdW5zaWduZWQgbG9uZyByZWc7DQo+ID4gKyAgICAgdW1vZGVfdCBtb2RlOw0KPiA+ICsg ICAgIHNpemVfdCBsZW5ndGg7DQo+ID4gKyAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAg IGNoYXIgKm1vZGU7DQo+ID4gKyAgICAgICAgICAgICBpbnQgdmFsdWU7DQo+ID4gKyAgICAgfSBv cHRpb25zW10gPSB7DQo+ID4gKyAgICAgICAgICAgICB7InJ3IiwgMDYwMH0sDQo+ID4gKyAgICAg ICAgICAgICB7InIiLCAwNDAwfSwNCj4gPiArICAgICAgICAgICAgIHsidyIsIDAyMDB9LA0KPiA+ ICsgICAgIH07DQo+ID4gKw0KPiA+ICsgICAgIHN0cm5jcHkobmFtZSwgbGFiZWwsIENMRF9MQUJF TF9MRU4pOw0KPiA+ICsNCj4gPiArICAgICBtb2RlX3N0ciA9IHN0cmNocihuYW1lLCAnOicpOw0K PiA+ICsgICAgIGlmICghbW9kZV9zdHIpDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsNCj4gPiArICAgICAqbW9kZV9zdHIrKyA9ICdcMCc7DQo+ID4gKw0KPiA+ICsgICAgIHJlZ19z dHIgPSBzdHJjaHIobW9kZV9zdHIsICc6Jyk7DQo+ID4gKyAgICAgaWYgKCFyZWdfc3RyKQ0KPiA+ ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgKnJlZ19zdHIrKyA9ICdc MCc7DQo+ID4gKw0KPiA+ICsgICAgIGlmICgoKm5hbWUgPT0gJ1wwJykgfHwgKCptb2RlX3N0ciA9 PSAnXDAnKSB8fCAoKnJlZ19zdHIgPT0gJ1wwJykpDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4g LUVJTlZBTDsNCj4gPiArDQo+ID4gKyAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUob3B0 aW9ucyk7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgbGVuZ3RoID0gKHN0cmxlbihvcHRpb25z W2ldLm1vZGUpID4gc3RybGVuKG1vZGVfc3RyKSkgPw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgc3RybGVuKG9wdGlvbnNbaV0ubW9kZSk6c3RybGVuKG1vZGVfc3RyKTsNCj4gPiArICAgICAg ICAgICAgIGlmIChzdHJuY2FzZWNtcChtb2RlX3N0ciwgb3B0aW9uc1tpXS5tb2RlLCBsZW5ndGgp ID09IDApIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmMgPSBrc3RydG91bChyZWdfc3Ry LCAwLCAmcmVnKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKHJjKQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICBtb2RlID0gb3B0aW9uc1tpXS52YWx1ZTsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICB9DQo+ID4gKyAgICAgfQ0KPiA+ICsgICAg IGlmICgoaSA+PSBBUlJBWV9TSVpFKG9wdGlvbnMpKSB8fCAocmVnID49IEJJVCg4KSkpDQo+ID4g KyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKyAgICAgaW5mby0+bmFt ZSA9IGtzdHJkdXAobmFtZSwgR0ZQX0tFUk5FTCk7DQo+ID4gKyAgICAgaWYgKCFpbmZvLT5uYW1l KQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgaW5mby0+cmVn ID0gcmVnOw0KPiA+ICsgICAgIGluZm8tPm1vZGUgPSBtb2RlOw0KPiA+ICsgICAgIHJldHVybiAw Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGNsZF9sb2FkX3JlZ2lzdGVycyhzdHJ1 Y3QgY2xkX2NsaWVudCAqY2xkLCBjb25zdCBjaGFyDQo+ID4gKypwcm9wZXJ0eSkgew0KPiA+ICsg ICAgIGNvbnN0IGNoYXIgKmxhYmVsOw0KPiA+ICsgICAgIGludCBjb3VudCwgcmV0LCBpOw0KPiA+ ICsgICAgIHN0cnVjdCBjbGRfcmVnaXN0ZXJfaW5mbyBpbmZvOw0KPiA+ICsgICAgIHN0cnVjdCBk ZXZpY2UgKmRldiA9IGNsZC0+ZGV2Ow0KPiA+ICsNCj4gPiArICAgICBjb3VudCA9IG9mX3Byb3Bl cnR5X2NvdW50X3N0cmluZ3MoZGV2LT5vZl9ub2RlLCBwcm9wZXJ0eSk7DQo+ID4gKyAgICAgaWYg KGNvdW50IDw9IDApDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ ID4gKyAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsNCj4gPiArICAgICAgICAgICAg IHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nX2luZGV4KGRldi0+b2Zfbm9kZSwNCj4gcHJv cGVydHksIGksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmbGFiZWwpOw0KPiA+ICsgICAgICAgICAgICAgaWYgKHJldCkgew0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIjogZmFpbGVkIHRvIGdldCBsYWJlbCBmb3Ig aW5kZXggJWRcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSk7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ ICsNCj4gPiArICAgICAgICAgICAgIHJldCA9IGNsZF9wYXJzZV9sYWJlbCgoY2hhciAqKWxhYmVs LCAmaW5mbyk7DQo+ID4gKyAgICAgICAgICAgICBpZiAocmV0KSB7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgIGRldl9lcnIoY2xkLT5kZXYsICIlczogZmFpbGVkIHRvIHBhcnNlIGxhYmVsXG4i LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKTsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7DQo+ID4gKyAgICAgICAgICAgICB9DQo+ID4gKyAgICAg ICAgICAgICBjbGRfYmluX3JlZ2lzdGVyKGluZm8sIGNsZCk7DQo+ID4gKyAgICAgfQ0KPiA+ICsg ICAgIHJldHVybiAoY291bnQgPT0gY2xkLT5udW1fYXR0cmlidXRlcykgPyAwIDogKC1FSU5WQUwp OyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IG1ldGFfY2xkX29mX3YxX2xvYWRfcmVnaXN0ZXJz KHN0cnVjdCBjbGRfY2xpZW50ICpjbGQpIHsNCj4gPiArICAgICBpbnQgcmV0Ow0KPiA+ICsNCj4g PiArICAgICByZXQgPSBjbGRfbG9hZF9yZWdpc3RlcnMoY2xkLCAicmVnaXN0ZXJzLW1hcCIpOw0K PiA+ICsgICAgIGlmIChyZXQpDQo+ID4gKyAgICAgICAgICAgICBkZXZfZGJnKGNsZC0+ZGV2LCAi ZmFpbGVkIHRvIGxvYWQgcmVnaXN0ZXJzXG4iKTsNCj4gPiArDQo+ID4gKyAgICAgcmV0dXJuIDA7 DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBzc2l6ZV90IGNsZF9zeXNmc19uZXdfcmVnaXN0 ZXIoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBrb2JqZWN0ICprb2JqLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBiaW5fYXR0cmlidXRlICphdHRyLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZiwgbG9mZl90 IHBvcywgc2l6ZV90DQo+ID4gK2NvdW50KSB7DQo+ID4gKyAgICAgaW50IHJldDsNCj4gPiArICAg ICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSBrb2JqX3RvX2Rldihrb2JqKTsNCj4gPiArICAgICBzdHJ1 Y3QgY2xkX2NsaWVudCAqY2xkID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ID4gKyAgICAgc3Ry dWN0IGNsZF9yZWdpc3Rlcl9pbmZvIGluZm87DQo+ID4gKw0KPiA+ICsgICAgIHJldCA9IGNsZF9w YXJzZV9sYWJlbChidWYsICZpbmZvKTsNCj4gPiArICAgICBpZiAocmV0KSB7DQo+ID4gKyAgICAg ICAgICAgICBkZXZfZXJyKGNsZC0+ZGV2LCAiZmFpbGVkIHRvIHBhcnNlIGxhYmVsXG4iKTsNCj4g PiArICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+ICsgICAgIH0NCj4gPiArICAgICByZXQgPSBj bGRfYmluX3JlZ2lzdGVyKGluZm8sIGNsZCk7DQo+ID4gKw0KPiA+ICtvdXQ6DQo+ID4gKyAgICAg cmV0dXJuICghcmV0KSA/IGNvdW50IDogcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg c3NpemVfdCBjbGRfc3lzZnNfZGVsZXRlX3JlZ2lzdGVyKHN0cnVjdCBmaWxlICpmaWxwLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrb2JqZWN0ICpr b2JqLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBi aW5fYXR0cmlidXRlICphdHRyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNoYXIgKmJ1ZiwgbG9mZl90IHBvcywgc2l6ZV90DQo+ID4gK2NvdW50KSB7DQo+ID4g KyAgICAgaW50IHJldDsNCj4gPiArICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSBrb2JqX3RvX2Rl dihrb2JqKTsNCj4gPiArICAgICBzdHJ1Y3QgY2xkX2NsaWVudCAqY2xkID0gZGV2X2dldF9kcnZk YXRhKGRldik7DQo+ID4gKyAgICAgc3RydWN0IGNsZF9yZWdpc3Rlcl9pbmZvIGluZm87DQo+ID4g Kw0KPiA+ICsgICAgIHJldCA9IGNsZF9wYXJzZV9sYWJlbChidWYsICZpbmZvKTsNCj4gPiArICAg ICBpZiAocmV0KSB7DQo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKGNsZC0+ZGV2LCAiZmFpbGVk IHRvIHBhcnNlIGxhYmVsXG4iKTsNCj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+ICsg ICAgIH0NCj4gPiArDQo+ID4gKyAgICAgcmV0ID0gY2xkX2Jpbl91bnJlZ2lzdGVyKGluZm8sIGNs ZCk7DQo+ID4gKw0KPiA+ICtvdXQ6DQo+ID4gKyAgICAgcmV0dXJuICghcmV0KSA/IGNvdW50IDog cmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGNsZF9tb25pdG9yX3RocmVhZCh2 b2lkICpjbGllbnQpIHsNCj4gPiArICAgICBzdHJ1Y3QgY2xkX2NsaWVudCAqY2xkID0gY2xpZW50 Ow0KPiA+ICsgICAgIHVuc2lnbmVkIGludCB2YWx1ZTsNCj4gPiArICAgICBpbnQgcmV0Ow0KPiA+ ICsgICAgIHN0cnVjdCBjbGRfZGF0YSAqcG9zOw0KPiA+ICsNCj4gPiArICAgICB3aGlsZSAoIWt0 aHJlYWRfc2hvdWxkX3N0b3AoKSkgew0KPiA+ICsgICAgICAgICAgICAgbGlzdF9mb3JfZWFjaF9l bnRyeShwb3MsICZjbGQtPmRhdGEtPmxpc3QsIGxpc3QpIHsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgaWYgKChwb3MtPmluZm8ubW9kZSAmIDA0MDApID09IDA0MDApIHsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXQgPSByZWdtYXBfcmVhZChjbGQtPnJlZ21hcCwNCj4g cG9zLT5pbmZvLnJlZywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmdmFsdWUpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm IChyZXQpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51 ZTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zLT5pbmZvLnZhbHVl ICE9IHZhbHVlKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw b3MtPmluZm8udmFsdWUgPSB2YWx1ZTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGtlcm5mc19ub3RpZnkocG9zLT5rbik7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAg ICAgICB9DQo+ID4gKyAgICAgICAgICAgICBtc2xlZXAoNTApOw0KPiA+ICsgICAgIH0NCj4gPiAr ICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBjbGRfcHJvYmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwNCj4gPiArICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKSB7DQo+ID4gKyAgICAgaW50IHJldCA9IDA7DQo+ID4g KyAgICAgY29uc3Qgc3RydWN0IG1ldGFfY2xkX29mX29wcyAqb3BzOw0KPiA+ICsgICAgIHN0cnVj dCBkZXZpY2UgKmRldiA9ICZjbGllbnQtPmRldjsNCj4gPiArICAgICBzdHJ1Y3QgY2xkX2NsaWVu dCAqY2xkOw0KPiA+ICsNCj4gPiArICAgICBjbGQgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2Yo KmNsZCksIEdGUF9LRVJORUwpOw0KPiA+ICsgICAgIGlmICghY2xkKSB7DQo+ID4gKyAgICAgICAg ICAgICByZXQgPSAtRU5PTUVNOw0KPiANCj4gcmV0dXJuDQoNCldlIHdpbGwgcmV2aXNlIHRoaXMu DQoNCj4gDQo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dDsNCj4gPiArICAgICB9DQo+ID4gKw0K PiA+ICsgICAgIGNsZC0+ZGV2ID0gZGV2Ow0KPiA+ICsgICAgIGNsZC0+bnVtX2F0dHJpYnV0ZXMg PSAwOw0KPiA+ICsgICAgIGNsZC0+cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoY2xpZW50 LCAmY2xkX3JlZ21hcF9jb25maWcpOw0KPiA+ICsgICAgIGNsZC0+ZGF0YSA9IGRldm1fa3phbGxv YyhjbGQtPmRldiwgc2l6ZW9mKHN0cnVjdCBjbGRfZGF0YSksDQo+IA0KPiBzaXplb2YoKikNCj4g DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdGUF9LRVJORUwpOw0KPiA+ICsg ICAgIGlmICghY2xkLT5kYXRhKSB7DQo+ID4gKyAgICAgICAgICAgICByZXQgPSAtRU5PTUVNOw0K PiANCj4gcmV0dXJuDQoNCldlIHdpbGwgcmV2aXNlIHRoaXMuDQoNCj4gDQo+IA0KPiA+ICsgICAg ICAgICAgICAgZ290byBvdXQ7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBJTklUX0xJ U1RfSEVBRCgmY2xkLT5kYXRhLT5saXN0KTsNCj4gPiArDQo+ID4gKyAgICAgc3lzZnNfYmluX2F0 dHJfaW5pdCgmY2xkLT5uZXdfcmVnaXN0ZXJfYmluKTsNCj4gPiArICAgICBjbGQtPm5ld19yZWdp c3Rlcl9iaW4uYXR0ci5uYW1lID0gIm5ld19yZWdpc3RlciI7DQo+ID4gKyAgICAgY2xkLT5uZXdf cmVnaXN0ZXJfYmluLmF0dHIubW9kZSA9IDAyMDA7DQo+ID4gKyAgICAgY2xkLT5uZXdfcmVnaXN0 ZXJfYmluLndyaXRlID0gY2xkX3N5c2ZzX25ld19yZWdpc3RlcjsNCj4gPiArICAgICByZXQgPSBz eXNmc19jcmVhdGVfYmluX2ZpbGUoJmRldi0+a29iaiwgJmNsZC0+bmV3X3JlZ2lzdGVyX2Jpbik7 DQo+ID4gKyAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+ICsN Cj4gPiArICAgICBzeXNmc19iaW5fYXR0cl9pbml0KCZjbGQtPmRlbGV0X3JlZ2lzdGVyX2Jpbik7 DQo+ID4gKyAgICAgY2xkLT5kZWxldF9yZWdpc3Rlcl9iaW4uYXR0ci5uYW1lID0gImRlbGV0ZV9y ZWdpc3RlciI7DQo+ID4gKyAgICAgY2xkLT5kZWxldF9yZWdpc3Rlcl9iaW4uYXR0ci5tb2RlID0g MDIwMDsNCj4gPiArICAgICBjbGQtPmRlbGV0X3JlZ2lzdGVyX2Jpbi53cml0ZSA9IGNsZF9zeXNm c19kZWxldGVfcmVnaXN0ZXI7DQo+ID4gKyAgICAgcmV0ID0gc3lzZnNfY3JlYXRlX2Jpbl9maWxl KCZkZXYtPmtvYmosICZjbGQtPmRlbGV0X3JlZ2lzdGVyX2Jpbik7DQo+ID4gKyAgICAgaWYgKHJl dCkNCj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiANCj4gcmV0dXJuDQoNCldlIHdpbGwg cmV2aXNlIHRoaXMuDQoNCj4gDQo+ID4gKw0KPiA+ICsgICAgIG9wcyA9IG9mX2RldmljZV9nZXRf bWF0Y2hfZGF0YShjbGQtPmRldik7DQo+ID4gKyAgICAgaWYgKCFvcHMpIHsNCj4gPiArICAgICAg ICAgICAgIHJldCA9IC1FSU5WQUw7DQo+IA0KPiByZXR1cm4NCg0KV2Ugd2lsbCByZXZpc2UgdGhp cy4NCg0KPiANCj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+ICsgICAgIH0NCj4gPiAr DQo+ID4gKyAgICAgcmV0ID0gb3BzLT5sb2FkX3JlZ2lzdGVycyhjbGQpOw0KPiA+ICsNCj4gPiAr ICAgICBjbGQtPnRhc2sgPSBrdGhyZWFkX3J1bihjbGRfbW9uaXRvcl90aHJlYWQsICh2b2lkICop Y2xkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWdpc3Rlcl9tb25pdG9y Iik7DQo+IA0KPiBXaHkgZG8geW91IG5lZWQgdGhlIHRocmVhZD8gV2hhdCBkbyB5b3UgbW9uaXRv cj8gQWxsIHRoaXMgc2hvdWxkIGJlDQo+IGV4cGxhaW5lZCBhbmQgZG9jdW1lbnRlZC4NCg0KVGhl IHRocmVhZCBtb25pdG9yaW5nIGFsbCB0aGUgcmVhZGFibGUgb2Zmc2V0cyBhbmQgbm90aWZ5IHRo ZSB1c2Vyc3BhY2UgdGhyb3VnaCBrZXJuZnNfbm90aWZ5IGZ1bmN0aW9uIGlmIHRoZSBvZmZzZXQg dmFsdWUgaXMgY2hhbmdlZC4NCldlIHdpbGwgYWRkIHRoZSBkZXNjcmlwdGlvbiBpbiBiaW5kaW5n IGRvY3VtZW50Lg0KDQo+IA0KPiA+ICsgICAgIGlmIChJU19FUlIoY2xkLT50YXNrKSkgew0KPiA+ ICsgICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihjbGQtPnRhc2spOw0KPiANCj4gcmV0dXJuDQoN CldlIHdpbGwgcmV2aXNlIHRoaXMuDQoNCj4gDQo+ID4gKyAgICAgICAgICAgICBjbGQtPnRhc2sg PSBOVUxMOw0KPiANCj4gRHJvcA0KPiANCj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+ ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgZGV2X3NldF9kcnZkYXRhKGRldiwgY2xkKTsNCj4g DQo+IFRoaXMgc2hvdWxkIGhhcHBlbiBiZWZvcmUgc3RhcnRpbmcgdGhyZWFkLg0KDQpXZSB3aWxs IHJldmlzZSB0aGlzLg0KDQo+IA0KPiA+ICsNCj4gPiArb3V0Og0KPiA+ICsgICAgIHJldHVybiBy ZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgY2xkX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KSB7DQo+ID4gKyAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gJmNsaWVu dC0+ZGV2Ow0KPiA+ICsgICAgIHN0cnVjdCBjbGRfY2xpZW50ICpjbGQgPSBkZXZfZ2V0X2RydmRh dGEoZGV2KTsNCj4gPiArDQo+ID4gKyAgICAgaWYgKGNsZC0+dGFzaykgew0KPiA+ICsgICAgICAg ICAgICAga3RocmVhZF9zdG9wKGNsZC0+dGFzayk7DQo+ID4gKyAgICAgICAgICAgICBjbGQtPnRh c2sgPSBOVUxMOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgZGV2bV9rZnJlZShkZXYs IGNsZCk7DQo+ID4gKyAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgbWV0YV9jbGRfb2Zfb3BzIG9mX3YxX29wcyA9IHsNCj4gPiArICAgICAubG9h ZF9yZWdpc3RlcnMgPSBtZXRhX2NsZF9vZl92MV9sb2FkX3JlZ2lzdGVycywgfTsNCj4gPiArDQo+ ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNsZF9vZl9tYXRjaFtdID0gew0K PiANCj4gVGhpcyB3b3VsZCB3YXJuIG5vdy4gRHJvcCBvZl9tYXRjaF9wdHIuDQoNCldlIHdpbGwg Zml4IHRoaXMuDQoNCj4gDQo+ID4gKyAgICAgew0KPiA+ICsgICAgICAgICAgICAgLmNvbXBhdGli bGUgPSAibWV0YSxjb250cm9sLWxvZ2ljLWRldmljZS12MSIsDQo+ID4gKyAgICAgICAgICAgICAu ZGF0YSA9ICZvZl92MV9vcHMsDQo+ID4gKyAgICAgfSwNCj4gPiArICAgICB7fQ0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgY2xkX29mX21hdGNoKQ0KPiA+ICsN Cj4gPiArc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGNsZCA9IHsNCj4gPiArICAgICAuZHJpdmVy ID0geyAubmFtZSA9ICJjbGQtZHJpdmVyIiwNCj4gPiArICAgICAgICAgICAgICAgICAub2ZfbWF0 Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIoY2xkX29mX21hdGNoKSB9LA0KPiANCj4gQmxhbmsgbGlu ZSBiZWZvcmUgfQ0KDQpXZSB3aWxsIGZpeCB0aGlzLg0KDQo+IA0KPiA+ICsgICAgIC5wcm9iZSA9 IGNsZF9wcm9iZSwNCj4gPiArICAgICAucmVtb3ZlID0gY2xkX3JlbW92ZSwNCj4gPiArfTsNCj4g PiArDQo+ID4gK21vZHVsZV9pMmNfZHJpdmVyKGNsZCk7DQo+ID4gKw0KPiA+ICtNT0RVTEVfQVVU SE9SKCJSZW4gQ2hlbiA8cmVuX2NoZW5Ad2l3eW5uLmNvbT4iKTsNCj4gPiArTU9EVUxFX0RFU0NS SVBUSU9OKCJNZXRhIGNvbnRyb2wgbG9naWMgZGV2aWNlIGRyaXZlciIpOw0KPiA+ICtNT0RVTEVf TElDRU5TRSgiR1BMIik7DQo+IA0KPiBCZXN0IHJlZ2FyZHMsDQo+IEtyenlzenRvZg0KDQpUaGFu a3MsDQpEZWxwaGluZQ0K