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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B590CC4332F for ; Tue, 8 Nov 2022 13:06:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=EKia0cBbYJymBvn6ZqB/EhbamBJb0L9GIqbpNEZiNr4=; b=cVy831FYjH56yg OVzG+BqOf7WYE7bubwpfrpGHbRzF11vXHLwbVJRcxzMtpjZYGj6v9jBkj+ZiO4aQPQOetS5MFD/22 4cVcMfd9z3afbZvuKeWwYE+4rNMQ6xF5IJwQXIE7w2q4v6A/iYeMnz/o5yp3ZVPpPE6/EGRSJxCAu fDsczSIIPU9cFFWYJRRJ99ttXuhljflGo5Y5hKH6CXa+2hSd6WPTHal85nCfnL3ecGWDzpQqiYsor WDCLZ7SkA47P1OqyScdAeZS1DFGUMoPKZkpCQII7yWXazgfXkqTPA2nUz6Iu+44Pt6MIPQhllt8Zu iA8LbxmuG+RE2ye9EKjA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1osOHa-005RUK-Fm; Tue, 08 Nov 2022 13:04:50 +0000 Received: from mail-db8eur05on2057.outbound.protection.outlook.com ([40.107.20.57] helo=EUR05-DB8-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1osOFM-005Prq-E8; Tue, 08 Nov 2022 13:02:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NzXDd+waPn5e9MiyTYJ2ufTsAfy2YYOkuyqngfdlxhdFC2aWWOzatcJqQAykKGMVW4ydKcj9YAYC6LKcTVqCq1EmvLMLM2zyZ5lmKdP3R7Hc1F5ontDmddiOjTVoxx4upxCgvrusbsv43YRR+PwFQO5VmyfKQ9hLIdr8YfDxNSYnzDzl4EldwHgGHQRMrFieqL6r6GFLnmgVyYL7LzCIBgdf8zJxUUrceEeQrwcl3zFkcPvrS0FxC/zf2UxASqJeDJDDv2HJC0+F2XEMOtck6HCGlEOn8J7mvCiMXZbjMQETVHy7nr5sqA5S9VXF74HQ+JSpq6tmKIcsPFAXue+3cw== 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=5CRpIgsQQkaH4obCqK4SnH8f9uaXFh2mJu+XXIdidw0=; b=QjwRD7UJ0xIy+LbdN3wg5iy9Qyp3SmSPd/inLFQ4/Tq6KlV1oGnyyEzgS7/wzq/eBqKBQplDZfbulCKUxJWROZRKOiMZJDeGUPIXIEO+qkDHZXGXQEfl+AoZgQNif+N+uQy8pB5pk6NuIVWloxeGI6yFfqacgXiBI4m1YCM9dK1CldZHVnBY6zpkiB7dmtajqzh1k3jC6ZDChvqszaMJmhJ3ZBuA94b6IMqy3LjK4KH03nK1nqjHt0QjPg6eUZfKLXUdfr8aYURV1z0YouU9Wl8B6zpse5ehBa4UgA+6/el/6OKu5JdAWlMdcyRjGrxH8aTa1ueOYDF32NrLF5BbtA== 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=5CRpIgsQQkaH4obCqK4SnH8f9uaXFh2mJu+XXIdidw0=; b=Yxwn2I/Hy7ZNEHmJ4Fbg8WAuexkkHx28d5HOZci5FVpOplSxKa1nr0/VRn7GVAbLLH45xoHJahY7OcqE0n1KJJ37jDCgauM4w4wH1QJWAb0OfwBaAc8G9BaZ7AgesSSa8qzQ/bsTmFDRb1bY2MclRMSHbnEcmt7cCaxLVSvXG2g= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9448.eurprd04.prod.outlook.com (2603:10a6:102:2b1::21) by AM0PR04MB7059.eurprd04.prod.outlook.com (2603:10a6:208:192::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.22; Tue, 8 Nov 2022 13:02:26 +0000 Received: from PAXPR04MB9448.eurprd04.prod.outlook.com ([fe80::60b2:4bec:7707:e196]) by PAXPR04MB9448.eurprd04.prod.outlook.com ([fe80::60b2:4bec:7707:e196%4]) with mapi id 15.20.5791.025; Tue, 8 Nov 2022 13:02:26 +0000 From: Sandor Yu To: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, andrzej.hajda@intel.com, neil.armstrong@linaro.org, robert.foss@linaro.org, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, vkoul@kernel.org Cc: robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, linux-imx@nxp.com, tzimmermann@suse.de, lyude@redhat.com, Sandor.yu@nxp.com, javierm@redhat.com, ville.syrjala@linux.intel.com, sam@ravnborg.org, jani.nikula@intel.com, maxime@cerno.tech, penguin-kernel@I-love.SAKURA.ne.jp, oliver.brown@nxp.com Subject: [PATCH v3 08/10] phy: cadence: Add driver for HDP-TX DisplyPort PHY Date: Tue, 8 Nov 2022 21:00:11 +0800 Message-Id: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-ClientProxiedBy: SG2PR02CA0136.apcprd02.prod.outlook.com (2603:1096:4:188::16) To PAXPR04MB9448.eurprd04.prod.outlook.com (2603:10a6:102:2b1::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9448:EE_|AM0PR04MB7059:EE_ X-MS-Office365-Filtering-Correlation-Id: 5a7b6701-ee69-46d1-9088-08dac1897c24 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uGi4BP75+G6p6/yTBCyuxwDiZNnEoFWRiqp3/LpHzpKvlyM2czOz7LS4XPHoy5AyMtbw/4hqz612rebngPxTcUVD7AiJd9iG+1Me0cwJ2qB+ujTdqufKnrqlWu6iX2upgTZtv9icqeebVYTUl3dfQHk+ub5rjCXGwfw5FPgaQS+SS+JJGhpjokUMRTmROXf94S3nRimvoBCuehvfnZyCvypgWZZ9j+Cpum80vI0bMgx7qokDMUFzq8g9+hqSWIcNL1KeiqFDl6hGYr+yFR0CqhjinfK+N0VXk/q2iGB5djWXK+heIKpDS4gQEXhn6fNk5DYfA04p8njodIuwwEQ7PJDjnROPpRmFlXQRtqCl0qWFAiREJBjZTPdU11pwu225YBnvS1SjV9UdyVXDpdKzXxfraVroY9p26rgp0bKDgPEOkyXokt5xsGNjEYbRTh4xj08DsD0flitYMtsS+35IKAz/PoQWWotI37m42jTgptWnGTOplBmOIb1Gy3FOt89ijuAUYWgYwMj1CIJ7jxFD1EHZmpHNegJNuk/PL+xGuI8GxKJfHXjMYZ6SEDswQDYkeVuD5x2yRUUCOF/tgEemHiQ0onw1sNWtFpPF+kgmMyOA+hwRqHmejh5Qj3lxabRacAj2QtfhJGXId0b2F8fVkYEggFShEe/v9f6eKvWuXT0uEXgQZK+uM296dDbIPim5C4BJbXZhtozDTrawXRJHKNj7Qpp5SVMEVN1jIddBFlGcUhNAx9qCOi+igwuUJCVlidheYNVQ5/SYYzimG8gizmLDaP92Ichzt7KpzB4YOlU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB9448.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(376002)(346002)(136003)(366004)(396003)(39860400002)(451199015)(86362001)(921005)(26005)(6512007)(41300700001)(6666004)(478600001)(38350700002)(2906002)(38100700002)(36756003)(2616005)(8936002)(186003)(7416002)(5660300002)(8676002)(66556008)(6486002)(4326008)(316002)(66476007)(83380400001)(30864003)(52116002)(6506007)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ME0zNjVhemRPSjV0bEREbWJha09MbTBHWng5OWN4K1dUb21TOUx2cHV0NFRv?= =?utf-8?B?eUh1UW1oK1AyT1dpSmErbE1MK1g4dy9DSW5TMXI3MVpHZG1QSjZCaHpkV2ZZ?= =?utf-8?B?VlJZU1YweUpRYTF4aE1uVVVLSXhEQ3JsR29iZjZ6UFVKVndKYVVlVFpiTW1k?= =?utf-8?B?QTNreVBlYVcrYUhiTzRodnZjbnZBS2MyVjhGeUR2RG1mMks0MzJVRTVZL0VB?= =?utf-8?B?WFE3aGJLSmhmUTBHQnRPWjc0RmFSVkNRNDRETFA3bVlNYmdZVUlWYkxBUFYw?= =?utf-8?B?cnYvSisxYWZEZXliUG9JZEwvdDRlNXYxcGNPcE9GemlvRTVEdEU1TFlReGhH?= =?utf-8?B?RUhDbjlHdVJlaXovcG9MK1dTRWJaaVdGb2ZJN3kzTW9TTUJpVkVMdFprUktm?= =?utf-8?B?WERJcHI0OVVyL2lmV09ib3B4RkQzN3RkQm5VeTdza1pNQnNySnBpaExzYnpZ?= =?utf-8?B?YlZUampZZ254MkJlUS9rbDdVOWVUWVJPQVludHlHOEYveHliRGNXS1dRYlZR?= =?utf-8?B?WE1TS1JpU3RDVmM1U2s2NUNRR2N5NWRtaytPT3ozL3UzTTNmTFYrb2MyWDBj?= =?utf-8?B?dHJrZ3hPQVFSVjM3cmhkelJQQjNMNkNpMFhrSzNLSFY2R1Ixa2g0WkVPa2Ey?= =?utf-8?B?RnU3TmJ1ZGhHclJXdkppeWEwS1BCa2RJNEtwMldsVlRCa2NKQkRza3lJSkhK?= =?utf-8?B?MlUvVlByOEI2VU9UeGdZN3JPbloxQnAvVVRDM0tISW5BMHNzZ0VuVlFjV1pZ?= =?utf-8?B?MUw3MzlyNUtQSjZMd2VvNnJWTVg4c1dBWlVYa2l2am5OdzVmWjA0b3RQa0o0?= =?utf-8?B?QmxELzh3bXNQRlBCV2prZGlkeWhVcitzdmwzLzBWYVNwOWxQbWZRdUI3SzVK?= =?utf-8?B?bUxRYU4zbVhaTVNvYXAxaGR0N3RzMmJEa3RGb2NrMWJMOWpyQ0ZlamI5aVk4?= =?utf-8?B?SFdKK3crRmJkZ29kUWg2SjNEM2d1SG5KRzdJLzZtTkZRamo3VkFOOTlPNyt2?= =?utf-8?B?NzJqQkdXR0RxSnN1UU9tWUcvRzhiaTlVaGxOU2Q4YlMyZEdhZVdlUHJmZXEy?= =?utf-8?B?VnVkbG1VMWVnZFdHRUFkR0pKbFdUZ2RFKzF2aWN4ajVQdUVXdmViblJGaWhl?= =?utf-8?B?RWRsUW9UbGpGcjNoRWVVQkh6cGtNb3J0T2czR1FmZkZBRGF3eEVuVE1va3M3?= =?utf-8?B?WUNaUTFuZTlrL3Z4MTNkNzI3Q2JWWndGTUVTYnIvK2ZSelBpczVQYkl1cFhK?= =?utf-8?B?UFlQTjVrNGtOenN4NlhDUy9kNlVpUnZFcHFLRXNNQ24zZkxabkZxTnhjcTFD?= =?utf-8?B?VVRoS2RSZzBSc3BhSURzdjRGRXdweVlYd01JVVQwOUJISXdEY0I5ODM2NHFt?= =?utf-8?B?dTljcUZrQ0ZZajZxY24vRWFDSXZGclZTYlRzaWRkOUt2WG9TMjBBTVVTQ3NN?= =?utf-8?B?eFdLTW1qNmR4R0RQd1RLZlo0Tk1YQkpVblhpVzBwK01vL0dPNmdNaDVOdHJz?= =?utf-8?B?UThraHp2bkZ0bURjUXlOUEdwVUtjeWpaZndTNHk3Z3dhNUszeHR2bmtaNUJR?= =?utf-8?B?RzV0aHhlTlpvbGRSbEFlOUZNT2FRSzk3bnU4Qm94SmxXYkdjSElxSFg0eDc2?= =?utf-8?B?SUtOeHNzTUVoNTd4ejJoZDZEOHBRVlFBUFg4cjZvOFNhVExXREZGUXpISGFt?= =?utf-8?B?NzFpclBsRnBqMythc1ByOUZFWENQNU9yQUxwRjNSNzU4Um5zUi8zVkRrZGtN?= =?utf-8?B?TDdJWEVOVU9WdHgxank5ZTRDTHZBZTJKV3lLKzF6MG5xSnNzZGhSYlY4NmpI?= =?utf-8?B?cFRab3BBOHlnbHJCUzNUdTVSOGJ2WmZyUi9VMkhEbFRpSTIrQm44Ry9sN251?= =?utf-8?B?RGFBQVRiRklKOE41b01PZ1JMSVkxQ2hOcjVsTExHcURPN0ZzUTRyUWZJTEt3?= =?utf-8?B?THdEUXcwb2d1MDBpTXRveC8ycUQ0bkI0OVIvMXhDa20wTWpwTnhaWnlrSXcz?= =?utf-8?B?ZVp6aVpsaFJ3QmkyUVUrNnFDZHNOdXE2UFNWQVNKT3pSR01NMGwxNXE4bHQ5?= =?utf-8?B?V3NhdHY2ZFE0bTNJR2w2dWQ4cXhCYnpETEhKakNiUHpoOEdRREorbXE4ZHB3?= =?utf-8?Q?Od0BrHt26qbpUmdGdTBcos0xS?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5a7b6701-ee69-46d1-9088-08dac1897c24 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9448.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Nov 2022 13:02:26.6766 (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: MbZXDGjke8dwjh4QTfUczCsW3KDQc48AfPc7e3edp9ifzDjrMJzhWwQc2kzgqRSt75ytGi0gfxIkRhc7jP2tSA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7059 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221108_050232_699352_AD79BA15 X-CRM114-Status: GOOD ( 14.12 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org QWRkIENhZGVuY2UgSERQLVRYIERpc3BsYXlQb3J0IFBIWSBkcml2ZXIuCgpDYWRlbmNlIEhEUC1U WCBQSFkgY291bGQgYmUgcHV0IGluIGVpdGhlciBEUCBtb2RlIG9yCkhETUkgbW9kZSBiYXNlIG9u IHRoZSBjb25maWd1cmF0aW9uIGNob3Nlbi4KRGlzcGxheVBvcnQgUEhZIG1vZGUgaXMgY29uZmln dXJhdGVkIGluIHRoZSBkcml2ZXIuCgpTaWduZWQtb2ZmLWJ5OiBTYW5kb3IgWXUgPFNhbmRvci55 dUBueHAuY29tPgotLS0KIGRyaXZlcnMvcGh5L2NhZGVuY2UvS2NvbmZpZyAgICAgICAgICAgICAg ICB8ICAgOCArCiBkcml2ZXJzL3BoeS9jYWRlbmNlL01ha2VmaWxlICAgICAgICAgICAgICAgfCAg IDEgKwogZHJpdmVycy9waHkvY2FkZW5jZS9waHktY2FkZW5jZS1oZHB0eC1kcC5jIHwgNzc0ICsr KysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA3ODMgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGh5L2NhZGVuY2UvcGh5LWNhZGVuY2UtaGRwdHgt ZHAuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2NhZGVuY2UvS2NvbmZpZyBiL2RyaXZlcnMv cGh5L2NhZGVuY2UvS2NvbmZpZwppbmRleCAxYWRkZTJkOTlhZTcuLjFlMTkxNGQzYWZkYyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9waHkvY2FkZW5jZS9LY29uZmlnCisrKyBiL2RyaXZlcnMvcGh5L2Nh ZGVuY2UvS2NvbmZpZwpAQCAtNDYsMyArNDYsMTEgQEAgY29uZmlnIFBIWV9DQURFTkNFX1NBTFZP CiAJICBFbmFibGUgdGhpcyB0byBzdXBwb3J0IHRoZSBDYWRlbmNlIFNBTFZPIFBIWSBkcml2ZXIs CiAJICB0aGlzIFBIWSBpcyBhIGxlZ2FjeSBQSFksIGFuZCBvbmx5IGFyZSB1c2VkIGZvciBVU0Iz CiAJICBhbmQgVVNCMi4KKworY29uZmlnIFBIWV9DQURFTkNFX0hEUFRYX0RQCisJdHJpc3RhdGUg IkNhZGVuY2UgSERQVFggRFAgUEhZIERyaXZlciIKKwlkZXBlbmRzIG9uIE9GICYmIEhBU19JT01F TQorCWRlcGVuZHMgb24gQ09NTU9OX0NMSworCXNlbGVjdCBHRU5FUklDX1BIWQorCWhlbHAKKwkg IEVuYWJsZSB0aGlzIHRvIHN1cHBvcnQgdGhlIENhZGVuY2UgSERQVFggRFAgUEhZIGRyaXZlcgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvY2FkZW5jZS9NYWtlZmlsZSBiL2RyaXZlcnMvcGh5L2Nh ZGVuY2UvTWFrZWZpbGUKaW5kZXggZTE3ZjAzNWRkZWNlLi5mYmRiMGJjNWZmMTEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvcGh5L2NhZGVuY2UvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9waHkvY2FkZW5j ZS9NYWtlZmlsZQpAQCAtNCwzICs0LDQgQEAgb2JqLSQoQ09ORklHX1BIWV9DQURFTkNFX0RQSFkp CSs9IGNkbnMtZHBoeS5vCiBvYmotJChDT05GSUdfUEhZX0NBREVOQ0VfRFBIWV9SWCkJKz0gY2Ru cy1kcGh5LXJ4Lm8KIG9iai0kKENPTkZJR19QSFlfQ0FERU5DRV9TSUVSUkEpCSs9IHBoeS1jYWRl bmNlLXNpZXJyYS5vCiBvYmotJChDT05GSUdfUEhZX0NBREVOQ0VfU0FMVk8pCSs9IHBoeS1jYWRl bmNlLXNhbHZvLm8KK29iai0kKENPTkZJR19QSFlfQ0FERU5DRV9IRFBUWF9EUCkJKz0gcGh5LWNh ZGVuY2UtaGRwdHgtZHAubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvY2FkZW5jZS9waHktY2Fk ZW5jZS1oZHB0eC1kcC5jIGIvZHJpdmVycy9waHkvY2FkZW5jZS9waHktY2FkZW5jZS1oZHB0eC1k cC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDc5ZDQzNzcyZDFk Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9waHkvY2FkZW5jZS9waHktY2FkZW5jZS1oZHB0 eC1kcC5jCkBAIC0wLDAgKzEsNzc0IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMC1vbmx5CisvKgorICogQ2FkZW5jZSBIRFAtVFggRGlzcGxheSBQb3J0IEludGVyZmFjZSAo RFApIFBIWSBkcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTlhQIFNlbWljb25kdWN0 b3IsIEluYy4KKyAqLworI2luY2x1ZGUgPGFzbS91bmFsaWduZWQuaD4KKyNpbmNsdWRlIDxsaW51 eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9waHkv cGh5Lmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGlu dXgvaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4KKworI2luY2x1ZGUgPGRybS9icmlk Z2UvY2Rucy1taGRwLW1haWxib3guaD4KKworI2RlZmluZSBBRERSX1BIWV9BRkUJMHg4MDAwMAor CisvKiBQSFkgcmVnaXN0ZXJzICovCisjZGVmaW5lIENNTl9TU01fQklBU19UTVIgICAgICAgICAg ICAgICAgMHgwMDIyCisjZGVmaW5lIENNTl9QTExTTTBfUExMRU5fVE1SICAgICAgICAgICAgMHgw MDI5CisjZGVmaW5lIENNTl9QTExTTTBfUExMUFJFX1RNUiAgICAgICAgICAgMHgwMDJBCisjZGVm aW5lIENNTl9QTExTTTBfUExMVlJFRl9UTVIgICAgICAgICAgMHgwMDJCCisjZGVmaW5lIENNTl9Q TExTTTBfUExMTE9DS19UTVIgICAgICAgICAgMHgwMDJDCisjZGVmaW5lIENNTl9QTExTTTBfVVNF Ul9ERUZfQ1RSTCAgICAgICAgMHgwMDJGCisjZGVmaW5lIENNTl9QU01fQ0xLX0NUUkwgICAgICAg ICAgICAgICAgMHgwMDYxCisjZGVmaW5lIENNTl9DRElBR19SRUZDTEtfQ1RSTCAgICAgICAgICAg MHgwMDYyCisjZGVmaW5lIENNTl9QTEwwX1ZDT0NBTF9TVEFSVCAgICAgICAgICAgMHgwMDgxCisj ZGVmaW5lIENNTl9QTEwwX1ZDT0NBTF9JTklUX1RNUiAgICAgICAgMHgwMDg0CisjZGVmaW5lIENN Tl9QTEwwX1ZDT0NBTF9JVEVSX1RNUiAgICAgICAgMHgwMDg1CisjZGVmaW5lIENNTl9QTEwwX0lO VERJViAgICAgICAgICAgICAgICAgMHgwMDk0CisjZGVmaW5lIENNTl9QTEwwX0ZSQUNESVYgICAg ICAgICAgICAgICAgMHgwMDk1CisjZGVmaW5lIENNTl9QTEwwX0hJR0hfVEhSICAgICAgICAgICAg ICAgMHgwMDk2CisjZGVmaW5lIENNTl9QTEwwX0RTTV9ESUFHICAgICAgICAgICAgICAgMHgwMDk3 CisjZGVmaW5lIENNTl9QTEwwX1NTX0NUUkwxICAgICAgICAgICAgICAgMHgwMDk4CisjZGVmaW5l IENNTl9QTEwwX1NTX0NUUkwyICAgICAgICAgICAgICAgMHgwMDk5CisjZGVmaW5lIENNTl9JQ0FM X0lOSVRfVE1SICAgICAgICAgICAgICAgMHgwMEM0CisjZGVmaW5lIENNTl9JQ0FMX0lURVJfVE1S ICAgICAgICAgICAgICAgMHgwMEM1CisjZGVmaW5lIENNTl9SWENBTF9JTklUX1RNUiAgICAgICAg ICAgICAgMHgwMEQ0CisjZGVmaW5lIENNTl9SWENBTF9JVEVSX1RNUiAgICAgICAgICAgICAgMHgw MEQ1CisjZGVmaW5lIENNTl9UWFBVQ0FMX0NUUkwgICAgICAgICAgICAgICAgMHgwMEUwCisjZGVm aW5lIENNTl9UWFBVQ0FMX0lOSVRfVE1SICAgICAgICAgICAgMHgwMEU0CisjZGVmaW5lIENNTl9U WFBVQ0FMX0lURVJfVE1SICAgICAgICAgICAgMHgwMEU1CisjZGVmaW5lIENNTl9UWFBEQ0FMX0NU UkwgICAgICAgICAgICAgICAgMHgwMEYwCisjZGVmaW5lIENNTl9UWFBEQ0FMX0lOSVRfVE1SICAg ICAgICAgICAgMHgwMEY0CisjZGVmaW5lIENNTl9UWFBEQ0FMX0lURVJfVE1SICAgICAgICAgICAg MHgwMEY1CisjZGVmaW5lIENNTl9JQ0FMX0FESl9JTklUX1RNUiAgICAgICAgICAgMHgwMTAyCisj ZGVmaW5lIENNTl9JQ0FMX0FESl9JVEVSX1RNUiAgICAgICAgICAgMHgwMTAzCisjZGVmaW5lIENN Tl9SWF9BREpfSU5JVF9UTVIgICAgICAgICAgICAgMHgwMTA2CisjZGVmaW5lIENNTl9SWF9BREpf SVRFUl9UTVIgICAgICAgICAgICAgMHgwMTA3CisjZGVmaW5lIENNTl9UWFBVX0FESl9DVFJMICAg ICAgICAgICAgICAgMHgwMTA4CisjZGVmaW5lIENNTl9UWFBVX0FESl9JTklUX1RNUiAgICAgICAg ICAgMHgwMTBBCisjZGVmaW5lIENNTl9UWFBVX0FESl9JVEVSX1RNUiAgICAgICAgICAgMHgwMTBC CisjZGVmaW5lIENNTl9UWFBEX0FESl9DVFJMICAgICAgICAgICAgICAgMHgwMTBjCisjZGVmaW5l IENNTl9UWFBEX0FESl9JTklUX1RNUiAgICAgICAgICAgMHgwMTBFCisjZGVmaW5lIENNTl9UWFBE X0FESl9JVEVSX1RNUiAgICAgICAgICAgMHgwMTBGCisjZGVmaW5lIENNTl9ESUFHX1BMTDBfRkJI X09WUkQgICAgICAgICAgMHgwMUMwCisjZGVmaW5lIENNTl9ESUFHX1BMTDBfRkJMX09WUkQgICAg ICAgICAgMHgwMUMxCisjZGVmaW5lIENNTl9ESUFHX1BMTDBfT1ZSRCAgICAgICAgICAgICAgMHgw MUMyCisjZGVmaW5lIENNTl9ESUFHX1BMTDBfVEVTVF9NT0RFICAgICAgICAgMHgwMUM0CisjZGVm aW5lIENNTl9ESUFHX1BMTDBfVjJJX1RVTkUgICAgICAgICAgMHgwMUM1CisjZGVmaW5lIENNTl9E SUFHX1BMTDBfQ1BfVFVORSAgICAgICAgICAgMHgwMUM2CisjZGVmaW5lIENNTl9ESUFHX1BMTDBf TEZfUFJPRyAgICAgICAgICAgMHgwMUM3CisjZGVmaW5lIENNTl9ESUFHX1BMTDBfUFRBVElTX1RV TkUxICAgICAgMHgwMUM4CisjZGVmaW5lIENNTl9ESUFHX1BMTDBfUFRBVElTX1RVTkUyICAgICAg MHgwMUM5CisjZGVmaW5lIENNTl9ESUFHX1BMTDBfSU5DTEtfQ1RSTCAgICAgICAgMHgwMUNBCisj ZGVmaW5lIENNTl9ESUFHX1BMTDBfUFhMX0RJVkggICAgICAgICAgMHgwMUNCCisjZGVmaW5lIENN Tl9ESUFHX1BMTDBfUFhMX0RJVkwgICAgICAgICAgMHgwMUNDCisjZGVmaW5lIENNTl9ESUFHX0hT Q0xLX1NFTCAgICAgICAgICAgICAgMHgwMUUwCisjZGVmaW5lIENNTl9ESUFHX1BFUl9DQUxfQURK ICAgICAgICAgICAgMHgwMUVDCisjZGVmaW5lIENNTl9ESUFHX0NBTF9DVFJMICAgICAgICAgICAg ICAgMHgwMUVECisjZGVmaW5lIENNTl9ESUFHX0FDWUEgICAgICAgICAgICAgICAgICAgMHgwMUZG CisjZGVmaW5lIFhDVlJfUFNNX1JDVFJMICAgICAgICAgICAgICAgICAgMHg0MDAxCisjZGVmaW5l IFhDVlJfUFNNX0NBTF9UTVIgICAgICAgICAgICAgICAgMHg0MDAyCisjZGVmaW5lIFhDVlJfUFNN X0EwSU5fVE1SICAgICAgICAgICAgICAgMHg0MDAzCisjZGVmaW5lIFRYX1RYQ0NfQ0FMX1NDTFJf TVVMVF8wICAgICAgICAgMHg0MDQ3CisjZGVmaW5lIFRYX1RYQ0NfQ1BPU1RfTVVMVF8wMF8wICAg ICAgICAgMHg0MDRDCisjZGVmaW5lIFRYX1RYQ0NfTUdORlNfTVVMVF8wMDBfMCAgICAgICAgMHg0 MDUwCisjZGVmaW5lIFhDVlJfRElBR19QTExEUkNfQ1RSTCAgICAgICAgICAgMHg0MEUwCisjZGVm aW5lIFhDVlJfRElBR19QTExEUkNfQ1RSTCAgICAgICAgICAgMHg0MEUwCisjZGVmaW5lIFhDVlJf RElBR19IU0NMS19TRUwgICAgICAgICAgICAgMHg0MEUxCisjZGVmaW5lIFhDVlJfRElBR19CSURJ X0NUUkwgICAgICAgICAgICAgMHg0MEU4CisjZGVmaW5lIFhDVlJfRElBR19MQU5FX0ZDTV9FTl9N R05fVE1SICAgMHg0MEYyCisjZGVmaW5lIFhDVlJfRElBR19MQU5FX0ZDTV9FTl9NR04gICAgICAg MHg0MEYyCisjZGVmaW5lIFRYX1BTQ19BMCAgICAgICAgICAgICAgICAgICAgICAgMHg0MTAwCisj ZGVmaW5lIFRYX1BTQ19BMSAgICAgICAgICAgICAgICAgICAgICAgMHg0MTAxCisjZGVmaW5lIFRY X1BTQ19BMiAgICAgICAgICAgICAgICAgICAgICAgMHg0MTAyCisjZGVmaW5lIFRYX1BTQ19BMyAg ICAgICAgICAgICAgICAgICAgICAgMHg0MTAzCisjZGVmaW5lIFRYX1JDVkRFVF9DVFJMICAgICAg ICAgICAgICAgICAgMHg0MTIwCisjZGVmaW5lIFRYX1JDVkRFVF9FTl9UTVIgICAgICAgICAgICAg ICAgMHg0MTIyCisjZGVmaW5lIFRYX1JDVkRFVF9FTl9UTVIgICAgICAgICAgICAgICAgMHg0MTIy CisjZGVmaW5lIFRYX1JDVkRFVF9TVF9UTVIgICAgICAgICAgICAgICAgMHg0MTIzCisjZGVmaW5l IFRYX1JDVkRFVF9TVF9UTVIgICAgICAgICAgICAgICAgMHg0MTIzCisjZGVmaW5lIFRYX0JJU1Rf Q1RSTCAgICAgICAgICAgICAgICAgICAgMHg0MTQwCisjZGVmaW5lIFRYX0JJU1RfVUREV1IgICAg ICAgICAgICAgICAgICAgMHg0MTQxCisjZGVmaW5lIFRYX0RJQUdfVFhfQ1RSTCAgICAgICAgICAg ICAgICAgMHg0MUUwCisjZGVmaW5lIFRYX0RJQUdfVFhfRFJWICAgICAgICAgICAgICAgICAgMHg0 MUUxCisjZGVmaW5lIFRYX0RJQUdfQkdSRUZfUFJFRFJWX0RFTEFZICAgICAgMHg0MUU3CisjZGVm aW5lIFRYX0RJQUdfQkdSRUZfUFJFRFJWX0RFTEFZICAgICAgMHg0MUU3CisjZGVmaW5lIFhDVlJf UFNNX1JDVFJMXzEgICAgICAgICAgICAgICAgMHg0MjAxCisjZGVmaW5lIFRYX1RYQ0NfQ0FMX1ND TFJfTVVMVF8xICAgICAgICAgMHg0MjQ3CisjZGVmaW5lIFRYX1RYQ0NfQ1BPU1RfTVVMVF8wMF8x ICAgICAgICAgMHg0MjRDCisjZGVmaW5lIFRYX1RYQ0NfTUdORlNfTVVMVF8wMDBfMSAgICAgICAg MHg0MjUwCisjZGVmaW5lIFhDVlJfRElBR19QTExEUkNfQ1RSTF8xICAgICAgICAgMHg0MkUwCisj ZGVmaW5lIFhDVlJfRElBR19IU0NMS19TRUxfMSAgICAgICAgICAgMHg0MkUxCisjZGVmaW5lIFhD VlJfRElBR19MQU5FX0ZDTV9FTl9NR05fVE1SXzEgMHg0MkYyCisjZGVmaW5lIFRYX1JDVkRFVF9F Tl9UTVJfMSAgICAgICAgICAgICAgMHg0MzIyCisjZGVmaW5lIFRYX1JDVkRFVF9TVF9UTVJfMSAg ICAgICAgICAgICAgMHg0MzIzCisjZGVmaW5lIFRYX0RJQUdfQUNZQV8wICAgICAgICAgICAgICAg ICAgMHg0MUZGCisjZGVmaW5lIFRYX0RJQUdfQUNZQV8xICAgICAgICAgICAgICAgICAgMHg0M0ZG CisjZGVmaW5lIFRYX0RJQUdfQUNZQV8yICAgICAgICAgICAgICAgICAgMHg0NUZGCisjZGVmaW5l IFRYX0RJQUdfQUNZQV8zICAgICAgICAgICAgICAgICAgMHg0N0ZGCisjZGVmaW5lIFRYX0FOQV9D VFJMX1JFR18xICAgICAgICAgICAgICAgMHg1MDIwCisjZGVmaW5lIFRYX0FOQV9DVFJMX1JFR18y ICAgICAgICAgICAgICAgMHg1MDIxCisjZGVmaW5lIFRYREFfQ09FRkZfQ0FMQyAgICAgICAgICAg ICAgICAgMHg1MDIyCisjZGVmaW5lIFRYX0RJR19DVFJMX1JFR18xICAgICAgICAgICAgICAgMHg1 MDIzCisjZGVmaW5lIFRYX0RJR19DVFJMX1JFR18yICAgICAgICAgICAgICAgMHg1MDI0CisjZGVm aW5lIFRYREFfQ1lBX0FVWERBX0NZQSAgICAgICAgICAgICAgMHg1MDI1CisjZGVmaW5lIFRYX0FO QV9DVFJMX1JFR18zICAgICAgICAgICAgICAgMHg1MDI2CisjZGVmaW5lIFRYX0FOQV9DVFJMX1JF R180ICAgICAgICAgICAgICAgMHg1MDI3CisjZGVmaW5lIFRYX0FOQV9DVFJMX1JFR181ICAgICAg ICAgICAgICAgMHg1MDI5CisjZGVmaW5lIFJYX1BTQ19BMCAgICAgICAgICAgICAgICAgICAgICAg MHg4MDAwCisjZGVmaW5lIFJYX1BTQ19DQUwgICAgICAgICAgICAgICAgICAgICAgMHg4MDA2Cisj ZGVmaW5lIFBNQV9MQU5FX0NGRyAgICAgICAgICAgICAgICAgICAgMHhDMDAwCisjZGVmaW5lIFBJ UEVfQ01OX0NUUkwxICAgICAgICAgICAgICAgICAgMHhDMDAxCisjZGVmaW5lIFBJUEVfQ01OX0NU UkwyICAgICAgICAgICAgICAgICAgMHhDMDAyCisjZGVmaW5lIFBJUEVfQ09NX0xPQ0tfQ0ZHMSAg ICAgICAgICAgICAgMHhDMDAzCisjZGVmaW5lIFBJUEVfQ09NX0xPQ0tfQ0ZHMiAgICAgICAgICAg ICAgMHhDMDA0CisjZGVmaW5lIFBJUEVfUkNWX0RFVF9JTkggICAgICAgICAgICAgICAgMHhDMDA1 CisjZGVmaW5lIFBIWV9IRFBfTU9ERV9DVFJMICAgICAgICAgICAgICAgMHhDMDA4CisjZGVmaW5l IFBIWV9IRFBfQ0xLX0NUTCAgICAgICAgICAgICAgICAgMHhDMDA5CisjZGVmaW5lIFNUUyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHhDMDBGCisjZGVmaW5lIFBIWV9JU09fQ01OX0NUUkwg ICAgICAgICAgICAgICAgMHhDMDEwCisjZGVmaW5lIFBIWV9JU09fQ01OX0NUUkwgICAgICAgICAg ICAgICAgMHhDMDEwCisjZGVmaW5lIFBIWV9IRFBfVFhfQ1RMX0wwICAgICAgICAgICAgICAgMHhD NDA4CisjZGVmaW5lIFBIWV9EUF9UWF9DVEwgICAgICAgICAgICAgICAgICAgMHhDNDA4CisjZGVm aW5lIFBIWV9IRFBfVFhfQ1RMX0wxICAgICAgICAgICAgICAgMHhDNDQ4CisjZGVmaW5lIFBIWV9I RFBfVFhfQ1RMX0wyICAgICAgICAgICAgICAgMHhDNDg4CisjZGVmaW5lIFBIWV9IRFBfVFhfQ1RM X0wzICAgICAgICAgICAgICAgMHhDNEM4CisjZGVmaW5lIFBIWV9QTUFfQ01OX0NUUkwxICAgICAg ICAgICAgICAgMHhDODAwCisjZGVmaW5lIFBNQV9DTU5fQ1RSTDEgICAgICAgICAgICAgICAgICAg MHhDODAwCisjZGVmaW5lIFBIWV9QTUFfSVNPX0NNTl9DVFJMICAgICAgICAgICAgMHhDODEwCisj ZGVmaW5lIFBIWV9QTUFfSVNPX1BMTF9DVFJMMSAgICAgICAgICAgMHhDODEyCisjZGVmaW5lIFBI WV9QTUFfSVNPTEFUSU9OX0NUUkwgICAgICAgICAgMHhDODFGCisjZGVmaW5lIFBIWV9JU09MQVRJ T05fQ1RSTCAgICAgICAgICAgICAgMHhDODFGCisjZGVmaW5lIFBIWV9QTUFfSVNPX1hDVlJfQ1RS TCAgICAgICAgICAgMHhDQzExCisjZGVmaW5lIFBIWV9QTUFfSVNPX0xJTktfTU9ERSAgICAgICAg ICAgMHhDQzEyCisjZGVmaW5lIFBIWV9QTUFfSVNPX1BXUlNUX0NUUkwgICAgICAgICAgMHhDQzEz CisjZGVmaW5lIFBIWV9QTUFfSVNPX1RYX0RBVEFfTE8gICAgICAgICAgMHhDQzE0CisjZGVmaW5l IFBIWV9QTUFfSVNPX1RYX0RBVEFfSEkgICAgICAgICAgMHhDQzE1CisjZGVmaW5lIFBIWV9QTUFf SVNPX1JYX0RBVEFfTE8gICAgICAgICAgMHhDQzE2CisjZGVmaW5lIFBIWV9QTUFfSVNPX1JYX0RB VEFfSEkgICAgICAgICAgMHhDQzE3CisKKyNkZWZpbmUgTUFYX05VTV9MQU5FUwkJNAorI2RlZmlu ZSBERUZBVUxUX01BWF9CSVRfUkFURQk1NDAwIC8qIGluIE1icHMgKi8KKworI2RlZmluZSBSRUZf Q0xLXzI3TUhaCQkyNzAwMDAwMAorCitlbnVtIGRwX2xpbmtfcmF0ZSB7CisJUkFURV8xXzYgPSAx NjIwMDAsCisJUkFURV8yXzEgPSAyMTYwMDAsCisJUkFURV8yXzQgPSAyNDMwMDAsCisJUkFURV8y XzcgPSAyNzAwMDAsCisJUkFURV8zXzIgPSAzMjQwMDAsCisJUkFURV80XzMgPSA0MzIwMDAsCisJ UkFURV81XzQgPSA1NDAwMDAsCisJUkFURV84XzEgPSA4MTAwMDAsCit9OworCitzdHJ1Y3QgcGh5 X3BsbF9yZWcgeworCXUxNiB2YWxbN107CisJdTMyIGFkZHI7Cit9OworCitzdGF0aWMgY29uc3Qg c3RydWN0IHBoeV9wbGxfcmVnIHBoeV9wbGxfMjdtX2NmZ1tdID0geworCS8qICAxLjYyICAgIDIu MTYgICAgMi40MyAgICAyLjcgICAgIDMuMjQgICAgNC4zMiAgICA1LjQgICAgICByZWdpc3RlciBh ZGRyZXNzICovCisJe3sgMHgwMTBFLCAweDAxMEUsIDB4MDEwRSwgMHgwMTBFLCAweDAxMEUsIDB4 MDEwRSwgMHgwMTBFIH0sIENNTl9QTEwwX1ZDT0NBTF9JTklUX1RNUiB9LAorCXt7IDB4MDAxQiwg MHgwMDFCLCAweDAwMUIsIDB4MDAxQiwgMHgwMDFCLCAweDAwMUIsIDB4MDAxQiB9LCBDTU5fUExM MF9WQ09DQUxfSVRFUl9UTVIgfSwKKwl7eyAweDMwQjksIDB4MzA4NywgMHgzMDk2LCAweDMwQjQs IDB4MzBCOSwgMHgzMDg3LCAweDMwQjQgfSwgQ01OX1BMTDBfVkNPQ0FMX1NUQVJUIH0sCisJe3sg MHgwMDc3LCAweDAwOUYsIDB4MDBCMywgMHgwMEM3LCAweDAwNzcsIDB4MDA5RiwgMHgwMEM3IH0s IENNTl9QTEwwX0lOVERJViB9LAorCXt7IDB4RjlEQSwgMHhGN0NELCAweEY2QzcsIDB4RjVDMSwg MHhGOURBLCAweEY3Q0QsIDB4RjVDMSB9LCBDTU5fUExMMF9GUkFDRElWIH0sCisJe3sgMHgwMDFF LCAweDAwMjgsIDB4MDAyRCwgMHgwMDMyLCAweDAwMUUsIDB4MDAyOCwgMHgwMDMyIH0sIENNTl9Q TEwwX0hJR0hfVEhSIH0sCisJe3sgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAweDAw MjAsIDB4MDAyMCwgMHgwMDIwIH0sIENNTl9QTEwwX0RTTV9ESUFHIH0sCisJe3sgMHgwMDAwLCAw eDEwMDAsIDB4MTAwMCwgMHgxMDAwLCAweDAwMDAsIDB4MTAwMCwgMHgxMDAwIH0sIENNTl9QTExT TTBfVVNFUl9ERUZfQ1RSTCB9LAorCXt7IDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwg MHgwMDAwLCAweDAwMDAsIDB4MDAwMCB9LCBDTU5fRElBR19QTEwwX09WUkQgfSwKKwl7eyAweDAw MDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAgfSwgQ01O X0RJQUdfUExMMF9GQkhfT1ZSRCB9LAorCXt7IDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAw MCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCB9LCBDTU5fRElBR19QTEwwX0ZCTF9PVlJEIH0sCisJ e3sgMHgwMDA2LCAweDAwMDcsIDB4MDAwNywgMHgwMDA3LCAweDAwMDYsIDB4MDAwNywgMHgwMDA3 IH0sIENNTl9ESUFHX1BMTDBfVjJJX1RVTkUgfSwKKwl7eyAweDAwNDMsIDB4MDA0MywgMHgwMDQz LCAweDAwNDIsIDB4MDA0MywgMHgwMDQzLCAweDAwNDIgfSwgQ01OX0RJQUdfUExMMF9DUF9UVU5F IH0sCisJe3sgMHgwMDA4LCAweDAwMDgsIDB4MDAwOCwgMHgwMDA4LCAweDAwMDgsIDB4MDAwOCwg MHgwMDA4IH0sIENNTl9ESUFHX1BMTDBfTEZfUFJPRyB9LAorCXt7IDB4MDEwMCwgMHgwMDAxLCAw eDAwMDEsIDB4MDAwMSwgMHgwMTAwLCAweDAwMDEsIDB4MDAwMSB9LCBDTU5fRElBR19QTEwwX1BU QVRJU19UVU5FMSB9LAorCXt7IDB4MDAwNywgMHgwMDAxLCAweDAwMDEsIDB4MDAwMSwgMHgwMDA3 LCAweDAwMDEsIDB4MDAwMSB9LCBDTU5fRElBR19QTEwwX1BUQVRJU19UVU5FMiB9LAorCXt7IDB4 MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCB9LCBD TU5fRElBR19QTEwwX1RFU1RfTU9ERX0sCisJe3sgMHgwMDE2LCAweDAwMTYsIDB4MDAxNiwgMHgw MDE2LCAweDAwMTYsIDB4MDAxNiwgMHgwMDE2IH0sIENNTl9QU01fQ0xLX0NUUkwgfQorfTsKKwor c3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5IHsKKwl2b2lkIF9faW9tZW0gKnJlZ3M7CS8qIERQVFgg cmVnaXN0ZXJzIGJhc2UgKi8KKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IHBoeSAqcGh5 OworCXN0cnVjdCBtdXRleCBtYm94X211dGV4OyAvKiBtdXRleCB0byBwcm90ZWN0IG1haWxib3gg Ki8KKwlzdHJ1Y3QgY2xrICpyZWZfY2xrOworCXUzMiByZWZfY2xrX3JhdGU7CisJdTMyIG51bV9s YW5lczsKKwl1MzIgbWF4X2JpdF9yYXRlOyAvKiBNYXhpbXVtIGxpbmsgYml0IHJhdGUgdG8gdXNl IChpbiBNYnBzKSAqLworCXUzMiBsaW5rX3JhdGU7CisJYm9vbCBwb3dlcl91cDsKK307CisKK3N0 YXRpYyBpbnQgY2Ruc19waHlfcmVnX3dyaXRlKHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ru c19waHksIHUzMiBhZGRyLCB1MzIgdmFsKQoreworCXJldHVybiBjZG5zX21oZHBfcmVnX3dyaXRl KGNkbnNfcGh5LCBBRERSX1BIWV9BRkUgKyAoYWRkciA8PCAyKSwgdmFsKTsKK30KKworc3RhdGlj IHUzMiBjZG5zX3BoeV9yZWdfcmVhZChzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5 LCB1MzIgYWRkcikKK3sKKwl1MzIgcmVnMzI7CisKKwljZG5zX21oZHBfcmVnX3JlYWQoY2Ruc19w aHksIEFERFJfUEhZX0FGRSArIChhZGRyIDw8IDIpLCAmcmVnMzIpOworCXJldHVybiByZWczMjsK K30KKworc3RhdGljIGludCBsaW5rX3JhdGVfaW5kZXgodTMyIHJhdGUpCit7CisJc3dpdGNoIChy YXRlKSB7CisJY2FzZSBSQVRFXzFfNjoKKwkJcmV0dXJuIDA7CisJY2FzZSBSQVRFXzJfMToKKwkJ cmV0dXJuIDE7CisJY2FzZSBSQVRFXzJfNDoKKwkJcmV0dXJuIDI7CisJY2FzZSBSQVRFXzJfNzoK KwkJcmV0dXJuIDM7CisJY2FzZSBSQVRFXzNfMjoKKwkJcmV0dXJuIDQ7CisJY2FzZSBSQVRFXzRf MzoKKwkJcmV0dXJuIDU7CisJY2FzZSBSQVRFXzVfNDoKKwkJcmV0dXJuIDY7CisJZGVmYXVsdDoK KwkJcmV0dXJuIC0xOworCX0KK30KKworc3RhdGljIGludCBoZHB0eF9kcF9yZWZfY2xrKHN0cnVj dCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0g Y2Ruc19waHktPmRldjsKKwl1MzIgcmVmX2Nsa19yYXRlOworCWludCByZXQ7CisKKwljZG5zX3Bo eS0+cmVmX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJyZWZjbGsiKTsKKwlpZiAoSVNfRVJSKGNk bnNfcGh5LT5yZWZfY2xrKSkgeworCQlkZXZfZXJyKGRldiwgInBoeSByZWYgY2xvY2sgbm90IGZv dW5kXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoY2Ruc19waHktPnJlZl9jbGspOworCX0KKworCXJl dCA9IGNsa19wcmVwYXJlX2VuYWJsZShjZG5zX3BoeS0+cmVmX2Nsayk7CisJaWYgKHJldCkgewor CQlkZXZfZXJyKGNkbnNfcGh5LT5kZXYsICJGYWlsZWQgdG8gcHJlcGFyZSByZWYgY2xvY2tcbiIp OworCQlyZXR1cm4gcmV0OworCX0KKworCXJlZl9jbGtfcmF0ZSA9IGNsa19nZXRfcmF0ZShjZG5z X3BoeS0+cmVmX2Nsayk7CisJaWYgKCFyZWZfY2xrX3JhdGUpIHsKKwkJZGV2X2VycihjZG5zX3Bo eS0+ZGV2LCAiRmFpbGVkIHRvIGdldCByZWYgY2xvY2sgcmF0ZVxuIik7CisJCWdvdG8gZXJyX3Jl Zl9jbGs7CisJfQorCisJaWYgKHJlZl9jbGtfcmF0ZSA9PSBSRUZfQ0xLXzI3TUhaKQorCQljZG5z X3BoeS0+cmVmX2Nsa19yYXRlID0gcmVmX2Nsa19yYXRlOworCWVsc2UgeworCQlkZXZfZXJyKGNk bnNfcGh5LT5kZXYsICJOb3Qgc3VwcG9ydCBSZWYgQ2xvY2sgUmF0ZSglZEh6KVxuIiwgcmVmX2Ns a19yYXRlKTsKKwkJZ290byBlcnJfcmVmX2NsazsKKwl9CisKKwlyZXR1cm4gMDsKKworZXJyX3Jl Zl9jbGs6CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNkbnNfcGh5LT5yZWZfY2xrKTsKKwlyZXR1 cm4gLUVJTlZBTDsKK30KKworc3RhdGljIHZvaWQgaGRwdHhfZHBfYXV4X2NmZyhzdHJ1Y3QgY2Ru c19oZHB0eF9kcF9waHkgKmNkbnNfcGh5KQoreworCS8qIFBvd2VyIHVwIEF1eCAqLworCWNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhEQV9DWUFfQVVYREFfQ1lBLCAxKTsKKworCWNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElHX0NUUkxfUkVHXzEsIDB4Myk7CisJbmRlbGF5 KDE1MCk7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9ESUdfQ1RSTF9SRUdfMiwg MzYpOworCW5kZWxheSgxNTApOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5B X0NUUkxfUkVHXzIsIDB4MDEwMCk7CisJbmRlbGF5KDE1MCk7CisJY2Ruc19waHlfcmVnX3dyaXRl KGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMiwgMHgwMzAwKTsKKwluZGVsYXkoMTUwKTsKKwlj ZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18zLCAweDAwMDApOwor CW5kZWxheSgxNTApOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxf UkVHXzEsIDB4MjAwOCk7CisJbmRlbGF5KDE1MCk7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNf cGh5LCBUWF9BTkFfQ1RSTF9SRUdfMSwgMHgyMDE4KTsKKwluZGVsYXkoMTUwKTsKKwljZG5zX3Bo eV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18xLCAweEEwMTgpOworCW5kZWxh eSgxNTApOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzIs IDB4MDMwQyk7CisJbmRlbGF5KDE1MCk7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBU WF9BTkFfQ1RSTF9SRUdfNSwgMHgwMDAwKTsKKwluZGVsYXkoMTUwKTsKKwljZG5zX3BoeV9yZWdf d3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR180LCAweDEwMDEpOworCW5kZWxheSgxNTAp OworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzEsIDB4QTA5 OCk7CisJbmRlbGF5KDE1MCk7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFf Q1RSTF9SRUdfMSwgMHhBMTk4KTsKKwluZGVsYXkoMTUwKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18yLCAweDAzMGQpOworCW5kZWxheSgxNTApOworCWNk bnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzIsIDB4MDMwZik7Cit9 CisKKy8qIFBNQSBjb21tb24gY29uZmlndXJhdGlvbiBmb3IgMjdNSHogKi8KK3N0YXRpYyB2b2lk IGhkcHR4X2RwX3BoeV9wbWFfY21uX2NmZ18yN21oeihzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkg KmNkbnNfcGh5KQoreworCXUzMiBudW1fbGFuZXMgPSBjZG5zX3BoeS0+bnVtX2xhbmVzOworCXUx NiB2YWw7CisJaW50IGs7CisKKwl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZ X1BNQV9DTU5fQ1RSTDEpOworCXZhbCAmPSAweEZGRjc7CisJdmFsIHw9IDB4MDAwODsKKwljZG5z X3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9QTUFfQ01OX0NUUkwxLCB2YWwpOworCisJLyog U3RhcnR1cCBzdGF0ZSBtYWNoaW5lIHJlZ2lzdGVycyAqLworCWNkbnNfcGh5X3JlZ193cml0ZShj ZG5zX3BoeSwgQ01OX1NTTV9CSUFTX1RNUiwgMHgwMDg3KTsKKwljZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIENNTl9QTExTTTBfUExMRU5fVE1SLCAweDAwMUIpOworCWNkbnNfcGh5X3JlZ193 cml0ZShjZG5zX3BoeSwgQ01OX1BMTFNNMF9QTExQUkVfVE1SLCAweDAwMzYpOworCWNkbnNfcGh5 X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1BMTFNNMF9QTExWUkVGX1RNUiwgMHgwMDFCKTsKKwlj ZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9QTExTTTBfUExMTE9DS19UTVIsIDB4MDA2 Qyk7CisKKwkvKiBDdXJyZW50IGNhbGlicmF0aW9uIHJlZ2lzdGVycyAqLworCWNkbnNfcGh5X3Jl Z193cml0ZShjZG5zX3BoeSwgQ01OX0lDQUxfSU5JVF9UTVIsIDB4MDA0NCk7CisJY2Ruc19waHlf cmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fSUNBTF9JVEVSX1RNUiwgMHgwMDA2KTsKKwljZG5zX3Bo eV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9JQ0FMX0FESl9JTklUX1RNUiwgMHgwMDIyKTsKKwlj ZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9JQ0FMX0FESl9JVEVSX1RNUiwgMHgwMDA2 KTsKKworCS8qIFJlc2lzdG9yIGNhbGlicmF0aW9uIHJlZ2lzdGVycyAqLworCWNkbnNfcGh5X3Jl Z193cml0ZShjZG5zX3BoeSwgQ01OX1RYUFVDQUxfSU5JVF9UTVIsIDB4MDAyMik7CisJY2Ruc19w aHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQVUNBTF9JVEVSX1RNUiwgMHgwMDA2KTsKKwlj ZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9UWFBVX0FESl9JTklUX1RNUiwgMHgwMDIy KTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9UWFBVX0FESl9JVEVSX1RNUiwg MHgwMDA2KTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9UWFBEQ0FMX0lOSVRf VE1SLCAweDAwMjIpOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1RYUERDQUxf SVRFUl9UTVIsIDB4MDAwNik7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQ RF9BREpfSU5JVF9UTVIsIDB4MDAyMik7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBD TU5fVFhQRF9BREpfSVRFUl9UTVIsIDB4MDAwNik7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNf cGh5LCBDTU5fUlhDQUxfSU5JVF9UTVIsIDB4MDAyMik7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNk bnNfcGh5LCBDTU5fUlhDQUxfSVRFUl9UTVIsIDB4MDAwNik7CisJY2Ruc19waHlfcmVnX3dyaXRl KGNkbnNfcGh5LCBDTU5fUlhfQURKX0lOSVRfVE1SLCAweDAwMjIpOworCWNkbnNfcGh5X3JlZ193 cml0ZShjZG5zX3BoeSwgQ01OX1JYX0FESl9JVEVSX1RNUiwgMHgwMDA2KTsKKworCWZvciAoayA9 IDA7IGsgPCBudW1fbGFuZXM7IGsgPSBrICsgMSkgeworCQkvKiBQb3dlciBzdGF0ZSBtYWNoaW5l IHJlZ2lzdGVycyAqLworCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFhDVlJfUFNNX0NB TF9UTVIgIHwgKGsgPDwgOSksIDB4MDE2RCk7CisJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3Bo eSwgWENWUl9QU01fQTBJTl9UTVIgfCAoayA8PCA5KSwgMHgwMTZEKTsKKwkJLyogVHJhbnNjZWl2 ZXIgY29udHJvbCBhbmQgZGlhZ25vc3RpYyByZWdpc3RlcnMgKi8KKwkJY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LCBYQ1ZSX0RJQUdfTEFORV9GQ01fRU5fTUdOX1RNUiB8IChrIDw8IDkpLCAw eDAwQTIpOworCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0RJQUdfQkdSRUZfUFJF RFJWX0RFTEFZICAgIHwgKGsgPDwgOSksIDB4MDA5Nyk7CisJCS8qIFRyYW5zbWl0dGVyIHJlY2Vp dmVyIGRldGVjdCByZWdpc3RlcnMgKi8KKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBU WF9SQ1ZERVRfRU5fVE1SIHwgKGsgPDwgOSksIDB4MEE4Qyk7CisJCWNkbnNfcGh5X3JlZ193cml0 ZShjZG5zX3BoeSwgVFhfUkNWREVUX1NUX1RNUiB8IChrIDw8IDkpLCAweDAwMzYpOworCX0KKwor CWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzAsIDEpOworCWNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzEsIDEpOworCWNkbnNfcGh5X3Jl Z193cml0ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzIsIDEpOworCWNkbnNfcGh5X3JlZ193cml0 ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzMsIDEpOworfQorCitzdGF0aWMgdm9pZCBoZHB0eF9k cF9waHlfcG1hX2Ntbl9wbGwwXzI3bWh6KHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19w aHkpCit7CisJdTMyIG51bV9sYW5lcyA9IGNkbnNfcGh5LT5udW1fbGFuZXM7CisJdTMyIGxpbmtf cmF0ZSA9IGNkbnNfcGh5LT5saW5rX3JhdGU7CisJdTE2IHZhbDsKKwlpbnQgaW5kZXgsIGksIGs7 CisKKwkvKiBEUCBQTEwgZGF0YSByYXRlIDAvMSBjbG9jayBkaXZpZGVyIHZhbHVlICovCisJdmFs ID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCk7CisJdmFsICY9 IDB4MDBGRjsKKwlpZiAobGlua19yYXRlIDw9IFJBVEVfMl83KQorCQl2YWwgfD0gMHgyNDAwOwor CWVsc2UKKwkJdmFsIHw9IDB4MTIwMDsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBI WV9IRFBfQ0xLX0NUTCwgdmFsKTsKKworCS8qIEhpZ2ggc3BlZWQgY2xvY2sgMC8xIGRpdiAqLwor CXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBDTU5fRElBR19IU0NMS19TRUwpOwor CXZhbCAmPSAweEZGQ0M7CisJaWYgKGxpbmtfcmF0ZSA8PSBSQVRFXzJfNykKKwkJdmFsIHw9IDB4 MDAxMTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9ESUFHX0hTQ0xLX1NFTCwg dmFsKTsKKworCWZvciAoayA9IDA7IGsgPCBudW1fbGFuZXM7IGsrKykgeworCQl2YWwgPSBjZG5z X3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgKFhDVlJfRElBR19IU0NMS19TRUwgfCAoayA8PCA5KSkp OworCQl2YWwgPSB2YWwgJiAweENGRkY7CisJCWlmIChsaW5rX3JhdGUgPD0gUkFURV8yXzcpCisJ CQl2YWwgfD0gMHgxMDAwOworCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIChYQ1ZSX0RJ QUdfSFNDTEtfU0VMIHwgKGsgPDwgOSkpLCB2YWwpOworCX0KKworCS8qIERQIFBIWSBQTEwgMjdN SHogY29uZmlndXJhdGlvbiAqLworCWluZGV4ID0gbGlua19yYXRlX2luZGV4KGxpbmtfcmF0ZSk7 CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocGh5X3BsbF8yN21fY2ZnKTsgaSsrKQorCQlj ZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIHBoeV9wbGxfMjdtX2NmZ1tpXS5hZGRyLAorCQkJ CXBoeV9wbGxfMjdtX2NmZ1tpXS52YWxbaW5kZXhdKTsKKworCS8qIFRyYW5zY2VpdmVyIGNvbnRy b2wgYW5kIGRpYWdub3N0aWMgcmVnaXN0ZXJzICovCisJZm9yIChrID0gMDsgayA8IG51bV9sYW5l czsgaysrKSB7CisJCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCAoWENWUl9ESUFH X1BMTERSQ19DVFJMIHwgKGsgPDwgOSkpKTsKKwkJdmFsID0gdmFsICYgMHg4RkZGOworCQlpZiAo bGlua19yYXRlIDw9IFJBVEVfMl83KQorCQkJdmFsIHw9IDB4MjAwMDsKKwkJZWxzZQorCQkJdmFs IHw9IDB4MTAwMDsKKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAoWENWUl9ESUFHX1BM TERSQ19DVFJMIHwgKGsgPDwgOSkpLCB2YWwpOworCX0KKworCWZvciAoayA9IDA7IGsgPCBudW1f bGFuZXM7IGsgPSBrICsgMSkgeworCQkvKiBQb3dlciBzdGF0ZSBtYWNoaW5lIHJlZ2lzdGVycyAq LworCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIChYQ1ZSX1BTTV9SQ1RSTCB8IChrIDw8 IDkpKSwgIDB4QkVGQyk7CisJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFRYX1BTQ19B MCB8IChrIDw8IDkpKSwgMHg2Nzk5KTsKKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAo VFhfUFNDX0ExIHwgKGsgPDwgOSkpLCAweDY3OTgpOworCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ru c19waHksIChUWF9QU0NfQTIgfCAoayA8PCA5KSksIDB4MDA5OCk7CisJCWNkbnNfcGh5X3JlZ193 cml0ZShjZG5zX3BoeSwgKFRYX1BTQ19BMyB8IChrIDw8IDkpKSwgMHgwMDk4KTsKKwkJLyogUmVj ZWl2ZXIgY2FsaWJyYXRpb24gcG93ZXIgc3RhdGUgZGVmaW5pdGlvbiByZWdpc3RlciAqLworCQl2 YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUlhfUFNDX0NBTCB8IChrIDw8IDkpKTsK KwkJdmFsICY9IDB4RkZCQjsKKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAoUlhfUFND X0NBTCB8IChrIDw8IDkpKSwgdmFsKTsKKwkJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19w aHksIFJYX1BTQ19BMCAgfCAoayA8PCA5KSk7CisJCXZhbCAmPSAweEZGQkI7CisJCWNkbnNfcGh5 X3JlZ193cml0ZShjZG5zX3BoeSwgKFJYX1BTQ19BMCAgfCAoayA8PCA5KSksIHZhbCk7CisJfQor fQorCitzdGF0aWMgdm9pZCBoZHB0eF9kcF9waHlfcmVmX2Nsb2NrX3R5cGUoc3RydWN0IGNkbnNf aGRwdHhfZHBfcGh5ICpjZG5zX3BoeSkKK3sKKwl1MzIgdmFsOworCisJdmFsID0gY2Ruc19waHlf cmVnX3JlYWQoY2Ruc19waHksIFBIWV9QTUFfQ01OX0NUUkwxKTsKKwl2YWwgJj0gMHhGRjhGOwor CS8qCisJICogc2luZ2xlIGVuZGVkIHJlZmVyZW5jZSBjbG9jayAodmFsIHw9IDB4MDAzMCk7CisJ ICogZGlmZmVyZW50aWFsIGNsb2NrICAodmFsIHw9IDB4MDAwMCk7CisJICoKKwkgKiBmb3IgZGlm ZmVyZW50aWFsIGNsb2NrIG9uIHRoZSByZWZjbGtfcCBhbmQKKwkgKiByZWZjbGtfbSBvZmYgY2hp cCBwaW5zOiBDTU5fRElBR19BQ1lBWzhdPTEnYjEKKwkgKiBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ru c19waHksIENNTl9ESUFHX0FDWUEsIDB4MDEwMCk7CisJICovCisJdmFsIHw9IDB4MDAzMDsKKwlj ZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9QTUFfQ01OX0NUUkwxLCB2YWwpOworfQor CitzdGF0aWMgaW50IGhkcHR4X2RwX3BoeV9wb3dlcl91cChzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9w aHkgKmNkbnNfcGh5KQoreworCXUzMiB2YWwsIGk7CisKKwkvKiBFbmFibGUgSERQIFBMTOKAmXMg Zm9yIGhpZ2ggc3BlZWQgY2xvY2tzICovCisJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19w aHksIFBIWV9IRFBfQ0xLX0NUTCk7CisJdmFsIHw9ICgxIDw8IDApOworCWNkbnNfcGh5X3JlZ193 cml0ZShjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMLCB2YWwpOworCS8qIFdhaXQgZm9yIFBMTCBy ZWFkeSBBQ0sgKi8KKwlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgeworCQl2YWwgPSBjZG5zX3Bo eV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsKKwkJaWYgKHZhbCAmICgxIDw8 IDEpKQorCQkJYnJlYWs7CisJCW1zbGVlcCgyMCk7CisJfQorCWlmIChpID09IDEwKSB7CisJCWRl dl9lcnIoY2Ruc19waHktPmRldiwgIldhaXQgUExMIEFjayBmYWlsZWRcbiIpOworCQlyZXR1cm4g LTE7CisJfQorCisJLyogRW5hYmxlIEhEUCBQTEzigJlzIGRhdGEgcmF0ZSBhbmQgZnVsbCByYXRl IGNsb2NrcyBvdXQgb2YgUE1BLiAqLworCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5 LCBQSFlfSERQX0NMS19DVEwpOworCXZhbCB8PSAoMSA8PCAyKTsKKwljZG5zX3BoeV9yZWdfd3Jp dGUoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCwgdmFsKTsKKwkvKiBXYWl0IGZvciBQTEwgY2xv Y2sgZW5hYmxlIEFDSyAqLworCWZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisJCXZhbCA9IGNk bnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOworCQlpZiAodmFsICYg KDEgPDwgMykpCisJCQlicmVhazsKKwkJbXNsZWVwKDIwKTsKKwl9CisJaWYgKGkgPT0gMTApIHsK KwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiV2FpdCBQTEwgY2xvY2sgZW5hYmxlIEFDayBmYWls ZWRcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCisJLyogQ29uZmlndXJlIFBIWSBpbiBBMiBNb2Rl ICovCisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQSFlfSERQX01PREVfQ1RSTCwgMHgw MDA0KTsKKwkvKiBXYWl0IGZvciBQb3dlciBTdGF0ZSBBMiBBY2sgKi8KKwlmb3IgKGkgPSAwOyBp IDwgMTA7IGkrKykgeworCQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hE UF9NT0RFX0NUUkwpOworCQlpZiAodmFsICYgKDEgPDwgNikpCisJCQlicmVhazsKKwkJbXNsZWVw KDIwKTsKKwl9CisJaWYgKGkgPT0gMTApIHsKKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiV2Fp dCBBMiBBY2sgZmFpbGVkXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qIENvbmZpZ3VyZSBQ SFkgaW4gQTAgbW9kZSAoUEhZIG11c3QgYmUgaW4gdGhlIEEwIHBvd2VyCisJICogc3RhdGUgaW4g b3JkZXIgdG8gdHJhbnNtaXQgZGF0YSkKKwkgKi8KKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19w aHksIFBIWV9IRFBfTU9ERV9DVFJMLCAweDAxMDEpOworCisJLyogV2FpdCBmb3IgUG93ZXIgU3Rh dGUgQTAgQWNrICovCisJZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKKwkJdmFsID0gY2Ruc19w aHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9IRFBfTU9ERV9DVFJMKTsKKwkJaWYgKHZhbCAmICgx IDw8IDQpKQorCQkJYnJlYWs7CisJCW1zbGVlcCgyMCk7CisJfQorCWlmIChpID09IDEwKSB7CisJ CWRldl9lcnIoY2Ruc19waHktPmRldiwgIldhaXQgQTAgQWNrIGZhaWxlZFxuIik7CisJCXJldHVy biAtMTsKKwl9CisKKwljZG5zX3BoeS0+cG93ZXJfdXAgPSB0cnVlOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyB2b2lkIGhkcHR4X2RwX3BoeV9wb3dlcl9kb3duKHN0cnVjdCBjZG5zX2hkcHR4 X2RwX3BoeSAqY2Ruc19waHkpCit7CisJdTE2IHZhbDsKKwlpbnQgaTsKKworCWlmICghY2Ruc19w aHktPnBvd2VyX3VwKQorCQlyZXR1cm47CisKKwkvKiBQbGFjZSB0aGUgUEhZIGxhbmVzIGluIHRo ZSBBMyBwb3dlciBzdGF0ZS4gKi8KKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9I RFBfTU9ERV9DVFJMLCAweDgpOworCS8qIFdhaXQgZm9yIFBvd2VyIFN0YXRlIEEzIEFjayAqLwor CWZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisJCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNk bnNfcGh5LCBQSFlfSERQX01PREVfQ1RSTCk7CisJCWlmICh2YWwgJiAoMSA8PCA3KSkKKwkJCWJy ZWFrOworCQltc2xlZXAoMjApOworCX0KKwlpZiAoaSA9PSAxMCkgeworCQlkZXZfZXJyKGNkbnNf cGh5LT5kZXYsICJXYWl0IEEzIEFjayBmYWlsZWRcbiIpOworCQlyZXR1cm47CisJfQorCisJLyog RGlzYWJsZSBIRFAgUExM4oCZcyBkYXRhIHJhdGUgYW5kIGZ1bGwgcmF0ZSBjbG9ja3Mgb3V0IG9m IFBNQS4gKi8KKwl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtf Q1RMKTsKKwl2YWwgJj0gfigxIDw8IDIpOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg UEhZX0hEUF9DTEtfQ1RMLCB2YWwpOworCS8qIFdhaXQgZm9yIFBMTCBjbG9jayBnYXRlIEFDSyAq LworCWZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisJCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFk KGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOworCQlpZiAoISh2YWwgJiAoMSA8PCAzKSkpCisJ CQlicmVhazsKKwkJbXNsZWVwKDIwKTsKKwl9CisJaWYgKGkgPT0gMTApIHsKKwkJZGV2X2Vycihj ZG5zX3BoeS0+ZGV2LCAiV2FpdCBQTEwgY2xvY2sgZ2F0ZSBBY2sgZmFpbGVkXG4iKTsKKwkJcmV0 dXJuOworCX0KKworCS8qIERpc2FibGUgSERQIFBMTOKAmXMgZm9yIGhpZ2ggc3BlZWQgY2xvY2tz ICovCisJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCk7 CisJdmFsICY9IH4oMSA8PCAwKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9I RFBfQ0xLX0NUTCwgdmFsKTsKKwkvKiBXYWl0IGZvciBQTEwgZGlzYWJsZSBBQ0sgKi8KKwlmb3Ig KGkgPSAwOyBpIDwgMTA7IGkrKykgeworCQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3Bo eSwgUEhZX0hEUF9DTEtfQ1RMKTsKKwkJaWYgKCEodmFsICYgKDEgPDwgMSkpKQorCQkJYnJlYWs7 CisJCW1zbGVlcCgyMCk7CisJfQorCWlmIChpID09IDEwKSB7CisJCWRldl9lcnIoY2Ruc19waHkt PmRldiwgIldhaXQgUExMIGRpc2FibGUgQWNrIGZhaWxlZFxuIik7CisJCXJldHVybjsKKwl9Cit9 CisKK3N0YXRpYyBpbnQgY2Ruc19oZHB0eF9kcF9waHlfb24oc3RydWN0IHBoeSAqcGh5KQorewor CXN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkgPSBwaHlfZ2V0X2RydmRhdGEocGh5 KTsKKworCXJldHVybiBoZHB0eF9kcF9waHlfcG93ZXJfdXAoY2Ruc19waHkpOworfQorCitzdGF0 aWMgaW50IGNkbnNfaGRwdHhfZHBfcGh5X29mZihzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0 IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOworCisJ aGRwdHhfZHBfcGh5X3Bvd2VyX2Rvd24oY2Ruc19waHkpOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgY2Ruc19oZHB0eF9kcF9waHlfaW5pdChzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3Ry dWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwor CWludCByZXQ7CisKKwloZHB0eF9kcF9waHlfcmVmX2Nsb2NrX3R5cGUoY2Ruc19waHkpOworCisJ LyogUEhZIHBvd2VyIHVwICovCisJcmV0ID0gaGRwdHhfZHBfcGh5X3Bvd2VyX3VwKGNkbnNfcGh5 KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCWhkcHR4X2RwX2F1eF9jZmcoY2Ru c19waHkpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBjZG5zX2hkcHR4X2RwX2Nv bmZpZ3VyZShzdHJ1Y3QgcGh5ICpwaHksCisJCQkJICAgICB1bmlvbiBwaHlfY29uZmlndXJlX29w dHMgKm9wdHMpCit7CisJc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9IHBoeV9n ZXRfZHJ2ZGF0YShwaHkpOworCWludCByZXQ7CisKKwljZG5zX3BoeS0+bGlua19yYXRlID0gb3B0 cy0+ZHAubGlua19yYXRlOworCisJLyogRGlzYWJsZSBwaHkgY2xvY2sgaWYgUEhZIGluIHBvd2Vy IHVwIHN0YXRlICovCisJaGRwdHhfZHBfcGh5X3Bvd2VyX2Rvd24oY2Ruc19waHkpOworCisJaWYg KGNkbnNfcGh5LT5yZWZfY2xrX3JhdGUgPT0gUkVGX0NMS18yN01IWikgeworCQloZHB0eF9kcF9w aHlfcG1hX2Ntbl9jZmdfMjdtaHooY2Ruc19waHkpOworCQloZHB0eF9kcF9waHlfcG1hX2Ntbl9w bGwwXzI3bWh6KGNkbnNfcGh5KTsKKwl9IGVsc2UKKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAi Tm90IHN1cHBvcnQgcmVmIGNsb2NrIHJhdGVcbiIpOworCisJLyogUEhZIHBvd2VyIHVwICovCisJ cmV0ID0gaGRwdHhfZHBfcGh5X3Bvd2VyX3VwKGNkbnNfcGh5KTsKKworCXJldHVybiByZXQ7Cit9 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyBjZG5zX2hkcHR4X2RwX3BoeV9vcHMgPSB7 CisJLmluaXQJCT0gY2Ruc19oZHB0eF9kcF9waHlfaW5pdCwKKwkuY29uZmlndXJlCT0gY2Ruc19o ZHB0eF9kcF9jb25maWd1cmUsCisJLnBvd2VyX29uCT0gY2Ruc19oZHB0eF9kcF9waHlfb24sCisJ LnBvd2VyX29mZgk9IGNkbnNfaGRwdHhfZHBfcGh5X29mZiwKKwkub3duZXIJCT0gVEhJU19NT0RV TEUsCit9OworCitzdGF0aWMgaW50IGNkbnNfaGRwdHhfZHBfcGh5X3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3Bo eTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworCXN0cnVjdCBkZXZpY2Vfbm9k ZSAqbm9kZSA9IGRldi0+b2Zfbm9kZTsKKwlzdHJ1Y3QgcGh5X3Byb3ZpZGVyICpwaHlfcHJvdmlk ZXI7CisJc3RydWN0IHJlc291cmNlICpyZXM7CisJc3RydWN0IHBoeSAqcGh5OworCWludCByZXQ7 CisKKwljZG5zX3BoeSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY2Ruc19waHkpLCBHRlBf S0VSTkVMKTsKKwlpZiAoIWNkbnNfcGh5KQorCQlyZXR1cm4gLUVOT01FTTsKKworCWRldl9zZXRf ZHJ2ZGF0YShkZXYsIGNkbnNfcGh5KTsKKwljZG5zX3BoeS0+ZGV2ID0gZGV2OworCW11dGV4X2lu aXQoJmNkbnNfcGh5LT5tYm94X211dGV4KTsKKworCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJj ZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CisJaWYgKCFyZXMpCisJCXJldHVybiAtRU5PREVW OworCWNkbnNfcGh5LT5yZWdzID0gZGV2bV9pb3JlbWFwKGRldiwgcmVzLT5zdGFydCwgcmVzb3Vy Y2Vfc2l6ZShyZXMpKTsKKwlpZiAoSVNfRVJSKGNkbnNfcGh5LT5yZWdzKSkKKwkJcmV0dXJuIFBU Ul9FUlIoY2Ruc19waHktPnJlZ3MpOworCisJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUs ICJjZG5zLG51bS1sYW5lcyIsCisJCQkJICZjZG5zX3BoeS0+bnVtX2xhbmVzKSkgeworCQlkZXZf ZXJyKGRldiwgIiVzOiBObyBcImNkbnMsbnVtLWxhbmVzXCItcHJvcGVydHkuXG4iLAorCQkJbm9k ZS0+ZnVsbF9uYW1lKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcGh5ID0gZGV2bV9waHlf Y3JlYXRlKGRldiwgbm9kZSwgJmNkbnNfaGRwdHhfZHBfcGh5X29wcyk7CisJaWYgKElTX0VSUihw aHkpKQorCQlyZXR1cm4gUFRSX0VSUihwaHkpOworCisJY2Ruc19waHktPm1heF9iaXRfcmF0ZSA9 IERFRkFVTFRfTUFYX0JJVF9SQVRFOworCW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICJjZG5z LG1heC1iaXQtcmF0ZSIsCisJCQkgICAgICZjZG5zX3BoeS0+bWF4X2JpdF9yYXRlKTsKKworCXN3 aXRjaCAoY2Ruc19waHktPm1heF9iaXRfcmF0ZSkgeworCS8qIHZhbGlkIGJpdCByYXRlICovCisJ Y2FzZSAxNjIwOgorCWNhc2UgMjE2MDoKKwljYXNlIDI0MzA6CisJY2FzZSAyNzAwOgorCWNhc2Ug MzI0MDoKKwljYXNlIDQzMjA6CisJY2FzZSA1NDAwOgorCQlicmVhazsKKwljYXNlIDgxMDA6CisJ ZGVmYXVsdDoKKwkJZGV2X2VycihkZXYsICJ1bnN1cHBvcnRlZCBtYXggYml0IHJhdGU6ICVkTWJw c1xuIiwKKwkJCQljZG5zX3BoeS0+bWF4X2JpdF9yYXRlKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCisJZGV2X2RiZyhkZXYsICJEUCBtYXggYml0IHJhdGUgJWQuJTAzZCBHYnBzXG4iLAorCQlj ZG5zX3BoeS0+bWF4X2JpdF9yYXRlIC8gMTAwMCwKKwkJY2Ruc19waHktPm1heF9iaXRfcmF0ZSAl IDEwMDApOworCisJcGh5LT5hdHRycy5idXNfd2lkdGggPSBjZG5zX3BoeS0+bnVtX2xhbmVzOwor CXBoeS0+YXR0cnMubWF4X2xpbmtfcmF0ZSA9IGNkbnNfcGh5LT5tYXhfYml0X3JhdGU7CisJcGh5 LT5hdHRycy5tb2RlID0gUEhZX01PREVfRFA7CisKKwljZG5zX3BoeS0+cGh5ID0gcGh5OworCXBo eV9zZXRfZHJ2ZGF0YShwaHksIGNkbnNfcGh5KTsKKworCWlmIChjZG5zX3BoeS0+bnVtX2xhbmVz ID4gTUFYX05VTV9MQU5FUykgeworCQlkZXZfZXJyKGRldiwgIkludmFsaWQgbGFuZSBjb25maWd1 cmF0aW9uXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0gaGRwdHhfZHBfcmVm X2NsayhjZG5zX3BoeSk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldiwgIkluaXQgY2xrIGZh aWxcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlwaHlfcHJvdmlkZXIgPSBkZXZtX29m X3BoeV9wcm92aWRlcl9yZWdpc3RlcihkZXYsIG9mX3BoeV9zaW1wbGVfeGxhdGUpOworCWlmIChJ U19FUlIocGh5X3Byb3ZpZGVyKSkgeworCQlyZXQgPSAgUFRSX0VSUihwaHlfcHJvdmlkZXIpOwor CQlnb3RvIGNsa19kaXNhYmxlOworCX0KKworCWRldl9kYmcoZGV2LCAibGluazogKCVkIGxhbmVz KSIsIGNkbnNfcGh5LT5udW1fbGFuZXMpOworCisJcmV0dXJuIDA7CisKK2Nsa19kaXNhYmxlOgor CWNsa19kaXNhYmxlX3VucHJlcGFyZShjZG5zX3BoeS0+cmVmX2Nsayk7CisKKwlyZXR1cm4gLUVJ TlZBTDsKK30KKworc3RhdGljIGludCBjZG5zX2hkcHR4X2RwX3BoeV9yZW1vdmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNf cGh5ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisKKwljbGtfZGlzYWJsZV91bnByZXBh cmUoY2Ruc19waHktPnJlZl9jbGspOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNkbnNfaGRwdHhfZHBfcGh5X29mX21hdGNoW10gPSB7CisJewor CQkuY29tcGF0aWJsZSA9ICJjZG5zLGhkcHR4LWRwLXBoeSIsCisJfSwKKwl7fQorfTsKK01PRFVM RV9ERVZJQ0VfVEFCTEUob2YsIGNkbnNfaGRwdHhfZHBfcGh5X29mX21hdGNoKTsKKworc3RhdGlj IHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgY2Ruc19oZHB0eF9kcF9waHlfZHJpdmVyID0geworCS5w cm9iZQk9IGNkbnNfaGRwdHhfZHBfcGh5X3Byb2JlLAorCS5yZW1vdmUgPSBjZG5zX2hkcHR4X2Rw X3BoeV9yZW1vdmUsCisJLmRyaXZlciA9IHsKKwkJLm5hbWUJPSAiY2Rucy1oZHB0eC1kcC1waHki LAorCQkub2ZfbWF0Y2hfdGFibGUJPSBjZG5zX2hkcHR4X2RwX3BoeV9vZl9tYXRjaCwKKwl9Cit9 OworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihjZG5zX2hkcHR4X2RwX3BoeV9kcml2ZXIpOworCitN T0RVTEVfQVVUSE9SKCJTYW5kb3IgWXUgPHNhbmRvci55dUBueHAuY29tPiIpOworTU9EVUxFX0RF U0NSSVBUSU9OKCJDYWRlbmNlIEhEUC1UWCBEaXNwbGF5UG9ydCBQSFkgZHJpdmVyIik7CitNT0RV TEVfTElDRU5TRSgiR1BMIik7Ci0tIAoyLjM0LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51 eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==