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 97F70C4707B for ; Wed, 10 Jan 2024 01:26:46 +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=LDVwD0SOFMdIXy3OdwJTj+WU2/uM2j5AhKK7Hyp5qvY=; b=3PPrjnBBMhl6gT /srWj0KBjTKzwxXY9ZISZZvJS2ZS9CKj3IvbbdhWutlOSyl1toSreMFrbFEMpBflVO5Nv7Byw9+P+ 2GXwUHBStktaiMdfKHUK+p6Q2hweO0tIPFA/JKtfbJUBvbDTUW+L1ZI64LqyVRlQo7Dej52qokk6E DiDba7erfKh7Tdxf502rV0BHhUEORXAQiGJ/p9QoVdHEcUZcCvetMj9E8C2MZRE5fkGixIG/yN3IY JnMui192clKOHvl2LkMDGD9jZS8OYCKZSMcNd9DE7Y3GaZ05CAhTmVJCNxIqpTIf4mJOW5p6fnvc7 ztiSYniQH/R8c4p4QOFQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rNNMF-00A3Sj-0f; Wed, 10 Jan 2024 01:26:15 +0000 Received: from mail-db5eur02on20600.outbound.protection.outlook.com ([2a01:111:f403:2608::600] helo=EUR02-DB5-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rNNM9-00A3Mm-0u; Wed, 10 Jan 2024 01:26:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j9VsiPDn+GmbfnHFN+RKz7P0pE3eZ0IP41i+9klQGme+LdvmDORGKFtrNjYTJhIVHZsFdKeVrYeAOlw0K+PMxaLEWgF03VbtBGRYaoyOn+Ico0VembIOWSAsEhi8Jc+VqpkOIQ7/U3SJ6G6uH0PXn4Iah68+Qzmk7LK0F4fR5RK0MdzfY61/UNp29/gc2yehh2ASHP2CHcuufV4OCNhkkQDfnIJNFParyOUPA/UCOQ0N2Tvfk0hCnZnQ4hK1xBDC3wPITpyFusApTJ/lbvkksx0XbhWRqLHHTYCaGN5/lLXHODQ8tPT6hVbPwTnKKHdjTatn+Ys76zm2zKWgStwVxw== 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=Z8H+/ahfaWsRR8lgjI4dqJKwVUgGbEOylcLvf0/il/I=; b=fyEFwUOyWc02znbYcjoS79OJXmDPN5Kp4iB78C7QyN7dZwtw0wVnIDxN55nPA8/KQguqjaDW4D/PNjoUfRamN9dQVlQsJ+UK7rCIkgo43lxTSnyDT8ORBdCO3gbrs7R3uBg5B1xhoEmjs5RRgyZSuxFhMoyn/8DNEdYCuGKIoIMkN/kVqPNIXEZXer/QOpodn80ODi6UJykLQ3c9q3PO9Bx+hJpFsR98WwrdYhxduHNUi1DNDkcQpZyylbRjDWvf8hp9c6yzpvBMSkFBC0b60QOrv62C4OVn4ICOrTy5/Z7YvFO762E6qFI4RvU4uItv/iaHw7UrxlO8l3bzs7iX9w== 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=Z8H+/ahfaWsRR8lgjI4dqJKwVUgGbEOylcLvf0/il/I=; b=YZFi/lLxx6EiAEMYmOuhRb8x3FPyAyJ7qP634u6zBG7KT8kMJENGxGAOkJjyCqSy3gUcEeUcl47kyr5jtWNDdK8Y6VP4W/lKkFSt8E7XQaxjx+TOhnOpb5U8+6Ex9j35D3hfWRt11DkDrDm1AYfdaaeaw/xTzvvakK9suf9Mo88= 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 VI1PR04MB9836.eurprd04.prod.outlook.com (2603:10a6:800:1d9::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Wed, 10 Jan 2024 01:10:32 +0000 Received: from PAXPR04MB9448.eurprd04.prod.outlook.com ([fe80::e6e0:d026:3089:17d5]) by PAXPR04MB9448.eurprd04.prod.outlook.com ([fe80::e6e0:d026:3089:17d5%5]) with mapi id 15.20.7159.020; Wed, 10 Jan 2024 01:10:32 +0000 From: Sandor Yu To: dmitry.baryshkov@linaro.org, andrzej.hajda@intel.com, neil.armstrong@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, alexander.stein@ew.tq-group.com, sam@ravnborg.org Subject: [PATCH v12 6/7] phy: freescale: Add DisplayPort PHY driver for i.MX8MQ Date: Wed, 10 Jan 2024 09:08:47 +0800 Message-Id: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-ClientProxiedBy: SI1PR02CA0045.apcprd02.prod.outlook.com (2603:1096:4:1f6::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_|VI1PR04MB9836:EE_ X-MS-Office365-Filtering-Correlation-Id: a6fbc3d4-7c7d-445e-1879-08dc1178f188 X-LD-Processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MOz7LGtjk9TMjsYlNKyOGTINKmKrDUs3/VOGKNoRUZFN/WUy4cSrfPi3wam2mLAX/qSfJJFNeQ47mxy9tVX8vi3Hh5/A4P1Qah8i2LBmnptBbrxt1kbFglj5dKpxAAXtGd89MzGVAFSTIGz+3bpsqqJiRK0awSq2vbWctTyj/6kmsyLe4HrDDOSn+/1cb9GfcqM4Io72PppBMHzpEc8Q2Wsg7id+PcOmmg+0p6+Tku9lnV7Cd5Fh0txWj9lIhQ83jxQ3BP7tzQNaNEyxMKgdaLKewQuErJdM3d52MaSAgCAA15Xc49oSkxrP+EGGsVZVAtTSJ+3Z9Q+mERwOgpbxoY3So+93oPOBRUa4wTUGMQqJBh0XPSN2KWJksQI8hkOM5IkgmdGBuv9JOgcGrsScG6OFX/v86NjUn/a3KRIw++LQr9j3dP2QQC4F913zJp8NgheaECkJQMBJM2nmMJsFW/n3NvA5nyFVShvVfxCp+sZuX3oDYlzASQxsO17b5XMdm7WOMDO4ABFsKeIpgpDKDD6z21iiztNftHG7IUt88jTXVIz8o8NFmddKuC244WDFtNCDGvSNJ1lg/ya2hlDs9gTiYoZhndMwpNojWGpp0VNLMoUx8W+2TgdWNz2ssPYqqPEWbNQucfZC9DzPjxSjQg== 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:(13230031)(39860400002)(376002)(366004)(396003)(136003)(346002)(230922051799003)(451199024)(1800799012)(64100799003)(186009)(83380400001)(38100700002)(38350700005)(36756003)(921011)(86362001)(26005)(2616005)(52116002)(6512007)(4326008)(316002)(66476007)(6486002)(8936002)(66556008)(66946007)(478600001)(6506007)(6666004)(8676002)(41300700001)(2906002)(5660300002)(7416002)(30864003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eGo2MTNGdVNHL0VZYkRRWmJDRlMxSVorTHRxaFV4TUdYQ1krUmZ1SUU2ZEt0?= =?utf-8?B?aGxUSXBZRlNtV1FnMnZNZFBIcElQZ2xOTlFHaFhKeTlMaldGM1ZYUEUyUW5n?= =?utf-8?B?ZkJFZDF4ZU0vZU4va29NbSswZHp2N0R2OGtaTTRlbmxHQ1c3Z2ZSZnpQcVpl?= =?utf-8?B?QzNTQ0hiWjBCaEg5RGNpbWNiQkxyTW81RHpZcXgrYUpZK1dVRk51MXJ0MzZJ?= =?utf-8?B?bEFiVWcwZlRhTmZlbWg5VEdvOWRPN0ZERG1YMm01N1Z6Y3ROTlI1aUlKVkxR?= =?utf-8?B?emZOampvaG1zdW5lNGRTVkNsV2VVNXhTRHlzN0k0NlhmTW15MkNkWjZzeDln?= =?utf-8?B?SG1kemtlSGFwWkJaaTZoeFNsV1ZEVS9ZZk14dWduREZjeWFqMXF3b251Q0xo?= =?utf-8?B?b2EzOVlBaFg3eUJjdUdkTUpXUmhlQ0ZtQWFoQ2ZhNlpkUUJPZnNZd1p4eldT?= =?utf-8?B?VjFLVmsrU1lVN0loYlhXd2dtSm9ieWNwMXY3Z0dKVDE0bWJ5WTBOR0ZHWnNN?= =?utf-8?B?bHBrU0xiVGVVRTFpNERiVzJYSzdwMUpyMm9sQmI4S0lNN2FhQXlJRWF3NzVz?= =?utf-8?B?NytsSTc3Z1JjTm5SM3JvTGtBTmJXS2ZxZWtZdVF6WGNCeG8xTXJjUzJBa2hi?= =?utf-8?B?aFE2UDJtS2lwN3RZM2hqS1p0WHBZMDRYMytxK0J6Qy8wTDBwNjJyWGZGdC9G?= =?utf-8?B?THo3YzRweEJ6MG5EM01odGZxWmtld1JEYXNiSkQ2RjcxTmovdi9WQWczUnJ3?= =?utf-8?B?TVBTUEpkVmdPSnZERjVrZXhtanhmbkljTkovNUgwSUxRMGNZS3dnRXZzdmxU?= =?utf-8?B?Q2tjczRwZ2ZDcUZaeVMrN043MDh4Mk9TY2o5em1CYWdVVlJ5TmVjMEw3dFcr?= =?utf-8?B?WkNpY1Bxd2dkbXZBM21EQXdOYzkwQXdkRGdZR3RCRnVBNHg5cWNiK3Y1T2xU?= =?utf-8?B?SXQvN1RNWm9iQUFPdEJCeS9VMk5TcTZVem5yTExNT3YyK2lTSG95ME9oeEZJ?= =?utf-8?B?aC9LK3JEZlEyYUZrV1NtRzVudkRzeU4vSVV1c2JKZGgxTTgwVm51a0YrRXU3?= =?utf-8?B?dUdlWWZMR0J1ZUhiWDF3OVBxczM4TlRNcnFROGNyNlJqQkNIQkpmVEhkS0FT?= =?utf-8?B?aUZSVndGZ2RjQUN2dHoxbnlhcWxqdDB5bEpRQmNnd1B6VUMrWXZxNkFzdE5S?= =?utf-8?B?Q2ZwTUY4N3UyWFBBdHd2aVJDeWYxMzJTWlBkUGhmT1BUanczd3pIS25VSTZu?= =?utf-8?B?NWtmS3dhTDhmRm1hdzlRYVpTR0F3TytUV3QwaHMzbk52Uy9KM2hvZElIWlJK?= =?utf-8?B?eFpibDFuRWJYd1ZSVloxaUdITlpiRHVPTEVBUjB1MnE2cHFoU0l4WVFWejNM?= =?utf-8?B?YnU5Snk5QXpiSUtuU004OVczdFVVbFhJVHRFRXlkRHFud0Q3ZWNSQ1hzcC9T?= =?utf-8?B?YmIzSk5mbGpOSnVtWnJpRDFDNFp6aXd6ODZSUE9qU1F4b1JiWFMvRTZneHJo?= =?utf-8?B?aGJDcCtCRm5ubmovcjJIdDM4dXFKc0VFQnNMbHhJcHNXRnhHdlQrK3dyV1pa?= =?utf-8?B?VmRZbnUrMDhhTCt0WEtwaDNuMlZyYXMzSXA3UDlFTm5pTUE2QUY4czFNS0Y0?= =?utf-8?B?Ukhpbm9pSHBhZmtMMDlZK0N1VC8yeFVIbmRzOXdRYTVOcmMyTTZrZ3Fqb0tT?= =?utf-8?B?M3dWdk1nUzJJNmw4dWVzbkUzR3o2NWxjdDlxOVNFUjNZVFZ6S0tTVjJhSUZv?= =?utf-8?B?UDhsYXpsNGUvWWZXbC9DaDBBZm1yYU5SYmppVTNYVmsxVXVCcWplenhkS1Rs?= =?utf-8?B?dGhqTVVoR2lRSm9OYkgyTmlOWWJxdUpHZzJkUmNlcVljbFBRRFJrdmRlVWVu?= =?utf-8?B?anROdDdYZDd1QUEzWHFBQ3JCNXVwNHZCbWJZRUgvcUhVd1ZXaWRIbUZkRVRO?= =?utf-8?B?ckVEYW8zeXBLbkFPeENpaHVJQ241SzV5NE90TVdwcHV3UGFocTEzV1VKWjNj?= =?utf-8?B?VVFFWVhjNjZ1czVxUXlJN1l4NklxTDRqZnI2Q1FEUmRSRDczSHhsem53VS9P?= =?utf-8?B?MmpoTHErN2V4aVpaeG1YY3RNRHdVVEtRd1ZhTFp2OXZCN3RWaXg4YWJUTjFt?= =?utf-8?Q?80mCii34IpTWCOY/Ij18ZQ6Bo?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a6fbc3d4-7c7d-445e-1879-08dc1178f188 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9448.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2024 01:10:32.7521 (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: Ol87RbkeGqMjRVE/Ps0R56mxZY9VWAABASgasBPIKyZuq1eiS2T7JGtGVZdMjF/y6Pf9eoMRgXDutZMFUGePxg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB9836 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240109_172609_347474_CFB9F79D X-CRM114-Status: GOOD ( 18.01 ) 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+Ci0tLQp2MTEtPnYxMjoKLSBSZXR1cm4gZXJyb3IgY29kZSB0 byByZXBsYWNlIC0xIGZvciBmdW5jdGlvbiB3YWl0X2Zvcl9hY2soKS4KLSBTZXQgY2Ruc19waHkt PnBvd2VyX3VwID0gZmFsc2UgaW4gcGh5X3Bvd2VyX2Rvd24gZnVuY3Rpb24uCi0gUmVtb3ZlICJS QVRFXzhfMSA9IDgxMDAwMCIsIGl0IGlzIG5vdCB1c2VkIGluIGRyaXZlci4KLSBBZGQgeWVhciAy MDI0IHRvIGNvcHlyaWdodC4KCiBkcml2ZXJzL3BoeS9mcmVlc2NhbGUvS2NvbmZpZyAgICAgICAg ICAgICB8ICAxMCArCiBkcml2ZXJzL3BoeS9mcmVlc2NhbGUvTWFrZWZpbGUgICAgICAgICAgICB8 ICAgMSArCiBkcml2ZXJzL3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4bXEtZHAuYyB8IDcyNiAr KysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDczNyBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9waHkvZnJlZXNjYWxlL3BoeS1mc2wtaW14OG1x LWRwLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvS2NvbmZpZyBiL2RyaXZl cnMvcGh5L2ZyZWVzY2FsZS9LY29uZmlnCmluZGV4IDg1Mzk1OGZiMmMwNjMuLmMzOTcwOWZkNzAw YWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9LY29uZmlnCisrKyBiL2RyaXZl cnMvcGh5L2ZyZWVzY2FsZS9LY29uZmlnCkBAIC0zNSw2ICszNSwxNiBAQCBjb25maWcgUEhZX0ZT TF9JTVg4TV9QQ0lFCiAJICBFbmFibGUgdGhpcyB0byBhZGQgc3VwcG9ydCBmb3IgdGhlIFBDSUUg UEhZIGFzIGZvdW5kIG9uCiAJICBpLk1YOE0gZmFtaWx5IG9mIFNPQ3MuCiAKK2NvbmZpZyBQSFlf RlNMX0lNWDhNUV9EUAorCXRyaXN0YXRlICJGcmVlc2NhbGUgaS5NWDhNUSBEUCBQSFkgc3VwcG9y dCIKKwlkZXBlbmRzIG9uIE9GICYmIEhBU19JT01FTQorCWRlcGVuZHMgb24gQ09NTU9OX0NMSwor CXNlbGVjdCBHRU5FUklDX1BIWQorCXNlbGVjdCBDRE5TX01IRFBfSEVMUEVSCisJaGVscAorCSAg RW5hYmxlIHRoaXMgdG8gc3VwcG9ydCB0aGUgQ2FkZW5jZSBIRFBUWCBEUCBQSFkgZHJpdmVyCisJ ICBvbiBpLk1YOE1RIFNPQy4KKwogZW5kaWYKIAogY29uZmlnIFBIWV9GU0xfTFlOWF8yOEcKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9NYWtlZmlsZSBiL2RyaXZlcnMvcGh5L2Zy ZWVzY2FsZS9NYWtlZmlsZQppbmRleCBjZWRiMzI4YmM0ZDI4Li40N2U1Mjg1MjA5ZmE4IDEwMDY0 NAotLS0gYS9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9waHkv ZnJlZXNjYWxlL01ha2VmaWxlCkBAIC0xLDQgKzEsNSBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vbmx5CitvYmotJChDT05GSUdfUEhZX0ZTTF9JTVg4TVFfRFApCQkrPSBw aHktZnNsLWlteDhtcS1kcC5vCiBvYmotJChDT05GSUdfUEhZX0ZTTF9JTVg4TVFfVVNCKQkrPSBw aHktZnNsLWlteDhtcS11c2Iubwogb2JqLSQoQ09ORklHX1BIWV9NSVhFTF9MVkRTX1BIWSkJKz0g cGh5LWZzbC1pbXg4cW0tbHZkcy1waHkubwogb2JqLSQoQ09ORklHX1BIWV9NSVhFTF9NSVBJX0RQ SFkpCSs9IHBoeS1mc2wtaW14OC1taXBpLWRwaHkubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkv ZnJlZXNjYWxlL3BoeS1mc2wtaW14OG1xLWRwLmMgYi9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvcGh5 LWZzbC1pbXg4bXEtZHAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw Li4yZTI0Y2EwNGM1OTgwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9waHkvZnJlZXNjYWxl L3BoeS1mc2wtaW14OG1xLWRwLmMKQEAgLTAsMCArMSw3MjYgQEAKKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKy8qCisgKiBDYWRlbmNlIEhEUC1UWCBEaXNwbGF5IFBv cnQgSW50ZXJmYWNlIChEUCkgUEhZIGRyaXZlcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMi0y MDI0IE5YUCBTZW1pY29uZHVjdG9yLCBJbmMuCisgKi8KKyNpbmNsdWRlIDxhc20vdW5hbGlnbmVk Lmg+CisjaW5jbHVkZSA8ZHJtL2JyaWRnZS9jZG5zLW1oZHAtaGVscGVyLmg+CisjaW5jbHVkZSA8 bGludXgvY2xrLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgv cGh5L3BoeS5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUg PGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvaW9wb2xsLmg+CisKKyNkZWZpbmUgQUREUl9Q SFlfQUZFCTB4ODAwMDAKKworLyogUEhZIHJlZ2lzdGVycyAqLworI2RlZmluZSBDTU5fU1NNX0JJ QVNfVE1SCQkJMHgwMDIyCisjZGVmaW5lIENNTl9QTExTTTBfUExMRU5fVE1SCQkJMHgwMDI5Cisj ZGVmaW5lIENNTl9QTExTTTBfUExMUFJFX1RNUgkJCTB4MDAyYQorI2RlZmluZSBDTU5fUExMU00w X1BMTFZSRUZfVE1SCQkJMHgwMDJiCisjZGVmaW5lIENNTl9QTExTTTBfUExMTE9DS19UTVIJCQkw eDAwMmMKKyNkZWZpbmUgQ01OX1BMTFNNMF9VU0VSX0RFRl9DVFJMCQkweDAwMmYKKyNkZWZpbmUg Q01OX1BTTV9DTEtfQ1RSTAkJCTB4MDA2MQorI2RlZmluZSBDTU5fUExMMF9WQ09DQUxfU1RBUlQJ CQkweDAwODEKKyNkZWZpbmUgQ01OX1BMTDBfVkNPQ0FMX0lOSVRfVE1SCQkweDAwODQKKyNkZWZp bmUgQ01OX1BMTDBfVkNPQ0FMX0lURVJfVE1SCQkweDAwODUKKyNkZWZpbmUgQ01OX1BMTDBfSU5U RElWCQkJCTB4MDA5NAorI2RlZmluZSBDTU5fUExMMF9GUkFDRElWCQkJMHgwMDk1CisjZGVmaW5l IENNTl9QTEwwX0hJR0hfVEhSCQkJMHgwMDk2CisjZGVmaW5lIENNTl9QTEwwX0RTTV9ESUFHCQkJ MHgwMDk3CisjZGVmaW5lIENNTl9QTEwwX1NTX0NUUkwyCQkJMHgwMDk5CisjZGVmaW5lIENNTl9J Q0FMX0lOSVRfVE1SCQkJMHgwMGM0CisjZGVmaW5lIENNTl9JQ0FMX0lURVJfVE1SCQkJMHgwMGM1 CisjZGVmaW5lIENNTl9SWENBTF9JTklUX1RNUgkJCTB4MDBkNAorI2RlZmluZSBDTU5fUlhDQUxf SVRFUl9UTVIJCQkweDAwZDUKKyNkZWZpbmUgQ01OX1RYUFVDQUxfSU5JVF9UTVIJCQkweDAwZTQK KyNkZWZpbmUgQ01OX1RYUFVDQUxfSVRFUl9UTVIJCQkweDAwZTUKKyNkZWZpbmUgQ01OX1RYUERD QUxfSU5JVF9UTVIJCQkweDAwZjQKKyNkZWZpbmUgQ01OX1RYUERDQUxfSVRFUl9UTVIJCQkweDAw ZjUKKyNkZWZpbmUgQ01OX0lDQUxfQURKX0lOSVRfVE1SCQkJMHgwMTAyCisjZGVmaW5lIENNTl9J Q0FMX0FESl9JVEVSX1RNUgkJCTB4MDEwMworI2RlZmluZSBDTU5fUlhfQURKX0lOSVRfVE1SCQkJ MHgwMTA2CisjZGVmaW5lIENNTl9SWF9BREpfSVRFUl9UTVIJCQkweDAxMDcKKyNkZWZpbmUgQ01O X1RYUFVfQURKX0lOSVRfVE1SCQkJMHgwMTBhCisjZGVmaW5lIENNTl9UWFBVX0FESl9JVEVSX1RN UgkJCTB4MDEwYgorI2RlZmluZSBDTU5fVFhQRF9BREpfSU5JVF9UTVIJCQkweDAxMGUKKyNkZWZp bmUgQ01OX1RYUERfQURKX0lURVJfVE1SCQkJMHgwMTBmCisjZGVmaW5lIENNTl9ESUFHX1BMTDBf RkJIX09WUkQJCQkweDAxYzAKKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9GQkxfT1ZSRAkJCTB4MDFj MQorI2RlZmluZSBDTU5fRElBR19QTEwwX09WUkQJCQkweDAxYzIKKyNkZWZpbmUgQ01OX0RJQUdf UExMMF9URVNUX01PREUJCQkweDAxYzQKKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9WMklfVFVORQkJ CTB4MDFjNQorI2RlZmluZSBDTU5fRElBR19QTEwwX0NQX1RVTkUJCQkweDAxYzYKKyNkZWZpbmUg Q01OX0RJQUdfUExMMF9MRl9QUk9HCQkJMHgwMWM3CisjZGVmaW5lIENNTl9ESUFHX1BMTDBfUFRB VElTX1RVTkUxCQkweDAxYzgKKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9QVEFUSVNfVFVORTIJCTB4 MDFjOQorI2RlZmluZSBDTU5fRElBR19IU0NMS19TRUwJCQkweDAxZTAKKyNkZWZpbmUgQ01OX0RJ QUdfUEVSX0NBTF9BREoJCQkweDAxZWMKKyNkZWZpbmUgQ01OX0RJQUdfQ0FMX0NUUkwJCQkweDAx ZWQKKyNkZWZpbmUgQ01OX0RJQUdfQUNZQQkJCQkweDAxZmYKKyNkZWZpbmUgWENWUl9QU01fUkNU UkwJCQkJMHg0MDAxCisjZGVmaW5lIFhDVlJfUFNNX0NBTF9UTVIJCQkweDQwMDIKKyNkZWZpbmUg WENWUl9QU01fQTBJTl9UTVIJCQkweDQwMDMKKyNkZWZpbmUgVFhfVFhDQ19DQUxfU0NMUl9NVUxU XzAJCQkweDQwNDcKKyNkZWZpbmUgVFhfVFhDQ19DUE9TVF9NVUxUXzAwXzAJCQkweDQwNGMKKyNk ZWZpbmUgWENWUl9ESUFHX1BMTERSQ19DVFJMCQkJMHg0MGUwCisjZGVmaW5lIFhDVlJfRElBR19Q TExEUkNfQ1RSTAkJCTB4NDBlMAorI2RlZmluZSBYQ1ZSX0RJQUdfSFNDTEtfU0VMCQkJMHg0MGUx CisjZGVmaW5lIFhDVlJfRElBR19MQU5FX0ZDTV9FTl9NR05fVE1SCQkweDQwZjIKKyNkZWZpbmUg VFhfUFNDX0EwCQkJCTB4NDEwMAorI2RlZmluZSBUWF9QU0NfQTEJCQkJMHg0MTAxCisjZGVmaW5l IFRYX1BTQ19BMgkJCQkweDQxMDIKKyNkZWZpbmUgVFhfUFNDX0EzCQkJCTB4NDEwMworI2RlZmlu ZSBUWF9SQ1ZERVRfRU5fVE1SCQkJMHg0MTIyCisjZGVmaW5lIFRYX1JDVkRFVF9TVF9UTVIJCQkw eDQxMjMKKyNkZWZpbmUgVFhfRElBR19CR1JFRl9QUkVEUlZfREVMQVkJCTB4NDFlNworI2RlZmlu ZSBUWF9ESUFHX0JHUkVGX1BSRURSVl9ERUxBWQkJMHg0MWU3CisjZGVmaW5lIFRYX0RJQUdfQUNZ QV8wCQkJCTB4NDFmZgorI2RlZmluZSBUWF9ESUFHX0FDWUFfMQkJCQkweDQzZmYKKyNkZWZpbmUg VFhfRElBR19BQ1lBXzIJCQkJMHg0NWZmCisjZGVmaW5lIFRYX0RJQUdfQUNZQV8zCQkJCTB4NDdm ZgorI2RlZmluZSBUWF9BTkFfQ1RSTF9SRUdfMQkJCTB4NTAyMAorI2RlZmluZSBUWF9BTkFfQ1RS TF9SRUdfMgkJCTB4NTAyMQorI2RlZmluZSBUWF9ESUdfQ1RSTF9SRUdfMQkJCTB4NTAyMworI2Rl ZmluZSBUWF9ESUdfQ1RSTF9SRUdfMgkJCTB4NTAyNAorI2RlZmluZSBUWERBX0NZQV9BVVhEQV9D WUEJCQkweDUwMjUKKyNkZWZpbmUgVFhfQU5BX0NUUkxfUkVHXzMJCQkweDUwMjYKKyNkZWZpbmUg VFhfQU5BX0NUUkxfUkVHXzQJCQkweDUwMjcKKyNkZWZpbmUgVFhfQU5BX0NUUkxfUkVHXzUJCQkw eDUwMjkKKyNkZWZpbmUgUlhfUFNDX0EwCQkJCTB4ODAwMAorI2RlZmluZSBSWF9QU0NfQ0FMCQkJ CTB4ODAwNgorI2RlZmluZSBQSFlfSERQX01PREVfQ1RSTAkJCTB4YzAwOAorI2RlZmluZSBQSFlf SERQX0NMS19DVEwJCQkJMHhjMDA5CisjZGVmaW5lIFBIWV9QTUFfQ01OX0NUUkwxCQkJMHhjODAw CisKKy8qIFBIWV9QTUFfQ01OX0NUUkwxICovCisjZGVmaW5lIENNQV9SRUZfQ0xLX1NFTF9NQVNL CQkJR0VOTUFTSyg2LCA0KQorI2RlZmluZSBDTUFfUkVGX0NMS19SQ1ZfRU5fTUFTSwkJCUJJVCgz KQorI2RlZmluZSBDTUFfUkVGX0NMS19SQ1ZfRU4JCQkxCisKKy8qIFBIWV9IRFBfQ0xLX0NUTCAq LworI2RlZmluZSBQTExfREFUQV9SQVRFX0NMS19ESVZfTUFTSwkJR0VOTUFTSygxNSwgOCkKKyNk ZWZpbmUgUExMX0RBVEFfUkFURV9DTEtfRElWX0hCUgkJMHgyNAorI2RlZmluZSBQTExfREFUQV9S QVRFX0NMS19ESVZfSEJSMgkJMHgxMgorI2RlZmluZSBQTExfQ0xLX0VOX0FDSwkJCQlCSVQoMykK KyNkZWZpbmUgUExMX0NMS19FTgkJCQlCSVQoMikKKyNkZWZpbmUgUExMX1JFQURZCQkJCUJJVCgx KQorI2RlZmluZSBQTExfRU4JCQkJCUJJVCgwKQorCisvKiBDTU5fRElBR19IU0NMS19TRUwgKi8K KyNkZWZpbmUgSFNDTEsxX1NFTF9NQVNLCQkJCUdFTk1BU0soNSwgNCkKKyNkZWZpbmUgSFNDTEsw X1NFTF9NQVNLCQkJCUdFTk1BU0soMSwgMCkKKyNkZWZpbmUgSFNDTEtfUExMMF9ESVYyCQkJCTEK KworLyogWENWUl9ESUFHX0hTQ0xLX1NFTCAqLworI2RlZmluZSBIU0NMS19TRUxfTU9ERTNfTUFT SwkJCUdFTk1BU0soMTMsIDEyKQorI2RlZmluZSBIU0NMS19TRUxfTU9ERTNfSFNDTEsxCQkJMQor CisvKiBYQ1ZSX0RJQUdfUExMRFJDX0NUUkwgKi8KKyNkZWZpbmUgRFBMTF9DTEtfU0VMX01PREUz CQkJQklUKDE0KQorI2RlZmluZSBEUExMX0RBVEFfUkFURV9ESVZfTU9ERTNfTUFTSwkJR0VOTUFT SygxMywgMTIpCisKKy8qIFBIWV9IRFBfTU9ERV9DVFJMICovCisjZGVmaW5lIFBPV0VSX1NUQVRF X0EzX0FDSwkJCUJJVCg3KQorI2RlZmluZSBQT1dFUl9TVEFURV9BMl9BQ0sJCQlCSVQoNikKKyNk ZWZpbmUgUE9XRVJfU1RBVEVfQTFfQUNLCQkJQklUKDUpCisjZGVmaW5lIFBPV0VSX1NUQVRFX0Ew X0FDSwkJCUJJVCg0KQorI2RlZmluZSBQT1dFUl9TVEFURV9BMwkJCQlCSVQoMykKKyNkZWZpbmUg UE9XRVJfU1RBVEVfQTIJCQkJQklUKDIpCisjZGVmaW5lIFBPV0VSX1NUQVRFX0ExCQkJCUJJVCgx KQorI2RlZmluZSBQT1dFUl9TVEFURV9BMAkJCQlCSVQoMCkKKworI2RlZmluZSBSRUZfQ0xLXzI3 TUhaCQkyNzAwMDAwMAorCitlbnVtIGRwX2xpbmtfcmF0ZSB7CisJUkFURV8xXzYgPSAxNjIwMDAs CisJUkFURV8yXzEgPSAyMTYwMDAsCisJUkFURV8yXzQgPSAyNDMwMDAsCisJUkFURV8yXzcgPSAy NzAwMDAsCisJUkFURV8zXzIgPSAzMjQwMDAsCisJUkFURV80XzMgPSA0MzIwMDAsCisJUkFURV81 XzQgPSA1NDAwMDAsCit9OworCisjZGVmaW5lIE1BWF9MSU5LX1JBVEUgUkFURV81XzQKKworc3Ry dWN0IHBoeV9wbGxfcmVnIHsKKwl1MTYgdmFsWzddOworCXUzMiBhZGRyOworfTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBwaHlfcGxsX3JlZyBwaHlfcGxsXzI3bV9jZmdbXSA9IHsKKwkvKiAgMS42 MiAgICAyLjE2ICAgIDIuNDMgICAgMi43ICAgICAzLjI0ICAgIDQuMzIgICAgNS40ICAgICAgcmVn aXN0ZXIgYWRkcmVzcyAqLworCXt7IDB4MDEwZSwgMHgwMTBlLCAweDAxMGUsIDB4MDEwZSwgMHgw MTBlLCAweDAxMGUsIDB4MDEwZSB9LCBDTU5fUExMMF9WQ09DQUxfSU5JVF9UTVIgfSwKKwl7eyAw eDAwMWIsIDB4MDAxYiwgMHgwMDFiLCAweDAwMWIsIDB4MDAxYiwgMHgwMDFiLCAweDAwMWIgfSwg Q01OX1BMTDBfVkNPQ0FMX0lURVJfVE1SIH0sCisJe3sgMHgzMGI5LCAweDMwODcsIDB4MzA5Niwg MHgzMGI0LCAweDMwYjksIDB4MzA4NywgMHgzMGI0IH0sIENNTl9QTEwwX1ZDT0NBTF9TVEFSVCB9 LAorCXt7IDB4MDA3NywgMHgwMDlmLCAweDAwYjMsIDB4MDBjNywgMHgwMDc3LCAweDAwOWYsIDB4 MDBjNyB9LCBDTU5fUExMMF9JTlRESVYgfSwKKwl7eyAweGY5ZGEsIDB4ZjdjZCwgMHhmNmM3LCAw eGY1YzEsIDB4ZjlkYSwgMHhmN2NkLCAweGY1YzEgfSwgQ01OX1BMTDBfRlJBQ0RJViB9LAorCXt7 IDB4MDAxZSwgMHgwMDI4LCAweDAwMmQsIDB4MDAzMiwgMHgwMDFlLCAweDAwMjgsIDB4MDAzMiB9 LCBDTU5fUExMMF9ISUdIX1RIUiB9LAorCXt7IDB4MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4MDAy MCwgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCB9LCBDTU5fUExMMF9EU01fRElBRyB9LAorCXt7IDB4 MDAwMCwgMHgxMDAwLCAweDEwMDAsIDB4MTAwMCwgMHgwMDAwLCAweDEwMDAsIDB4MTAwMCB9LCBD TU5fUExMU00wX1VTRVJfREVGX0NUUkwgfSwKKwl7eyAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAw eDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAgfSwgQ01OX0RJQUdfUExMMF9PVlJEIH0sCisJ e3sgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAw IH0sIENNTl9ESUFHX1BMTDBfRkJIX09WUkQgfSwKKwl7eyAweDAwMDAsIDB4MDAwMCwgMHgwMDAw LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAgfSwgQ01OX0RJQUdfUExMMF9GQkxfT1ZS RCB9LAorCXt7IDB4MDAwNiwgMHgwMDA3LCAweDAwMDcsIDB4MDAwNywgMHgwMDA2LCAweDAwMDcs IDB4MDAwNyB9LCBDTU5fRElBR19QTEwwX1YySV9UVU5FIH0sCisJe3sgMHgwMDQzLCAweDAwNDMs IDB4MDA0MywgMHgwMDQyLCAweDAwNDMsIDB4MDA0MywgMHgwMDQyIH0sIENNTl9ESUFHX1BMTDBf Q1BfVFVORSB9LAorCXt7IDB4MDAwOCwgMHgwMDA4LCAweDAwMDgsIDB4MDAwOCwgMHgwMDA4LCAw eDAwMDgsIDB4MDAwOCB9LCBDTU5fRElBR19QTEwwX0xGX1BST0cgfSwKKwl7eyAweDAxMDAsIDB4 MDAwMSwgMHgwMDAxLCAweDAwMDEsIDB4MDEwMCwgMHgwMDAxLCAweDAwMDEgfSwgQ01OX0RJQUdf UExMMF9QVEFUSVNfVFVORTEgfSwKKwl7eyAweDAwMDcsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEs IDB4MDAwNywgMHgwMDAxLCAweDAwMDEgfSwgQ01OX0RJQUdfUExMMF9QVEFUSVNfVFVORTIgfSwK Kwl7eyAweDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAweDAw MjAgfSwgQ01OX0RJQUdfUExMMF9URVNUX01PREV9LAorCXt7IDB4MDAxNiwgMHgwMDE2LCAweDAw MTYsIDB4MDAxNiwgMHgwMDE2LCAweDAwMTYsIDB4MDAxNiB9LCBDTU5fUFNNX0NMS19DVFJMIH0K K307CisKK3N0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSB7CisJc3RydWN0IGNkbnNfbWhkcF9iYXNl IGJhc2U7CisKKwl2b2lkIF9faW9tZW0gKnJlZ3M7CS8qIERQVFggcmVnaXN0ZXJzIGJhc2UgKi8K KwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IHBoeSAqcGh5OworCXN0cnVjdCBtdXRleCBt Ym94X211dGV4OwkvKiBtdXRleCB0byBwcm90ZWN0IG1haWxib3ggKi8KKwlzdHJ1Y3QgY2xrICpy ZWZfY2xrLCAqYXBiX2NsazsKKwl1MzIgcmVmX2Nsa19yYXRlOworCXUzMiBudW1fbGFuZXM7CisJ dTMyIGxpbmtfcmF0ZTsKKwlib29sIHBvd2VyX3VwOworfTsKKworc3RhdGljIGludCBjZG5zX3Bo eV9yZWdfd3JpdGUoc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSwgdTMyIGFkZHIs IHUzMiB2YWwpCit7CisJcmV0dXJuIGNkbnNfbWhkcF9yZWdfd3JpdGUoJmNkbnNfcGh5LT5iYXNl LCBBRERSX1BIWV9BRkUgKyAoYWRkciA8PCAyKSwgdmFsKTsKK30KKworc3RhdGljIHUzMiBjZG5z X3BoeV9yZWdfcmVhZChzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5LCB1MzIgYWRk cikKK3sKKwl1MzIgcmVnMzI7CisKKwljZG5zX21oZHBfcmVnX3JlYWQoJmNkbnNfcGh5LT5iYXNl LCBBRERSX1BIWV9BRkUgKyAoYWRkciA8PCAyKSwgJnJlZzMyKTsKKwlyZXR1cm4gcmVnMzI7Cit9 CisKK3N0YXRpYyBpbnQgbGlua19yYXRlX2luZGV4KHUzMiByYXRlKQoreworCXN3aXRjaCAocmF0 ZSkgeworCWNhc2UgUkFURV8xXzY6CisJCXJldHVybiAwOworCWNhc2UgUkFURV8yXzE6CisJCXJl dHVybiAxOworCWNhc2UgUkFURV8yXzQ6CisJCXJldHVybiAyOworCWNhc2UgUkFURV8yXzc6CisJ CXJldHVybiAzOworCWNhc2UgUkFURV8zXzI6CisJCXJldHVybiA0OworCWNhc2UgUkFURV80XzM6 CisJCXJldHVybiA1OworCWNhc2UgUkFURV81XzQ6CisJCXJldHVybiA2OworCWRlZmF1bHQ6CisJ CXJldHVybiAtMTsKKwl9Cit9CisKK3N0YXRpYyBpbnQgaGRwdHhfZHBfY2xrX2VuYWJsZShzdHJ1 Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9 IGNkbnNfcGh5LT5kZXY7CisJdTMyIHJlZl9jbGtfcmF0ZTsKKwlpbnQgcmV0OworCisJY2Ruc19w aHktPnJlZl9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAicmVmIik7CisJaWYgKElTX0VSUihjZG5z X3BoeS0+cmVmX2NsaykpIHsKKwkJZGV2X2VycihkZXYsICJwaHkgcmVmIGNsb2NrIG5vdCBmb3Vu ZFxuIik7CisJCXJldHVybiBQVFJfRVJSKGNkbnNfcGh5LT5yZWZfY2xrKTsKKwl9CisKKwljZG5z X3BoeS0+YXBiX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJhcGIiKTsKKwlpZiAoSVNfRVJSKGNk bnNfcGh5LT5hcGJfY2xrKSkgeworCQlkZXZfZXJyKGRldiwgInBoeSBhcGIgY2xvY2sgbm90IGZv dW5kXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoY2Ruc19waHktPmFwYl9jbGspOworCX0KKworCXJl dCA9IGNsa19wcmVwYXJlX2VuYWJsZShjZG5zX3BoeS0+cmVmX2Nsayk7CisJaWYgKHJldCkgewor CQlkZXZfZXJyKGNkbnNfcGh5LT5kZXYsICJGYWlsZWQgdG8gcHJlcGFyZSByZWYgY2xvY2tcbiIp OworCQlyZXR1cm4gcmV0OworCX0KKworCXJlZl9jbGtfcmF0ZSA9IGNsa19nZXRfcmF0ZShjZG5z X3BoeS0+cmVmX2Nsayk7CisJaWYgKCFyZWZfY2xrX3JhdGUpIHsKKwkJZGV2X2VycihjZG5zX3Bo eS0+ZGV2LCAiRmFpbGVkIHRvIGdldCByZWYgY2xvY2sgcmF0ZVxuIik7CisJCWdvdG8gZXJyX3Jl Zl9jbGs7CisJfQorCisJaWYgKHJlZl9jbGtfcmF0ZSA9PSBSRUZfQ0xLXzI3TUhaKSB7CisJCWNk bnNfcGh5LT5yZWZfY2xrX3JhdGUgPSByZWZfY2xrX3JhdGU7CisJfSBlbHNlIHsKKwkJZGV2X2Vy cihjZG5zX3BoeS0+ZGV2LCAiTm90IHN1cHBvcnQgUmVmIENsb2NrIFJhdGUoJWRIeilcbiIsIHJl Zl9jbGtfcmF0ZSk7CisJCWdvdG8gZXJyX3JlZl9jbGs7CisJfQorCisJcmV0ID0gY2xrX3ByZXBh cmVfZW5hYmxlKGNkbnNfcGh5LT5hcGJfY2xrKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoY2Ru c19waHktPmRldiwgIkZhaWxlZCB0byBwcmVwYXJlIGFwYiBjbG9ja1xuIik7CisJCWdvdG8gZXJy X3JlZl9jbGs7CisJfQorCisJcmV0dXJuIDA7CisKK2Vycl9yZWZfY2xrOgorCWNsa19kaXNhYmxl X3VucHJlcGFyZShjZG5zX3BoeS0+cmVmX2Nsayk7CisJcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0 YXRpYyB2b2lkIGhkcHR4X2RwX2Nsa19kaXNhYmxlKHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAq Y2Ruc19waHkpCit7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNkbnNfcGh5LT5yZWZfY2xrKTsK KwljbGtfZGlzYWJsZV91bnByZXBhcmUoY2Ruc19waHktPmFwYl9jbGspOworfQorCitzdGF0aWMg dm9pZCBoZHB0eF9kcF9hdXhfY2ZnKHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkp Cit7CisJLyogUG93ZXIgdXAgQXV4ICovCisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBU WERBX0NZQV9BVVhEQV9DWUEsIDEpOworCisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBU WF9ESUdfQ1RSTF9SRUdfMSwgMHgzKTsKKwluZGVsYXkoMTUwKTsKKwljZG5zX3BoeV9yZWdfd3Jp dGUoY2Ruc19waHksIFRYX0RJR19DVFJMX1JFR18yLCAzNik7CisJbmRlbGF5KDE1MCk7CisJY2Ru c19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMiwgMHgwMTAwKTsKKwlu ZGVsYXkoMTUwKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JF R18yLCAweDAzMDApOworCW5kZWxheSgxNTApOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3Bo eSwgVFhfQU5BX0NUUkxfUkVHXzMsIDB4MDAwMCk7CisJbmRlbGF5KDE1MCk7CisJY2Ruc19waHlf cmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMSwgMHgyMDA4KTsKKwluZGVsYXko MTUwKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18xLCAw eDIwMTgpOworCW5kZWxheSgxNTApOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhf QU5BX0NUUkxfUkVHXzEsIDB4YTAxOCk7CisJbmRlbGF5KDE1MCk7CisJY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMiwgMHgwMzBjKTsKKwluZGVsYXkoMTUwKTsK KwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR181LCAweDAwMDAp OworCW5kZWxheSgxNTApOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NU UkxfUkVHXzQsIDB4MTAwMSk7CisJbmRlbGF5KDE1MCk7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNk bnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMSwgMHhhMDk4KTsKKwluZGVsYXkoMTUwKTsKKwljZG5z X3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18xLCAweGExOTgpOworCW5k ZWxheSgxNTApOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVH XzIsIDB4MDMwZCk7CisJbmRlbGF5KDE1MCk7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5 LCBUWF9BTkFfQ1RSTF9SRUdfMiwgMHgwMzBmKTsKK30KKworLyogUE1BIGNvbW1vbiBjb25maWd1 cmF0aW9uIGZvciAyN01IeiAqLworc3RhdGljIHZvaWQgaGRwdHhfZHBfcGh5X3BtYV9jbW5fY2Zn XzI3bWh6KHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkpCit7CisJdTMyIG51bV9s YW5lcyA9IGNkbnNfcGh5LT5udW1fbGFuZXM7CisJdTE2IHZhbDsKKwlpbnQgazsKKworCS8qIEVu YWJsZSBQTUEgaW5wdXQgcmVmIGNsayhDTU5fUkVGX0NMS19SQ1ZfRU4pICovCisJdmFsID0gY2Ru c19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9QTUFfQ01OX0NUUkwxKTsKKwl2YWwgJj0gfkNN QV9SRUZfQ0xLX1JDVl9FTl9NQVNLOworCXZhbCB8PSBGSUVMRF9QUkVQKENNQV9SRUZfQ0xLX1JD Vl9FTl9NQVNLLCBDTUFfUkVGX0NMS19SQ1ZfRU4pOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5z X3BoeSwgUEhZX1BNQV9DTU5fQ1RSTDEsIHZhbCk7CisKKwkvKiBTdGFydHVwIHN0YXRlIG1hY2hp bmUgcmVnaXN0ZXJzICovCisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fU1NNX0JJ QVNfVE1SLCAweDAwODcpOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1BMTFNN MF9QTExFTl9UTVIsIDB4MDAxYik7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5f UExMU00wX1BMTFBSRV9UTVIsIDB4MDAzNik7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5 LCBDTU5fUExMU00wX1BMTFZSRUZfVE1SLCAweDAwMWIpOworCWNkbnNfcGh5X3JlZ193cml0ZShj ZG5zX3BoeSwgQ01OX1BMTFNNMF9QTExMT0NLX1RNUiwgMHgwMDZjKTsKKworCS8qIEN1cnJlbnQg Y2FsaWJyYXRpb24gcmVnaXN0ZXJzICovCisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBD TU5fSUNBTF9JTklUX1RNUiwgMHgwMDQ0KTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHks IENNTl9JQ0FMX0lURVJfVE1SLCAweDAwMDYpOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3Bo eSwgQ01OX0lDQUxfQURKX0lOSVRfVE1SLCAweDAwMjIpOworCWNkbnNfcGh5X3JlZ193cml0ZShj ZG5zX3BoeSwgQ01OX0lDQUxfQURKX0lURVJfVE1SLCAweDAwMDYpOworCisJLyogUmVzaXN0b3Ig Y2FsaWJyYXRpb24gcmVnaXN0ZXJzICovCisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBD TU5fVFhQVUNBTF9JTklUX1RNUiwgMHgwMDIyKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19w aHksIENNTl9UWFBVQ0FMX0lURVJfVE1SLCAweDAwMDYpOworCWNkbnNfcGh5X3JlZ193cml0ZShj ZG5zX3BoeSwgQ01OX1RYUFVfQURKX0lOSVRfVE1SLCAweDAwMjIpOworCWNkbnNfcGh5X3JlZ193 cml0ZShjZG5zX3BoeSwgQ01OX1RYUFVfQURKX0lURVJfVE1SLCAweDAwMDYpOworCWNkbnNfcGh5 X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1RYUERDQUxfSU5JVF9UTVIsIDB4MDAyMik7CisJY2Ru c19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQRENBTF9JVEVSX1RNUiwgMHgwMDA2KTsK KwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9UWFBEX0FESl9JTklUX1RNUiwgMHgw MDIyKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9UWFBEX0FESl9JVEVSX1RN UiwgMHgwMDA2KTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9SWENBTF9JTklU X1RNUiwgMHgwMDIyKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9SWENBTF9J VEVSX1RNUiwgMHgwMDA2KTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9SWF9B REpfSU5JVF9UTVIsIDB4MDAyMik7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5f UlhfQURKX0lURVJfVE1SLCAweDAwMDYpOworCisJZm9yIChrID0gMDsgayA8IG51bV9sYW5lczsg ayA9IGsgKyAxKSB7CisJCS8qIFBvd2VyIHN0YXRlIG1hY2hpbmUgcmVnaXN0ZXJzICovCisJCWNk bnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgWENWUl9QU01fQ0FMX1RNUiAgfCAoayA8PCA5KSwg MHgwMTZkKTsKKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBYQ1ZSX1BTTV9BMElOX1RN UiB8IChrIDw8IDkpLCAweDAxNmQpOworCQkvKiBUcmFuc2NlaXZlciBjb250cm9sIGFuZCBkaWFn bm9zdGljIHJlZ2lzdGVycyAqLworCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFhDVlJf RElBR19MQU5FX0ZDTV9FTl9NR05fVE1SIHwgKGsgPDwgOSksIDB4MDBhMik7CisJCWNkbnNfcGh5 X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElBR19CR1JFRl9QUkVEUlZfREVMQVkgfCAoayA8PCA5 KSwgMHgwMDk3KTsKKwkJLyogVHJhbnNtaXR0ZXIgcmVjZWl2ZXIgZGV0ZWN0IHJlZ2lzdGVycyAq LworCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX1JDVkRFVF9FTl9UTVIgfCAoayA8 PCA5KSwgMHgwYThjKTsKKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9SQ1ZERVRf U1RfVE1SIHwgKGsgPDwgOSksIDB4MDAzNik7CisJfQorCisJY2Ruc19waHlfcmVnX3dyaXRlKGNk bnNfcGh5LCBUWF9ESUFHX0FDWUFfMCwgMSk7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5 LCBUWF9ESUFHX0FDWUFfMSwgMSk7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9E SUFHX0FDWUFfMiwgMSk7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9ESUFHX0FD WUFfMywgMSk7Cit9CisKK3N0YXRpYyB2b2lkIGhkcHR4X2RwX3BoeV9wbWFfY21uX3BsbDBfMjdt aHooc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSkKK3sKKwl1MzIgbnVtX2xhbmVz ID0gY2Ruc19waHktPm51bV9sYW5lczsKKwl1MzIgbGlua19yYXRlID0gY2Ruc19waHktPmxpbmtf cmF0ZTsKKwl1MTYgdmFsOworCWludCBpbmRleCwgaSwgazsKKworCS8qIERQIFBMTCBkYXRhIHJh dGUgMC8xIGNsb2NrIGRpdmlkZXIgdmFsdWUgKi8KKwl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChj ZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsKKwl2YWwgJj0gflBMTF9EQVRBX1JBVEVfQ0xLX0RJ Vl9NQVNLOworCWlmIChsaW5rX3JhdGUgPD0gUkFURV8yXzcpCisJCXZhbCB8PSBGSUVMRF9QUkVQ KFBMTF9EQVRBX1JBVEVfQ0xLX0RJVl9NQVNLLAorCQkJCSAgUExMX0RBVEFfUkFURV9DTEtfRElW X0hCUik7CisJZWxzZQorCQl2YWwgfD0gRklFTERfUFJFUChQTExfREFUQV9SQVRFX0NMS19ESVZf TUFTSywKKwkJCQkgIFBMTF9EQVRBX1JBVEVfQ0xLX0RJVl9IQlIyKTsKKwljZG5zX3BoeV9yZWdf d3JpdGUoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCwgdmFsKTsKKworCS8qIEhpZ2ggc3BlZWQg Y2xvY2sgMC8xIGRpdiAqLworCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBDTU5f RElBR19IU0NMS19TRUwpOworCXZhbCAmPSB+KEhTQ0xLMV9TRUxfTUFTSyB8IEhTQ0xLMF9TRUxf TUFTSyk7CisJaWYgKGxpbmtfcmF0ZSA8PSBSQVRFXzJfNykgeworCQl2YWwgfD0gRklFTERfUFJF UChIU0NMSzFfU0VMX01BU0ssIEhTQ0xLX1BMTDBfRElWMik7CisJCXZhbCB8PSBGSUVMRF9QUkVQ KEhTQ0xLMF9TRUxfTUFTSywgSFNDTEtfUExMMF9ESVYyKTsKKwl9CisJY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LCBDTU5fRElBR19IU0NMS19TRUwsIHZhbCk7CisKKwlmb3IgKGsgPSAwOyBr IDwgbnVtX2xhbmVzOyBrKyspIHsKKwkJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHks IChYQ1ZSX0RJQUdfSFNDTEtfU0VMIHwgKGsgPDwgOSkpKTsKKwkJdmFsICY9IH5IU0NMS19TRUxf TU9ERTNfTUFTSzsKKwkJaWYgKGxpbmtfcmF0ZSA8PSBSQVRFXzJfNykKKwkJCXZhbCB8PSBGSUVM RF9QUkVQKEhTQ0xLX1NFTF9NT0RFM19NQVNLLCBIU0NMS19TRUxfTU9ERTNfSFNDTEsxKTsKKwkJ Y2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAoWENWUl9ESUFHX0hTQ0xLX1NFTCB8IChrIDw8 IDkpKSwgdmFsKTsKKwl9CisKKwkvKiBEUCBQSFkgUExMIDI3TUh6IGNvbmZpZ3VyYXRpb24gKi8K KwlpbmRleCA9IGxpbmtfcmF0ZV9pbmRleChsaW5rX3JhdGUpOworCWZvciAoaSA9IDA7IGkgPCBB UlJBWV9TSVpFKHBoeV9wbGxfMjdtX2NmZyk7IGkrKykKKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNk bnNfcGh5LCBwaHlfcGxsXzI3bV9jZmdbaV0uYWRkciwKKwkJCQkgICBwaHlfcGxsXzI3bV9jZmdb aV0udmFsW2luZGV4XSk7CisKKwkvKiBUcmFuc2NlaXZlciBjb250cm9sIGFuZCBkaWFnbm9zdGlj IHJlZ2lzdGVycyAqLworCWZvciAoayA9IDA7IGsgPCBudW1fbGFuZXM7IGsrKykgeworCQl2YWwg PSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgKFhDVlJfRElBR19QTExEUkNfQ1RSTCB8IChr IDw8IDkpKSk7CisJCXZhbCAmPSB+KERQTExfREFUQV9SQVRFX0RJVl9NT0RFM19NQVNLIHwgRFBM TF9DTEtfU0VMX01PREUzKTsKKwkJaWYgKGxpbmtfcmF0ZSA8PSBSQVRFXzJfNykKKwkJCXZhbCB8 PSBGSUVMRF9QUkVQKERQTExfREFUQV9SQVRFX0RJVl9NT0RFM19NQVNLLCAyKTsKKwkJZWxzZQor CQkJdmFsIHw9IEZJRUxEX1BSRVAoRFBMTF9EQVRBX1JBVEVfRElWX01PREUzX01BU0ssIDEpOwor CQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIChYQ1ZSX0RJQUdfUExMRFJDX0NUUkwgfCAo ayA8PCA5KSksIHZhbCk7CisJfQorCisJZm9yIChrID0gMDsgayA8IG51bV9sYW5lczsgayA9IGsg KyAxKSB7CisJCS8qIFBvd2VyIHN0YXRlIG1hY2hpbmUgcmVnaXN0ZXJzICovCisJCWNkbnNfcGh5 X3JlZ193cml0ZShjZG5zX3BoeSwgKFhDVlJfUFNNX1JDVFJMIHwgKGsgPDwgOSkpLCAweGJlZmMp OworCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIChUWF9QU0NfQTAgfCAoayA8PCA5KSks IDB4Njc5OSk7CisJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFRYX1BTQ19BMSB8IChr IDw8IDkpKSwgMHg2Nzk4KTsKKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAoVFhfUFND X0EyIHwgKGsgPDwgOSkpLCAweDAwOTgpOworCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHks IChUWF9QU0NfQTMgfCAoayA8PCA5KSksIDB4MDA5OCk7CisJCS8qIFJlY2VpdmVyIGNhbGlicmF0 aW9uIHBvd2VyIHN0YXRlIGRlZmluaXRpb24gcmVnaXN0ZXIgKi8KKwkJdmFsID0gY2Ruc19waHlf cmVnX3JlYWQoY2Ruc19waHksIFJYX1BTQ19DQUwgfCAoayA8PCA5KSk7CisJCXZhbCAmPSAweGZm YmI7CisJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFJYX1BTQ19DQUwgfCAoayA8PCA5 KSksIHZhbCk7CisJCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBSWF9QU0NfQTAg fCAoayA8PCA5KSk7CisJCXZhbCAmPSAweGZmYmI7CisJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5z X3BoeSwgKFJYX1BTQ19BMCB8IChrIDw8IDkpKSwgdmFsKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lk IGhkcHR4X2RwX3BoeV9yZWZfY2xvY2tfdHlwZShzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNk bnNfcGh5KQoreworCXUzMiB2YWw7CisKKwl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3Bo eSwgUEhZX1BNQV9DTU5fQ1RSTDEpOworCXZhbCAmPSB+Q01BX1JFRl9DTEtfU0VMX01BU0s7CisJ LyoKKwkgKiBzaW5nbGUgZW5kZWQgcmVmZXJlbmNlIGNsb2NrICh2YWwgfD0gMHgwMDMwKTsKKwkg KiBkaWZmZXJlbnRpYWwgY2xvY2sgICh2YWwgfD0gMHgwMDAwKTsKKwkgKgorCSAqIGZvciBkaWZm ZXJlbnRpYWwgY2xvY2sgb24gdGhlIHJlZmNsa19wIGFuZAorCSAqIHJlZmNsa19tIG9mZiBjaGlw IHBpbnM6IENNTl9ESUFHX0FDWUFbOF09MSdiMQorCSAqIGNkbnNfcGh5X3JlZ193cml0ZShjZG5z X3BoeSwgQ01OX0RJQUdfQUNZQSwgMHgwMTAwKTsKKwkgKi8KKwl2YWwgfD0gRklFTERfUFJFUChD TUFfUkVGX0NMS19TRUxfTUFTSywgMyk7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQ SFlfUE1BX0NNTl9DVFJMMSwgdmFsKTsKK30KKworc3RhdGljIGludCB3YWl0X2Zvcl9hY2soc3Ry dWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSwgdTMyIHJlZywgdTMyIG1hc2ssCisJCQlj b25zdCBjaGFyICplcnJfbXNnKQoreworCXUzMiB2YWwsIGk7CisKKwlmb3IgKGkgPSAwOyBpIDwg MTA7IGkrKykgeworCQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgcmVnKTsKKwkJ aWYgKHZhbCAmIG1hc2spCisJCQlyZXR1cm4gMDsKKwkJbXNsZWVwKDIwKTsKKwl9CisKKwlkZXZf ZXJyKGNkbnNfcGh5LT5kZXYsICIlc1xuIiwgZXJyX21zZyk7CisJcmV0dXJuIC1FVElNRURPVVQ7 Cit9CisKK3N0YXRpYyBpbnQgd2FpdF9mb3JfYWNrX2NsZWFyKHN0cnVjdCBjZG5zX2hkcHR4X2Rw X3BoeSAqY2Ruc19waHksIHUzMiByZWcsIHUzMiBtYXNrLAorCQkJICAgICAgY29uc3QgY2hhciAq ZXJyX21zZykKK3sKKwl1MzIgdmFsLCBpOworCisJZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsK KwkJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIHJlZyk7CisJCWlmICghKHZhbCAm IG1hc2spKQorCQkJcmV0dXJuIDA7CisJCW1zbGVlcCgyMCk7CisJfQorCisJZGV2X2VycihjZG5z X3BoeS0+ZGV2LCAiJXNcbiIsIGVycl9tc2cpOworCXJldHVybiAtRVRJTUVET1VUOworfQorCitz dGF0aWMgaW50IGhkcHR4X2RwX3BoeV9wb3dlcl91cChzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkg KmNkbnNfcGh5KQoreworCXUzMiB2YWw7CisJaW50IHJldCA9IDA7CisKKwkvKiBFbmFibGUgSERQ IFBMTOKAmXMgZm9yIGhpZ2ggc3BlZWQgY2xvY2tzICovCisJdmFsID0gY2Ruc19waHlfcmVnX3Jl YWQoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCk7CisJdmFsIHw9IFBMTF9FTjsKKwljZG5zX3Bo eV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCwgdmFsKTsKKwlyZXQgPSB3YWl0 X2Zvcl9hY2soY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCwgUExMX1JFQURZLAorCQkJICAgIldh aXQgUExMIEFjayBmYWlsZWQiKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCS8q IEVuYWJsZSBIRFAgUExM4oCZcyBkYXRhIHJhdGUgYW5kIGZ1bGwgcmF0ZSBjbG9ja3Mgb3V0IG9m IFBNQS4gKi8KKwl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtf Q1RMKTsKKwl2YWwgfD0gUExMX0NMS19FTjsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHks IFBIWV9IRFBfQ0xLX0NUTCwgdmFsKTsKKwlyZXQgPSB3YWl0X2Zvcl9hY2soY2Ruc19waHksIFBI WV9IRFBfQ0xLX0NUTCwgUExMX0NMS19FTl9BQ0ssCisJCQkgICAiV2FpdCBQTEwgY2xvY2sgZW5h YmxlIEFDSyBmYWlsZWQiKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCS8qIENv bmZpZ3VyZSBQSFkgaW4gQTIgTW9kZSAqLworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg UEhZX0hEUF9NT0RFX0NUUkwsIFBPV0VSX1NUQVRFX0EyKTsKKwlyZXQgPSB3YWl0X2Zvcl9hY2so Y2Ruc19waHksIFBIWV9IRFBfTU9ERV9DVFJMLCBQT1dFUl9TVEFURV9BMl9BQ0ssCisJCQkgICAi V2FpdCBBMiBBY2sgZmFpbGVkIik7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwkv KiBDb25maWd1cmUgUEhZIGluIEEwIG1vZGUgKFBIWSBtdXN0IGJlIGluIHRoZSBBMCBwb3dlcgor CSAqIHN0YXRlIGluIG9yZGVyIHRvIHRyYW5zbWl0IGRhdGEpCisJICovCisJY2Ruc19waHlfcmVn X3dyaXRlKGNkbnNfcGh5LCBQSFlfSERQX01PREVfQ1RSTCwgUE9XRVJfU1RBVEVfQTApOworCXJl dCA9IHdhaXRfZm9yX2FjayhjZG5zX3BoeSwgUEhZX0hEUF9NT0RFX0NUUkwsIFBPV0VSX1NUQVRF X0EwX0FDSywKKwkJCSAgICJXYWl0IEEwIEFjayBmYWlsZWQiKTsKKwlpZiAocmV0IDwgMCkKKwkJ cmV0dXJuIHJldDsKKworCWNkbnNfcGh5LT5wb3dlcl91cCA9IHRydWU7CisKKwlyZXR1cm4gcmV0 OworfQorCitzdGF0aWMgdm9pZCBoZHB0eF9kcF9waHlfcG93ZXJfZG93bihzdHJ1Y3QgY2Ruc19o ZHB0eF9kcF9waHkgKmNkbnNfcGh5KQoreworCXUxNiB2YWw7CisKKwlpZiAoIWNkbnNfcGh5LT5w b3dlcl91cCkKKwkJcmV0dXJuOworCisJLyogUGxhY2UgdGhlIFBIWSBsYW5lcyBpbiB0aGUgQTMg cG93ZXIgc3RhdGUuICovCisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQSFlfSERQX01P REVfQ1RSTCwgUE9XRVJfU1RBVEVfQTMpOworCWlmICh3YWl0X2Zvcl9hY2soY2Ruc19waHksIFBI WV9IRFBfTU9ERV9DVFJMLCBQT1dFUl9TVEFURV9BM19BQ0ssCisJCQkgIldhaXQgQTMgQWNrIGZh aWxlZCIpKQorCQlyZXR1cm47CisKKwkvKiBEaXNhYmxlIEhEUCBQTEzigJlzIGRhdGEgcmF0ZSBh bmQgZnVsbCByYXRlIGNsb2NrcyBvdXQgb2YgUE1BLiAqLworCXZhbCA9IGNkbnNfcGh5X3JlZ19y ZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOworCXZhbCAmPSB+UExMX0NMS19FTjsKKwlj ZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCwgdmFsKTsKKwlpZiAo d2FpdF9mb3JfYWNrX2NsZWFyKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwsIFBMTF9DTEtfRU5f QUNLLAorCQkJICAgICAgICJXYWl0IFBMTCBjbG9jayBBY2sgY2xlYXIgZmFpbGVkIikpCisJCXJl dHVybjsKKworCS8qIERpc2FibGUgSERQIFBMTOKAmXMgZm9yIGhpZ2ggc3BlZWQgY2xvY2tzICov CisJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCk7CisJ dmFsICY9IH5QTExfRU47CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQSFlfSERQX0NM S19DVEwsIHZhbCk7CisJaWYgKHdhaXRfZm9yX2Fja19jbGVhcihjZG5zX3BoeSwgUEhZX0hEUF9D TEtfQ1RMLCBQTExfUkVBRFksCisJCQkgICAgICAgIldhaXQgUExMIEFjayBjbGVhciBmYWlsZWQi KSkKKwkJcmV0dXJuOworCisJY2Ruc19waHktPnBvd2VyX3VwID0gZmFsc2U7Cit9CisKK3N0YXRp YyBpbnQgY2Ruc19oZHB0eF9kcF9waHlfb24oc3RydWN0IHBoeSAqcGh5KQoreworCXN0cnVjdCBj ZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKworCXJl dHVybiBoZHB0eF9kcF9waHlfcG93ZXJfdXAoY2Ruc19waHkpOworfQorCitzdGF0aWMgaW50IGNk bnNfaGRwdHhfZHBfcGh5X29mZihzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGNkbnNfaGRw dHhfZHBfcGh5ICpjZG5zX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOworCisJaGRwdHhfZHBf cGh5X3Bvd2VyX2Rvd24oY2Ruc19waHkpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQg Y2Ruc19oZHB0eF9kcF9waHlfaW5pdChzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGNkbnNf aGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOworCWludCByZXQ7 CisKKwloZHB0eF9kcF9waHlfcmVmX2Nsb2NrX3R5cGUoY2Ruc19waHkpOworCisJLyogUEhZIHBv d2VyIHVwICovCisJcmV0ID0gaGRwdHhfZHBfcGh5X3Bvd2VyX3VwKGNkbnNfcGh5KTsKKwlpZiAo cmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCWhkcHR4X2RwX2F1eF9jZmcoY2Ruc19waHkpOwor CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBjZG5zX2hkcHR4X2RwX2NvbmZpZ3VyZShz dHJ1Y3QgcGh5ICpwaHksCisJCQkJICAgdW5pb24gcGh5X2NvbmZpZ3VyZV9vcHRzICpvcHRzKQor eworCXN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkgPSBwaHlfZ2V0X2RydmRhdGEo cGh5KTsKKwlpbnQgcmV0OworCisJY2Ruc19waHktPmxpbmtfcmF0ZSA9IG9wdHMtPmRwLmxpbmtf cmF0ZTsKKwljZG5zX3BoeS0+bnVtX2xhbmVzID0gb3B0cy0+ZHAubGFuZXM7CisKKwlpZiAoY2Ru c19waHktPmxpbmtfcmF0ZSA+IE1BWF9MSU5LX1JBVEUpIHsKKwkJZGV2X2VycihjZG5zX3BoeS0+ ZGV2LCAiTGluayBSYXRlKCVkKSBOb3Qgc3VwcG9ydGVkXG4iLCBjZG5zX3BoeS0+bGlua19yYXRl KTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIERpc2FibGUgcGh5IGNsb2NrIGlmIFBIWSBp biBwb3dlciB1cCBzdGF0ZSAqLworCWhkcHR4X2RwX3BoeV9wb3dlcl9kb3duKGNkbnNfcGh5KTsK KworCWlmIChjZG5zX3BoeS0+cmVmX2Nsa19yYXRlID09IFJFRl9DTEtfMjdNSFopIHsKKwkJaGRw dHhfZHBfcGh5X3BtYV9jbW5fY2ZnXzI3bWh6KGNkbnNfcGh5KTsKKwkJaGRwdHhfZHBfcGh5X3Bt YV9jbW5fcGxsMF8yN21oeihjZG5zX3BoeSk7CisJfSBlbHNlIHsKKwkJZGV2X2VycihjZG5zX3Bo eS0+ZGV2LCAiTm90IHN1cHBvcnQgcmVmIGNsb2NrIHJhdGVcbiIpOworCX0KKworCS8qIFBIWSBw b3dlciB1cCAqLworCXJldCA9IGhkcHR4X2RwX3BoeV9wb3dlcl91cChjZG5zX3BoeSk7CisKKwly ZXR1cm4gcmV0OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHBoeV9vcHMgY2Ruc19oZHB0eF9k cF9waHlfb3BzID0geworCS5pbml0ID0gY2Ruc19oZHB0eF9kcF9waHlfaW5pdCwKKwkuY29uZmln dXJlID0gY2Ruc19oZHB0eF9kcF9jb25maWd1cmUsCisJLnBvd2VyX29uID0gY2Ruc19oZHB0eF9k cF9waHlfb24sCisJLnBvd2VyX29mZiA9IGNkbnNfaGRwdHhfZHBfcGh5X29mZiwKKwkub3duZXIg PSBUSElTX01PRFVMRSwKK307CisKK3N0YXRpYyBpbnQgY2Ruc19oZHB0eF9kcF9waHlfcHJvYmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9w aHkgKmNkbnNfcGh5OworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7CisJc3RydWN0 IGRldmljZV9ub2RlICpub2RlID0gZGV2LT5vZl9ub2RlOworCXN0cnVjdCBwaHlfcHJvdmlkZXIg KnBoeV9wcm92aWRlcjsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwlzdHJ1Y3QgcGh5ICpwaHk7 CisJaW50IHJldDsKKworCWNkbnNfcGh5ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpjZG5z X3BoeSksIEdGUF9LRVJORUwpOworCWlmICghY2Ruc19waHkpCisJCXJldHVybiAtRU5PTUVNOwor CisJZGV2X3NldF9kcnZkYXRhKGRldiwgY2Ruc19waHkpOworCWNkbnNfcGh5LT5kZXYgPSBkZXY7 CisJbXV0ZXhfaW5pdCgmY2Ruc19waHktPm1ib3hfbXV0ZXgpOworCisJcmVzID0gcGxhdGZvcm1f Z2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKKwlpZiAoIXJlcykKKwkJcmV0 dXJuIC1FTk9ERVY7CisJY2Ruc19waHktPnJlZ3MgPSBkZXZtX2lvcmVtYXAoZGV2LCByZXMtPnN0 YXJ0LCByZXNvdXJjZV9zaXplKHJlcykpOworCWlmIChJU19FUlIoY2Ruc19waHktPnJlZ3MpKQor CQlyZXR1cm4gUFRSX0VSUihjZG5zX3BoeS0+cmVncyk7CisKKwlwaHkgPSBkZXZtX3BoeV9jcmVh dGUoZGV2LCBub2RlLCAmY2Ruc19oZHB0eF9kcF9waHlfb3BzKTsKKwlpZiAoSVNfRVJSKHBoeSkp CisJCXJldHVybiBQVFJfRVJSKHBoeSk7CisKKwlwaHktPmF0dHJzLm1vZGUgPSBQSFlfTU9ERV9E UDsKKwljZG5zX3BoeS0+cGh5ID0gcGh5OworCXBoeV9zZXRfZHJ2ZGF0YShwaHksIGNkbnNfcGh5 KTsKKworCS8qIGluaXQgYmFzZSBzdHJ1Y3QgZm9yIGFjY2VzcyBtaGRwIG1haWxib3ggKi8KKwlj ZG5zX3BoeS0+YmFzZS5kZXYgPSBjZG5zX3BoeS0+ZGV2OworCWNkbnNfcGh5LT5iYXNlLnJlZ3Mg PSBjZG5zX3BoeS0+cmVnczsKKwljZG5zX3BoeS0+YmFzZS5tYm94X211dGV4ID0gJmNkbnNfcGh5 LT5tYm94X211dGV4OworCisJcmV0ID0gaGRwdHhfZHBfY2xrX2VuYWJsZShjZG5zX3BoeSk7CisJ aWYgKHJldCkgeworCQlkZXZfZXJyKGRldiwgIkluaXQgY2xrIGZhaWxcbiIpOworCQlyZXR1cm4g LUVJTlZBTDsKKwl9CisKKwlwaHlfcHJvdmlkZXIgPSBkZXZtX29mX3BoeV9wcm92aWRlcl9yZWdp c3RlcihkZXYsIG9mX3BoeV9zaW1wbGVfeGxhdGUpOworCWlmIChJU19FUlIocGh5X3Byb3ZpZGVy KSkgeworCQlyZXQgPSBQVFJfRVJSKHBoeV9wcm92aWRlcik7CisJCWdvdG8gY2xrX2Rpc2FibGU7 CisJfQorCisJcmV0dXJuIDA7CisKK2Nsa19kaXNhYmxlOgorCWhkcHR4X2RwX2Nsa19kaXNhYmxl KGNkbnNfcGh5KTsKKworCXJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgaW50IGNkbnNfaGRw dHhfZHBfcGh5X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVj dCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2 KTsKKworCWhkcHR4X2RwX2Nsa19kaXNhYmxlKGNkbnNfcGh5KTsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBjZG5zX2hkcHR4X2RwX3BoeV9vZl9t YXRjaFtdID0geworCXsuY29tcGF0aWJsZSA9ICJmc2wsaW14OG1xLWRwLXBoeSIgfSwKKwl7IC8q IHNlbnRpbmVsICovIH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBjZG5zX2hkcHR4X2Rw X3BoeV9vZl9tYXRjaCk7CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNkbnNfaGRw dHhfZHBfcGh5X2RyaXZlciA9IHsKKwkucHJvYmUgPSBjZG5zX2hkcHR4X2RwX3BoeV9wcm9iZSwK KwkucmVtb3ZlID0gY2Ruc19oZHB0eF9kcF9waHlfcmVtb3ZlLAorCS5kcml2ZXIgPSB7CisJCS5u YW1lCT0gImNkbnMtaGRwdHgtZHAtcGh5IiwKKwkJLm9mX21hdGNoX3RhYmxlCT0gY2Ruc19oZHB0 eF9kcF9waHlfb2ZfbWF0Y2gsCisJfQorfTsKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoY2Ruc19o ZHB0eF9kcF9waHlfZHJpdmVyKTsKKworTU9EVUxFX0FVVEhPUigiU2FuZG9yIFl1IDxzYW5kb3Iu eXVAbnhwLmNvbT4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiQ2FkZW5jZSBIRFAtVFggRGlzcGxh eVBvcnQgUEhZIGRyaXZlciIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotLSAKMi4zNC4xCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJt LWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtl cm5lbAo=