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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 A5A5FFF8861 for ; Mon, 27 Apr 2026 10:05:58 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 13D2B10E686; Mon, 27 Apr 2026 10:05:58 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=amd.com header.i=@amd.com header.b="wr4CyjkP"; dkim-atps=neutral Received: from CY3PR05CU001.outbound.protection.outlook.com (mail-westcentralusazon11013045.outbound.protection.outlook.com [40.93.201.45]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7520A10E686; Mon, 27 Apr 2026 10:05:56 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gyPev4V0tdCUIpkOLHr5MlLu9BGbg2Xn2wIIcWpVwc6c3mKFY7uspUJeVunPUuAccMcmd56oMEn6TY87aLBzx32m5NJIstXDtWqqq3UgR3Rqmjn2XhaTi+CZZZWWEUxcxWWlOA8W3YmOrYoTWmlxwEhgTL3My7M73F6KXLTsXYkDTYmn7FS7Z2nkOEW+TALoIkc0clJVqcNy+iQh+SBUd2KiuO+ojwEhse5V88w9S67UwBmgdijDDdiDHF30HQ/kSBMfOvFwJ3KfyPpUenfOcrA952ElBuNilttKWXuEHNzvm5hu8lh9XEhsdtER2RZfFTT016HgrZW3uIgm3m5afA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=cJEcST48QJ6MtcBwjvOM7yQgQqSBEcUJFbjjfw++JzI=; b=xLBN7BsEYEs5cVQ3+p6gmj3Ow1O3smsy89kpKUwNEgJUFt5Q/WKZ5RjjJmuoDb7C/CO2yKoEDJ8ZAqPoZZk1RiCYoXYCOZrgdBMuCl5d12PfQf2aMmlrkjYqDMm62y5UO3HASKEl2SOCs/WTHnDj6Ro4PKiIOX33GTUX6v7yw7pi/WBqQx7dsJN8o4M8Rt+8YZOUJD8J7XcZMj3zvmFk4b7nhhOwsTu0xoL2lG0JLI6x0XAS9PMNlMN+Szso+6HhCVEzH9td3w1qXx5w+wAw6ZNBEzNsZIshEGU+709IBY8kLF3SyhMv0mRDiuJ5ID3kWXYO6bnsMd7canJ05lUGQA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.freedesktop.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cJEcST48QJ6MtcBwjvOM7yQgQqSBEcUJFbjjfw++JzI=; b=wr4CyjkPj3FgOAuE4TBsnLht4WlLwp20H7qslDnzxkGRyfoxI27x8uOLIL2vmfWbmSSBZAvcf22LoUlCaJG7F/fikzIroALl+pTFhihxSG9ThZN4vGFPEck5CGPKRbCK3K4Dx49vwZzkRnk5yEHByGKjTZBzbLKszweyDKqKstY= Received: from PH7P220CA0108.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:32d::27) by PH7PR12MB5927.namprd12.prod.outlook.com (2603:10b6:510:1da::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.15; Mon, 27 Apr 2026 10:05:45 +0000 Received: from MW1PEPF0001615B.namprd21.prod.outlook.com (2603:10b6:510:32d:cafe::a2) by PH7P220CA0108.outlook.office365.com (2603:10b6:510:32d::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Mon, 27 Apr 2026 10:05:45 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C Received: from satlexmb08.amd.com (165.204.84.17) by MW1PEPF0001615B.mail.protection.outlook.com (10.167.249.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.0 via Frontend Transport; Mon, 27 Apr 2026 10:05:45 +0000 Received: from SATLEXMB04.amd.com (10.181.40.145) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.17; Mon, 27 Apr 2026 05:05:34 -0500 Received: from satlexmb07.amd.com (10.181.42.216) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 27 Apr 2026 05:05:34 -0500 Received: from junhua-PC.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server id 15.2.2562.17 via Frontend Transport; Mon, 27 Apr 2026 05:05:31 -0500 From: Junhua Shen To: , , , , , , , , , CC: , , Junhua Shen Subject: [PATCH v3 1/5] drm/amdgpu: add VRAM migration infrastructure for drm_pagemap Date: Mon, 27 Apr 2026 18:05:18 +0800 Message-ID: <20260427100522.7014-2-Junhua.Shen@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260427100522.7014-1-Junhua.Shen@amd.com> References: <20260427100522.7014-1-Junhua.Shen@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Received-SPF: None (SATLEXMB04.amd.com: Junhua.Shen@amd.com does not designate permitted sender hosts) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MW1PEPF0001615B:EE_|PH7PR12MB5927:EE_ X-MS-Office365-Filtering-Correlation-Id: a539742b-e5b3-409d-0792-08dea4448c6f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|82310400026|36860700016|921020|56012099003|22082099003|18002099003|18096099003; X-Microsoft-Antispam-Message-Info: ibgWZypc3jl3iXONHEX+3pc8x84WamOLPOqaYD0M2jF+mGk/HsUuinYEAhF6AxkA3v52RyOq65hXnm6dAmepK3x1KAZaOaTZTJagLJesRbRLxzBlSDCH32e7k/iI4QUvuQ9CHmYamzuASp4kQdwWrWu5AAKfOPwbZPAKDblB50VhEqJUioQvOgMJ479JbgmysnVf+kPto+KeCpqzfyZXa47n9yhb4pq/U3iwqva2lIfpSSnVAPJ02nSGYJ/Ouc4oydePMWIptjl4pa43PBOMkmcDL7ipB3roNbxB4s3uptrUKu4txI1VmiJs0AADsTx4P0Umcp/9/hw7GslvMj+R2bCbLvS3luVNt9rdd4Y/MJQOnufk8BeXUg1j02mEPKo4sozHgP22SE+cRttUX4VFSRoosey8jjTn66012AZP0BLmR689oD0Z/7KFpjTDKnSgH4A5kmCQJB0yiUYyxXtEg6gZF7uXsAG6UA+iCKv1rqK+eHnnEMpJvJb8eR11U13KG7s5u0VSaCBnw23luHEsp35mr0zraoFPZfnL8qj9zuPjyXTvemLEQpIxF2MgXBe47G19vsNWm5JefYqQRKFH3nZsiImcu+YOhcAZARAdtPYZGtzSGlD6MMUQ3MxhqXjjc62eQ3kneZt8h7xcMR1MTYovO+RTDnNDN3JJhdHVkjU5vJOdy+ygoDuavYeAqts91mHNF029JOfoKxWta5zNAVcKPmRI93c33H/iGrKUxyRERMoh2T2Mja1oqwmweCBTg5gjD3AqIFUXTh0/IyNmCD9EpE4j5SRocwWbHESr0h98eMalhKr9tAXpHIExoMVS X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(376014)(82310400026)(36860700016)(921020)(56012099003)(22082099003)(18002099003)(18096099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 43j+/FqYDJap7VJ4AYvRIrMn3xJ9DH51E3V1ho065sWOcY6U11ZLOYdCQ02LadlXE4ii/19wUiHFmZCkP2b7ut9awv/cgj8ixPK7ft5bfehvcrMjX9GH8kIpv+SC0lzoYHtReNwxFrbkwCJoH5xrCIn225aehZVUS0DPcHONf2GizR2s1lhOQYIbsZvMPTdGlM14SHsYO6OIC6JmuaZdBpdpWrgxZgE3ugKe23dy1LCwHnCJDuvp4YiTwXCEJziDGFmw9FSLs4ix0PGPWiU7CNlUKrPZ0Cd7HOOoOYK758IRrUntZCq0GHc0NyfKCdyR27+NrjSyR0AxESmH9aAn2iRBVDaLf2jaWxLjzKukAR1URpYFEGWptY74Onl78ycIGDZsAoYY0TVDST7S4s7M0igGEysyKnKOBvqlPhqUYACXsW85GkuNbzP0nQVax5B7 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 10:05:45.2615 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a539742b-e5b3-409d-0792-08dea4448c6f X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: MW1PEPF0001615B.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5927 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" QWRkIHRoZSBkcm1fcGFnZW1hcC1iYXNlZCBWUkFNIG1pZ3JhdGlvbiBpbmZyYXN0cnVjdHVyZToK Ci0gRGVmaW5lIHN0cnVjdCBhbWRncHVfcGFnZW1hcCB3cmFwcGluZyBkZXZfcGFnZW1hcCArIGRy bV9wYWdlbWFwCi0gRGVmaW5lIEFNREdQVV9TVk1fUEdNQVBfT1dORVIoKSBhbmQgQU1ER1BVX0lO VEVSQ09OTkVDVF9WUkFNIG1hY3JvcwotIEltcGxlbWVudCBhbWRncHVfc3ZtX21pZ3JhdGlvbl9p bml0KCkgdG8gcmVnaXN0ZXIgWk9ORV9ERVZJQ0UgdmlhCiAgZGV2bV9tZW1yZW1hcF9wYWdlcygp IGFuZCBpbml0aWFsaXplIHRoZSBkcm1fcGFnZW1hcAotIEFkZCBhbWRncHVfcGFnZW1hcCBwb2lu dGVyIChhcGFnZW1hcCkgdG8gc3RydWN0IGFtZGdwdV9kZXZpY2UKClNpZ25lZC1vZmYtYnk6IEp1 bmh1YSBTaGVuIDxKdW5odWEuU2hlbkBhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L01ha2VmaWxlICAgICAgICAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdS5oICAgICAgICAgfCAgIDggKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X21pZ3JhdGUuYyB8IDE3OSArKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21pZ3JhdGUuaCB8ICA5OCArKysrKysrKysrKwogNCBmaWxl cyBjaGFuZ2VkLCAyODkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbWlncmF0ZS5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21pZ3JhdGUu aAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUKaW5kZXggNzcwMGY4MWEyNDZlLi5lNjRh YmI1YzhhYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxl CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlCkBAIC0zMjMsMTIgKzMy MywxNCBAQCBhbWRncHUtJChDT05GSUdfSE1NX01JUlJPUikgKz0gYW1kZ3B1X2htbS5vCiAKICMg c3ZtIHN1cHBvcnQKIGFtZGdwdS0kKENPTkZJR19EUk1fQU1ER1BVX1NWTSkgKz0gYW1kZ3B1X3N2 bS5vIGFtZGdwdV9zdm1fYXR0ci5vIFwKLQlhbWRncHVfc3ZtX3JhbmdlLm8KKwlhbWRncHVfc3Zt X3JhbmdlLm8gYW1kZ3B1X21pZ3JhdGUubwogCiAuUEhPTlk6IGNsZWFuLXN2bQogY2xlYW4tc3Zt OgogCXJtIC1mICQob2JqKS9hbWRncHVfc3ZtLm8gJChvYmopL2FtZGdwdV9zdm1fYXR0ci5vICQo b2JqKS9hbWRncHVfc3ZtX3JhbmdlLm8gXAotCSAgICAgICQob2JqKS8uYW1kZ3B1X3N2bS5vLmNt ZCAkKG9iaikvLmFtZGdwdV9zdm1fYXR0ci5vLmNtZCAkKG9iaikvLmFtZGdwdV9zdm1fcmFuZ2Uu by5jbWQKKwkgICAgICAkKG9iaikvYW1kZ3B1X21pZ3JhdGUubyBcCisJICAgICAgJChvYmopLy5h bWRncHVfc3ZtLm8uY21kICQob2JqKS8uYW1kZ3B1X3N2bV9hdHRyLm8uY21kICQob2JqKS8uYW1k Z3B1X3N2bV9yYW5nZS5vLmNtZCBcCisJICAgICAgJChvYmopLy5hbWRncHVfbWlncmF0ZS5vLmNt ZAogCiBpbmNsdWRlICQoRlVMTF9BTURfUEFUSCkvcG0vTWFrZWZpbGUKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHUuaAppbmRleCA0OWU3ODgxNzUwZmEuLmZlNmJhOTkxMWQ5ZiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKQEAgLTMyNSw2ICszMjUsNyBAQCBzdHJ1Y3QgYW1k Z3B1X2Zwcml2Owogc3RydWN0IGFtZGdwdV9ib192YV9tYXBwaW5nOwogc3RydWN0IGtmZF92bV9m YXVsdF9pbmZvOwogc3RydWN0IGFtZGdwdV9oaXZlX2luZm87CitzdHJ1Y3QgYW1kZ3B1X3BhZ2Vt YXA7CiBzdHJ1Y3QgYW1kZ3B1X3Jlc2V0X2NvbnRleHQ7CiBzdHJ1Y3QgYW1kZ3B1X3Jlc2V0X2Nv bnRyb2w7CiBzdHJ1Y3QgYW1kZ3B1X2NvcmVkdW1wX2luZm87CkBAIC0xMjAwLDYgKzEyMDEsMTMg QEAgc3RydWN0IGFtZGdwdV9kZXZpY2UgewogCiAJc3RydWN0IGFtZGdwdV91bWFfY2FydmVvdXRf aW5mbyB1bWFfaW5mbzsKIAorI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9BTURHUFVfU1ZNKQor CS8qIFNWTSBWUkFNIG1pZ3JhdGlvbiB2aWEgZHJtX3BhZ2VtYXAgKGRybV9ncHVzdm0gcGF0aCku CisJICogQWxsb2NhdGVkIGluIGFtZGdwdV9zdm1fbWlncmF0aW9uX2luaXQoKSwgTlVMTCBpZiBT Vk0gZGlzYWJsZWQuCisJICovCisJc3RydWN0IGFtZGdwdV9wYWdlbWFwCQkqYXBhZ2VtYXA7Cisj ZW5kaWYKKwogCS8qIEtGRAogCSAqIE11c3QgYmUgbGFzdCAtLWVuZHMgaW4gYSBmbGV4aWJsZS1h cnJheSBtZW1iZXIuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfbWlncmF0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21p Z3JhdGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE3MGUyZWFk YzEwNgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9taWdyYXRlLmMKQEAgLTAsMCArMSwxNzkgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wIE9SIE1JVCAqLworLyoKKyAqIENvcHlyaWdodCAyMDI2IEFkdmFuY2VkIE1pY3Jv IERldmljZXMsIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi KSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g dGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAq IFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwgREFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9U SEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworLyoqCisgKiBET0M6IEFN REdQVSBTVk0gTWlncmF0aW9uCisgKgorICogVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIGRybV9w YWdlbWFwLWJhc2VkIG1pZ3JhdGlvbiBpbmZyYXN0cnVjdHVyZSBmb3IKKyAqIEFNREdQVSBTVk0u IEl0IHByb3ZpZGVzIHRoZSBjYWxsYmFja3MgdGhhdCB0aGUgRFJNIEdQVVNWTSAvIGRybV9wYWdl bWFwCisgKiBmcmFtZXdvcmsgbmVlZHMgdG86CisgKgorICogMS4gTWFwIFpPTkVfREVWSUNFIHBh Z2VzIHRvIEdQVS12aXNpYmxlIFZSQU0gTUMgYWRkcmVzc2VzIChkZXZpY2VfbWFwKQorICogMi4g QWxsb2NhdGUgVlJBTSBhbmQgbWlncmF0ZSBwYWdlcyBmcm9tIHN5c3RlbSBtZW1vcnkgKHBvcHVs YXRlX21tKQorICogMy4gQ29weSBkYXRhIGJldHdlZW4gUkFNIGFuZCBWUkFNIHVzaW5nIFNETUEg KGNvcHlfdG9fZGV2bWVtIC8gY29weV90b19yYW0pCisgKiA0LiBSZWxlYXNlIFZSQU0gYmFja2lu ZyB3aGVuIHBhZ2VzIG1pZ3JhdGUgYmFjayB0byBzeXN0ZW0gbWVtb3J5IChkZXZtZW1fcmVsZWFz ZSkKKyAqCisgKiBBcmNoaXRlY3R1cmUgb3ZlcnZpZXc6OgorICoKKyAqICAgYWRldi0+YXBhZ2Vt YXAtPmRwYWdlbWFwICAgKHN0cnVjdCBkcm1fcGFnZW1hcCkKKyAqICAgICAgIC5vcHMgPSAmYW1k Z3B1X3N2bV9kcm1fcGFnZW1hcF9vcHMKKyAqICAgICAgICAgICB8CisgKiAgICAgICArLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rCisgKiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8Cisg KiAgLnBvcHVsYXRlX21tICAgICAgICAgICAgLmRldmljZV9tYXAKKyAqICAoYWxsb2MgQk8gKyBt aWdyYXRlKSAgICAocGFnZSAtPiBWUkFNIE1DIGFkZHIpCisgKiAgICAgICB8CisgKiAgICAgICB2 CisgKiAgIGRybV9wYWdlbWFwX2Rldm1lbV9vcHMgIChwZXItQk8gbWlncmF0aW9uIG1lY2hhbmlj cykKKyAqICAgICAgIC5wb3B1bGF0ZV9kZXZtZW1fcGZuICAtPiBCTyBidWRkeSBibG9ja3MgLT4g UEZOIGFycmF5CisgKiAgICAgICAuY29weV90b19kZXZtZW0gICAgICAgLT4gU0RNQSBjb3B5IFJB TSAtPiBWUkFNCisgKiAgICAgICAuY29weV90b19yYW0gICAgICAgICAgLT4gU0RNQSBjb3B5IFZS QU0gLT4gUkFNCisgKiAgICAgICAuZGV2bWVtX3JlbGVhc2UgICAgICAgLT4gcmVsZWFzZSBCTyBy ZWZlcmVuY2UKKyAqCisgKiBUaGUgdGhyZWUgYWRkcmVzcyBzcGFjZXMgaW52b2x2ZWQ6CisgKgor ICogICBWUkFNIG9mZnNldCAgWzAsIHJlYWxfdnJhbV9zaXplKSAgICAgLSBidWRkeSBhbGxvY2F0 b3IgbWFuYWdlZAorICogICAgICAgKyBocGFfYmFzZQorICogICBIUEEgLyBQRk4gICAgW2hwYV9i YXNlLCBocGFfYmFzZSsuLikgLSBaT05FX0RFVklDRSBzdHJ1Y3QgcGFnZSBtYW5hZ2VtZW50Cisg KiAgICAgICArIHZtX21hbmFnZXIudnJhbV9iYXNlX29mZnNldAorICogICBQVEUgYWRkcmVzcyAg W3ZyYW1fYmFzZV9vZmZzZXQsIC4uXSAgLSBHUFUgcGFnZSB0YWJsZSBlbnRyaWVzIChmcm9tIE1N SFVCIEZCX09GRlNFVCkKKyAqLworCisjaW5jbHVkZSA8ZHJtL2RybV9wYWdlbWFwLmg+CisjaW5j bHVkZSA8bGludXgvbWVtcmVtYXAuaD4KKyNpbmNsdWRlIDxsaW51eC9taWdyYXRlLmg+CisKKyNp bmNsdWRlICJhbWRncHVfYW1ka2ZkLmgiCisjaW5jbHVkZSAiYW1kZ3B1X21pZ3JhdGUuaCIKKyNp bmNsdWRlICJhbWRncHUuaCIKKworc3RhdGljIGlubGluZSBzdHJ1Y3QgYW1kZ3B1X3BhZ2VtYXAg KgorZHBhZ2VtYXBfdG9fYXBhZ2VtYXAoc3RydWN0IGRybV9wYWdlbWFwICpkcGFnZW1hcCkKK3sK KwlyZXR1cm4gY29udGFpbmVyX29mKGRwYWdlbWFwLCBzdHJ1Y3QgYW1kZ3B1X3BhZ2VtYXAsIGRw YWdlbWFwKTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqCitkcGFn ZW1hcF90b19hZGV2KHN0cnVjdCBkcm1fcGFnZW1hcCAqZHBhZ2VtYXApCit7CisJcmV0dXJuIGRy bV90b19hZGV2KGRwYWdlbWFwLT5kcm0pOworfQorCisvKioKKyAqIGFtZGdwdV9zdm1fcGFnZV90 b19hcGFnZW1hcCAtIEdldCBhbWRncHVfcGFnZW1hcCBmcm9tIGEgWk9ORV9ERVZJQ0UgcGFnZQor ICogQHBhZ2U6IEEgWk9ORV9ERVZJQ0UgcGFnZSBiYWNrZWQgYnkgVlJBTQorICoKKyAqIEZvbGxv d3M6IHBhZ2UgLT4gcGdtYXAgLT4gY29udGFpbmVyX29mKGFwYWdlbWFwKQorICovCitzdGF0aWMg aW5saW5lIHN0cnVjdCBhbWRncHVfcGFnZW1hcCAqCithbWRncHVfc3ZtX3BhZ2VfdG9fYXBhZ2Vt YXAoc3RydWN0IHBhZ2UgKnBhZ2UpCit7CisJc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcCA9IHBh Z2VfcGdtYXAocGFnZSk7CisKKwlyZXR1cm4gY29udGFpbmVyX29mKHBnbWFwLCBzdHJ1Y3QgYW1k Z3B1X3BhZ2VtYXAsIHBnbWFwKTsKK30KKworCitjb25zdCBzdHJ1Y3QgZHJtX3BhZ2VtYXBfb3Bz IGFtZGdwdV9zdm1fZHJtX3BhZ2VtYXBfb3BzID0geyB9OworCisvKioKKyAqIGFtZGdwdV9zdm1f bWlncmF0aW9uX2luaXQgLSBSZWdpc3RlciBaT05FX0RFVklDRSBhbmQgaW5pdGlhbGl6ZSBkcm1f cGFnZW1hcAorICogQGFkZXY6IEFNREdQVSBkZXZpY2UgdG8gc2V0IHVwIFZSQU0gbWlncmF0aW9u IGZvcgorICoKKyAqIEFsbG9jYXRlcyBhIFpPTkVfREVWSUNFIHJlZ2lvbiBjb3ZlcmluZyB0aGUg R1BVJ3MgVlJBTSwgcmVnaXN0ZXJzIGl0CisgKiB2aWEgZGV2bV9tZW1yZW1hcF9wYWdlcygpIHdp dGggZHJtX3BhZ2VtYXAncyBnZW5lcmljIGRldl9wYWdlbWFwX29wcywKKyAqIGFuZCB0aGVuIGlu aXRpYWxpemVzIHRoZSBkcm1fcGFnZW1hcCAoZHBhZ2VtYXApIHRoYXQgcHJvdmlkZXMgdGhlCisg KiBkZXZpY2VfbWFwIC8gcG9wdWxhdGVfbW0gY2FsbGJhY2tzIGZvciB0aGUgRFJNIEdQVVNWTSBt aWdyYXRpb24gcGF0aC4KKyAqCisgKiBGb3IgWEdNSS1jb25uZWN0ZWQgQ1BVcywgdXNlcyB0aGUg ZGV2aWNlJ3MgYXBlcnR1cmUgZGlyZWN0bHkKKyAqIChNRU1PUllfREVWSUNFX0NPSEVSRU5UKS4g IEZvciBkaXNjcmV0ZSBHUFVzLCByZXF1ZXN0cyBhIGZyZWUKKyAqIGlvbWVtIHJlZ2lvbiBmb3Ig TUVNT1JZX0RFVklDRV9QUklWQVRFIHBhZ2VzLgorICoKKyAqIFJldHVybjogMCBvbiBzdWNjZXNz LCAtRUlOVkFMIGlmIEdQVSBJUCB0b28gb2xkLCBuZWdhdGl2ZSBlcnJvciBvbiBmYWlsdXJlCisg Ki8KK2ludCBhbWRncHVfc3ZtX21pZ3JhdGlvbl9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQoreworCXN0cnVjdCBhbWRncHVfcGFnZW1hcCAqc3ZtX2RtOworCXN0cnVjdCBkZXZfcGFn ZW1hcCAqcGdtYXA7CisJc3RydWN0IHJlc291cmNlICpyZXMgPSBOVUxMOworCXVuc2lnbmVkIGxv bmcgc2l6ZTsKKwl2b2lkICpyOworCisJaWYgKGFtZGdwdV9pcF92ZXJzaW9uKGFkZXYsIEdDX0hX SVAsIDApIDwgSVBfVkVSU0lPTig5LCAwLCAxKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAo YWRldi0+YXB1X3ByZWZlcl9ndHQpCisJCXJldHVybiAwOworCisJaWYgKGFkZXYtPmFwYWdlbWFw ICYmIGFkZXYtPmFwYWdlbWFwLT5pbml0aWFsaXplZCkKKwkJcmV0dXJuIDA7CisKKwlzdm1fZG0g PSBkZXZtX2t6YWxsb2MoYWRldi0+ZGV2LCBzaXplb2YoKnN2bV9kbSksIEdGUF9LRVJORUwpOwor CWlmICghc3ZtX2RtKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXBnbWFwID0gJnN2bV9kbS0+cGdt YXA7CisKKwlzaXplID0gQUxJR04oYWRldi0+Z21jLnJlYWxfdnJhbV9zaXplLCAyVUxMIDw8IDIw KTsKKwlpZiAoYWRldi0+Z21jLnhnbWkuY29ubmVjdGVkX3RvX2NwdSkgeworCQlwZ21hcC0+cmFu Z2Uuc3RhcnQgPSBhZGV2LT5nbWMuYXBlcl9iYXNlOworCQlwZ21hcC0+cmFuZ2UuZW5kID0gYWRl di0+Z21jLmFwZXJfYmFzZSArIGFkZXYtPmdtYy5hcGVyX3NpemUgLSAxOworCQlwZ21hcC0+dHlw ZSA9IE1FTU9SWV9ERVZJQ0VfQ09IRVJFTlQ7CisJfSBlbHNlIHsKKwkJcmVzID0gZGV2bV9yZXF1 ZXN0X2ZyZWVfbWVtX3JlZ2lvbihhZGV2LT5kZXYsICZpb21lbV9yZXNvdXJjZSwgc2l6ZSk7CisJ CWlmIChJU19FUlIocmVzKSkKKwkJCXJldHVybiBQVFJfRVJSKHJlcyk7CisJCXBnbWFwLT5yYW5n ZS5zdGFydCA9IHJlcy0+c3RhcnQ7CisJCXBnbWFwLT5yYW5nZS5lbmQgPSByZXMtPmVuZDsKKwkJ cGdtYXAtPnR5cGUgPSBNRU1PUllfREVWSUNFX1BSSVZBVEU7CisJfQorCisJcGdtYXAtPm5yX3Jh bmdlID0gMTsKKwlwZ21hcC0+ZmxhZ3MgPSAwOworCXBnbWFwLT5vcHMgPSBkcm1fcGFnZW1hcF9w YWdlbWFwX29wc19nZXQoKTsKKwlwZ21hcC0+b3duZXIgPSBBTURHUFVfU1ZNX1BHTUFQX09XTkVS KGFkZXYpOworCisJciA9IGRldm1fbWVtcmVtYXBfcGFnZXMoYWRldi0+ZGV2LCBwZ21hcCk7CisJ aWYgKElTX0VSUihyKSkgeworCQlkZXZfZXJyKGFkZXYtPmRldiwgIlNWTTogZmFpbGVkIHRvIHJl Z2lzdGVyIEhNTSBkZXZpY2UgbWVtb3J5XG4iKTsKKwkJaWYgKHBnbWFwLT50eXBlID09IE1FTU9S WV9ERVZJQ0VfUFJJVkFURSAmJiByZXMpCisJCQlkZXZtX3JlbGVhc2VfbWVtX3JlZ2lvbihhZGV2 LT5kZXYsIHJlcy0+c3RhcnQsIHJlc291cmNlX3NpemUocmVzKSk7CisJCXBnbWFwLT50eXBlID0g MDsKKwkJcmV0dXJuIFBUUl9FUlIocik7CisJfQorCisJaWYgKGRybV9wYWdlbWFwX2luaXQoJnN2 bV9kbS0+ZHBhZ2VtYXAsIHBnbWFwLCBhZGV2X3RvX2RybShhZGV2KSwKKwkJCQkJCQkmYW1kZ3B1 X3N2bV9kcm1fcGFnZW1hcF9vcHMpKSB7CisJCWRldl9lcnIoYWRldi0+ZGV2LCAiU1ZNOiBmYWls ZWQgdG8gaW5pdCBkcm1fcGFnZW1hcFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlzdm1f ZG0tPmFkZXYgPSBhZGV2OworCXN2bV9kbS0+aHBhX2Jhc2UgPSBwZ21hcC0+cmFuZ2Uuc3RhcnQ7 CisJc3ZtX2RtLT5pbml0aWFsaXplZCA9IHRydWU7CisJYWRldi0+YXBhZ2VtYXAgPSBzdm1fZG07 CisKKwlkZXZfaW5mbyhhZGV2LT5kZXYsICJTVk06IHJlZ2lzdGVyZWQgJWxkTUIgZGV2aWNlIG1l bW9yeSwgaHBhX2Jhc2U9MHglbGx4XG4iLAorCQkJc2l6ZSA+PiAyMCwgc3ZtX2RtLT5ocGFfYmFz ZSk7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfbWlncmF0ZS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21p Z3JhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUyMDY5OGZi MTU5NwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9taWdyYXRlLmgKQEAgLTAsMCArMSw5OCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAgT1IgTUlUICovCisvKgorICogQ29weXJpZ2h0IDIwMjYgQWR2YW5jZWQgTWljcm8g RGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp LAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICog VEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9G IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RI RVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaWZuZGVmIF9fQU1ER1BV X01JR1JBVEVfSF9fCisjZGVmaW5lIF9fQU1ER1BVX01JR1JBVEVfSF9fCisKKyNpbmNsdWRlIDxk cm0vZHJtX3BhZ2VtYXAuaD4KKyNpbmNsdWRlIDxsaW51eC9tZW1yZW1hcC5oPgorCitzdHJ1Y3Qg YW1kZ3B1X2RldmljZTsKKworLyoKKyAqIEFNREdQVV9JTlRFUkNPTk5FQ1RfVlJBTSAtIFByb3Rv Y29sIGlkZW50aWZpZXIgZm9yIGxvY2FsIFZSQU0gYWNjZXNzLgorICoKKyAqIFVzZWQgaW4gZHJt X3BhZ2VtYXBfYWRkciB0byBkaXN0aW5ndWlzaCBkZXZpY2UtbG9jYWwgVlJBTSBhZGRyZXNzZXMg ZnJvbQorICogRE1BLW1hcHBlZCBzeXN0ZW0gbWVtb3J5IGFkZHJlc3Nlcy4gIGRybV9ncHVzdm1f Z2V0X3BhZ2VzKCkgdXNlcyB0aGlzIHRvCisgKiBpZGVudGlmeSBwYWdlcyB0aGF0IGFyZSBhbHJl YWR5IGluIGRldmljZSBtZW1vcnkgYW5kIG5lZWQgbm8gRE1BIG1hcHBpbmcuCisgKgorICogVmFs dWUgbXVzdCBiZSBub24temVybyAoMCA9PSBEUk1fSU5URVJDT05ORUNUX1NZU1RFTSkuCisgKi8K KyNkZWZpbmUgQU1ER1BVX0lOVEVSQ09OTkVDVF9WUkFNCTEKKworLyoKKyAqIEFNREdQVV9TVk1f UEdNQVBfT1dORVIgLSBVbmlxdWUgb3duZXIgdG9rZW4gZm9yIGRldl9wYWdlbWFwIHJlZ2lzdHJh dGlvbi4KKyAqCisgKiBtaWdyYXRlX3ZtYV9zZXR1cCgpIHVzZXMgcGdtYXAtPm93bmVyIHRvIGRp c3Rpbmd1aXNoICJvd24iIGRldmljZSBwYWdlcworICogZnJvbSAiZm9yZWlnbiIgZGV2aWNlIHBh Z2VzIChlLmcuLCBhbm90aGVyIEdQVSBpbiBhbiBYR01JIGhpdmUpLgorICogUGFnZXMgd2hvc2Ug cGFnZS0+cGdtYXAtPm93bmVyIG1hdGNoZXMgdGhlIG1pZ3JhdGlvbiBzb3VyY2UgYXJlIHNraXBw ZWQKKyAqICh0aGV5J3JlIGFscmVhZHkgaW4gdGhlIHJpZ2h0IHBsYWNlKS4KKyAqCisgKiBGb3Ig WEdNSSBoaXZlOiBhbGwgR1BVcyBpbiB0aGUgaGl2ZSBzaGFyZSB0aGUgc2FtZSBvd25lciAodGhl IGhpdmUgcG9pbnRlcikKKyAqIHNvIGludHJhLWhpdmUgcGFnZXMgYXJlIHRyZWF0ZWQgYXMgbG9j YWwuCisgKiBGb3Igc3RhbmRhbG9uZSBHUFU6IHVzZSB0aGUgYWRldiBwb2ludGVyIGl0c2VsZiBh cyBhIHVuaXF1ZSBwZXItZGV2aWNlIHRva2VuLgorICovCisjZGVmaW5lIEFNREdQVV9TVk1fUEdN QVBfT1dORVIoYWRldikgXAorCSgoYWRldiktPmhpdmUgPyAodm9pZCAqKShhZGV2KS0+aGl2ZSA6 ICh2b2lkICopKGFkZXYpKQorCisvKioKKyAqIHN0cnVjdCBhbWRncHVfcGFnZW1hcCAtIFZSQU0g bWlncmF0aW9uIGluZnJhc3RydWN0dXJlIGZvciBkcm1fcGFnZW1hcAorICogQGRwYWdlbWFwOiBE Uk0gcGFnZW1hcCB3cmFwcGVyIHByb3ZpZGluZyBkZXZpY2VfbWFwL3BvcHVsYXRlX21tIGNhbGxi YWNrcworICogQGFkZXY6IGJhY2stcG9pbnRlciB0byB0aGUgb3duaW5nIGFtZGdwdV9kZXZpY2UK KyAqIEBocGFfYmFzZTogaG9zdCBwaHlzaWNhbCBhZGRyZXNzIGJhc2Ugb2YgdGhlIFpPTkVfREVW SUNFIHJlZ2lvbgorICogQGluaXRpYWxpemVkOiBzZXQgdG8gdHJ1ZSBhZnRlciBzdWNjZXNzZnVs IHJlZ2lzdHJhdGlvbgorICogQHBnbWFwOiB0aGUgZGV2X3BhZ2VtYXAgcmVnaXN0ZXJlZCB3aXRo IGRldm1fbWVtcmVtYXBfcGFnZXMoKTsKKyAqICAgICAgICAgbXVzdCBiZSBsYXN0IOKAlCBjb250 YWlucyBhIGZsZXhpYmxlLWFycmF5IG1lbWJlciAocmFuZ2VzW10pCisgKgorICogQWxsb2NhdGVk IHdpdGggZGV2bV9remFsbG9jKCkgaW4gYW1kZ3B1X3N2bV9taWdyYXRpb25faW5pdCgpIGFuZCBz dG9yZWQKKyAqIGFzIGFkZXYtPmFwYWdlbWFwLiAgTGlmZXRpbWUgaXMgdGllZCB0byB0aGUgZGV2 aWNlIHZpYSBkZXZyZXMuCisgKi8KK3N0cnVjdCBhbWRncHVfcGFnZW1hcCB7CisJc3RydWN0IGRy bV9wYWdlbWFwIGRwYWdlbWFwOworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2OworCXJlc291 cmNlX3NpemVfdCBocGFfYmFzZTsKKwlib29sIGluaXRpYWxpemVkOworCXN0cnVjdCBkZXZfcGFn ZW1hcCBwZ21hcDsJLyogbXVzdCBiZSBsYXN0IOKAlCBmbGV4LWFycmF5ICovCit9OworCisjaWYg SVNfRU5BQkxFRChDT05GSUdfRFJNX0FNREdQVV9TVk0pCitpbnQgYW1kZ3B1X3N2bV9taWdyYXRp b25faW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CisjZWxzZQorc3RhdGljIGlubGlu ZQoraW50IGFtZGdwdV9zdm1fbWlncmF0aW9uX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpCit7CisJcmV0dXJuIDA7Cit9CisjZW5kaWYKKworLyoqCisgKiBhbWRncHVfc3ZtX2RybV9w YWdlbWFwX29wcyAtIGRybV9wYWdlbWFwX29wcyBmb3IgQU1ER1BVIFZSQU0gbWlncmF0aW9uCisg KgorICogUHJvdmlkZXM6CisgKiAgIC5kZXZpY2VfbWFwICAtIENvbnZlcnQgWk9ORV9ERVZJQ0Ug cGFnZSB0byBWUkFNIGFkZHJlc3MKKyAqICAgLnBvcHVsYXRlX21tIC0gQWxsb2NhdGUgVlJBTSBC TyBhbmQgbWlncmF0ZSBwYWdlcyBmcm9tIHN5c3RlbSBtZW1vcnkKKyAqLworZXh0ZXJuIGNvbnN0 IHN0cnVjdCBkcm1fcGFnZW1hcF9vcHMgYW1kZ3B1X3N2bV9kcm1fcGFnZW1hcF9vcHM7CisKKyNl bmRpZiAvKiBfX0FNREdQVV9NSUdSQVRFX0hfXyAqLwotLSAKMi4zNC4xCgo=