Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp5756002rwl; Wed, 22 Mar 2023 01:41:27 -0700 (PDT) X-Google-Smtp-Source: AK7set+wqL6qNHKrNLQ5dPPgXP45Xf6YiTOxLkLDuBM8MZSciFeFh6UxnacyWpXnYWiGsPiSoN5a X-Received: by 2002:a05:6a20:c2a9:b0:d9:e5db:5287 with SMTP id bs41-20020a056a20c2a900b000d9e5db5287mr4747265pzb.4.1679474487073; Wed, 22 Mar 2023 01:41:27 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1679474487; cv=pass; d=google.com; s=arc-20160816; b=yYlAfEWerZyyW2jG37eEXoDsAqMmq932pvNdaTqyXVTItA0jNWwSShryvy9Aq1a98j fTYpcQBNwClThsfwt9brE/PO2yjOEnRxgxd7ZcQhaJbsSwvhd740qzssRqtfZ7d536cu 4urTWS7eWlBrRSjWFPJRZMywSQP7Sas1SP5pM8qYw/1gQCFDAnDn4HWuSOcn/rzArk2m h0gkrzWJpizcar8wChK6HByH5lbJnXEmRB66M9uYaH9lNFAoEWIv41LBI7QnlkstPwpQ ABBDClrRZj2vELfyCjdp4E+4AayJs4S5fBjNGtoTd3S/wymtZosG1TX5Fc6Tth5emApG 128w== 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=FVRFKTDpewUNXyfQax6l6wLUjW1GMf4m6kgBL9nkDu0=; b=Npaj2hhdH7CqZD8YO2Wb5MeHG18QTvynAp1o3ZewMXEJYULN16MnYbtdnqBpsgeZCJ CJs97UkCN+WYqDsAlvhsp8S+9fbt99tp3bvfJnWjnei9pAYwN/EmxiFWmbUuEAxoTbjp IwS9MnBhqje1ngBQGCGHSaO95n5Pqo3IEm2i8BhC8exkgrb3cwvovNka1tl2Q/zHf66i 2KkLCIStXwow29UowjxYGfVJchQkphUeTrJ/FSgsYRyNangm/bBLVdnTV70IcQu5ITec YQIjCeXKhwHngbMUbs8tfNXFzVNFHrhVIhe+QB1xCFOl1jQvFyNjKzBvvJ981DOMuHRV nOqw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@aspeedtech.com header.s=selector1 header.b=XX+jHRn4; arc=pass (i=1 spf=pass spfdomain=aspeedtech.com dkim=pass dkdomain=aspeedtech.com dmarc=pass fromdomain=aspeedtech.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h34-20020a632122000000b00507806546e7si15428509pgh.501.2023.03.22.01.41.15; Wed, 22 Mar 2023 01:41:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@aspeedtech.com header.s=selector1 header.b=XX+jHRn4; arc=pass (i=1 spf=pass spfdomain=aspeedtech.com dkim=pass dkdomain=aspeedtech.com dmarc=pass fromdomain=aspeedtech.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230251AbjCVIfO (ORCPT + 99 others); Wed, 22 Mar 2023 04:35:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36732 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229666AbjCVIex (ORCPT ); Wed, 22 Mar 2023 04:34:53 -0400 Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-sgaapc01on2108.outbound.protection.outlook.com [40.107.215.108]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 678BE2C674; Wed, 22 Mar 2023 01:34:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NzF4fGE9R610DEK1HYnaksp0EW6f3j3JXteNeKTkkbfITaKLh6uYcH8ofKyAcqc6SnPMIxLmdZ1CheuMkx7iAXD43a+4XQMknxtwHCC+qAiyLRWR5srqqyerWvl/slIhkW7YOSXZbfMjF6nTyBnZ9WUbzgqn9epjIno+iKvFlB/8Pq/OxOJ5wlChU/0muzS7jYv/luEjcyGEg82+pZUp+Rrm1o4E9tuH/+QPm2TDovn1slhcTwHRW8pz3laBiv2Q2kJ3RWC5rohKdziUNsfMZaL4LdiCJwIYBoP9eiaF9azN8z6uJmMtwE/5vplegZldUKgOsAiYiDM/9iVP84tXJQ== 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=FVRFKTDpewUNXyfQax6l6wLUjW1GMf4m6kgBL9nkDu0=; b=Jx0IdR5b2AVlWPgl1nv9bz45ikHdA34dfFygxm4uhji205XP8t55qLOfOXaMuFxfoJcVb5kM0YobJBr2aHKAumEKi8wcwkRczusDO/cxkmHXp6VMhDOLFM0Hayh2lD0xX/tNiKT1ccJ348P5RoI3tu91Jw+D+hFMctyPC7GqLIs1uJkqi9L3R0uHcErUtKcAWnGM1dmJGbWPyJxoSo2qxMsvTawZ8MP74Rer9PeLb3MWbCzkW1TVmTPs/ptLZXGExXMDgx1vuTnhQtwT9SnHkIdRhlT+Lchi76fT0elg0MjbyF9ImVg1TZZ8anrmOiVSKu5OrjHYFOphQA6QO0oDAg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=aspeedtech.com; dmarc=pass action=none header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FVRFKTDpewUNXyfQax6l6wLUjW1GMf4m6kgBL9nkDu0=; b=XX+jHRn4CPoqzfVKePaCMCxGBwCbG8Rw5vjIf0+V2EzAVeNLxJW3mFrnroKzQTRALlhH77XcuSbhpqrzat5nLU0m3/4jqWeApfp4TLE7PPdELrqqptl9UX40xZmYDvjeryMDbRnoe9pelrbfRr4eLcvOuXIhj4J5AB986f979EU60LVfCqOSNl49zkzn1z34Wfexo010lqkbGAqUc1L0ek4TRgHnv0xNgAYro6DvsYEMydZelhHqkxYs/BwbYmVvnCzoJRG9mWamy2A5KcHI3MJXRM0jejLDZO/Rm0BOL2Bx+F/hAEK2JeC8bMFYPdIeaEa85aghatAemfde3PdFfw== Received: from KL1PR0601MB3781.apcprd06.prod.outlook.com (2603:1096:820:11::14) by TY0PR06MB5005.apcprd06.prod.outlook.com (2603:1096:400:1ae::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.37; Wed, 22 Mar 2023 08:34:35 +0000 Received: from KL1PR0601MB3781.apcprd06.prod.outlook.com ([fe80::2cd0:fdbf:62e0:8eaa]) by KL1PR0601MB3781.apcprd06.prod.outlook.com ([fe80::2cd0:fdbf:62e0:8eaa%7]) with mapi id 15.20.6178.037; Wed, 22 Mar 2023 08:34:34 +0000 From: ChiaWei Wang To: =?utf-8?B?SWxwbyBKw6RydmluZW4=?= CC: "vkoul@kernel.org" , "robh+dt@kernel.org" , "krzysztof.kozlowski+dt@linaro.org" , "joel@jms.id.au" , "andrew@aj.id.au" , Greg Kroah-Hartman , Jiri Slaby , "pmenzel@molgen.mpg.de" , "hdanton@sina.com" , "dmaengine@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-aspeed@lists.ozlabs.org" , LKML , linux-serial , "openbmc@lists.ozlabs.org" Subject: RE: [PATCH v3 3/5] dmaengine: aspeed: Add AST2600 UART DMA driver Thread-Topic: [PATCH v3 3/5] dmaengine: aspeed: Add AST2600 UART DMA driver Thread-Index: AQHZWwQzxzikRwJoKkm/4hf9G+jQn68DhDYAgALot2A= Date: Wed, 22 Mar 2023 08:34:34 +0000 Message-ID: References: <20230320081133.23655-1-chiawei_wang@aspeedtech.com> <20230320081133.23655-4-chiawei_wang@aspeedtech.com> <493b758-2ddf-b44a-48a8-69e8de5d85b@linux.intel.com> In-Reply-To: <493b758-2ddf-b44a-48a8-69e8de5d85b@linux.intel.com> 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=aspeedtech.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: KL1PR0601MB3781:EE_|TY0PR06MB5005:EE_ x-ms-office365-filtering-correlation-id: b66d42f9-2b36-44a3-6fb6-08db2ab043f6 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: FadfECaaAmBthacOJ7Ubhe7zis5EiIEitwvCJq2GQkPwdI/+9XMd1yQe8p6AP6ZzJa3LID1cjgE+RqVvk/mP2yoONitj41Z8vWHik4u/h8+pO5rGHYz6SyQ+NN73iCN/JGsLZeUg4kNWFlf4HABMwXoGs2kAXNNQKeE8ujsFuF9WRupWxZPX9LaP7t4F0Ba+kILCwdZLqs2WjxPdP0qbVOGg5/H9WU4gKgRXLd42SYD5oTTAhOxkPAnES/eQtaty0B3ObyKGTQpkVRICRSVJQUTmseMX54U3TwPaybF2eztrjou9WiMtKdLK5pGCeWurEDuiYGxhsW40F8hZVR7D1gN8lYPesnaXWRNlBWKb9tNAHIe++buhlH1nhLCd2jJwASKODydXtyqu3OIGvicMCP0p8B8ZH64G15TLRAUbPsmefPYl8LIza2swV0+E6nXG4pV/H9WQta0nuT3w0asXYBCZsb9g9PCJnYH9Wv5TkSw8W56n/xXEUTRI3N+RKMczCCN/NTBCOZAGXHIldlIkVe9ZwcTPnH2YR53JT7nyaEOWu3Lr8wn5LvS1BeBTFPFENA3sdfbxeWgECle5w31WbHI54kzfvEh1EL4VVVTPKw0TOj7+tFp06AmVAJyBgS/4dfaoabpm5XF54Vkwra7YQ7MMey2JDZspax+/fcGiaoLRzwwriCyEhSh2dHsiDUOd8iOFrskSISZ5RL/f+IKR3w== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:KL1PR0601MB3781.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(396003)(346002)(376002)(136003)(39850400004)(366004)(451199018)(122000001)(71200400001)(38100700002)(7696005)(478600001)(7416002)(5660300002)(54906003)(30864003)(38070700005)(83380400001)(86362001)(66446008)(316002)(33656002)(66946007)(4326008)(6916009)(8676002)(66556008)(66476007)(64756008)(76116006)(66574015)(9686003)(8936002)(55016003)(41300700001)(26005)(2906002)(6506007)(52536014)(186003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UmZoRlNDR1VuNFlBaEx6OVE1dlNreW1reUpzbTRiZHpzM2VBUURGYTdDVzQ4?= =?utf-8?B?VzNCWjg4bG9pL1hxQmpjekJpWWNGZlFURysyN1JBQ3M4bHgwRWROMVgxUE1w?= =?utf-8?B?WUIza1YvMlQ4MW1RbHhIeWRvcTl0S2JyelNhb0IwZ3BReThraGd6cmMzakhq?= =?utf-8?B?V1NSWm1RakptU1hQV21NOGtoaktvcDBjcjIzRzFSMGdHVVpWUU9Ia0h5YXVR?= =?utf-8?B?VTQ1SS91b3JtUGZaMkVPazhueG8wMDhLdExRZFkwdnNDUCtwaU1aeENFY1NO?= =?utf-8?B?SkIvTTJZUHBjMTM3YTkwZGZHRzZKZ2xMMGxoQlZyUVV3U2ZYVWdjZ2xCWEZu?= =?utf-8?B?SXZDZkorclA5VS9mU2s0MnVwZkdKMk9kdWVJc1lURm5CTndTaFAvVkpuTUZ3?= =?utf-8?B?aGtpKytOK0s2ZEM2ZUd0eEdzanBVdDN3WmpjY3Z6RElxbU0xSExJUUxtdjhx?= =?utf-8?B?WXo3NkMrWWtpWWhvcWxZZHNEK1BPSHlqV1E0K1J1RE5HbThqcW1CUmFmRUVR?= =?utf-8?B?R2paNVIwTmRZemx1bWJ0ZXRURGJEeVBFQ0szZjVtWUVJOEo3RG5KdzNxdEtV?= =?utf-8?B?K1cvS0tRYnJWS3gvY2l1U3hIZDdhajlLODNMK0dHaTcydmJBVWN2M2JuYVFq?= =?utf-8?B?TFBkQUM4R0FabVJMbmEzV1owc0doS1FYT2xkTi9lakwvSGd0RjZCQXAxTDhs?= =?utf-8?B?WGZKOTAwVG1wTUI1M2toWGdNSC9YU1hiTnZJYk5aZjNSVTJTbnF5VGNKRUt0?= =?utf-8?B?VGpjWFZjZ0NzSmFUWDd6OXhndHYrMFpmQW1iRjlqR1F4SVRrRCtBRS9hY2hj?= =?utf-8?B?ZDhqVVU5Vmt4ZElQUnoyeTEzSTZ4RHJkNmJQSXZjQlVkUmdPNGR1QXRFS25L?= =?utf-8?B?TEhSZzBzYmNoMjhuK2ZvUmZjeWFWV1M2NzZJdnIva3J2TkpBY0YzUkpWbTRm?= =?utf-8?B?b3IwdzVVNWF1azZtWE55LzBwV2t1N3lVZnNjOXFCWFF5ZHJoZ0dNWGpBK21O?= =?utf-8?B?ODNpYy9QVEJRbXRuTURpNHBOUFN3V2Nzc3NhWVZ0K0FHU0dMUE5RdGQwVVdU?= =?utf-8?B?N1BCVG5LQzZ4TllMbm13ZUlDK0VqSENVQnRoU2xSL1FFcEhuQVRTeGpxVUY1?= =?utf-8?B?dG9iRm0vbENNODdicUxOdkRqUGI5Z0F6YmdlbEdKUU43OG9yU2l4S3FDWVZr?= =?utf-8?B?cVZEV0VKUFVLQ3gzQ1lyK01uZ0t2WUhVblRPWDU4WVhpOUxkd2NBRWd3Z0JV?= =?utf-8?B?eVVrTFdQWUF6cUduL1dZek5LbFdYSHFwRlpUMzdodWJXdTQra1R1TjNrVXFN?= =?utf-8?B?WTdGVmVQNEorZmNCa3RuOTQ5QXYrbW9vK2l0VlFRdGRmcFIxMXFpV3AyNHpt?= =?utf-8?B?eDI1Zzc5Z3NyQ2RVVzVteERRbHdUTW10bkNtZG1JMm5UYW9BeURZcjRJeWp6?= =?utf-8?B?bzBPQ3VIZlpOZ2Z6ODZTQ2l4UFlDRXJUSnJHeTB4a2RnUUJKa3RDRm1ZbHdG?= =?utf-8?B?NnZZUzdtWFlMUGQyMTM4b0kvRHBGRGhkWDVtQzhxRDJ6Vys4Nnp4cXVMS1pK?= =?utf-8?B?YnRBSDZ2eE1hZGVvajFYRXVUZFVxNUpOZGFxRnJLNy9TR3pFanpIL1pZQ0Iz?= =?utf-8?B?Zmc4ZEx1S3JyV01UdXZNamd4WFVXdWErbHA1RzAvbWFxMVdKbjVjL1hqcmky?= =?utf-8?B?bGVSaEFjMDJ6bTJhSm1yTGFSb0g0MmJGRmVuRkpMMTF6K2QzamxUS1J4ZHhm?= =?utf-8?B?d1RBYnlpTS80S1NHcXFpYzRiaW13L3N6SWtERmQxdmtLWWVmeHlITnBFL0NR?= =?utf-8?B?S3lPbk9vRHlqcXAzZTFmK2tyeEpoeUl1L2pCeHFuUndxU0lKbDlJWFd6ZHYr?= =?utf-8?B?Y3dKZ2wxUXBtc2FFL2w3UTFRNGJvQXU2amRzNFJqZ0JPdGRseXRvdnJjeUxr?= =?utf-8?B?NkpVZ2FWWDYrdGVLcmFMQTRyZzkzcEcyblk1TGFpS3FyWFY0NWtNbTJlZS9a?= =?utf-8?B?TmM3VHFDS25VaE5JZ0ZKQ0FDUlYzNXRzaERtQ0ZPMGNicHh5Qk9RcnVOSm12?= =?utf-8?B?LzhQb0REZlYwYmw5cEljSytTc2ZuTUZTSndQWkxTVXNsN3dLZko3VjVOdTAw?= =?utf-8?B?czg5SlhWZUVJVWhUbGhFTnE1TldIV2pXbEtreUFIcHgrNnJUdUw0K2xHNGRj?= =?utf-8?B?L3c9PQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: aspeedtech.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: KL1PR0601MB3781.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b66d42f9-2b36-44a3-6fb6-08db2ab043f6 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Mar 2023 08:34:34.5735 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: etVjawy8YdDSUYNNP88k0GiVbTO9O2Q3KtGL6SJ4wH4L0cztlgtXSzKb16ZyZCI4U2ZR1vAf+lAZDIEB9Yc5q8bYIvelL2T2DP8f4Gqn1+k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY0PR06MB5005 X-Spam-Status: No, score=0.6 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, NO_DNS_FOR_FROM,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS, SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org V2lsbCByZXZpc2UgdGhlIGNvZGluZyBzdHlsZSBhcyBzdWdnZXN0ZWQgYmVsb3cgaW4gdjQgcmV2 aXNpb24uDQoNClRoYW5rcywNCkNoaWF3ZWkNCg0KPiBGcm9tOiBJbHBvIErDpHJ2aW5lbiA8aWxw by5qYXJ2aW5lbkBsaW51eC5pbnRlbC5jb20+DQo+IFNlbnQ6IE1vbmRheSwgTWFyY2ggMjAsIDIw MjMgNzoxNCBQTQ0KPiANCj4gT24gTW9uLCAyMCBNYXIgMjAyMywgQ2hpYS1XZWkgV2FuZyB3cm90 ZToNCj4gDQo+ID4gQXNwZWVkIEFTVDI2MDAgVUFSVCBETUEgKFVETUEpIGluY2x1ZGVzIDI4IGNo YW5uZWxzIGZvciB0aGUgRE1BDQo+ID4gdHJhbnNtaXNzaW9uIGFuZCByZWNldmllIG9mIGVhY2gg VUFSVCBkZXZpY2VzLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogQ2hpYS1XZWkgV2FuZyA8Y2hp YXdlaV93YW5nQGFzcGVlZHRlY2guY29tPg0KPiA+IC0tLQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2RtYS9hc3QyNjAwLXVkbWEuYyBiL2RyaXZlcnMvZG1hL2FzdDI2MDAtdWRtYS5jDQo+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXggMDAwMDAwMDAwMDAwLi4zOTExN2IyNjk5NmQNCj4g PiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9kbWEvYXN0MjYwMC11ZG1hLmMNCj4g PiBAQCAtMCwwICsxLDUzNCBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMA0KPiA+ICsvKg0KPiA+ICsgKiBDb3B5cmlnaHQgKEMpIEFTUEVFRCBUZWNobm9sb2d5IElu Yy4NCj4gPiArICovDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KPiA+ICsjaW5jbHVk ZSA8bGludXgvYml0ZmllbGQuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0K PiA+ICsjaW5jbHVkZSA8bGludXgvZG1hZW5naW5lLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9k bWEtbWFwcGluZy5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+ DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9kbWEuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2Rt YS1kaXJlY3QuaD4NCj4gPiArI2luY2x1ZGUgImRtYWVuZ2luZS5oIg0KPiA+ICsNCj4gPiArI2Rl ZmluZSBERVZJQ0VfTkFNRQkiYXNwZWVkLXVkbWEiDQo+ID4gKw0KPiA+ICsvKiByZWdpc3RlciBv ZmZzZXQgKi8NCj4gPiArI2RlZmluZSBVRE1BX1RYX0VOCQkweDAwMA0KPiA+ICsjZGVmaW5lIFVE TUFfUlhfRU4JCTB4MDA0DQo+ID4gKyNkZWZpbmUgVURNQV9UTU9VVAkJMHgwMGMNCj4gPiArI2Rl ZmluZSBVRE1BX1RYX1BUUl9SU1QJCTB4MDIwDQo+ID4gKyNkZWZpbmUgVURNQV9SWF9QVFJfUlNU CQkweDAyNA0KPiA+ICsjZGVmaW5lIFVETUFfVFhfSU5UX0VOCQkweDAzMA0KPiA+ICsjZGVmaW5l IFVETUFfVFhfSU5UX1NUUwkJMHgwMzQNCj4gPiArI2RlZmluZSBVRE1BX1JYX0lOVF9FTgkJMHgw MzgNCj4gPiArI2RlZmluZSBVRE1BX1JYX0lOVF9TVFMJCTB4MDNjDQo+ID4gKw0KPiA+ICsjZGVm aW5lIFVETUFfQ0hfT0ZGUyh4KQkJKCh4KSAqIDB4MTApDQo+ID4gKyNkZWZpbmUgVURNQV9DSF9S UFRSKHgpCQkoMHgwNDAgKyBVRE1BX0NIX09GRlMoeCkpDQo+ID4gKyNkZWZpbmUgVURNQV9DSF9X UFRSKHgpCQkoMHgwNDQgKyBVRE1BX0NIX09GRlMoeCkpDQo+ID4gKyNkZWZpbmUgVURNQV9DSF9B RERSKHgpCQkoMHgwNDggKyBVRE1BX0NIX09GRlMoeCkpDQo+ID4gKyNkZWZpbmUgVURNQV9DSF9D VFJMKHgpCQkoMHgwNGMgKyBVRE1BX0NIX09GRlMoeCkpDQo+ID4gKyNkZWZpbmUgICBVRE1BX0NI X0NUUkxfQlVGU1oJR0VOTUFTSygxLCAwKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBVRE1BX01BWF9C VUZTWgkoMHgxMDAwMCkNCj4gDQo+IFVubmVjZXNzYXJ5IHBhcmVudGhlc2lzLg0KPiANCj4gPiAr I2RlZmluZSBVRE1BX01BWF9UWFNaCShVRE1BX01BWF9CVUZTWiAtIDEpDQo+ID4gKw0KPiA+ICtl bnVtIGFzdDI2MDBfdWRtYV9idWZzeiB7DQo+ID4gKwlVRE1BX0JVRlNaXzFLQiwNCj4gPiArCVVE TUFfQlVGU1pfNEtCLA0KPiA+ICsJVURNQV9CVUZTWl8xNktCLA0KPiA+ICsJVURNQV9CVUZTWl82 NEtCLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGFzdDI2MDBfdWRtYV9kZXNjIHsNCj4g PiArCXN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciB0eDsNCj4gPiArCWRtYV9hZGRyX3Qg YWRkcjsNCj4gPiArCXVuc2lnbmVkIGludCBzaXplOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3Ry dWN0IGFzdDI2MDBfdWRtYV9jaGFuIHsNCj4gPiArCXN0cnVjdCBkbWFfY2hhbiBjaGFuOw0KPiA+ ICsJc3RydWN0IGFzdDI2MDBfdWRtYV9kZXNjIHVkOw0KPiA+ICsJc3RydWN0IGFzdDI2MDBfdWRt YSAqdWRtYTsNCj4gPiArCXVpbnQzMl90IHJlc2lkdWU7DQo+ID4gKw0KPiA+ICsJLyogNEItYWxp Z25lZCBsb2NhbCBidWZmZXIgZm9yIHdvcmthcm91bmQgKi8NCj4gPiArCXVpbnQ4X3QgKmJ1ZjsN Cj4gPiArCWRtYV9hZGRyX3QgYnVmX2FkZHI7DQo+ID4gKw0KPiA+ICsJYm9vbCBpc190eDsNCj4g PiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBhc3QyNjAwX3VkbWEgew0KPiA+ICsJc3RydWN0IGRt YV9kZXZpY2UgZGRldjsNCj4gPiArCXVpbnQ4X3QgX19pb21lbSAqcmVnczsNCj4gPiArCWludCBp cnE7DQo+ID4gKwlzdHJ1Y3QgYXN0MjYwMF91ZG1hX2NoYW4gKnVjczsNCj4gPiArCXVpbnQzMl90 IG5fdWNzOw0KPiA+ICsJc3BpbmxvY2tfdCBsb2NrOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3Rh dGljIHN0cnVjdCBhc3QyNjAwX3VkbWFfY2hhbiAqdG9fYXN0MjYwMF91ZG1hX2NoYW4oc3RydWN0 DQo+IGRtYV9jaGFuDQo+ID4gKypjaGFuKSB7DQo+ID4gKwlyZXR1cm4gY29udGFpbmVyX29mKGNo YW4sIHN0cnVjdCBhc3QyNjAwX3VkbWFfY2hhbiwgY2hhbik7IH0NCj4gPiArDQo+ID4gK3N0YXRp YyBpbnQgYXN0MjYwMF91ZG1hX2FsbG9jX2NoYW5fcmVzb3VyY2VzKHN0cnVjdCBkbWFfY2hhbiAq Y2hhbikgew0KPiA+ICsJZG1hX2Nvb2tpZV9pbml0KGNoYW4pOw0KPiA+ICsNCj4gPiArCXJldHVy biAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgZG1hX2Nvb2tpZV90IGFzdDI2MDBfdWRt YV90eF9zdWJtaXQoc3RydWN0DQo+ID4gK2RtYV9hc3luY190eF9kZXNjcmlwdG9yICp0eCkgew0K PiA+ICsJcmV0dXJuIGRtYV9jb29raWVfYXNzaWduKHR4KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyogY29uc2lkZXIgb25seSA4MjUwX2RtYSB1c2luZyBkbWFlbmdpbmVfcHJlcF9zbGF2ZV9zaW5n bGUoKSAqLw0KPiA+ICtzdGF0aWMgc3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlwdG9yDQo+ICph c3QyNjAwX3VkbWFfcHJlcF9zbGF2ZV9zZyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sDQo+ID4gKwkJ CQkJCQkJICBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnbCwNCj4gPiArCQkJCQkJCQkgIHVuc2lnbmVk IGludCBzZ19sZW4sDQo+ID4gKwkJCQkJCQkJICBlbnVtIGRtYV90cmFuc2Zlcl9kaXJlY3Rpb24g ZGlyLA0KPiA+ICsJCQkJCQkJCSAgdW5zaWduZWQgbG9uZyB0eF9mbGFncywNCj4gPiArCQkJCQkJ CQkgIHZvaWQgKmNvbnRleHQpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGNo YW4tPmRldmljZS0+ZGV2Ow0KPiA+ICsJc3RydWN0IGFzdDI2MDBfdWRtYV9jaGFuICp1YyA9IHRv X2FzdDI2MDBfdWRtYV9jaGFuKGNoYW4pOw0KPiA+ICsJc3RydWN0IGFzdDI2MDBfdWRtYV9kZXNj ICp1ZCA9ICZ1Yy0+dWQ7DQo+ID4gKwlwaHlzX2FkZHJfdCBwYTsNCj4gPiArCXZvaWQgKnZhOw0K PiA+ICsNCj4gPiArCWlmICghaXNfc2xhdmVfZGlyZWN0aW9uKGRpcikpIHsNCj4gPiArCQlkZXZf ZXJyKGRldiwgImRpcmVjdGlvbiBpcyBub3Qgc2xhdmUgbW9kZVxuIik7DQo+ID4gKwkJcmV0dXJu IE5VTEw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKHNnX2xlbiAhPSAxKSB7DQo+IA0KPiA+ IDENCj4gDQo+ID4gKwkJZGV2X2VycihkZXYsICJzY2F0dGVyIGxpc3QgbGVuZ3RoIGlzIG5vdCAx XG4iKTsNCj4gPiArCQlyZXR1cm4gTlVMTDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAodWMt PmlzX3R4ICYmIGRpciAhPSBETUFfTUVNX1RPX0RFVikgew0KPiA+ICsJCWRldl9lcnIoZGV2LCAi aW52YWxpZCBkaXJlY3Rpb24gdG8gVFggY2hhbm5lbFxuIik7DQo+ID4gKwkJcmV0dXJuIE5VTEw7 DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJdWQtPmFkZHIgPSBzZ19kbWFfYWRkcmVzcyhzZ2wpOw0K PiA+ICsJdWQtPnNpemUgPSBzZ19kbWFfbGVuKHNnbCk7DQo+ID4gKw0KPiA+ICsJaWYgKHVjLT5p c190eCkgew0KPiA+ICsJCWlmICh1ZC0+c2l6ZSA+IFVETUFfTUFYX1RYU1opIHsNCj4gPiArCQkJ ZGV2X2VycihkZXYsICJpbnZhbGlkIFRYIERNQSBTSVpFIik7DQo+ID4gKwkJCXJldHVybiBOVUxM Ow0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJLyoNCj4gPiArCQkgKiBVRE1BIGlzIGxpbWl0ZWQg dG8gNEItYWxpZ25lZCBETUEgYWRkcmVzc2VzLg0KPiA+ICsJCSAqIFRodXMgY29weSBkYXRhIHRv IGxvY2FsIDRCLWFsaWduZWQgYnVmZmVyIGlmDQo+ID4gKwkJICogdGhlIHNvdXJjZSBkb2VzIG5v dCBmaXQuDQo+ID4gKwkJICovDQo+ID4gKwkJaWYgKHVkLT5hZGRyICYgMHgzKSB7DQo+IA0KPiAh SVNfQUxJR05FRCgpDQo+IA0KPiBSZW1lbWJlciB0byBhZGQgaW5jbHVkZSBmb3IgaXQuDQo+IA0K PiA+ICsJCQlwYSA9IGRtYV90b19waHlzKGNoYW4tPmRldmljZS0+ZGV2LCB1ZC0+YWRkcik7DQo+ ID4gKwkJCWlmIChwYSAhPSAocGh5c19hZGRyX3QpLTEpIHsNCj4gPiArCQkJCXZhID0gcGh5c190 b192aXJ0KHBhKTsNCj4gPiArCQkJCW1lbWNweSh1Yy0+YnVmLCB2YSwgdWQtPnNpemUpOw0KPiA+ ICsJCQkJdWQtPmFkZHIgPSB1Yy0+YnVmX2FkZHI7DQo+ID4gKwkJCX0NCj4gPiArCQl9DQo+ID4g Kwl9IGVsc2Ugew0KPiA+ICsJCS8qDQo+ID4gKwkJICogVURNQSBSWCBidWZmZXIgc2l6ZSBpcyBs aW1pdGVkIHRvIDEvNC8xNi82NCBLQg0KPiA+ICsJCSAqIFdlIHVzZSB0aGUgbG93ZXIgYml0cyB0 byBlbmNvZGUgdGhlIGJ1ZmZlciBzaXplDQo+ID4gKwkJICovDQo+ID4gKwkJc3dpdGNoICh1ZC0+ c2l6ZSkgew0KPiA+ICsJCWNhc2UgMHg0MDA6DQo+IA0KPiBTWl8xSywgZXRjIGluIGxpbnV4L3Np emVzLmguDQo+IA0KPiA+ICsJCQl1ZC0+c2l6ZSB8PSBGSUVMRF9QUkVQKFVETUFfQ0hfQ1RSTF9C VUZTWiwNCj4gVURNQV9CVUZTWl8xS0IpOw0KPiA+ICsJCQlicmVhazsNCj4gPiArCQljYXNlIDB4 MTAwMDoNCj4gPiArCQkJdWQtPnNpemUgfD0gRklFTERfUFJFUChVRE1BX0NIX0NUUkxfQlVGU1os DQo+IFVETUFfQlVGU1pfNEtCKTsNCj4gPiArCQkJYnJlYWs7DQo+ID4gKwkJY2FzZSAweDQwMDA6 DQo+ID4gKwkJCXVkLT5zaXplIHw9IEZJRUxEX1BSRVAoVURNQV9DSF9DVFJMX0JVRlNaLA0KPiBV RE1BX0JVRlNaXzE2S0IpOw0KPiA+ICsJCQlicmVhazsNCj4gPiArCQljYXNlIDB4MTAwMDA6DQo+ ID4gKwkJCXVkLT5zaXplIHw9IEZJRUxEX1BSRVAoVURNQV9DSF9DVFJMX0JVRlNaLA0KPiBVRE1B X0JVRlNaXzY0S0IpOw0KPiA+ICsJCQlicmVhazsNCj4gPiArCQlkZWZhdWx0Og0KPiA+ICsJCQlk ZXZfZXJyKGRldiwgImludmFsaWQgUlggRE1BIHNpemVcbiIpOw0KPiA+ICsJCQlyZXR1cm4gTlVM TDsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZG1hX2FzeW5jX3R4X2Rlc2NyaXB0 b3JfaW5pdCgmdWQtPnR4LCAmdWMtPmNoYW4pOw0KPiA+ICsJdWQtPnR4LnR4X3N1Ym1pdCA9IGFz dDI2MDBfdWRtYV90eF9zdWJtaXQ7DQo+ID4gKw0KPiA+ICsJcmV0dXJuICZ1ZC0+dHg7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGFzdDI2MDBfdWRtYV9pc3N1ZV9wZW5kaW5nKHN0 cnVjdCBkbWFfY2hhbiAqY2hhbikgew0KPiA+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gPiAr CXVpbnQzMl90IHJfcHIsIHJfaXMsIHJfaWUsIHJfZW4sIHJlZzsNCj4gPiArCXVpbnQzMl90IGNo X2lkID0gY2hhbi0+Y2hhbl9pZDsNCj4gPiArCXVpbnQzMl90IGNoX2JpdCA9IGNoX2lkIC8gMjsN Cj4gPiArCWRtYV9hZGRyX3QgcnhfYWRkcjsNCj4gPiArCXVpbnQzMl90IHJ4X3NpemU7DQo+ID4g KwlzdHJ1Y3QgYXN0MjYwMF91ZG1hX2NoYW4gKnVjID0gdG9fYXN0MjYwMF91ZG1hX2NoYW4oY2hh bik7DQo+ID4gKwlzdHJ1Y3QgYXN0MjYwMF91ZG1hX2Rlc2MgKnVkID0gJnVjLT51ZDsNCj4gPiAr CXN0cnVjdCBhc3QyNjAwX3VkbWEgKnVkbWEgPSB1Yy0+dWRtYTsNCj4gPiArDQo+ID4gKwlpZiAo dWMtPmlzX3R4KSB7DQo+ID4gKwkJcl9wciA9IFVETUFfVFhfUFRSX1JTVDsNCj4gPiArCQlyX2lz ID0gVURNQV9UWF9JTlRfU1RTOw0KPiA+ICsJCXJfaWUgPSBVRE1BX1RYX0lOVF9FTjsNCj4gPiAr CQlyX2VuID0gVURNQV9UWF9FTjsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJcl9wciA9IFVETUFf UlhfUFRSX1JTVDsNCj4gPiArCQlyX2lzID0gVURNQV9SWF9JTlRfU1RTOw0KPiA+ICsJCXJfaWUg PSBVRE1BX1JYX0lOVF9FTjsNCj4gPiArCQlyX2VuID0gVURNQV9SWF9FTjsNCj4gPiArCX0NCj4g PiArDQo+ID4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmdWRtYS0+bG9jaywgZmxhZ3MpOw0KPiA+ICsN Cj4gPiArCS8qIHJlc2V0IGNoYW5uZWwgSFcgcmVhZC93cml0ZSBwb2ludGVyICovDQo+ID4gKwl3 cml0ZWwoQklUKGNoX2JpdCksIHVkbWEtPnJlZ3MgKyByX3ByKTsNCj4gPiArCXdyaXRlbCgwLCB1 ZG1hLT5yZWdzICsgcl9wcik7DQo+ID4gKw0KPiA+ICsJLyogY2xlYXIgaW50ZXJydXB0IHN0YXR1 cyAqLw0KPiA+ICsJd3JpdGVsKEJJVChjaF9iaXQpLCB1ZG1hLT5yZWdzICsgcl9pcyk7DQo+ID4g Kw0KPiA+ICsJLyogc2V0IHRyYW5zZmVyIGFkZHJlc3MgJiBzaXplICovDQo+ID4gKwlpZiAodWMt PmlzX3R4KSB7DQo+ID4gKwkJd3JpdGVsKHVkLT5hZGRyLCB1ZG1hLT5yZWdzICsgVURNQV9DSF9B RERSKGNoX2lkKSk7DQo+ID4gKwkJd3JpdGVsKHVkLT5zaXplLCB1ZG1hLT5yZWdzICsgVURNQV9D SF9XUFRSKGNoX2lkKSk7DQo+ID4gKwkJd3JpdGVsKFVETUFfQlVGU1pfNjRLQiwgdWRtYS0+cmVn cyArIFVETUFfQ0hfQ1RSTChjaF9pZCkpOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQkvKg0KPiA+ ICsJCSAqIFVETUEgaXMgbGltaXRlZCB0byA0Qi1hbGlnbmVkIGFkZHJlc3Nlcy4NCj4gPiArCQkg KiBUaHVzIHVzZSBsb2NhbCA0Qi1hbGlnbmVkIGJ1ZmZlciB0byBnZXQNCj4gPiArCQkgKiBSWCBk YXRhIGFuZCBjb3B5IHRvIHRoZSByZWFsIGRlc3RpbmF0aW9uDQo+ID4gKwkJICogYWZ0ZXIgdGhl bi4NCj4gPiArCQkgKi8NCj4gPiArCQlyeF9hZGRyID0gKHVkLT5hZGRyICYgMHgzKSA/IHVjLT5i dWZfYWRkciA6IHVkLT5hZGRyOw0KPiANCj4gIUlTX0FMSUdORUQoKQ0KPiANCj4gPiArCQlyeF9z aXplID0gRklFTERfR0VUKFVETUFfQ0hfQ1RSTF9CVUZTWiwgdWQtPnNpemUpOw0KPiA+ICsJCXdy aXRlbChyeF9hZGRyLCB1ZG1hLT5yZWdzICsgVURNQV9DSF9BRERSKGNoX2lkKSk7DQo+ID4gKwkJ d3JpdGVsKHJ4X3NpemUsIHVkbWEtPnJlZ3MgKyBVRE1BX0NIX0NUUkwoY2hfaWQpKTsNCj4gPiAr CX0NCj4gPiArDQo+ID4gKwkvKiBlbmFibGUgaW50ZXJydXB0ICovDQo+ID4gKwlyZWcgPSByZWFk bCh1ZG1hLT5yZWdzICsgcl9pZSkgfCBCSVQoY2hfYml0KTsNCj4gDQo+IFVzdWFsbHksIGluIHRo aXMga2luZCBvZiBjb25zdHJ1Y3RzLCB0aGUgbG9naWMgaXMgcHV0IG9uIGl0cyBvd24gbGluZSBi ZXR3ZWVuIHJlYWRsDQo+IGFuZCB3cml0ZWwuDQo+IA0KPiA+ICsJd3JpdGVsKHJlZywgdWRtYS0+ cmVncyArIHJfaWUpOw0KPiA+ICsNCj4gPiArCS8qIHN0YXJ0IERNQSAqLw0KPiA+ICsJcmVnID0g cmVhZGwodWRtYS0+cmVncyArIHJfZW4pIHwgQklUKGNoX2JpdCk7DQo+ID4gKwl3cml0ZWwocmVn LCB1ZG1hLT5yZWdzICsgcl9lbik7DQo+ID4gKw0KPiA+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmdWRtYS0+bG9jaywgZmxhZ3MpOyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgZW51bSBkbWFfc3Rh dHVzIGFzdDI2MDBfdWRtYV90eF9zdGF0dXMoc3RydWN0IGRtYV9jaGFuICpjaGFuLA0KPiA+ICsJ CWRtYV9jb29raWVfdCBjb29raWUsIHN0cnVjdCBkbWFfdHhfc3RhdGUgKnR4c3RhdGUpIHsNCj4g PiArCXN0cnVjdCBhc3QyNjAwX3VkbWFfY2hhbiAqdWMgPSB0b19hc3QyNjAwX3VkbWFfY2hhbihj aGFuKTsNCj4gPiArCWVudW0gZG1hX3N0YXR1cyBzdHMgPSBkbWFfY29va2llX3N0YXR1cyhjaGFu LCBjb29raWUsIHR4c3RhdGUpOw0KPiA+ICsNCj4gPiArCWRtYV9zZXRfcmVzaWR1ZSh0eHN0YXRl LCB1Yy0+cmVzaWR1ZSk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHN0czsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGludCBhc3QyNjAwX3VkbWFfcGF1c2Uoc3RydWN0IGRtYV9jaGFuICpjaGFu KSB7DQo+ID4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiA+ICsJdWludDMyX3Qgcl9lbiwgcl9p ZSwgcmVnOw0KPiA+ICsJdWludDMyX3QgY2hfaWQgPSBjaGFuLT5jaGFuX2lkOw0KPiA+ICsJdWlu dDMyX3QgY2hfYml0ID0gY2hfaWQgLyAyOw0KPiA+ICsJc3RydWN0IGFzdDI2MDBfdWRtYV9jaGFu ICp1YyA9IHRvX2FzdDI2MDBfdWRtYV9jaGFuKGNoYW4pOw0KPiA+ICsJc3RydWN0IGFzdDI2MDBf dWRtYSAqdWRtYSA9IHVjLT51ZG1hOw0KPiA+ICsNCj4gPiArCWlmICh1Yy0+aXNfdHgpIHsNCj4g PiArCQlyX2VuID0gVURNQV9UWF9FTjsNCj4gPiArCQlyX2llID0gVURNQV9UWF9JTlRfRU47DQo+ ID4gKwl9IGVsc2Ugew0KPiA+ICsJCXJfZW4gPSBVRE1BX1JYX0VOOw0KPiA+ICsJCXJfaWUgPSBV RE1BX1JYX0lOVF9FTjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlzcGluX2xvY2tfaXJxc2F2ZSgm dWRtYS0+bG9jaywgZmxhZ3MpOw0KPiA+ICsNCj4gPiArCXJlZyA9IHJlYWRsKHVkbWEtPnJlZ3Mg KyByX2VuKSAmIH5CSVQoY2hfYml0KTsNCj4gPiArCXdyaXRlbChyZWcsIHVkbWEtPnJlZ3MgKyBy X2VuKTsNCj4gPiArDQo+ID4gKwlyZWcgPSByZWFkbCh1ZG1hLT5yZWdzICsgcl9pZSkgJiB+QklU KGNoX2JpdCk7DQo+ID4gKwl3cml0ZWwocmVnLCB1ZG1hLT5yZWdzICsgcl9pZSk7DQo+ID4gKw0K PiA+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdWRtYS0+bG9jaywgZmxhZ3MpOw0KPiA+ICsN Cj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGFzdDI2MDBf dWRtYV9yZXN1bWUoc3RydWN0IGRtYV9jaGFuICpjaGFuKSB7DQo+ID4gKwl1bnNpZ25lZCBsb25n IGZsYWdzOw0KPiA+ICsJdWludDMyX3Qgcl9lbiwgcl9pZSwgcmVnOw0KPiA+ICsJdWludDMyX3Qg Y2hfaWQgPSBjaGFuLT5jaGFuX2lkOw0KPiA+ICsJdWludDMyX3QgY2hfYml0ID0gY2hfaWQgLyAy Ow0KPiA+ICsJc3RydWN0IGFzdDI2MDBfdWRtYV9jaGFuICp1YyA9IHRvX2FzdDI2MDBfdWRtYV9j aGFuKGNoYW4pOw0KPiA+ICsJc3RydWN0IGFzdDI2MDBfdWRtYSAqdWRtYSA9IHVjLT51ZG1hOw0K PiA+ICsNCj4gPiArCWlmICh1Yy0+aXNfdHgpIHsNCj4gPiArCQlyX2VuID0gVURNQV9UWF9FTjsN Cj4gPiArCQlyX2llID0gVURNQV9UWF9JTlRfRU47DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJCXJf ZW4gPSBVRE1BX1JYX0VOOw0KPiA+ICsJCXJfaWUgPSBVRE1BX1JYX0lOVF9FTjsNCj4gPiArCX0N Cj4gPiArDQo+ID4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmdWRtYS0+bG9jaywgZmxhZ3MpOw0KPiA+ ICsNCj4gPiArCXJlZyA9IHJlYWRsKHVkbWEtPnJlZ3MgKyByX2VuKSB8IEJJVChjaF9iaXQpOw0K PiA+ICsJd3JpdGVsKHJlZywgdWRtYS0+cmVncyArIHJfZW4pOw0KPiA+ICsNCj4gPiArCXJlZyA9 IHJlYWRsKHVkbWEtPnJlZ3MgKyByX2llKSB8IEJJVChjaF9iaXQpOw0KPiA+ICsJd3JpdGVsKHJl ZywgdWRtYS0+cmVncyArIHJfaWUpOw0KPiA+ICsNCj4gPiArCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJnVkbWEtPmxvY2ssIGZsYWdzKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIGludCBhc3QyNjAwX3VkbWFfdGVybWluYXRlKHN0cnVjdCBkbWFf Y2hhbiAqY2hhbikgew0KPiA+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gPiArCXVpbnQzMl90 IHJfcHIsIHJfaXMsIHJfaWUsIHJfZW4sIHJlZzsNCj4gPiArCXVpbnQzMl90IGNoX2lkID0gY2hh bi0+Y2hhbl9pZDsNCj4gPiArCXVpbnQzMl90IGNoX2JpdCA9IGNoX2lkIC8gMjsNCj4gPiArCXN0 cnVjdCBhc3QyNjAwX3VkbWFfY2hhbiAqdWMgPSB0b19hc3QyNjAwX3VkbWFfY2hhbihjaGFuKTsN Cj4gPiArCXN0cnVjdCBhc3QyNjAwX3VkbWEgKnVkbWEgPSB1Yy0+dWRtYTsNCj4gPiArDQo+ID4g KwlpZiAodWMtPmlzX3R4KSB7DQo+ID4gKwkJcl9wciA9IFVETUFfVFhfUFRSX1JTVDsNCj4gPiAr CQlyX2lzID0gVURNQV9UWF9JTlRfU1RTOw0KPiA+ICsJCXJfaWUgPSBVRE1BX1RYX0lOVF9FTjsN Cj4gPiArCQlyX2VuID0gVURNQV9UWF9FTjsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJcl9wciA9 IFVETUFfUlhfUFRSX1JTVDsNCj4gPiArCQlyX2lzID0gVURNQV9SWF9JTlRfU1RTOw0KPiA+ICsJ CXJfaWUgPSBVRE1BX1JYX0lOVF9FTjsNCj4gPiArCQlyX2VuID0gVURNQV9SWF9FTjsNCj4gPiAr CX0NCj4gPiArDQo+ID4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmdWRtYS0+bG9jaywgZmxhZ3MpOw0K PiA+ICsNCj4gPiArCS8qIGRpc2FibGUgRE1BICovDQo+ID4gKwlyZWcgPSByZWFkbCh1ZG1hLT5y ZWdzICsgcl9lbikgJiB+QklUKGNoX2JpdCk7DQo+ID4gKwl3cml0ZWwocmVnLCB1ZG1hLT5yZWdz ICsgcl9lbik7DQo+ID4gKw0KPiA+ICsJLyogZGlzYWJsZSBpbnRlcnJ1cHQgKi8NCj4gPiArCXJl ZyA9IHJlYWRsKHVkbWEtPnJlZ3MgKyByX2llKSAmIH5CSVQoY2hfYml0KTsNCj4gPiArCXdyaXRl bChyZWcsIHVkbWEtPnJlZ3MgKyByX2llKTsNCj4gPiArDQo+ID4gKwkvKiBjbGVhciBpbnRlcnJ1 cHQgc3RhdHVzICovDQo+ID4gKwl3cml0ZWwoQklUKGNoX2JpdCksIHVkbWEtPnJlZ3MgKyByX2lz KTsNCj4gPiArDQo+ID4gKwkvKiByZXNldCBjaGFubmVsIEhXIHJlYWQvd3JpdGUgcG9pbnRlciAq Lw0KPiA+ICsJd3JpdGVsKEJJVChjaF9iaXQpLCB1ZG1hLT5yZWdzICsgcl9wcik7DQo+ID4gKwl3 cml0ZWwoMCwgdWRtYS0+cmVncyArIHJfcHIpOw0KPiA+ICsNCj4gPiArCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJnVkbWEtPmxvY2ssIGZsYWdzKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlycXJldHVybl90IGFzdDI2MDBfdWRtYV9pc3IoaW50 IGlycSwgdm9pZCAqYXJnKSB7DQo+ID4gKwlzdHJ1Y3QgYXN0MjYwMF91ZG1hICp1ZG1hID0gYXJn Ow0KPiA+ICsJc3RydWN0IGFzdDI2MDBfdWRtYV9jaGFuICp1YzsNCj4gPiArCXN0cnVjdCBhc3Qy NjAwX3VkbWFfZGVzYyAqdWQ7DQo+ID4gKwlzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3Ig KnR4Ow0KPiA+ICsJdWludDMyX3Qgc3RzLCBycHRyLCB3cHRyOw0KPiA+ICsJdWludDMyX3QgY2hf aWQsIGNoX2JpdDsNCj4gPiArCXBoeXNfYWRkcl90IHBhOw0KPiA+ICsJdm9pZCAqdmE7DQo+ID4g Kw0KPiA+ICsJLyogaGFuZGxlIFRYIGludGVycnVwdCAqLw0KPiA+ICsJc3RzID0gcmVhZGwodWRt YS0+cmVncyArIFVETUFfVFhfSU5UX1NUUyk7DQo+ID4gKwlmb3JfZWFjaF9zZXRfYml0KGNoX2Jp dCwgKHVuc2lnbmVkIGxvbmcgKikmc3RzLCAodWRtYS0+bl91Y3MgLyAyKSkgew0KPiANCj4gV2h5 IG5vdCBtYWtlIHN0cyB1bnNpZ25lZCBsb25nIHRvIGF2b2lkIHRoZSBjYXN0Pw0KPiANCj4gVW5u ZWNlc3NhcnkgcGFyZW50aGVzaXMuDQo+IA0KPiA+ICsJCWNoX2lkID0gY2hfYml0IDw8IDE7DQo+ ID4gKwkJcnB0ciA9IHJlYWRsKHVkbWEtPnJlZ3MgKyBVRE1BX0NIX1JQVFIoY2hfaWQpKTsNCj4g PiArCQl3cHRyID0gcmVhZGwodWRtYS0+cmVncyArIFVETUFfQ0hfV1BUUihjaF9pZCkpOw0KPiA+ ICsNCj4gPiArCQl1YyA9ICZ1ZG1hLT51Y3NbY2hfaWRdOw0KPiA+ICsJCXVjLT5yZXNpZHVlID0g d3B0ciAtIHJwdHI7DQo+ID4gKw0KPiA+ICsJCWFzdDI2MDBfdWRtYV90ZXJtaW5hdGUoJnVjLT5j aGFuKTsNCj4gPiArDQo+ID4gKwkJdHggPSAmdWMtPnVkLnR4Ow0KPiA+ICsJCWRtYV9jb29raWVf Y29tcGxldGUodHgpOw0KPiA+ICsJCWRtYV9kZXNjcmlwdG9yX3VubWFwKHR4KTsNCj4gPiArCQlk bWFlbmdpbmVfZGVzY19nZXRfY2FsbGJhY2tfaW52b2tlKHR4LCBOVUxMKTsNCj4gPiArCX0NCj4g PiArDQo+ID4gKwkvKiBoYW5kbGUgUlggaW50ZXJydXB0ICovDQo+ID4gKwlzdHMgPSByZWFkbCh1 ZG1hLT5yZWdzICsgVURNQV9SWF9JTlRfU1RTKTsNCj4gPiArCWZvcl9lYWNoX3NldF9iaXQoY2hf Yml0LCAodW5zaWduZWQgbG9uZyAqKSZzdHMsIHVkbWEtPm5fdWNzIC8gMikgew0KPiA+ICsJCWNo X2lkID0gKGNoX2JpdCA8PCAxKSArIDE7DQo+ID4gKwkJd3B0ciA9IHJlYWRsKHVkbWEtPnJlZ3Mg KyBVRE1BX0NIX1dQVFIoY2hfaWQpKTsNCj4gPiArDQo+ID4gKwkJdWMgPSAmdWRtYS0+dWNzW2No X2lkXTsNCj4gPiArCQl1ZCA9ICZ1Yy0+dWQ7DQo+ID4gKwkJdHggPSAmdWQtPnR4Ow0KPiA+ICsN Cj4gPiArCQl1Yy0+cmVzaWR1ZSA9ICh1ZC0+c2l6ZSAmIH5VRE1BX0NIX0NUUkxfQlVGU1opIC0g d3B0cjsNCj4gPiArDQo+ID4gKwkJLyogaGFuZGxlIG5vbi00Qi1hbGlnbmVkIGNhc2UgKi8NCj4g PiArCQlpZiAodWQtPmFkZHIgJiAweDMpIHsNCj4gDQo+ICFJU19BTElHTkVEKCkNCj4gDQo+ID4g KwkJCXBhID0gZG1hX3RvX3BoeXModWMtPmNoYW4uZGV2aWNlLT5kZXYsIHVkLT5hZGRyKTsNCj4g PiArCQkJaWYgKHBhICE9IChwaHlzX2FkZHJfdCktMSkgew0KPiA+ICsJCQkJdmEgPSBwaHlzX3Rv X3ZpcnQocGEpOw0KPiA+ICsJCQkJbWVtY3B5KHZhLCB1Yy0+YnVmLCB3cHRyKTsNCj4gPiArCQkJ fQ0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJYXN0MjYwMF91ZG1hX3Rlcm1pbmF0ZSgmdWMtPmNo YW4pOw0KPiA+ICsNCj4gPiArCQlkbWFfY29va2llX2NvbXBsZXRlKHR4KTsNCj4gPiArCQlkbWFf ZGVzY3JpcHRvcl91bm1hcCh0eCk7DQo+ID4gKwkJZG1hZW5naW5lX2Rlc2NfZ2V0X2NhbGxiYWNr X2ludm9rZSh0eCwgTlVMTCk7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIElSUV9IQU5E TEVEOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGFzdDI2MDBfdWRtYV9wcm9iZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KSB7DQo+ID4gKwlpbnQgaSwgcmM7DQo+ID4gKwlz dHJ1Y3QgcmVzb3VyY2UgKnJlczsNCj4gPiArCXN0cnVjdCBhc3QyNjAwX3VkbWEgKnVkbWE7DQo+ ID4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiA+ICsNCj4gPiArCXVkbWEg PSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnVkbWEpLCBHRlBfS0VSTkVMKTsNCj4gPiArCWlm ICghdWRtYSkNCj4gPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiArDQo+ID4gKwlkbWFfY2FwX3Nl dChETUFfU0xBVkUsIHVkbWEtPmRkZXYuY2FwX21hc2spOw0KPiA+ICsJdWRtYS0+ZGRldi5kZXZp Y2VfYWxsb2NfY2hhbl9yZXNvdXJjZXMgPQ0KPiBhc3QyNjAwX3VkbWFfYWxsb2NfY2hhbl9yZXNv dXJjZXM7DQo+ID4gKwl1ZG1hLT5kZGV2LmRldmljZV9wcmVwX3NsYXZlX3NnID0gYXN0MjYwMF91 ZG1hX3ByZXBfc2xhdmVfc2c7DQo+ID4gKwl1ZG1hLT5kZGV2LmRldmljZV9pc3N1ZV9wZW5kaW5n ID0gYXN0MjYwMF91ZG1hX2lzc3VlX3BlbmRpbmc7DQo+ID4gKwl1ZG1hLT5kZGV2LmRldmljZV90 eF9zdGF0dXMgPSBhc3QyNjAwX3VkbWFfdHhfc3RhdHVzOw0KPiA+ICsJdWRtYS0+ZGRldi5kZXZp Y2VfcGF1c2UgPSBhc3QyNjAwX3VkbWFfcGF1c2U7DQo+ID4gKwl1ZG1hLT5kZGV2LmRldmljZV9y ZXN1bWUgPSBhc3QyNjAwX3VkbWFfcmVzdW1lOw0KPiA+ICsJdWRtYS0+ZGRldi5kZXZpY2VfdGVy bWluYXRlX2FsbCA9IGFzdDI2MDBfdWRtYV90ZXJtaW5hdGU7DQo+ID4gKwl1ZG1hLT5kZGV2LnNy Y19hZGRyX3dpZHRocyA9IEJJVChETUFfU0xBVkVfQlVTV0lEVEhfMV9CWVRFKTsNCj4gPiArCXVk bWEtPmRkZXYuZHN0X2FkZHJfd2lkdGhzID0gQklUKERNQV9TTEFWRV9CVVNXSURUSF8xX0JZVEUp Ow0KPiA+ICsJdWRtYS0+ZGRldi5kaXJlY3Rpb25zID0gQklUKERNQV9ERVZfVE9fTUVNKSB8DQo+ IEJJVChETUFfTUVNX1RPX0RFVik7DQo+ID4gKwl1ZG1hLT5kZGV2LnJlc2lkdWVfZ3JhbnVsYXJp dHkgPSBETUFfUkVTSURVRV9HUkFOVUxBUklUWV9CVVJTVDsNCj4gPiArCXVkbWEtPmRkZXYuZGV2 ID0gZGV2Ow0KPiA+ICsJSU5JVF9MSVNUX0hFQUQoJnVkbWEtPmRkZXYuY2hhbm5lbHMpOw0KPiA+ ICsNCj4gPiArCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01F TSwgMCk7DQo+ID4gKwlpZiAoSVNfRVJSKHJlcykpIHsNCj4gPiArCQlkZXZfZXJyKGRldiwgImNh bm5vdCBnZXQgSU8gcmVzb3VyY2VcbiIpOw0KPiA+ICsJCXJldHVybiAtRU5PREVWOw0KPiA+ICsJ fQ0KPiA+ICsNCj4gPiArCXVkbWEtPnJlZ3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCBy ZXMpOw0KPiA+ICsJaWYgKElTX0VSUih1ZG1hLT5yZWdzKSkgew0KPiA+ICsJCWRldl9lcnIoZGV2 LCAiY2Fubm90IG1hcCBJTyByZWdpc3RlcnNcbiIpOw0KPiA+ICsJCXJldHVybiBQVFJfRVJSKHVk bWEtPnJlZ3MpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIHRpbWVvdXQgdmFsdWU6IDB4MjAw ICogKFBDTEsgKiAxNDQwMCkgKi8NCj4gPiArCXdyaXRlbCgweDIwMCwgdWRtYS0+cmVncyArIFVE TUFfVE1PVVQpOw0KPiA+ICsNCj4gPiArCS8qIGRpc2FibGUgYWxsIGZvciBzYWZldHkgKi8NCj4g PiArCXdyaXRlbCgweDAsIHVkbWEtPnJlZ3MgKyBVRE1BX1RYX0VOKTsNCj4gPiArCXdyaXRlbCgw eDAsIHVkbWEtPnJlZ3MgKyBVRE1BX1JYX0VOKTsNCj4gPiArDQo+ID4gKwl1ZG1hLT5pcnEgPSBw bGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApOw0KPiA+ICsJaWYgKHVkbWEtPmlycSA8IDApDQo+ID4g KwkJcmV0dXJuIHVkbWEtPmlycTsNCj4gPiArDQo+ID4gKwlyYyA9IGRldm1fcmVxdWVzdF9pcnEo JnBkZXYtPmRldiwgdWRtYS0+aXJxLCBhc3QyNjAwX3VkbWFfaXNyLA0KPiA+ICsJCQkgICAgICBJ UlFGX1NIQVJFRCwgREVWSUNFX05BTUUsIHVkbWEpOw0KPiA+ICsJaWYgKHJjKSB7DQo+ID4gKwkJ ZGV2X2VycihkZXYsICJjYW5ub3QgcmVxdWVzdCBJUlFcbiIpOw0KPiA+ICsJCXJldHVybiByYzsN Cj4gPiArCX0NCj4gPiArDQo+ID4gKwlyYyA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKGRldi0+b2Zf bm9kZSwgImRtYS1jaGFubmVscyIsDQo+ICZ1ZG1hLT5uX3Vjcyk7DQo+ID4gKwlpZiAocmMpIHsN Cj4gPiArCQlkZXZfZXJyKGRldiwgImNhbm5vdCBmaW5kIG51bWJlciBvZiBjaGFubmVsc1xuIik7 DQo+ID4gKwkJcmV0dXJuIHJjOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXVkbWEtPnVjcyA9IGRl dm1fa3phbGxvYyhkZXYsDQo+ID4gKwkJCQkgc2l6ZW9mKHN0cnVjdCBhc3QyNjAwX3VkbWFfY2hh bikgKiB1ZG1hLT5uX3VjcywNCj4gR0ZQX0tFUk5FTCk7DQo+ID4gKwlpZiAoIXVkbWEtPnVjcykN Cj4gPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiArDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgdWRt YS0+bl91Y3M7ICsraSkgew0KPiA+ICsJCXVkbWEtPnVjc1tpXS5pc190eCA9ICEoaSAlIDIpOw0K PiANCj4gJiAxIHdvdWxkIG1ha2UgbW9yZSBzZW5zZSBJIHRoaW5rLg0KPiANCj4gPiArCQl1ZG1h LT51Y3NbaV0uY2hhbi5kZXZpY2UgPSAmdWRtYS0+ZGRldjsNCj4gPiArCQl1ZG1hLT51Y3NbaV0u YnVmID0gZG1hbV9hbGxvY19jb2hlcmVudChkZXYsIFVETUFfTUFYX0JVRlNaLA0KPiA+ICsJCQkJ CQkgICAgICAgJnVkbWEtPnVjc1tpXS5idWZfYWRkciwgR0ZQX0tFUk5FTCk7DQo+ID4gKwkJaWYg KCF1ZG1hLT51Y3NbaV0uYnVmKQ0KPiA+ICsJCQlyZXR1cm4gLUVOT01FTTsNCj4gPiArDQo+ID4g KwkJdWRtYS0+dWNzW2ldLnVkbWEgPSB1ZG1hOw0KPiA+ICsJCWxpc3RfYWRkX3RhaWwoJnVkbWEt PnVjc1tpXS5jaGFuLmRldmljZV9ub2RlLA0KPiAmdWRtYS0+ZGRldi5jaGFubmVscyk7DQo+ID4g Kwl9DQo+ID4gKw0KPiA+ICsJcmMgPSBkbWFfYXN5bmNfZGV2aWNlX3JlZ2lzdGVyKCZ1ZG1hLT5k ZGV2KTsNCj4gPiArCWlmIChyYykNCj4gPiArCQlyZXR1cm4gcmM7DQo+ID4gKw0KPiA+ICsJcmMg PSBvZl9kbWFfY29udHJvbGxlcl9yZWdpc3RlcihkZXYtPm9mX25vZGUsIG9mX2RtYV94bGF0ZV9i eV9jaGFuX2lkLA0KPiAmdWRtYS0+ZGRldik7DQo+ID4gKwlpZiAocmMpDQo+ID4gKwkJcmV0dXJu IHJjOw0KPiA+ICsNCj4gPiArCXNwaW5fbG9ja19pbml0KCZ1ZG1hLT5sb2NrKTsNCj4gPiArDQo+ ID4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCB1ZG1hKTsNCj4gPiArDQo+ID4gKwlkZXZf aW5mbyhkZXYsICJtb2R1bGUgbG9hZGVkXG4iKTsNCj4gDQo+IERvbid0IHByaW50IGFueXRoaW5n IHdoZW4gdGhlcmUncyBubyBlcnJvci4NCj4gDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIGludCBhc3QyNjAwX3VkbWFfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpIHsNCj4gPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+ ID4gKwlzdHJ1Y3QgYXN0MjYwMF91ZG1hICp1ZG1hID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRl dik7DQo+ID4gKw0KPiA+ICsJb2ZfZG1hX2NvbnRyb2xsZXJfZnJlZShkZXYtPm9mX25vZGUpOw0K PiA+ICsJZG1hX2FzeW5jX2RldmljZV91bnJlZ2lzdGVyKCZ1ZG1hLT5kZGV2KTsNCj4gPiArDQo+ ID4gKwlkZXZfaW5mbyhkZXYsICJtb2R1bGUgcmVtb3ZlZFxuIik7DQo+IA0KPiBEaXR0by4NCj4g DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25z dCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGFzdDI2MDBfdWRtYV9tYXRjaFtdID0gew0KPiA+ICsJeyAu Y29tcGF0aWJsZSA9ICJhc3BlZWQsYXN0MjYwMC11ZG1hIiB9LA0KPiA+ICsJeyB9LA0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXN0MjYwMF91ZG1h X2RyaXZlciA9IHsNCj4gPiArCS5wcm9iZSA9IGFzdDI2MDBfdWRtYV9wcm9iZSwNCj4gPiArCS5y ZW1vdmUgPSBhc3QyNjAwX3VkbWFfcmVtb3ZlLA0KPiA+ICsJLmRyaXZlciA9IHsNCj4gPiArCQkJ Lm5hbWUgPSBERVZJQ0VfTkFNRSwNCj4gPiArCQkJLm9mX21hdGNoX3RhYmxlID0gYXN0MjYwMF91 ZG1hX21hdGNoLA0KPiA+ICsJfSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK21vZHVsZV9wbGF0Zm9y bV9kcml2ZXIoYXN0MjYwMF91ZG1hX2RyaXZlcik7DQo+ID4gK01PRFVMRV9MSUNFTlNFKCJHUEwi KTsNCj4gPiArTU9EVUxFX0FVVEhPUigiQ2hpYS1XZWkgV2FuZyA8Y2hpYXdlaV93YW5nQGFzcGVl ZHRlY2guY29tIik7DQo+ID4NCj4gDQo+IC0tDQo+ICBpLg0KDQo=