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 47AE6EB64D8 for ; Thu, 15 Jun 2023 01:42:33 +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=F8I1d3Yu6uOoeGhIkhBFATVY5ZcZ4uxve/xPi3NOWls=; b=DJS3mdObyn/t1w jRZ7SAMScFX3LfU2Cdp3cZg23FQRsKhAcmqdBSytsphPbQjUoUCHDJ3yqlXd7kBDOcLb0iYMJ4MOu 5gEjq2JwbMXCMOoa0zwxE1ZVMod3yvcT4IlGKrP4ai5MCGcxffPEcd0CfkkerQoIY3wiSM+hIysCP KZrNUH0IudiezOF6hZoCQ0c0JAAp5velYLaXM4Wot9YEIxzLtov0fIQ3//M9Ni0RjCjNBz2fZ9FcQ ErdGmJcAvuJDfb4LFX85rEwRa0c9ILlMU+EFy9QvzQqpCn3G2Qq6+hrrTBkkGbJEoGcoJIZgjlh+t Q9csNuQ1UovzHI984dDQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q9c01-00DGw8-30; Thu, 15 Jun 2023 01:42:09 +0000 Received: from mail-db5eur01on0606.outbound.protection.outlook.com ([2a01:111:f400:fe02::606] helo=EUR01-DB5-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q9bzu-00DGrJ-2X; Thu, 15 Jun 2023 01:42:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=noQd2GiXGp1lph19+l5v8MisuQuWJ13t9E+ysCmhvkmnaXdGL7H7x8mpG3rVA0ivT98SviKTBEUypzytKb7dIDPWlcD5ypbc8Usb7rMz4pPs/keN8M3hQFc4MQhDSbhVpj9u8W5TJWA1lHIks9UFMHTbykKgEtXdNPEwHfiftLZg19f3lG7xHuSH3HlRqnOE0WbnWTklPbHg7ABFQEtMXIVxdTfBs73s77FcaogeVZCEXXmKxN7iibxE+rbGWhIwyrN7fkncNlrus5o7zjwtJkaVPr8uK8dRJ5LXHHOD2lW8dd6VDhqm1Hpxmq07VEXLH7qHGZ/YRWxrGB7A828HfA== 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=yIH/AYymuGZyREmJ/luGrtO/gJkITEc1O/MToNRqjGI=; b=eAmq7wtMgHZA5G7IxQtd9YSL6EVh6necRtah1A2xRar5fU89K7e3JD8KrY05KlxKrh7YXthQkzQWmJewzTTPXQZBt4vyVntm8jY0JbyYpZiXk9jYYMrDXkXpLX9e6qMMwFLiqy3kOQI24Ny5YOUPJmD+mkzpaAOK2H78LL+BrtyRdyv76iz8TLlruMVHjh7H6FO+sm4ps1s2HQ2qhSreYUWKQTA/RS/4IAuRXnbWLf5sPUZwg2epDZOxb9fZcftGaIIDMqoCDzWqrlWmWkbt8KUxnEqhy3jmgrLejt+rXbeYeQVYPYw/8jHNVj7eB1iJGlxXrHwZJAJPX/2q4Jdttw== 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=yIH/AYymuGZyREmJ/luGrtO/gJkITEc1O/MToNRqjGI=; b=BlTgQ8vFyQdnhX3vqx17RAts42wtb1iM3jgxY2ZJgavmIOvpnColBc1U+udUWp9DT13kOwFmrBQ/BNiEdWF7nZ8hj26IrP7YU3LSIqomeYha8Oj0Xoj9850M+OS8rP2Xsce49YeIdv2NOi8W73L2OwFgcvaUpkNnelI5xezHKbk= 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 AM8PR04MB8034.eurprd04.prod.outlook.com (2603:10a6:20b:249::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.25; Thu, 15 Jun 2023 01:41:56 +0000 Received: from PAXPR04MB9448.eurprd04.prod.outlook.com ([fe80::8af8:59df:c8ab:ff51]) by PAXPR04MB9448.eurprd04.prod.outlook.com ([fe80::8af8:59df:c8ab:ff51%5]) with mapi id 15.20.6477.037; Thu, 15 Jun 2023 01:41:55 +0000 From: Sandor Yu To: andrzej.hajda@intel.com, neil.armstrong@linaro.org, robert.foss@linaro.org, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, airlied@gmail.com, daniel@ffwll.ch, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com, vkoul@kernel.org, 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 Cc: kernel@pengutronix.de, linux-imx@nxp.com, Sandor.yu@nxp.com, oliver.brown@nxp.com Subject: [PATCH v6 7/8] phy: freescale: Add DisplayPort PHY driver for i.MX8MQ Date: Thu, 15 Jun 2023 09:38:17 +0800 Message-Id: <279d6d605656a7ca1bbee6270d66aa218a1b7d3d.1686729444.git.Sandor.yu@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-ClientProxiedBy: SG2PR01CA0176.apcprd01.prod.exchangelabs.com (2603:1096:4:28::32) To PAXPR04MB9448.eurprd04.prod.outlook.com (2603:10a6:102:2b1::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9448:EE_|AM8PR04MB8034:EE_ X-MS-Office365-Filtering-Correlation-Id: d5639fd1-b143-425e-45ba-08db6d41b39e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nYoEjmRaYt+LezdWDqD/oSTfIFK7anW4+ebhkSVpdV+optDTN0C+GZPIfI3NB2eU0lJ6JNsekDgBULm5XCGszUH4dDTihmh+Y5mybbw9ebuVJwMOAIYEOlNBVx/7sYhN4Fz1EiIYEDmGP2+0KFvQwXONwJCfjJxazylcDzwHI7ea0kwGvyLUek3D04Me98aIUBox3NAk0zwqzexPh8+mAQuJi4485rMksPnlMReTxmGbQO0cRB00PziNRQX4X/KSqqIN17H4zEnTaZQAbHaxprzb454kf7jHfww5Q05Y9XLao1BrdUNyIcWy/o6+fQ6lDQBqckKMpx/LMBIxvQT/kkzn4VNN8slvWcWx8fI3tioIL+Hvwk3OYbef2YWLvWSrphRcW2+SdzjdC7snpp1MRgioBZITONBF1QwUVb0bOLPiHo7ZZCk1KgNdCGwO4EZWcqjhzOARwNh08G0LXmpWhMRgWZ4Yn/AjF+aE6UfVt79lT8TFHkfrtVWZMdoCWE/mWosSZpHyfLbRG35QISsxRVW3ZULFs7BFBEvrVtzRnQwF2vlA3xA524AI5QwXzwj0jhpSXpZjMbH+HIcJmeZFl027TH7ASTnEGm6s9Z2ne7H/KojImsl2+GrflN0+J56OnbZMClXu5eRAof2mSUDzCQ== 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:(13230028)(4636009)(346002)(39860400002)(376002)(136003)(396003)(366004)(451199021)(2616005)(186003)(2906002)(83380400001)(6666004)(66476007)(66946007)(66556008)(52116002)(316002)(36756003)(8936002)(41300700001)(8676002)(6486002)(86362001)(4326008)(478600001)(26005)(30864003)(6512007)(6506007)(7416002)(38100700002)(38350700002)(5660300002)(921005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UC9LWkh2UkhtRFBQOEFraDdiNklBQ1EvYUhEN0xYQjZpY3oyZ1hjTFlnK050?= =?utf-8?B?eFNzY2l2Q3BoemI1OHhFK0tjRmhmeUpGUWs0R2JyNXI0NWtZNDJ4Uy9QTk9T?= =?utf-8?B?Z0pmWUNhT2Y0UTJ4NHdIck5kNUt0WHlPaEdPZ0k5a25wTkRsK1ppanR5NHZW?= =?utf-8?B?NHlVbkJvc2tpQW5Wd1BIMDhwZ2dXellQaG5COEc1clVXRW94N2RydDVNSEY5?= =?utf-8?B?STNQUjZLdURneEVvbkZIOUFySXY0bHMyYW0wY0hCN1ZXalJ3UXN0SkUrRndE?= =?utf-8?B?eC94Um5Nd2FjQzFFS2dHdXo5ekFrNDkyYjlLakFOdCtOZ282cUJLVWlXak9K?= =?utf-8?B?NjNoRjVaYk83aHV6azUvbnRwRXkzSnNrMlZWY3hwNXZXa3JGa2YxUFAxMUVh?= =?utf-8?B?THphQU1CZmxJdGpvU2puSVY4alhiQVdnUVNEZHVxbHJEYWxxVW51NW41a0ZU?= =?utf-8?B?Ti9VdzZ2V0h0VzZUUTljT2R4TytRMlhoYjRQUmttUW44TnJ3bnpQTjRqRGNk?= =?utf-8?B?a2Rwenc3bDJzZnFhQklBakNUdW5xTDIxaHJLL09WTW1tSGZyMEVhek1EMXZh?= =?utf-8?B?Y1ZvYnN2TzdWMjF6RDNFbmJiYjhGczJGZDVydzlyQm4rZ01EYS9TK1dmUWZ5?= =?utf-8?B?RFZ1K21ZNzdWdHkxdVdxSVVacGp5RDczcENyd0ZDb0NiclI5UFR0SW9lK0Na?= =?utf-8?B?bS92eXlTcnVWUzNlcDc0VlFWSEJpVldGaHpwcFd2dURmUExxWll4VGFjS3p1?= =?utf-8?B?REEzMzA3N0gyZWsyNGhxL2Nla2p6S2lMQ25UT205UTIvZGRrTWtyMTNsS2FD?= =?utf-8?B?TVBaMWxJdlZaZ3NyMElwMjFOTkFTSmZQZ1NaRFFZdVVFR1EzTmVvM3ZrS3d6?= =?utf-8?B?SUVQZTI2SDZyelBTUC9FVUI1U2RHM0NDUTFRd3pZV01VbUVxc1gya0lBZGFi?= =?utf-8?B?VHRsUkFDMWUrS0dKbkJqSlR4UGE5eHlOb2ZBOWRnOTFhMzg5eTJDVkhDT29N?= =?utf-8?B?RkpCU3hBSE9Wc2NmYVd1RXJSYkRBSzNuTXJoZmRZRThmenlnZVJhVjR6Sk52?= =?utf-8?B?dUl2TzQ1amhoTXQxT3oyYzJDN3puazhrN1FQT2tQVWgxRGdzQnc5TTdTNTk4?= =?utf-8?B?ZlQ3WVFGVk42VWxaWVpEZ0I5S00vZGRyQ3pkWEVKdUxjMlI3aWhXbnFhaUxs?= =?utf-8?B?cFhrT3BNU1B0SmZlVnhmSm4zdFVmVFh5b05vQ3pNSnFibjN1T1d5cmVlbDc4?= =?utf-8?B?VVVadFU2VVBsQkFDRklmVTZRNzVkcEJtU1NhUW1VV2hSZEM2enJxQnRQaEd5?= =?utf-8?B?U1J2eng2cmhXNHpjN3o2WFBMWVB2MWVaOTF0SmVZTzV0T3NmWkF2eHBzVHky?= =?utf-8?B?SElGR3o2YlNPV0wwRmFja0tjNi9BcXRZamNCWTU4Z0UweTdHbzVCWEFpekha?= =?utf-8?B?ZS8xRFozT0ZScFRzejFvUTU5MGlON2prN2doTGtkRDNhZnFBZlpPZVBlOGhk?= =?utf-8?B?amFkS3RKZ1NpWkdnUC9lU3RTQXN5eWpOL0lNVzZYZEkxQllOZGh5bFcxQmNn?= =?utf-8?B?dE55dmYrbTFCOVNyL01ScnFEcUloTll1K0lLVU5NK3NtbFpkbEkwSlZZNk9m?= =?utf-8?B?c2JOcU1vaHFwS3pPRnpXY1pZZnFUV29rNDVKcjkyS2dTSTRjS0xiU0plRlJl?= =?utf-8?B?S1FML0d4TjMvYVRCY29FSFhhU0Y1UlNpWVNIaERsNWY4ZFJGdzN6WFUrdld6?= =?utf-8?B?WjZ0WU4vM1VhRkRPMHRmQ1RVZWEzbWd6RHpZUmZFakVWdENUZ2UrRTVNZXRY?= =?utf-8?B?eHE0VlRWekhaUlF1bFhRckVEQ294emgxMVkwQ1VSek9VRWdVd0dURmg5R25F?= =?utf-8?B?SHkvcENXRFRYVVh2aDFwNnJHcFRLRFpBTUs5emh4eDYrWisyWWcwbzZKRXE2?= =?utf-8?B?d3M3eTdkRzEwUkUranNjZFlJRUFtMVJxN2RvcVNPWS9iMWxkMDJSanpFa3FP?= =?utf-8?B?cFd3Y01heHpPZ3ptTFlqMnRUeHR0amFpOW5hMXpSRnk0SXZrSXhxNklTK01H?= =?utf-8?B?WWx6YjNPeWVIUGtxMHJVd1NOU1Q0ajVpMmtUTS9rZFZaWms1SXV3VFIwYVFJ?= =?utf-8?Q?QRiTGXDe9Lk1PCV7wIzrgXbsz?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5639fd1-b143-425e-45ba-08db6d41b39e X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9448.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2023 01:41:55.9076 (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: HG/bFks/XOdb7NB4TuqKNQdtTqumF1KbfAGM2rBlsYLmhX2YNk6NuYgLB8uUrPkqQL4snaU2+Tlow6BRFZH4sA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB8034 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230614_184202_966004_FB5DB5DF X-CRM114-Status: GOOD ( 15.29 ) 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 QWRkIENhZGVuY2UgSERQLVRYIERpc3BsYXlQb3J0IFBIWSBkcml2ZXIgZm9yIGkuTVg4TVEKCkNh ZGVuY2UgSERQLVRYIFBIWSBjb3VsZCBiZSBwdXQgaW4gZWl0aGVyIERQIG1vZGUgb3IKSERNSSBt b2RlIGJhc2Ugb24gdGhlIGNvbmZpZ3VyYXRpb24gY2hvc2VuLgpEaXNwbGF5UG9ydCBQSFkgbW9k ZSBpcyBjb25maWd1cmF0ZWQgaW4gdGhlIGRyaXZlci4KClNpZ25lZC1vZmYtYnk6IFNhbmRvciBZ dSA8U2FuZG9yLnl1QG54cC5jb20+Ci0tLQogZHJpdmVycy9waHkvZnJlZXNjYWxlL0tjb25maWcg ICAgICAgICAgICAgfCAgIDkgKwogZHJpdmVycy9waHkvZnJlZXNjYWxlL01ha2VmaWxlICAgICAg ICAgICAgfCAgIDEgKwogZHJpdmVycy9waHkvZnJlZXNjYWxlL3BoeS1mc2wtaW14OG1xLWRwLmMg fCA2OTcgKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA3MDcgaW5zZXJ0 aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNs LWlteDhtcS1kcC5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvZnJlZXNjYWxlL0tjb25maWcg Yi9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvS2NvbmZpZwppbmRleCA4NTM5NThmYjJjMDYuLmE5OWVl MzcwZWRhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9waHkvZnJlZXNjYWxlL0tjb25maWcKKysrIGIv ZHJpdmVycy9waHkvZnJlZXNjYWxlL0tjb25maWcKQEAgLTM1LDYgKzM1LDE1IEBAIGNvbmZpZyBQ SFlfRlNMX0lNWDhNX1BDSUUKIAkgIEVuYWJsZSB0aGlzIHRvIGFkZCBzdXBwb3J0IGZvciB0aGUg UENJRSBQSFkgYXMgZm91bmQgb24KIAkgIGkuTVg4TSBmYW1pbHkgb2YgU09Dcy4KIAorY29uZmln IFBIWV9DQURFTkNFX0RQX1BIWQorCXRyaXN0YXRlICJDYWRlbmNlIEhEUFRYIERQIFBIWSBzdXBw b3J0IgorCWRlcGVuZHMgb24gT0YgJiYgSEFTX0lPTUVNCisJZGVwZW5kcyBvbiBDT01NT05fQ0xL CisJc2VsZWN0IEdFTkVSSUNfUEhZCisJaGVscAorCSAgRW5hYmxlIHRoaXMgdG8gc3VwcG9ydCB0 aGUgQ2FkZW5jZSBIRFBUWCBEUCBQSFkgZHJpdmVyCisJICBvbiBOWFAncyBpLk1YOE1RIFNPQy4K KwogZW5kaWYKIAogY29uZmlnIFBIWV9GU0xfTFlOWF8yOEcKZGlmZiAtLWdpdCBhL2RyaXZlcnMv cGh5L2ZyZWVzY2FsZS9NYWtlZmlsZSBiL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9NYWtlZmlsZQpp bmRleCBjZWRiMzI4YmM0ZDIuLmMzYmRmM2ZhMmU3MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9waHkv ZnJlZXNjYWxlL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9NYWtlZmlsZQpA QCAtNCwzICs0LDQgQEAgb2JqLSQoQ09ORklHX1BIWV9NSVhFTF9MVkRTX1BIWSkJKz0gcGh5LWZz bC1pbXg4cW0tbHZkcy1waHkubwogb2JqLSQoQ09ORklHX1BIWV9NSVhFTF9NSVBJX0RQSFkpCSs9 IHBoeS1mc2wtaW14OC1taXBpLWRwaHkubwogb2JqLSQoQ09ORklHX1BIWV9GU0xfSU1YOE1fUENJ RSkJKz0gcGh5LWZzbC1pbXg4bS1wY2llLm8KIG9iai0kKENPTkZJR19QSFlfRlNMX0xZTlhfMjhH KQkJKz0gcGh5LWZzbC1seW54LTI4Zy5vCitvYmotJChDT05GSUdfUEhZX0NBREVOQ0VfRFBfUEhZ KQkrPSBwaHktZnNsLWlteDhtcS1kcC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9mcmVlc2Nh bGUvcGh5LWZzbC1pbXg4bXEtZHAuYyBiL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNsLWlt eDhtcS1kcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmJkNjc3 MmE1ZDNiCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9waHkvZnJlZXNjYWxlL3BoeS1mc2wt aW14OG1xLWRwLmMKQEAgLTAsMCArMSw2OTcgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9ubHkKKy8qCisgKiBDYWRlbmNlIEhEUC1UWCBEaXNwbGF5IFBvcnQgSW50ZXJm YWNlIChEUCkgUEhZIGRyaXZlcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBOWFAgU2VtaWNv bmR1Y3RvciwgSW5jLgorICovCisjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPgorI2luY2x1ZGUg PGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4 L3BoeS9waHkuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRl IDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgorCisjaW5jbHVkZSA8ZHJt L2JyaWRnZS9jZG5zLW1oZHAtbWFpbGJveC5oPgorCisjZGVmaW5lIEFERFJfUEhZX0FGRQkweDgw MDAwCisKKy8qIFBIWSByZWdpc3RlcnMgKi8KKyNkZWZpbmUgQ01OX1NTTV9CSUFTX1RNUiAgICAg ICAgICAgICAgICAweDAwMjIKKyNkZWZpbmUgQ01OX1BMTFNNMF9QTExFTl9UTVIgICAgICAgICAg ICAweDAwMjkKKyNkZWZpbmUgQ01OX1BMTFNNMF9QTExQUkVfVE1SICAgICAgICAgICAweDAwMkEK KyNkZWZpbmUgQ01OX1BMTFNNMF9QTExWUkVGX1RNUiAgICAgICAgICAweDAwMkIKKyNkZWZpbmUg Q01OX1BMTFNNMF9QTExMT0NLX1RNUiAgICAgICAgICAweDAwMkMKKyNkZWZpbmUgQ01OX1BMTFNN MF9VU0VSX0RFRl9DVFJMICAgICAgICAweDAwMkYKKyNkZWZpbmUgQ01OX1BTTV9DTEtfQ1RSTCAg ICAgICAgICAgICAgICAweDAwNjEKKyNkZWZpbmUgQ01OX1BMTDBfVkNPQ0FMX1NUQVJUICAgICAg ICAgICAweDAwODEKKyNkZWZpbmUgQ01OX1BMTDBfVkNPQ0FMX0lOSVRfVE1SICAgICAgICAweDAw ODQKKyNkZWZpbmUgQ01OX1BMTDBfVkNPQ0FMX0lURVJfVE1SICAgICAgICAweDAwODUKKyNkZWZp bmUgQ01OX1BMTDBfSU5URElWICAgICAgICAgICAgICAgICAweDAwOTQKKyNkZWZpbmUgQ01OX1BM TDBfRlJBQ0RJViAgICAgICAgICAgICAgICAweDAwOTUKKyNkZWZpbmUgQ01OX1BMTDBfSElHSF9U SFIgICAgICAgICAgICAgICAweDAwOTYKKyNkZWZpbmUgQ01OX1BMTDBfRFNNX0RJQUcgICAgICAg ICAgICAgICAweDAwOTcKKyNkZWZpbmUgQ01OX1BMTDBfU1NfQ1RSTDIgICAgICAgICAgICAgICAw eDAwOTkKKyNkZWZpbmUgQ01OX0lDQUxfSU5JVF9UTVIgICAgICAgICAgICAgICAweDAwQzQKKyNk ZWZpbmUgQ01OX0lDQUxfSVRFUl9UTVIgICAgICAgICAgICAgICAweDAwQzUKKyNkZWZpbmUgQ01O X1JYQ0FMX0lOSVRfVE1SICAgICAgICAgICAgICAweDAwRDQKKyNkZWZpbmUgQ01OX1JYQ0FMX0lU RVJfVE1SICAgICAgICAgICAgICAweDAwRDUKKyNkZWZpbmUgQ01OX1RYUFVDQUxfSU5JVF9UTVIg ICAgICAgICAgICAweDAwRTQKKyNkZWZpbmUgQ01OX1RYUFVDQUxfSVRFUl9UTVIgICAgICAgICAg ICAweDAwRTUKKyNkZWZpbmUgQ01OX1RYUERDQUxfSU5JVF9UTVIgICAgICAgICAgICAweDAwRjQK KyNkZWZpbmUgQ01OX1RYUERDQUxfSVRFUl9UTVIgICAgICAgICAgICAweDAwRjUKKyNkZWZpbmUg Q01OX0lDQUxfQURKX0lOSVRfVE1SICAgICAgICAgICAweDAxMDIKKyNkZWZpbmUgQ01OX0lDQUxf QURKX0lURVJfVE1SICAgICAgICAgICAweDAxMDMKKyNkZWZpbmUgQ01OX1JYX0FESl9JTklUX1RN UiAgICAgICAgICAgICAweDAxMDYKKyNkZWZpbmUgQ01OX1JYX0FESl9JVEVSX1RNUiAgICAgICAg ICAgICAweDAxMDcKKyNkZWZpbmUgQ01OX1RYUFVfQURKX0lOSVRfVE1SICAgICAgICAgICAweDAx MEEKKyNkZWZpbmUgQ01OX1RYUFVfQURKX0lURVJfVE1SICAgICAgICAgICAweDAxMEIKKyNkZWZp bmUgQ01OX1RYUERfQURKX0lOSVRfVE1SICAgICAgICAgICAweDAxMEUKKyNkZWZpbmUgQ01OX1RY UERfQURKX0lURVJfVE1SICAgICAgICAgICAweDAxMEYKKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9G QkhfT1ZSRCAgICAgICAgICAweDAxQzAKKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9GQkxfT1ZSRCAg ICAgICAgICAweDAxQzEKKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9PVlJEICAgICAgICAgICAgICAw eDAxQzIKKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9URVNUX01PREUgICAgICAgICAweDAxQzQKKyNk ZWZpbmUgQ01OX0RJQUdfUExMMF9WMklfVFVORSAgICAgICAgICAweDAxQzUKKyNkZWZpbmUgQ01O X0RJQUdfUExMMF9DUF9UVU5FICAgICAgICAgICAweDAxQzYKKyNkZWZpbmUgQ01OX0RJQUdfUExM MF9MRl9QUk9HICAgICAgICAgICAweDAxQzcKKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9QVEFUSVNf VFVORTEgICAgICAweDAxQzgKKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9QVEFUSVNfVFVORTIgICAg ICAweDAxQzkKKyNkZWZpbmUgQ01OX0RJQUdfSFNDTEtfU0VMICAgICAgICAgICAgICAweDAxRTAK KyNkZWZpbmUgQ01OX0RJQUdfUEVSX0NBTF9BREogICAgICAgICAgICAweDAxRUMKKyNkZWZpbmUg Q01OX0RJQUdfQ0FMX0NUUkwgICAgICAgICAgICAgICAweDAxRUQKKyNkZWZpbmUgQ01OX0RJQUdf QUNZQSAgICAgICAgICAgICAgICAgICAweDAxRkYKKyNkZWZpbmUgWENWUl9QU01fUkNUUkwgICAg ICAgICAgICAgICAgICAweDQwMDEKKyNkZWZpbmUgWENWUl9QU01fQ0FMX1RNUiAgICAgICAgICAg ICAgICAweDQwMDIKKyNkZWZpbmUgWENWUl9QU01fQTBJTl9UTVIgICAgICAgICAgICAgICAweDQw MDMKKyNkZWZpbmUgVFhfVFhDQ19DQUxfU0NMUl9NVUxUXzAgICAgICAgICAweDQwNDcKKyNkZWZp bmUgVFhfVFhDQ19DUE9TVF9NVUxUXzAwXzAgICAgICAgICAweDQwNEMKKyNkZWZpbmUgWENWUl9E SUFHX1BMTERSQ19DVFJMICAgICAgICAgICAweDQwRTAKKyNkZWZpbmUgWENWUl9ESUFHX1BMTERS Q19DVFJMICAgICAgICAgICAweDQwRTAKKyNkZWZpbmUgWENWUl9ESUFHX0hTQ0xLX1NFTCAgICAg ICAgICAgICAweDQwRTEKKyNkZWZpbmUgWENWUl9ESUFHX0xBTkVfRkNNX0VOX01HTl9UTVIgICAw eDQwRjIKKyNkZWZpbmUgVFhfUFNDX0EwICAgICAgICAgICAgICAgICAgICAgICAweDQxMDAKKyNk ZWZpbmUgVFhfUFNDX0ExICAgICAgICAgICAgICAgICAgICAgICAweDQxMDEKKyNkZWZpbmUgVFhf UFNDX0EyICAgICAgICAgICAgICAgICAgICAgICAweDQxMDIKKyNkZWZpbmUgVFhfUFNDX0EzICAg ICAgICAgICAgICAgICAgICAgICAweDQxMDMKKyNkZWZpbmUgVFhfUkNWREVUX0VOX1RNUiAgICAg ICAgICAgICAgICAweDQxMjIKKyNkZWZpbmUgVFhfUkNWREVUX1NUX1RNUiAgICAgICAgICAgICAg ICAweDQxMjMKKyNkZWZpbmUgVFhfRElBR19CR1JFRl9QUkVEUlZfREVMQVkgICAgICAweDQxRTcK KyNkZWZpbmUgVFhfRElBR19CR1JFRl9QUkVEUlZfREVMQVkgICAgICAweDQxRTcKKyNkZWZpbmUg VFhfRElBR19BQ1lBXzAgICAgICAgICAgICAgICAgICAweDQxRkYKKyNkZWZpbmUgVFhfRElBR19B Q1lBXzEgICAgICAgICAgICAgICAgICAweDQzRkYKKyNkZWZpbmUgVFhfRElBR19BQ1lBXzIgICAg ICAgICAgICAgICAgICAweDQ1RkYKKyNkZWZpbmUgVFhfRElBR19BQ1lBXzMgICAgICAgICAgICAg ICAgICAweDQ3RkYKKyNkZWZpbmUgVFhfQU5BX0NUUkxfUkVHXzEgICAgICAgICAgICAgICAweDUw MjAKKyNkZWZpbmUgVFhfQU5BX0NUUkxfUkVHXzIgICAgICAgICAgICAgICAweDUwMjEKKyNkZWZp bmUgVFhfRElHX0NUUkxfUkVHXzEgICAgICAgICAgICAgICAweDUwMjMKKyNkZWZpbmUgVFhfRElH X0NUUkxfUkVHXzIgICAgICAgICAgICAgICAweDUwMjQKKyNkZWZpbmUgVFhEQV9DWUFfQVVYREFf Q1lBICAgICAgICAgICAgICAweDUwMjUKKyNkZWZpbmUgVFhfQU5BX0NUUkxfUkVHXzMgICAgICAg ICAgICAgICAweDUwMjYKKyNkZWZpbmUgVFhfQU5BX0NUUkxfUkVHXzQgICAgICAgICAgICAgICAw eDUwMjcKKyNkZWZpbmUgVFhfQU5BX0NUUkxfUkVHXzUgICAgICAgICAgICAgICAweDUwMjkKKyNk ZWZpbmUgUlhfUFNDX0EwICAgICAgICAgICAgICAgICAgICAgICAweDgwMDAKKyNkZWZpbmUgUlhf UFNDX0NBTCAgICAgICAgICAgICAgICAgICAgICAweDgwMDYKKyNkZWZpbmUgUEhZX0hEUF9NT0RF X0NUUkwgICAgICAgICAgICAgICAweEMwMDgKKyNkZWZpbmUgUEhZX0hEUF9DTEtfQ1RMICAgICAg ICAgICAgICAgICAweEMwMDkKKyNkZWZpbmUgUEhZX1BNQV9DTU5fQ1RSTDEgICAgICAgICAgICAg ICAweEM4MDAKKworI2RlZmluZSBSRUZfQ0xLXzI3TUhaCQkyNzAwMDAwMAorCitlbnVtIGRwX2xp bmtfcmF0ZSB7CisJUkFURV8xXzYgPSAxNjIwMDAsCisJUkFURV8yXzEgPSAyMTYwMDAsCisJUkFU RV8yXzQgPSAyNDMwMDAsCisJUkFURV8yXzcgPSAyNzAwMDAsCisJUkFURV8zXzIgPSAzMjQwMDAs CisJUkFURV80XzMgPSA0MzIwMDAsCisJUkFURV81XzQgPSA1NDAwMDAsCisJUkFURV84XzEgPSA4 MTAwMDAsCit9OworCisjZGVmaW5lIE1BWF9MSU5LX1JBVEUgUkFURV81XzQKKworc3RydWN0IHBo eV9wbGxfcmVnIHsKKwl1MTYgdmFsWzddOworCXUzMiBhZGRyOworfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCBwaHlfcGxsX3JlZyBwaHlfcGxsXzI3bV9jZmdbXSA9IHsKKwkvKiAgMS42MiAgICAy LjE2ICAgIDIuNDMgICAgMi43ICAgICAzLjI0ICAgIDQuMzIgICAgNS40ICAgICAgcmVnaXN0ZXIg YWRkcmVzcyAqLworCXt7IDB4MDEwRSwgMHgwMTBFLCAweDAxMEUsIDB4MDEwRSwgMHgwMTBFLCAw eDAxMEUsIDB4MDEwRSB9LCBDTU5fUExMMF9WQ09DQUxfSU5JVF9UTVIgfSwKKwl7eyAweDAwMUIs IDB4MDAxQiwgMHgwMDFCLCAweDAwMUIsIDB4MDAxQiwgMHgwMDFCLCAweDAwMUIgfSwgQ01OX1BM TDBfVkNPQ0FMX0lURVJfVE1SIH0sCisJe3sgMHgzMEI5LCAweDMwODcsIDB4MzA5NiwgMHgzMEI0 LCAweDMwQjksIDB4MzA4NywgMHgzMEI0IH0sIENNTl9QTEwwX1ZDT0NBTF9TVEFSVCB9LAorCXt7 IDB4MDA3NywgMHgwMDlGLCAweDAwQjMsIDB4MDBDNywgMHgwMDc3LCAweDAwOUYsIDB4MDBDNyB9 LCBDTU5fUExMMF9JTlRESVYgfSwKKwl7eyAweEY5REEsIDB4RjdDRCwgMHhGNkM3LCAweEY1QzEs IDB4RjlEQSwgMHhGN0NELCAweEY1QzEgfSwgQ01OX1BMTDBfRlJBQ0RJViB9LAorCXt7IDB4MDAx RSwgMHgwMDI4LCAweDAwMkQsIDB4MDAzMiwgMHgwMDFFLCAweDAwMjgsIDB4MDAzMiB9LCBDTU5f UExMMF9ISUdIX1RIUiB9LAorCXt7IDB4MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCwgMHgw MDIwLCAweDAwMjAsIDB4MDAyMCB9LCBDTU5fUExMMF9EU01fRElBRyB9LAorCXt7IDB4MDAwMCwg MHgxMDAwLCAweDEwMDAsIDB4MTAwMCwgMHgwMDAwLCAweDEwMDAsIDB4MTAwMCB9LCBDTU5fUExM U00wX1VTRVJfREVGX0NUUkwgfSwKKwl7eyAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAs IDB4MDAwMCwgMHgwMDAwLCAweDAwMDAgfSwgQ01OX0RJQUdfUExMMF9PVlJEIH0sCisJe3sgMHgw MDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwIH0sIENN Tl9ESUFHX1BMTDBfRkJIX09WUkQgfSwKKwl7eyAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAw MDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAgfSwgQ01OX0RJQUdfUExMMF9GQkxfT1ZSRCB9LAor CXt7IDB4MDAwNiwgMHgwMDA3LCAweDAwMDcsIDB4MDAwNywgMHgwMDA2LCAweDAwMDcsIDB4MDAw NyB9LCBDTU5fRElBR19QTEwwX1YySV9UVU5FIH0sCisJe3sgMHgwMDQzLCAweDAwNDMsIDB4MDA0 MywgMHgwMDQyLCAweDAwNDMsIDB4MDA0MywgMHgwMDQyIH0sIENNTl9ESUFHX1BMTDBfQ1BfVFVO RSB9LAorCXt7IDB4MDAwOCwgMHgwMDA4LCAweDAwMDgsIDB4MDAwOCwgMHgwMDA4LCAweDAwMDgs IDB4MDAwOCB9LCBDTU5fRElBR19QTEwwX0xGX1BST0cgfSwKKwl7eyAweDAxMDAsIDB4MDAwMSwg MHgwMDAxLCAweDAwMDEsIDB4MDEwMCwgMHgwMDAxLCAweDAwMDEgfSwgQ01OX0RJQUdfUExMMF9Q VEFUSVNfVFVORTEgfSwKKwl7eyAweDAwMDcsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEsIDB4MDAw NywgMHgwMDAxLCAweDAwMDEgfSwgQ01OX0RJQUdfUExMMF9QVEFUSVNfVFVORTIgfSwKKwl7eyAw eDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAweDAwMjAgfSwg Q01OX0RJQUdfUExMMF9URVNUX01PREV9LAorCXt7IDB4MDAxNiwgMHgwMDE2LCAweDAwMTYsIDB4 MDAxNiwgMHgwMDE2LCAweDAwMTYsIDB4MDAxNiB9LCBDTU5fUFNNX0NMS19DVFJMIH0KK307CisK K3N0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSB7CisJdm9pZCBfX2lvbWVtICpyZWdzOwkvKiBEUFRY IHJlZ2lzdGVycyBiYXNlICovCisJc3RydWN0IGRldmljZSAqZGV2OworCXN0cnVjdCBwaHkgKnBo eTsKKwlzdHJ1Y3QgbXV0ZXggbWJveF9tdXRleDsgLyogbXV0ZXggdG8gcHJvdGVjdCBtYWlsYm94 ICovCisJc3RydWN0IGNsayAqcmVmX2NsaywgKmFwYl9jbGs7CisJdTMyIHJlZl9jbGtfcmF0ZTsK Kwl1MzIgbnVtX2xhbmVzOworCXUzMiBsaW5rX3JhdGU7CisJYm9vbCBwb3dlcl91cDsKK307CisK K3N0YXRpYyBpbnQgY2Ruc19waHlfcmVnX3dyaXRlKHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAq Y2Ruc19waHksIHUzMiBhZGRyLCB1MzIgdmFsKQoreworCXJldHVybiBjZG5zX21oZHBfcmVnX3dy aXRlKGNkbnNfcGh5LCBBRERSX1BIWV9BRkUgKyAoYWRkciA8PCAyKSwgdmFsKTsKK30KKworc3Rh dGljIHUzMiBjZG5zX3BoeV9yZWdfcmVhZChzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNf cGh5LCB1MzIgYWRkcikKK3sKKwl1MzIgcmVnMzI7CisKKwljZG5zX21oZHBfcmVnX3JlYWQoY2Ru c19waHksIEFERFJfUEhZX0FGRSArIChhZGRyIDw8IDIpLCAmcmVnMzIpOworCXJldHVybiByZWcz MjsKK30KKworc3RhdGljIGludCBsaW5rX3JhdGVfaW5kZXgodTMyIHJhdGUpCit7CisJc3dpdGNo IChyYXRlKSB7CisJY2FzZSBSQVRFXzFfNjoKKwkJcmV0dXJuIDA7CisJY2FzZSBSQVRFXzJfMToK KwkJcmV0dXJuIDE7CisJY2FzZSBSQVRFXzJfNDoKKwkJcmV0dXJuIDI7CisJY2FzZSBSQVRFXzJf NzoKKwkJcmV0dXJuIDM7CisJY2FzZSBSQVRFXzNfMjoKKwkJcmV0dXJuIDQ7CisJY2FzZSBSQVRF XzRfMzoKKwkJcmV0dXJuIDU7CisJY2FzZSBSQVRFXzVfNDoKKwkJcmV0dXJuIDY7CisJZGVmYXVs dDoKKwkJcmV0dXJuIC0xOworCX0KK30KKworc3RhdGljIGludCBoZHB0eF9kcF9jbGtfZW5hYmxl KHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkpCit7CisJc3RydWN0IGRldmljZSAq ZGV2ID0gY2Ruc19waHktPmRldjsKKwl1MzIgcmVmX2Nsa19yYXRlOworCWludCByZXQ7CisKKwlj ZG5zX3BoeS0+cmVmX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJyZWYiKTsKKwlpZiAoSVNfRVJS KGNkbnNfcGh5LT5yZWZfY2xrKSkgeworCQlkZXZfZXJyKGRldiwgInBoeSByZWYgY2xvY2sgbm90 IGZvdW5kXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoY2Ruc19waHktPnJlZl9jbGspOworCX0KKwor CWNkbnNfcGh5LT5hcGJfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImFwYiIpOworCWlmIChJU19F UlIoY2Ruc19waHktPmFwYl9jbGspKSB7CisJCWRldl9lcnIoZGV2LCAicGh5IGFwYiBjbG9jayBu b3QgZm91bmRcbiIpOworCQlyZXR1cm4gUFRSX0VSUihjZG5zX3BoeS0+YXBiX2Nsayk7CisJfQor CisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNkbnNfcGh5LT5yZWZfY2xrKTsKKwlpZiAocmV0 KSB7CisJCWRldl9lcnIoY2Ruc19waHktPmRldiwgIkZhaWxlZCB0byBwcmVwYXJlIHJlZiBjbG9j a1xuIik7CisJCXJldHVybiByZXQ7CisJfQorCisJcmVmX2Nsa19yYXRlID0gY2xrX2dldF9yYXRl KGNkbnNfcGh5LT5yZWZfY2xrKTsKKwlpZiAoIXJlZl9jbGtfcmF0ZSkgeworCQlkZXZfZXJyKGNk bnNfcGh5LT5kZXYsICJGYWlsZWQgdG8gZ2V0IHJlZiBjbG9jayByYXRlXG4iKTsKKwkJZ290byBl cnJfcmVmX2NsazsKKwl9CisKKwlpZiAocmVmX2Nsa19yYXRlID09IFJFRl9DTEtfMjdNSFopCisJ CWNkbnNfcGh5LT5yZWZfY2xrX3JhdGUgPSByZWZfY2xrX3JhdGU7CisJZWxzZSB7CisJCWRldl9l cnIoY2Ruc19waHktPmRldiwgIk5vdCBzdXBwb3J0IFJlZiBDbG9jayBSYXRlKCVkSHopXG4iLCBy ZWZfY2xrX3JhdGUpOworCQlnb3RvIGVycl9yZWZfY2xrOworCX0KKworCXJldCA9IGNsa19wcmVw YXJlX2VuYWJsZShjZG5zX3BoeS0+YXBiX2Nsayk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGNk bnNfcGh5LT5kZXYsICJGYWlsZWQgdG8gcHJlcGFyZSBhcGIgY2xvY2tcbiIpOworCQlnb3RvIGVy cl9yZWZfY2xrOworCX0KKworCXJldHVybiAwOworCitlcnJfcmVmX2NsazoKKwljbGtfZGlzYWJs ZV91bnByZXBhcmUoY2Ruc19waHktPnJlZl9jbGspOworCXJldHVybiAtRUlOVkFMOworfQorCitz dGF0aWMgdm9pZCBoZHB0eF9kcF9jbGtfZGlzYWJsZShzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkg KmNkbnNfcGh5KQoreworCWNsa19kaXNhYmxlX3VucHJlcGFyZShjZG5zX3BoeS0+cmVmX2Nsayk7 CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNkbnNfcGh5LT5hcGJfY2xrKTsKK30KKworc3RhdGlj IHZvaWQgaGRwdHhfZHBfYXV4X2NmZyhzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5 KQoreworCS8qIFBvd2VyIHVwIEF1eCAqLworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg VFhEQV9DWUFfQVVYREFfQ1lBLCAxKTsKKworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg VFhfRElHX0NUUkxfUkVHXzEsIDB4Myk7CisJbmRlbGF5KDE1MCk7CisJY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LCBUWF9ESUdfQ1RSTF9SRUdfMiwgMzYpOworCW5kZWxheSgxNTApOworCWNk bnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzIsIDB4MDEwMCk7CisJ bmRlbGF5KDE1MCk7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9S RUdfMiwgMHgwMzAwKTsKKwluZGVsYXkoMTUwKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19w aHksIFRYX0FOQV9DVFJMX1JFR18zLCAweDAwMDApOworCW5kZWxheSgxNTApOworCWNkbnNfcGh5 X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzEsIDB4MjAwOCk7CisJbmRlbGF5 KDE1MCk7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMSwg MHgyMDE4KTsKKwluZGVsYXkoMTUwKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRY X0FOQV9DVFJMX1JFR18xLCAweEEwMTgpOworCW5kZWxheSgxNTApOworCWNkbnNfcGh5X3JlZ193 cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzIsIDB4MDMwQyk7CisJbmRlbGF5KDE1MCk7 CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfNSwgMHgwMDAw KTsKKwluZGVsYXkoMTUwKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9D VFJMX1JFR180LCAweDEwMDEpOworCW5kZWxheSgxNTApOworCWNkbnNfcGh5X3JlZ193cml0ZShj ZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzEsIDB4QTA5OCk7CisJbmRlbGF5KDE1MCk7CisJY2Ru c19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMSwgMHhBMTk4KTsKKwlu ZGVsYXkoMTUwKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JF R18yLCAweDAzMGQpOworCW5kZWxheSgxNTApOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3Bo eSwgVFhfQU5BX0NUUkxfUkVHXzIsIDB4MDMwZik7Cit9CisKKy8qIFBNQSBjb21tb24gY29uZmln dXJhdGlvbiBmb3IgMjdNSHogKi8KK3N0YXRpYyB2b2lkIGhkcHR4X2RwX3BoeV9wbWFfY21uX2Nm Z18yN21oeihzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5KQoreworCXUzMiBudW1f bGFuZXMgPSBjZG5zX3BoeS0+bnVtX2xhbmVzOworCXUxNiB2YWw7CisJaW50IGs7CisKKwl2YWwg PSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX1BNQV9DTU5fQ1RSTDEpOworCXZhbCAm PSAweEZGRjc7CisJdmFsIHw9IDB4MDAwODsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHks IFBIWV9QTUFfQ01OX0NUUkwxLCB2YWwpOworCisJLyogU3RhcnR1cCBzdGF0ZSBtYWNoaW5lIHJl Z2lzdGVycyAqLworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1NTTV9CSUFTX1RN UiwgMHgwMDg3KTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9QTExTTTBfUExM RU5fVE1SLCAweDAwMUIpOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1BMTFNN MF9QTExQUkVfVE1SLCAweDAwMzYpOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01O X1BMTFNNMF9QTExWUkVGX1RNUiwgMHgwMDFCKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19w aHksIENNTl9QTExTTTBfUExMTE9DS19UTVIsIDB4MDA2Qyk7CisKKwkvKiBDdXJyZW50IGNhbGli cmF0aW9uIHJlZ2lzdGVycyAqLworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX0lD QUxfSU5JVF9UTVIsIDB4MDA0NCk7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5f SUNBTF9JVEVSX1RNUiwgMHgwMDA2KTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENN Tl9JQ0FMX0FESl9JTklUX1RNUiwgMHgwMDIyKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19w aHksIENNTl9JQ0FMX0FESl9JVEVSX1RNUiwgMHgwMDA2KTsKKworCS8qIFJlc2lzdG9yIGNhbGli cmF0aW9uIHJlZ2lzdGVycyAqLworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1RY UFVDQUxfSU5JVF9UTVIsIDB4MDAyMik7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBD TU5fVFhQVUNBTF9JVEVSX1RNUiwgMHgwMDA2KTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19w aHksIENNTl9UWFBVX0FESl9JTklUX1RNUiwgMHgwMDIyKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIENNTl9UWFBVX0FESl9JVEVSX1RNUiwgMHgwMDA2KTsKKwljZG5zX3BoeV9yZWdf d3JpdGUoY2Ruc19waHksIENNTl9UWFBEQ0FMX0lOSVRfVE1SLCAweDAwMjIpOworCWNkbnNfcGh5 X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1RYUERDQUxfSVRFUl9UTVIsIDB4MDAwNik7CisJY2Ru c19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQRF9BREpfSU5JVF9UTVIsIDB4MDAyMik7 CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQRF9BREpfSVRFUl9UTVIsIDB4 MDAwNik7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUlhDQUxfSU5JVF9UTVIs IDB4MDAyMik7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUlhDQUxfSVRFUl9U TVIsIDB4MDAwNik7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUlhfQURKX0lO SVRfVE1SLCAweDAwMjIpOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1JYX0FE Sl9JVEVSX1RNUiwgMHgwMDA2KTsKKworCWZvciAoayA9IDA7IGsgPCBudW1fbGFuZXM7IGsgPSBr ICsgMSkgeworCQkvKiBQb3dlciBzdGF0ZSBtYWNoaW5lIHJlZ2lzdGVycyAqLworCQljZG5zX3Bo eV9yZWdfd3JpdGUoY2Ruc19waHksIFhDVlJfUFNNX0NBTF9UTVIgIHwgKGsgPDwgOSksIDB4MDE2 RCk7CisJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgWENWUl9QU01fQTBJTl9UTVIgfCAo ayA8PCA5KSwgMHgwMTZEKTsKKwkJLyogVHJhbnNjZWl2ZXIgY29udHJvbCBhbmQgZGlhZ25vc3Rp YyByZWdpc3RlcnMgKi8KKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBYQ1ZSX0RJQUdf TEFORV9GQ01fRU5fTUdOX1RNUiB8IChrIDw8IDkpLCAweDAwQTIpOworCQljZG5zX3BoeV9yZWdf d3JpdGUoY2Ruc19waHksIFRYX0RJQUdfQkdSRUZfUFJFRFJWX0RFTEFZICAgIHwgKGsgPDwgOSks IDB4MDA5Nyk7CisJCS8qIFRyYW5zbWl0dGVyIHJlY2VpdmVyIGRldGVjdCByZWdpc3RlcnMgKi8K KwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9SQ1ZERVRfRU5fVE1SIHwgKGsgPDwg OSksIDB4MEE4Qyk7CisJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfUkNWREVUX1NU X1RNUiB8IChrIDw8IDkpLCAweDAwMzYpOworCX0KKworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5z X3BoeSwgVFhfRElBR19BQ1lBXzAsIDEpOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg VFhfRElBR19BQ1lBXzEsIDEpOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElB R19BQ1lBXzIsIDEpOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lB XzMsIDEpOworfQorCitzdGF0aWMgdm9pZCBoZHB0eF9kcF9waHlfcG1hX2Ntbl9wbGwwXzI3bWh6 KHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkpCit7CisJdTMyIG51bV9sYW5lcyA9 IGNkbnNfcGh5LT5udW1fbGFuZXM7CisJdTMyIGxpbmtfcmF0ZSA9IGNkbnNfcGh5LT5saW5rX3Jh dGU7CisJdTE2IHZhbDsKKwlpbnQgaW5kZXgsIGksIGs7CisKKwkvKiBEUCBQTEwgZGF0YSByYXRl IDAvMSBjbG9jayBkaXZpZGVyIHZhbHVlICovCisJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ru c19waHksIFBIWV9IRFBfQ0xLX0NUTCk7CisJdmFsICY9IDB4MDBGRjsKKwlpZiAobGlua19yYXRl IDw9IFJBVEVfMl83KQorCQl2YWwgfD0gMHgyNDAwOworCWVsc2UKKwkJdmFsIHw9IDB4MTIwMDsK KwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCwgdmFsKTsKKwor CS8qIEhpZ2ggc3BlZWQgY2xvY2sgMC8xIGRpdiAqLworCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFk KGNkbnNfcGh5LCBDTU5fRElBR19IU0NMS19TRUwpOworCXZhbCAmPSAweEZGQ0M7CisJaWYgKGxp bmtfcmF0ZSA8PSBSQVRFXzJfNykKKwkJdmFsIHw9IDB4MDAxMTsKKwljZG5zX3BoeV9yZWdfd3Jp dGUoY2Ruc19waHksIENNTl9ESUFHX0hTQ0xLX1NFTCwgdmFsKTsKKworCWZvciAoayA9IDA7IGsg PCBudW1fbGFuZXM7IGsrKykgeworCQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwg KFhDVlJfRElBR19IU0NMS19TRUwgfCAoayA8PCA5KSkpOworCQl2YWwgPSB2YWwgJiAweENGRkY7 CisJCWlmIChsaW5rX3JhdGUgPD0gUkFURV8yXzcpCisJCQl2YWwgfD0gMHgxMDAwOworCQljZG5z X3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIChYQ1ZSX0RJQUdfSFNDTEtfU0VMIHwgKGsgPDwgOSkp LCB2YWwpOworCX0KKworCS8qIERQIFBIWSBQTEwgMjdNSHogY29uZmlndXJhdGlvbiAqLworCWlu ZGV4ID0gbGlua19yYXRlX2luZGV4KGxpbmtfcmF0ZSk7CisJZm9yIChpID0gMDsgaSA8IEFSUkFZ X1NJWkUocGh5X3BsbF8yN21fY2ZnKTsgaSsrKQorCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19w aHksIHBoeV9wbGxfMjdtX2NmZ1tpXS5hZGRyLAorCQkJCXBoeV9wbGxfMjdtX2NmZ1tpXS52YWxb aW5kZXhdKTsKKworCS8qIFRyYW5zY2VpdmVyIGNvbnRyb2wgYW5kIGRpYWdub3N0aWMgcmVnaXN0 ZXJzICovCisJZm9yIChrID0gMDsgayA8IG51bV9sYW5lczsgaysrKSB7CisJCXZhbCA9IGNkbnNf cGh5X3JlZ19yZWFkKGNkbnNfcGh5LCAoWENWUl9ESUFHX1BMTERSQ19DVFJMIHwgKGsgPDwgOSkp KTsKKwkJdmFsID0gdmFsICYgMHg4RkZGOworCQlpZiAobGlua19yYXRlIDw9IFJBVEVfMl83KQor CQkJdmFsIHw9IDB4MjAwMDsKKwkJZWxzZQorCQkJdmFsIHw9IDB4MTAwMDsKKwkJY2Ruc19waHlf cmVnX3dyaXRlKGNkbnNfcGh5LCAoWENWUl9ESUFHX1BMTERSQ19DVFJMIHwgKGsgPDwgOSkpLCB2 YWwpOworCX0KKworCWZvciAoayA9IDA7IGsgPCBudW1fbGFuZXM7IGsgPSBrICsgMSkgeworCQkv KiBQb3dlciBzdGF0ZSBtYWNoaW5lIHJlZ2lzdGVycyAqLworCQljZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIChYQ1ZSX1BTTV9SQ1RSTCB8IChrIDw8IDkpKSwgIDB4QkVGQyk7CisJCWNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFRYX1BTQ19BMCB8IChrIDw8IDkpKSwgMHg2Nzk5KTsK KwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAoVFhfUFNDX0ExIHwgKGsgPDwgOSkpLCAw eDY3OTgpOworCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIChUWF9QU0NfQTIgfCAoayA8 PCA5KSksIDB4MDA5OCk7CisJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFRYX1BTQ19B MyB8IChrIDw8IDkpKSwgMHgwMDk4KTsKKwkJLyogUmVjZWl2ZXIgY2FsaWJyYXRpb24gcG93ZXIg c3RhdGUgZGVmaW5pdGlvbiByZWdpc3RlciAqLworCQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChj ZG5zX3BoeSwgUlhfUFNDX0NBTCB8IChrIDw8IDkpKTsKKwkJdmFsICY9IDB4RkZCQjsKKwkJY2Ru c19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAoUlhfUFNDX0NBTCB8IChrIDw8IDkpKSwgdmFsKTsK KwkJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFJYX1BTQ19BMCAgfCAoayA8PCA5 KSk7CisJCXZhbCAmPSAweEZGQkI7CisJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFJY X1BTQ19BMCAgfCAoayA8PCA5KSksIHZhbCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBoZHB0eF9k cF9waHlfcmVmX2Nsb2NrX3R5cGUoc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSkK K3sKKwl1MzIgdmFsOworCisJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9Q TUFfQ01OX0NUUkwxKTsKKwl2YWwgJj0gMHhGRjhGOworCS8qCisJICogc2luZ2xlIGVuZGVkIHJl ZmVyZW5jZSBjbG9jayAodmFsIHw9IDB4MDAzMCk7CisJICogZGlmZmVyZW50aWFsIGNsb2NrICAo dmFsIHw9IDB4MDAwMCk7CisJICoKKwkgKiBmb3IgZGlmZmVyZW50aWFsIGNsb2NrIG9uIHRoZSBy ZWZjbGtfcCBhbmQKKwkgKiByZWZjbGtfbSBvZmYgY2hpcCBwaW5zOiBDTU5fRElBR19BQ1lBWzhd PTEnYjEKKwkgKiBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9ESUFHX0FDWUEsIDB4 MDEwMCk7CisJICovCisJdmFsIHw9IDB4MDAzMDsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19w aHksIFBIWV9QTUFfQ01OX0NUUkwxLCB2YWwpOworfQorCitzdGF0aWMgaW50IGhkcHR4X2RwX3Bo eV9wb3dlcl91cChzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5KQoreworCXUzMiB2 YWwsIGk7CisKKwkvKiBFbmFibGUgSERQIFBMTOKAmXMgZm9yIGhpZ2ggc3BlZWQgY2xvY2tzICov CisJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCk7CisJ dmFsIHw9ICgxIDw8IDApOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0hEUF9D TEtfQ1RMLCB2YWwpOworCS8qIFdhaXQgZm9yIFBMTCByZWFkeSBBQ0sgKi8KKwlmb3IgKGkgPSAw OyBpIDwgMTA7IGkrKykgeworCQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZ X0hEUF9DTEtfQ1RMKTsKKwkJaWYgKHZhbCAmICgxIDw8IDEpKQorCQkJYnJlYWs7CisJCW1zbGVl cCgyMCk7CisJfQorCWlmIChpID09IDEwKSB7CisJCWRldl9lcnIoY2Ruc19waHktPmRldiwgIldh aXQgUExMIEFjayBmYWlsZWRcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCisJLyogRW5hYmxlIEhE UCBQTEzigJlzIGRhdGEgcmF0ZSBhbmQgZnVsbCByYXRlIGNsb2NrcyBvdXQgb2YgUE1BLiAqLwor CXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOworCXZh bCB8PSAoMSA8PCAyKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfQ0xL X0NUTCwgdmFsKTsKKwkvKiBXYWl0IGZvciBQTEwgY2xvY2sgZW5hYmxlIEFDSyAqLworCWZvciAo aSA9IDA7IGkgPCAxMDsgaSsrKSB7CisJCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5 LCBQSFlfSERQX0NMS19DVEwpOworCQlpZiAodmFsICYgKDEgPDwgMykpCisJCQlicmVhazsKKwkJ bXNsZWVwKDIwKTsKKwl9CisJaWYgKGkgPT0gMTApIHsKKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2 LCAiV2FpdCBQTEwgY2xvY2sgZW5hYmxlIEFDayBmYWlsZWRcbiIpOworCQlyZXR1cm4gLTE7CisJ fQorCisJLyogQ29uZmlndXJlIFBIWSBpbiBBMiBNb2RlICovCisJY2Ruc19waHlfcmVnX3dyaXRl KGNkbnNfcGh5LCBQSFlfSERQX01PREVfQ1RSTCwgMHgwMDA0KTsKKwkvKiBXYWl0IGZvciBQb3dl ciBTdGF0ZSBBMiBBY2sgKi8KKwlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgeworCQl2YWwgPSBj ZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9NT0RFX0NUUkwpOworCQlpZiAodmFs ICYgKDEgPDwgNikpCisJCQlicmVhazsKKwkJbXNsZWVwKDIwKTsKKwl9CisJaWYgKGkgPT0gMTAp IHsKKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiV2FpdCBBMiBBY2sgZmFpbGVkXG4iKTsKKwkJ cmV0dXJuIC0xOworCX0KKworCS8qIENvbmZpZ3VyZSBQSFkgaW4gQTAgbW9kZSAoUEhZIG11c3Qg YmUgaW4gdGhlIEEwIHBvd2VyCisJICogc3RhdGUgaW4gb3JkZXIgdG8gdHJhbnNtaXQgZGF0YSkK KwkgKi8KKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfTU9ERV9DVFJMLCAw eDAxMDEpOworCisJLyogV2FpdCBmb3IgUG93ZXIgU3RhdGUgQTAgQWNrICovCisJZm9yIChpID0g MDsgaSA8IDEwOyBpKyspIHsKKwkJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBI WV9IRFBfTU9ERV9DVFJMKTsKKwkJaWYgKHZhbCAmICgxIDw8IDQpKQorCQkJYnJlYWs7CisJCW1z bGVlcCgyMCk7CisJfQorCWlmIChpID09IDEwKSB7CisJCWRldl9lcnIoY2Ruc19waHktPmRldiwg IldhaXQgQTAgQWNrIGZhaWxlZFxuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwljZG5zX3BoeS0+ cG93ZXJfdXAgPSB0cnVlOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGhkcHR4X2Rw X3BoeV9wb3dlcl9kb3duKHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkpCit7CisJ dTE2IHZhbDsKKwlpbnQgaTsKKworCWlmICghY2Ruc19waHktPnBvd2VyX3VwKQorCQlyZXR1cm47 CisKKwkvKiBQbGFjZSB0aGUgUEhZIGxhbmVzIGluIHRoZSBBMyBwb3dlciBzdGF0ZS4gKi8KKwlj ZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfTU9ERV9DVFJMLCAweDgpOworCS8q IFdhaXQgZm9yIFBvd2VyIFN0YXRlIEEzIEFjayAqLworCWZvciAoaSA9IDA7IGkgPCAxMDsgaSsr KSB7CisJCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX01PREVfQ1RS TCk7CisJCWlmICh2YWwgJiAoMSA8PCA3KSkKKwkJCWJyZWFrOworCQltc2xlZXAoMjApOworCX0K KwlpZiAoaSA9PSAxMCkgeworCQlkZXZfZXJyKGNkbnNfcGh5LT5kZXYsICJXYWl0IEEzIEFjayBm YWlsZWRcbiIpOworCQlyZXR1cm47CisJfQorCisJLyogRGlzYWJsZSBIRFAgUExM4oCZcyBkYXRh IHJhdGUgYW5kIGZ1bGwgcmF0ZSBjbG9ja3Mgb3V0IG9mIFBNQS4gKi8KKwl2YWwgPSBjZG5zX3Bo eV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsKKwl2YWwgJj0gfigxIDw8IDIp OworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMLCB2YWwpOwor CS8qIFdhaXQgZm9yIFBMTCBjbG9jayBnYXRlIEFDSyAqLworCWZvciAoaSA9IDA7IGkgPCAxMDsg aSsrKSB7CisJCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19D VEwpOworCQlpZiAoISh2YWwgJiAoMSA8PCAzKSkpCisJCQlicmVhazsKKwkJbXNsZWVwKDIwKTsK Kwl9CisJaWYgKGkgPT0gMTApIHsKKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiV2FpdCBQTEwg Y2xvY2sgZ2F0ZSBBY2sgZmFpbGVkXG4iKTsKKwkJcmV0dXJuOworCX0KKworCS8qIERpc2FibGUg SERQIFBMTOKAmXMgZm9yIGhpZ2ggc3BlZWQgY2xvY2tzICovCisJdmFsID0gY2Ruc19waHlfcmVn X3JlYWQoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCk7CisJdmFsICY9IH4oMSA8PCAwKTsKKwlj ZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCwgdmFsKTsKKwkvKiBX YWl0IGZvciBQTEwgZGlzYWJsZSBBQ0sgKi8KKwlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgewor CQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsKKwkJ aWYgKCEodmFsICYgKDEgPDwgMSkpKQorCQkJYnJlYWs7CisJCW1zbGVlcCgyMCk7CisJfQorCWlm IChpID09IDEwKSB7CisJCWRldl9lcnIoY2Ruc19waHktPmRldiwgIldhaXQgUExMIGRpc2FibGUg QWNrIGZhaWxlZFxuIik7CisJCXJldHVybjsKKwl9Cit9CisKK3N0YXRpYyBpbnQgY2Ruc19oZHB0 eF9kcF9waHlfb24oc3RydWN0IHBoeSAqcGh5KQoreworCXN0cnVjdCBjZG5zX2hkcHR4X2RwX3Bo eSAqY2Ruc19waHkgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKworCXJldHVybiBoZHB0eF9kcF9w aHlfcG93ZXJfdXAoY2Ruc19waHkpOworfQorCitzdGF0aWMgaW50IGNkbnNfaGRwdHhfZHBfcGh5 X29mZihzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5z X3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOworCisJaGRwdHhfZHBfcGh5X3Bvd2VyX2Rvd24o Y2Ruc19waHkpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY2Ruc19oZHB0eF9kcF9w aHlfaW5pdChzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpj ZG5zX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOworCWludCByZXQ7CisKKwloZHB0eF9kcF9w aHlfcmVmX2Nsb2NrX3R5cGUoY2Ruc19waHkpOworCisJLyogUEhZIHBvd2VyIHVwICovCisJcmV0 ID0gaGRwdHhfZHBfcGh5X3Bvd2VyX3VwKGNkbnNfcGh5KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0 dXJuIHJldDsKKworCWhkcHR4X2RwX2F1eF9jZmcoY2Ruc19waHkpOworCisJcmV0dXJuIHJldDsK K30KKworc3RhdGljIGludCBjZG5zX2hkcHR4X2RwX2NvbmZpZ3VyZShzdHJ1Y3QgcGh5ICpwaHks CisJCQkJICAgICB1bmlvbiBwaHlfY29uZmlndXJlX29wdHMgKm9wdHMpCit7CisJc3RydWN0IGNk bnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOworCWludCBy ZXQ7CisKKwljZG5zX3BoeS0+bGlua19yYXRlID0gb3B0cy0+ZHAubGlua19yYXRlOworCWNkbnNf cGh5LT5udW1fbGFuZXMgPSBvcHRzLT5kcC5sYW5lczsKKworCWlmIChjZG5zX3BoeS0+bGlua19y YXRlID4gTUFYX0xJTktfUkFURSkgeworCQlkZXZfZXJyKGNkbnNfcGh5LT5kZXYsICJMaW5rIFJh dGUoJWQpIE5vdCBzdXBwb3J0ZWRcbiIsIGNkbnNfcGh5LT5saW5rX3JhdGUpOworCQlyZXR1cm4g ZmFsc2U7CisJfQorCisJLyogRGlzYWJsZSBwaHkgY2xvY2sgaWYgUEhZIGluIHBvd2VyIHVwIHN0 YXRlICovCisJaGRwdHhfZHBfcGh5X3Bvd2VyX2Rvd24oY2Ruc19waHkpOworCisJaWYgKGNkbnNf cGh5LT5yZWZfY2xrX3JhdGUgPT0gUkVGX0NMS18yN01IWikgeworCQloZHB0eF9kcF9waHlfcG1h X2Ntbl9jZmdfMjdtaHooY2Ruc19waHkpOworCQloZHB0eF9kcF9waHlfcG1hX2Ntbl9wbGwwXzI3 bWh6KGNkbnNfcGh5KTsKKwl9IGVsc2UKKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiTm90IHN1 cHBvcnQgcmVmIGNsb2NrIHJhdGVcbiIpOworCisJLyogUEhZIHBvd2VyIHVwICovCisJcmV0ID0g aGRwdHhfZHBfcGh5X3Bvd2VyX3VwKGNkbnNfcGh5KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyBjZG5zX2hkcHR4X2RwX3BoeV9vcHMgPSB7CisJLmlu aXQJCT0gY2Ruc19oZHB0eF9kcF9waHlfaW5pdCwKKwkuY29uZmlndXJlCT0gY2Ruc19oZHB0eF9k cF9jb25maWd1cmUsCisJLnBvd2VyX29uCT0gY2Ruc19oZHB0eF9kcF9waHlfb24sCisJLnBvd2Vy X29mZgk9IGNkbnNfaGRwdHhfZHBfcGh5X29mZiwKKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCit9 OworCitzdGF0aWMgaW50IGNkbnNfaGRwdHhfZHBfcGh5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeTsKKwlz dHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9k ZSA9IGRldi0+b2Zfbm9kZTsKKwlzdHJ1Y3QgcGh5X3Byb3ZpZGVyICpwaHlfcHJvdmlkZXI7CisJ c3RydWN0IHJlc291cmNlICpyZXM7CisJc3RydWN0IHBoeSAqcGh5OworCWludCByZXQ7CisKKwlj ZG5zX3BoeSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY2Ruc19waHkpLCBHRlBfS0VSTkVM KTsKKwlpZiAoIWNkbnNfcGh5KQorCQlyZXR1cm4gLUVOT01FTTsKKworCWRldl9zZXRfZHJ2ZGF0 YShkZXYsIGNkbnNfcGh5KTsKKwljZG5zX3BoeS0+ZGV2ID0gZGV2OworCW11dGV4X2luaXQoJmNk bnNfcGh5LT5tYm94X211dGV4KTsKKworCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2 LCBJT1JFU09VUkNFX01FTSwgMCk7CisJaWYgKCFyZXMpCisJCXJldHVybiAtRU5PREVWOworCWNk bnNfcGh5LT5yZWdzID0gZGV2bV9pb3JlbWFwKGRldiwgcmVzLT5zdGFydCwgcmVzb3VyY2Vfc2l6 ZShyZXMpKTsKKwlpZiAoSVNfRVJSKGNkbnNfcGh5LT5yZWdzKSkKKwkJcmV0dXJuIFBUUl9FUlIo Y2Ruc19waHktPnJlZ3MpOworCisJcGh5ID0gZGV2bV9waHlfY3JlYXRlKGRldiwgbm9kZSwgJmNk bnNfaGRwdHhfZHBfcGh5X29wcyk7CisJaWYgKElTX0VSUihwaHkpKQorCQlyZXR1cm4gUFRSX0VS UihwaHkpOworCisJcGh5LT5hdHRycy5tb2RlID0gUEhZX01PREVfRFA7CisJY2Ruc19waHktPnBo eSA9IHBoeTsKKwlwaHlfc2V0X2RydmRhdGEocGh5LCBjZG5zX3BoeSk7CisKKwlyZXQgPSBoZHB0 eF9kcF9jbGtfZW5hYmxlKGNkbnNfcGh5KTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAi SW5pdCBjbGsgZmFpbFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXBoeV9wcm92aWRl ciA9IGRldm1fb2ZfcGh5X3Byb3ZpZGVyX3JlZ2lzdGVyKGRldiwgb2ZfcGh5X3NpbXBsZV94bGF0 ZSk7CisJaWYgKElTX0VSUihwaHlfcHJvdmlkZXIpKSB7CisJCXJldCA9ICBQVFJfRVJSKHBoeV9w cm92aWRlcik7CisJCWdvdG8gY2xrX2Rpc2FibGU7CisJfQorCisJcmV0dXJuIDA7CisKK2Nsa19k aXNhYmxlOgorCWhkcHR4X2RwX2Nsa19kaXNhYmxlKGNkbnNfcGh5KTsKKworCXJldHVybiAtRUlO VkFMOworfQorCitzdGF0aWMgaW50IGNkbnNfaGRwdHhfZHBfcGh5X3JlbW92ZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19w aHkgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCWhkcHR4X2RwX2Nsa19kaXNhYmxl KGNkbnNfcGh5KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rl dmljZV9pZCBjZG5zX2hkcHR4X2RwX3BoeV9vZl9tYXRjaFtdID0geworCXsuY29tcGF0aWJsZSA9 ICJmc2wsaW14OG1xLWRwLXBoeSIgfSwKKwl7IC8qIHNlbnRpbmVsICovIH0KK307CitNT0RVTEVf REVWSUNFX1RBQkxFKG9mLCBjZG5zX2hkcHR4X2RwX3BoeV9vZl9tYXRjaCk7CisKK3N0YXRpYyBz dHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNkbnNfaGRwdHhfZHBfcGh5X2RyaXZlciA9IHsKKwkucHJv YmUJPSBjZG5zX2hkcHR4X2RwX3BoeV9wcm9iZSwKKwkucmVtb3ZlID0gY2Ruc19oZHB0eF9kcF9w aHlfcmVtb3ZlLAorCS5kcml2ZXIgPSB7CisJCS5uYW1lCT0gImNkbnMtaGRwdHgtZHAtcGh5IiwK KwkJLm9mX21hdGNoX3RhYmxlCT0gY2Ruc19oZHB0eF9kcF9waHlfb2ZfbWF0Y2gsCisJfQorfTsK K21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoY2Ruc19oZHB0eF9kcF9waHlfZHJpdmVyKTsKKworTU9E VUxFX0FVVEhPUigiU2FuZG9yIFl1IDxzYW5kb3IueXVAbnhwLmNvbT4iKTsKK01PRFVMRV9ERVND UklQVElPTigiQ2FkZW5jZSBIRFAtVFggRGlzcGxheVBvcnQgUEhZIGRyaXZlciIpOworTU9EVUxF X0xJQ0VOU0UoIkdQTCIpOwotLSAKMi4zNC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgt YXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=