From nobody Fri Jul 24 21:29:28 2026 Received: from SA9PR02CU001.outbound.protection.outlook.com (mail-southcentralusazon11013013.outbound.protection.outlook.com [40.93.196.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D4CDF423778 for ; Fri, 24 Jul 2026 10:20:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.196.13 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784888442; cv=fail; b=TzjEJ0p84F5MaaOWmzU0y4t0mZ+RIYe3RFxcMHzCvpGO6Set14K67kslU9WGr0XB46LnMQUh2neOHu4oHEqMw2w5ywsYMPUdsfbSg0kw7FZMjbA874K0BDds9UV+MwMCHwZTfMsHQUpLHJGZ8hwSkSXTX8d6nFHTWe8aWZly5io= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784888442; c=relaxed/simple; bh=j9mAKDmwV1A5MiqFB1DHT3pYfFItxZNe46MOf4x4ASs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=cDgcFyM9Sjm3R+SWIo6d5tpfOL0omCi/y+rNw39P62PkT1uvNTZtayAqlPvsKYpKDwM6JLvDFPwrmJiXm4cNO6jFfxKUHh9QE99yn2tKSP/sdCWdiWLCcp+pAE/tW+kOFHvc2uUKJVn9zCk2sECMdFW3Oq4PcNts+FOg3aDiUHM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=oGZIai8e; arc=fail smtp.client-ip=40.93.196.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="oGZIai8e" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FgexLmqzOQv6VNF+RMYEFYQj3YA2YrGbOi6KSy61+xqAhgfo3+uzmp+V1ApMl9VD3uJ5RV1vNhYxPn+SS0GCo6f+U3JInw4ukCue801rbQwjTzYnwhPERLpDltL5ahnxOnuD4WP/MF4a0L/wDNHfBpjLnbNUzOyCIDVUFRZCooio04IiwK9QadEkPxtTbhB0XEV8jLWlhXiFX9ZheJ44vWZR2jPnNo8WCw7rN9pwZfjsMVNxp8usK5nAqcd6ZqgvM5ZpP2RYmL6JUAsOuZEWHuokH+5dVdR5Tv1c+XG0WtNnmW5vJaPhvdW+gxfZH/BSSxdV9nccNg3bWmpKKakHFA== 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=0pMyIKtaYztxDrH/xg88SmryBUsGU8Bdo9poK4THcbA=; b=F2VZgt+7tCRtwIJTdMuDWQyWSXQJeCAUnVzac/tsdlUQWUcTVrQseGQtLNqnxnRO8w1HO9eo37Xb3aXeuciZIWcIze4SBKOhezUaiTOyc/OFEeQlxykpcRSSykWTfg4E6k9KtQTd1ctumcL1tCvv+zvv2LIFn18qbV1OzXi90kLz98Ivk3qyEfS4QHwJUY9PAlcN4njBEiocuvYA0L05W8MaVegPygLZrohAPVB9ZumUZKRpiR7kHSJKGTrHn3gKkSnwV9+lKzj9Y8zi+pZuCIckMnO1qumiUYTZUhfw6vWVVZTi2TIA6e9AGKoUKPvB9Z8Sjt3HdeqE15x7x4I+jQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.infradead.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=0pMyIKtaYztxDrH/xg88SmryBUsGU8Bdo9poK4THcbA=; b=oGZIai8eAm1xhdyYEIR+pjeonoxhf/+z1yK0BLMnahbTr3l6PK3NcoBPXQNimQ8xfBnml+qCzHnLeqRehs1D+qUvS4ZrntdDWNh4aU1wJP5o/0huMn7gXwPuejXXsSkyONbKCQqwLJLrr7jbU/Rq7gFODej0k7TTDDHwhrKsA1c= Received: from SJ2P220CA0004.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5da::11) by SA3PR12MB7976.namprd12.prod.outlook.com (2603:10b6:806:312::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.11; Fri, 24 Jul 2026 10:20:33 +0000 Received: from SJ1PEPF00001CE1.namprd05.prod.outlook.com (2603:10b6:a03:5da:cafe::1c) by SJ2P220CA0004.outlook.office365.com (2603:10b6:a03:5da::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.245.11 via Frontend Transport; Fri, 24 Jul 2026 10:20:33 +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=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by SJ1PEPF00001CE1.mail.protection.outlook.com (10.167.242.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.5 via Frontend Transport; Fri, 24 Jul 2026 10:20:32 +0000 Received: from xsjarunbala50.xilinx.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.41; Fri, 24 Jul 2026 05:20:32 -0500 From: Jay Buddhabhatti To: CC: , , , , Jay Buddhabhatti Subject: [PATCH v3 1/3] firmware: xilinx: Add support to clear TF-A PM state Date: Fri, 24 Jul 2026 03:19:46 -0700 Message-ID: <20260724101948.2895263-2-jay.buddhabhatti@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260724101948.2895263-1-jay.buddhabhatti@amd.com> References: <20260724095301.2890001-1-jay.buddhabhatti@amd.com> <20260724101948.2895263-1-jay.buddhabhatti@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE1:EE_|SA3PR12MB7976:EE_ X-MS-Office365-Filtering-Correlation-Id: d1185be3-0566-49ae-1baf-08dee96d31cb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|23010399003|36860700016|376014|6133799003|5023799004|56012099006|4143699003|11063799006|10067099003|18002099003|22082099003|3023799007; X-Microsoft-Antispam-Message-Info: sjMKTm6vFOva4zEY48xrZ9dXDORZXrIZO76ZhZtNIFv0mHgM+sYnH0RKcLa1zsFYEAoLXb6Y5FzR79tkTnNIQ1lQ+mHfLISw+u2Jj70YkL2/G9GRLtKlqf03vSiZDx0db0Xqkmm4U0ICQ+Bw68lZz/glT8HFyoEchhMT438bjQrB8Y6+/fXCHGHACbGJ1Ol7YqLN/tZVPHtbnkei2YTCYoHxrqzJHkTH90PhHQTsdnuHsfzvEuGmv+7DLzt8/QnMHbQzkK/Zatgv3iGoeR7gBj/qi8VSCZucwMET3RRPTnAyC0UCHEA4rWFVpjVDbvkRWFwiOCsEIXTyx3lM36FJFF5KA6CRdrZEzDH8qdF+faSn/yqyieUlY0noppS1dgoztBjv/c8gAj9uwn9ywzUutXOVZKekFrH8D9/daw75T4x0UioY4mT+W2/EBQ+j4dorhXAiqS/IpBoW3QIz/9Oinb0/SvBiVPlRR9grWmJK2kbxUEKj42YbZFqUeE2ToeUN+n4wr1HWTy2zl8qq19TozXEUENUuAmOf94xOCyAcfcv2MWAgiOnmeymDoS30lDMZNz9RmPZ+wj3FgWKwLvL+sJEm6EzdcVqRjofETBVDEZkFJAulbS8PnWolppD4fmOyeA6xDLNtZHtmMYuPfWdY+MKQ9Tq+A3Q9/3tldsDWiWCS7DcO1sGJ99uJmDjepKyYKBafiKtNqNGX40aTmoMj0Q== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(23010399003)(36860700016)(376014)(6133799003)(5023799004)(56012099006)(4143699003)(11063799006)(10067099003)(18002099003)(22082099003)(3023799007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: oy4VBcvE/BFXguNhHhMATNkCexF76QCa2gyInuvuFq2XkM6irJGfUV2wNP9KsxsNCdzyvv6cG9iMyl/Mqmw8FJIQsDUytwF+pAhFypRrgrbbempiNwUkVL7RxGoULilCnl10XfDIMSJx1g2uwa6h/FoTU2Ni6o65SvRbb9L9jJbVjXH/XXQoa/1a/AUgE8Jb+99Cuh+D0/F+0MfxkflmhzkWHFFe/P0yt/WIFzTeKPxzlYYGxn4dpJzzfFxsKzJsQ62jodxjE2QHzJ+H8dN4Ivs7Y+56e99oRZecrUqzFZ6QzYj8PtM5UQQd0bewfH+qE+ixMy9rg4gRV2TDrOOQ9n8mCZ5bzc5Lx9tBXPje8S1cimpoZdAIrR1XBvbACk63ZsVFxnx1y1u0mi7DaEpoi4siJ07J9ChbH/eEFIhRTRjWk2cMjHgfX7bPYW/pUJJ/ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2026 10:20:32.8205 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d1185be3-0566-49ae-1baf-08dee96d31cb 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=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF00001CE1.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7976 Content-Type: text/plain; charset="utf-8" Currently, during a kexec restart, only the kernel is reloaded, while the TF-A specific data remain unchanged. This leads to a mismatch between the kernel state and the TF-A firmware state like SGI number and shutdown scope variable. For example, the kernel registers an SGI number with TF-A so that TF-A can notify the kernel of events via that SGI. TF-A stores this SGI number in its internal state. After a kexec, the newly loaded kernel re-registers and may request a different SGI number, but the stale value programmed in TF-A remains, so event notifications are delivered on the old SGI and are missed by the new kernel. The shutdown scope variable has a similar stale state problem. To resolve this, the TF_A_CLEAR_PM_STATE PM API is introduced to clear TF-A-specific state during kexec. On a graceful reboot, this API is triggered by zynqmp_firmware_shutdown(), while in a crash kernel scenario, it is invoked by zynqmp_firmware_probe() in the reloaded kernel. Signed-off-by: Jay Buddhabhatti Reviewed-by: Radhey Shyam Pandey Reviewed-by: Prasanna Kumar T S M --- drivers/firmware/xilinx/zynqmp.c | 48 +++++++++++++++++++++++++++- include/linux/firmware/xlnx-zynqmp.h | 3 +- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/drivers/firmware/xilinx/zynqmp.c b/drivers/firmware/xilinx/zyn= qmp.c index af838b2dc327..95ffd8f33ce9 100644 --- a/drivers/firmware/xilinx/zynqmp.c +++ b/drivers/firmware/xilinx/zynqmp.c @@ -3,7 +3,7 @@ * Xilinx Zynq MPSoC Firmware layer * * Copyright (C) 2014-2022 Xilinx, Inc. - * Copyright (C) 2022 - 2025 Advanced Micro Devices, Inc. + * Copyright (C) 2022 - 2026 Advanced Micro Devices, Inc. * * Michal Simek * Davorin Mista @@ -13,6 +13,7 @@ =20 #include #include +#include #include #include #include @@ -2065,6 +2066,42 @@ static struct attribute *zynqmp_firmware_attrs[] =3D= { =20 ATTRIBUTE_GROUPS(zynqmp_firmware); =20 +/** + * zynqmp_clear_pm_state() - Clear subsystem state + * @dev: Device pointer used for logging + * + * Clears PM specific data in TF-A. + * + * Return: Returns status, either success or error + */ +static int zynqmp_clear_pm_state(struct device *dev) +{ + u32 pm_family_code; + int ret; + + /* Get the Family code of platform */ + ret =3D zynqmp_pm_get_family_info(&pm_family_code); + if (ret < 0) + return ret; + + if (pm_family_code !=3D PM_ZYNQMP_FAMILY_CODE) { + /* Check if the TF-A supports the TF_A_CLEAR_PM_STATE */ + ret =3D do_feature_check_call(TF_A_CLEAR_PM_STATE); + if (ret >=3D 0 && ((ret & FIRMWARE_VERSION_MASK) >=3D PM_API_VERSION_1))= { + /* Clear PM specific data in TF-A */ + ret =3D zynqmp_pm_invoke_fn(TF_A_CLEAR_PM_STATE, NULL, 0); + if (ret) + dev_err(dev, + "Failed to clear TF-A specific subsystem state: %d\n", ret); + } else { + dev_warn(dev, "TF_A_CLEAR_PM_STATE is not supported in TF-A: %d\n", ret= ); + ret =3D 0; + } + } + + return ret; +} + static int zynqmp_firmware_probe(struct platform_device *pdev) { struct device *dev =3D &pdev->dev; @@ -2118,6 +2155,9 @@ static int zynqmp_firmware_probe(struct platform_devi= ce *pdev) if (ret < 0) return ret; =20 + if (is_kdump_kernel()) + zynqmp_clear_pm_state(dev); + /* Check trustzone version number */ ret =3D zynqmp_pm_get_trustzone_version(&pm_tz_version); if (ret) @@ -2151,6 +2191,11 @@ static int zynqmp_firmware_probe(struct platform_dev= ice *pdev) return of_platform_populate(dev->of_node, NULL, NULL, dev); } =20 +static void zynqmp_firmware_shutdown(struct platform_device *pdev) +{ + zynqmp_clear_pm_state(&pdev->dev); +} + static void zynqmp_firmware_remove(struct platform_device *pdev) { struct pm_api_feature_data *feature_data; @@ -2210,5 +2255,6 @@ static struct platform_driver zynqmp_firmware_driver = =3D { }, .probe =3D zynqmp_firmware_probe, .remove =3D zynqmp_firmware_remove, + .shutdown =3D zynqmp_firmware_shutdown, }; module_platform_driver(zynqmp_firmware_driver); diff --git a/include/linux/firmware/xlnx-zynqmp.h b/include/linux/firmware/= xlnx-zynqmp.h index 7e27b0f7bf7e..baaa88b0b197 100644 --- a/include/linux/firmware/xlnx-zynqmp.h +++ b/include/linux/firmware/xlnx-zynqmp.h @@ -3,7 +3,7 @@ * Xilinx Zynq MPSoC Firmware layer * * Copyright (C) 2014-2021 Xilinx - * Copyright (C) 2022 - 2025 Advanced Micro Devices, Inc. + * Copyright (C) 2022 - 2026 Advanced Micro Devices, Inc. * * Michal Simek * Davorin Mista @@ -66,6 +66,7 @@ #define FIRMWARE_VERSION_MASK 0xFFFFU =20 /* ATF only commands */ +#define TF_A_CLEAR_PM_STATE 0xa05 #define TF_A_PM_REGISTER_SGI 0xa04 #define PM_GET_TRUSTZONE_VERSION 0xa03 #define PM_SET_SUSPEND_MODE 0xa02 --=20 2.34.1 From nobody Fri Jul 24 21:29:28 2026 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012057.outbound.protection.outlook.com [52.101.48.57]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B2A94421228 for ; Fri, 24 Jul 2026 10:20:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.48.57 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784888441; cv=fail; b=B2DNLPHK3tn3zyBCoUZescn1zoMDva/UHD2fT2XkJNXvcrMQzLuwztrX7ywqlEZHZZynvJOwwd7L/xW0YYkuHwo8CruIiZGIaVKRSUugaX4p5CMuD09Fpn2v/PWnpC2J2OjIdsXiAGsL0wpa9lnu6MflWg4czlz86K+eCsUioKg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784888441; c=relaxed/simple; bh=u5H01kU/3DJj+r34XR7eYbbhAn5yHPdEkt+buJtPWSM=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=EHow4ygicnsolJ4ltAzlo4s4Yot3BiGmQcnw5fZkR2qxLdSYBITjR1OMe0cdhoVGlFi4JTZf3bj7VmQWAhtkgLoJv6i5MzJ7y9M9YaH6fXf9sfKl/uiFTFQfeJ16XTAAjixDuD6oeZqD9eCEtbosweuDz+TqdFbqCJwQyNVKuqE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=1R1Yq3EH; arc=fail smtp.client-ip=52.101.48.57 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="1R1Yq3EH" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yf4X6jUAnxTdADgphwjrLDnl7pJeE5mcXvG4/BW80erkXRqtWnaIj9kO/rnffc+lW8D00hzuwEJ6umBjIEB04dLzLctuwAD55VKsQPc6pisAE0D95XORpV9MFFJf6n9bUTyrrhZLXFlZdeiRTnA3t2a1KmiDeSmM5niLaWPo4QSOYfT3gEWwtnXpTrtzJShILTHb2pYdi1zD3RL2/0WiPKBJ6xOtMAZ0jvDGOONiUrSPHMJO9Uey6FfVOmC0QjzFYAs2wr8D5WB59r+xyztsXstvEx+Uid3Oa/Zk2brIXrJRKDXq0g7ZYRAqwH0+x70xj3V0MGiK68+u4nSWar7VSg== 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=CRG1cSoNz5OrrL7e+Y3IqIMLL35Mv+s1/BZNp2lTdno=; b=oCNqOH7TIkXVWibBpzZnVO5VsB8a89O4GGQaMaalJ6WS/e3obVvKE9K2x9W8Ktpuib3iy3HCayVuAl/OiQm6rlC7wA/tJP/W98CXnX/HHHXToXUEETRENQfeB4rjc4xmkD7VdwG+StnaJGlAdSPLC4M57LDGhjegN7P7GDzKUXQv4J26st10IG0ZnyeKMiOWs3CfybGGq8kwgLxgmANthMBXP2Wgtj8Lp1ffvmkEVYEKWfJdmSZF9n1e0UADlcNdCKbDI087HHJi/n4MIFWRafaA9jOz9TaXQouehbtG1TCVYs1a1AJSKMXl7/oo06LXGmgJ0OJPH7wHamIQlzue3w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.infradead.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=CRG1cSoNz5OrrL7e+Y3IqIMLL35Mv+s1/BZNp2lTdno=; b=1R1Yq3EHmHLKeqPRTkUOWSVal5OIkrsqYEgkl+anXS/i50HjfM39Hzor5CMFtGa3zYwqr+ukp191OyrHoCqIJRDfiA0MK5d7sgrL8/WFSA/1MLGr5hAzQ2hfqbiYvGeZbTTd/mcpSA/4VOOdN4k4gUy78PeGtLiydE4zr6ffAho= Received: from SJ2P220CA0006.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5da::19) by DM6PR12MB4185.namprd12.prod.outlook.com (2603:10b6:5:216::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.11; Fri, 24 Jul 2026 10:20:36 +0000 Received: from SJ1PEPF00001CE1.namprd05.prod.outlook.com (2603:10b6:a03:5da:cafe::3e) by SJ2P220CA0006.outlook.office365.com (2603:10b6:a03:5da::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.245.11 via Frontend Transport; Fri, 24 Jul 2026 10:20:36 +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=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by SJ1PEPF00001CE1.mail.protection.outlook.com (10.167.242.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.5 via Frontend Transport; Fri, 24 Jul 2026 10:20:36 +0000 Received: from xsjarunbala50.xilinx.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.41; Fri, 24 Jul 2026 05:20:35 -0500 From: Jay Buddhabhatti To: CC: , , , , Jay Buddhabhatti Subject: [PATCH v3 2/3] firmware: xilinx: Release all peripheral devices from firmware Date: Fri, 24 Jul 2026 03:19:47 -0700 Message-ID: <20260724101948.2895263-3-jay.buddhabhatti@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260724101948.2895263-1-jay.buddhabhatti@amd.com> References: <20260724095301.2890001-1-jay.buddhabhatti@amd.com> <20260724101948.2895263-1-jay.buddhabhatti@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE1:EE_|DM6PR12MB4185:EE_ X-MS-Office365-Filtering-Correlation-Id: 00726e81-30bd-4a07-03ba-08dee96d33ba X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|23010399003|36860700016|1800799024|22082099003|18002099003|11063799006|56012099006|4143699003|10067099003; X-Microsoft-Antispam-Message-Info: dR8YrUxMk09s1r8hFemAXCFfQ+ikcsJg9R4tKq77moZDTRE80rYSWLSt+Ndr1p62kCcQFQqNXS0sK59dw7GtzPhk1QRKco2v/cLBAmVYNKWRhzRaUzkQ1yuZ+HgMEqfDNR9git2dgojHPWZEaXsKb937oaWYI0OMWuiHKoh2hiQa+6Gir+YVfoPP+F5U9npEbWZgZvJPPj4O2SsulDNsmDBgBrozDrxubwmFXdAfIglVyr8HihAcCMOk/HYjyTHF7UsyDg/lPC1gO/Ni1/bLcu6vfpBYZtdNIV9elIZv+1fjcgqJfs8/CeLS0AhVMVVRL8UQk0OHIr3v2qtKr1ZiW9ha+YmmJw8/ZLh3nUjgkiZkX9AxXFB2Uru1CnB9eXgYKX1y3LjGC6iVMb/HsPusZWa6YvLQ5SBHooRsLgwqLPbz8Aw0Qx+vOAygOccgNzelSZFJPDS4YIJHHy8tgqJPIT93d3ulFjvizYIH9LuDa/vS7Ro1KFuWkrV6J4/BBLHL0kkwIxN/wtoHLi+NRQR/YRy4PU7DQdethcmJc17MrkCy2EqVy1RgxHpDPHZd1nZNdGLpZhWrI3mFfZhIgEbnAI9Bc5nJ0nHqbwLb9OR5i1jVySsy1jwHcEY9oAEGoCg2PZuhLBasaxyZzUNjOf0PCOH7AuyGyHbKL1fvWJm4Vf6dYww5roVlLY4mHpvcUV09dc6gW2LmZ9Ks0ps9vGnN1g== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(82310400026)(23010399003)(36860700016)(1800799024)(22082099003)(18002099003)(11063799006)(56012099006)(4143699003)(10067099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rAWpuKJIDM+9uphXSkRVpF7HSFMuT0L/cGbiG5s3jA3T5M0bq8QKlljOsHUzs/QUFutHgj+CL9/CozVZCCeDIDTWTvTAN+C+SrT3vsQ8JDzbgaT0T0EEtAKVA99FYIN1zWiTVCjYl2C9ouMOFdofsinTPC6BOCN+owQN9EBr4Q36Z+4Z8sCuDP0E9hVZppjgZWiJw2RgcbFgSWd9Y9sEaqinK63tk6baNdCJUlsmI/0b2JbhOiJdjIxi/7dDQbLm7JW4nFqUAEJQx69/cmwCBntlXKYxIpc+Ei9qF3Iksk1dLMvv1+tHR/tZVMni58aRVhlcEu9cY48foLVPe7nUMkc5PqIzrV+OWKiS/gF/fAl1OPc1UHc0MR3oCKiso9nJ2VNjfuqBgVH94MQuaSYAOXzjaljb4LqQqcQiXkOc0lOxDSNoEK/SYPwCHNoPCGv8 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2026 10:20:36.0640 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 00726e81-30bd-4a07-03ba-08dee96d33ba 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=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF00001CE1.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4185 Content-Type: text/plain; charset="utf-8" During a kexec restart, only the kernel is reloaded while devices allocated in firmware persist, causing state mismatches between the kernel and firmware. Introduce PM_DEV_ALL_PERIPH node ID (0x18224FFFU) to release all peripheral devices during kexec. On graceful restarts, this happens in zynqmp_firmware_shutdown(). On crash kernel restarts, it happens in zynqmp_firmware_probe() of the reloaded kernel. Releasing all peripherals depends on firmware support for the PM_DEV_ALL_PERIPH node ID. On firmware that does not implement it (the feature check reports a version below PM_API_VERSION_3) the release is skipped and a warning such as "Bulk device release is not supported by firmware" is logged, e.g. on Versal NET firmware that predates this API. Signed-off-by: Jay Buddhabhatti Reviewed-by: Radhey Shyam Pandey Reviewed-by: Prasanna Kumar T S M --- drivers/firmware/xilinx/zynqmp.c | 15 ++++++++++++++- include/linux/firmware/xlnx-zynqmp.h | 4 ++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/xilinx/zynqmp.c b/drivers/firmware/xilinx/zyn= qmp.c index 95ffd8f33ce9..64d2109eefd2 100644 --- a/drivers/firmware/xilinx/zynqmp.c +++ b/drivers/firmware/xilinx/zynqmp.c @@ -2070,7 +2070,7 @@ ATTRIBUTE_GROUPS(zynqmp_firmware); * zynqmp_clear_pm_state() - Clear subsystem state * @dev: Device pointer used for logging * - * Clears PM specific data in TF-A. + * Clears PM specific data in TF-A and firmware. * * Return: Returns status, either success or error */ @@ -2097,6 +2097,19 @@ static int zynqmp_clear_pm_state(struct device *dev) dev_warn(dev, "TF_A_CLEAR_PM_STATE is not supported in TF-A: %d\n", ret= ); ret =3D 0; } + + /* Check if the firmware supports the PM_DEV_ALL_PERIPH node ID */ + ret =3D do_feature_check_call(PM_RELEASE_NODE); + if (ret >=3D 0 && ((ret & FIRMWARE_VERSION_MASK) >=3D PM_API_VERSION_3))= { + /* Attempt to release all peripheral devices via firmware */ + ret =3D zynqmp_pm_release_node(PM_DEV_ALL_PERIPH); + if (ret) + dev_err(dev, "Failed to release all peripheral devices: %d\n", ret); + } else { + dev_warn(dev, + "Bulk device release is not supported by firmware: %d\n", ret); + ret =3D 0; + } } =20 return ret; diff --git a/include/linux/firmware/xlnx-zynqmp.h b/include/linux/firmware/= xlnx-zynqmp.h index baaa88b0b197..ac39e5492961 100644 --- a/include/linux/firmware/xlnx-zynqmp.h +++ b/include/linux/firmware/xlnx-zynqmp.h @@ -50,6 +50,7 @@ /* PM API versions */ #define PM_API_VERSION_1 1 #define PM_API_VERSION_2 2 +#define PM_API_VERSION_3 3 =20 #define PM_PINCTRL_PARAM_SET_VERSION 2 =20 @@ -145,6 +146,9 @@ #define XPM_EVENT_ERROR_MASK_NOC_NCR BIT(13) #define XPM_EVENT_ERROR_MASK_NOC_CR BIT(12) =20 +/* Node ID for all peripheral devices */ +#define PM_DEV_ALL_PERIPH 0x18224FFFU + enum pm_module_id { PM_MODULE_ID =3D 0x0, XPM_MODULE_ID =3D 0x2, --=20 2.34.1 From nobody Fri Jul 24 21:29:28 2026 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazon11011034.outbound.protection.outlook.com [52.101.62.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5B0D3425891 for ; Fri, 24 Jul 2026 10:20:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.62.34 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784888447; cv=fail; b=Nc1QT7rSOyamF4C/XYwgrRP7JoxDGICdC6kbnUClk6Ruhrpvx3gR6Z6TWXBgOBKIE4HaBXvnp7FTS/1duh5SG79W/t5pMg5nF3x2JE2zX4Edfp9VJvjjFLdjjfjeLQKGMHuv7CUZAKDKLvPuhGLpStVtA58Xp9H9dsJP7iAsOYE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784888447; c=relaxed/simple; bh=WPf2fkYBviiNSDcbbV30355Gn80bi3jafyumbXFlulQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=WwznKB3FWfiiUtWAgI6bgUzg7+8G6Y7umWXYYhp6Z39Iz16xVQbJOtP5wLtmQvHr9BJ0E6gu553zFhvJrWgSi4KUKo209EZpV5NgVdHE0KAXrht3WjZG//Qx3jAU1i5mMF4QVXwF4S2oz0SPyrHaWWhXgY9ZldTpqwn3Sg2//lU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=oGFKMZ3T; arc=fail smtp.client-ip=52.101.62.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="oGFKMZ3T" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PLKZC+hdrUDO+gPQT2eczoWUa+QEWB0Zoe8Jett+J2t5tHR1UyinGRDUVqaYgx6VeA0afZx7/1/sv84Ugjh8r1rYTT+zD1J87A8ZGBRqe04YImukye2Dxk7atlorzR7ZfEDbL2xG+1UZAoVw755+beLTIe6y2gJwImG7Yj84SHAvczuy2ChaV2FtGrL7SOZo+y963YQ/7c+nBRSZz6WTc3DlZHE/pcczI7n2CUzCOY+MqJkc6BZS8pZUzng6IKOFh1yN0QDKVlqiIR+QAUybAIVtGBi8M4SOaao1Rs2ItmsWlWFpD0HubSRfAifS/HLGccJig43lvPMgXTkQmdjZew== 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=F+hZB7ghV8Rxj0OljYmZuu5Y59IzZc0Ear6XA2q5p3E=; b=kieHueEcHWZb8Hm39PU96VNLmubBm7pWsGtDfy6l33+IocGguQ6vy3KJgeUv3zSJ+oyRxwqCUWS2LnoVGhg8Ymp2Si7jIUQXNuTCTPhRD7Hzg15jUdSLT4tnLgj1ouwqquHU9i6ednKR6/OfKvjKXNg+ltfeaoTqmc5hqde+5lL0XyR5kkgOHRGd8Xw+M+JmziFQEZ/xIKh7LDbM7KMvt45WD6qL78+b0g8UxI0aI7hs8pEDsMfxBgrHeAXAhHL5a+fp5YLkH3NewR+9tkymJsDCkJKY4+9Znxg/3rGYFIXr7+wTKxVAmbS5Gdxz2P0vqaXliol4eB8eKs4kNj7BQQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.infradead.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=F+hZB7ghV8Rxj0OljYmZuu5Y59IzZc0Ear6XA2q5p3E=; b=oGFKMZ3TvlQOy71uopB+n4QkE+uybdAKMSjuq6F/IIaUbRDx+3UR76A2WpG0lGNpaHKDUK1zO3jSHpS5EKdXsAycz4XhRUtsbl5mzZWp9tqIL0AfxUo3fu64focU4wJFzdADgkMOiR4xnoa4G+7UPX0blzJIz4LvHrdmDhc+7ZQ= Received: from SJ2P220CA0002.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5da::10) by SA3PR12MB8024.namprd12.prod.outlook.com (2603:10b6:806:312::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Fri, 24 Jul 2026 10:20:39 +0000 Received: from SJ1PEPF00001CE1.namprd05.prod.outlook.com (2603:10b6:a03:5da:cafe::1d) by SJ2P220CA0002.outlook.office365.com (2603:10b6:a03:5da::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.245.12 via Frontend Transport; Fri, 24 Jul 2026 10:20:38 +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=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by SJ1PEPF00001CE1.mail.protection.outlook.com (10.167.242.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.5 via Frontend Transport; Fri, 24 Jul 2026 10:20:38 +0000 Received: from xsjarunbala50.xilinx.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.41; Fri, 24 Jul 2026 05:20:37 -0500 From: Jay Buddhabhatti To: CC: , , , , Jay Buddhabhatti Subject: [PATCH v3 3/3] firmware: xilinx: Clear firmware notifiers across kexec transitions Date: Fri, 24 Jul 2026 03:19:48 -0700 Message-ID: <20260724101948.2895263-4-jay.buddhabhatti@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260724101948.2895263-1-jay.buddhabhatti@amd.com> References: <20260724095301.2890001-1-jay.buddhabhatti@amd.com> <20260724101948.2895263-1-jay.buddhabhatti@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE1:EE_|SA3PR12MB8024:EE_ X-MS-Office365-Filtering-Correlation-Id: 1f03dd30-8dd3-4e2b-4dad-08dee96d3567 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|1800799024|36860700016|82310400026|376014|4143699003|11063799006|56012099006|10067099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: SQg4ehtPYqxAe3KTy5qreB51GPkDQzUFhnbVYAfs+r3w7AuM2VDPzVDTuDUmZrYpRT1nu55yudVXC+PlGUMJX3bHsxidbea7MQo79vcEwIW/c5afUaJWSSzA3g71vlzwX+cDzht0acS7AffcyG4JCaHS5SDlevY2YurJsjhxQKTsvr0kGjv0TFBizAWfafu0i8kfLSfeu7mFlWZZgIg54giNdACkq98hJWDyKd/D8QjS0h3YEzJMGR/4D5PEBqufXcqDr8Ihg76/b9YNuBPM+hpmgVJwWGpqPi9mqZu43tOLLVC6hB2Oqb6SaaPIh54Gvbtrm1bmpcZE7rHXf0a+5G49sA5mWy89n8dBHAoaq2usnq/qOKwee8WlCV2dA2rkHwSLpCyWfM/qrKco9fjKfCO7sTsr/npjRqb5AXqIU7HwHnbTxoBqqgQupA6NxLAOGMxZ+V6i2qBTFQHJpY1qqmaXsTMdvTJuyGJ6s/p0PvVz+gedmkIDHLtR4ecl/hNejw2x2oDLnEApPDmzIRmXd6LUWLxnV8z+F13NCtjeu3Wi3iAKJmO4dZcUcdSDX5LMjAjCphcpc8IHxxkEXrKNHOD+c9SaSKomKyvVQQqd1zuh/twJUaBlrZ2nSkCzZlixigaQvNkX/YhC4br/VaW+rm3Utczf3JhxG8Yli+sfc9JZ3KGXqUJoWW/KO+WHkXCN80ffntiPnGYw77jvtJMdPg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(36860700016)(82310400026)(376014)(4143699003)(11063799006)(56012099006)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: VQh9UuSs5YA5HIMkKUjUbEgLY558wL6u3Q24dShWD70Gq8eX4hlxk+gzY9YfV0jSDCdGwfgCngkYoB2sFW3TxWf5bH347OfFjIFpATGQNiOUJ3ZoRO1s7qhOh0LckUrCdCl6OJLHf1VHHU2cXKHsbY2+fOyrgZ5CX+8VS7HHYi2KAzCJozmhzV4bxrg0FZCNzwO1gkmMozR7P7QxQTR3m0gdDT2nWoXJD4QxW0pKeqRFevp1QOasojj+sbNFIVyThAbj1S1f76uTAi+RuO5TnZ84wMPTurGTUIW+rZxyRB1UOkDKPrQbibc5uE7AVrpEu4u+OVgTMce5zmXhxgq1jf3qnXRsCCr29qou3r0FOHjHr/yMPMNssnCUb9xGH7eVE4YbHOuYH9NVTr6Ce2qgANnxqb5LG6VjWeP9/H6wt5u63PB+SavMSnOAEEy2i3AO X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2026 10:20:38.8512 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1f03dd30-8dd3-4e2b-4dad-08dee96d3567 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=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF00001CE1.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB8024 Content-Type: text/plain; charset="utf-8" During a kexec restart, only the kernel is reloaded but notifier callbacks in firmware persist, causing state mismatches between kernel and firmware. To address this, introduce PM_ALL_NOTIFIERS node ID to unregister all notifier callbacks during kexec. On a graceful kexec restart, this occurs in zynqmp_firmware_shutdown(). On a crash kernel restart, it happens in zynqmp_firmware_probe() in the reloaded kernel. Unregistering all notifiers depends on firmware support for the PM_ALL_NOTIFIERS node ID. On firmware that does not implement it (the feature check reports a version below PM_API_VERSION_3) the step is skipped and a warning such as "Firmware doesn't support unregister all notifiers at once" is logged, e.g. on Versal NET firmware that predates this API. Signed-off-by: Jay Buddhabhatti Reviewed-by: Radhey Shyam Pandey Reviewed-by: Prasanna Kumar T S M --- drivers/firmware/xilinx/zynqmp.c | 14 ++++++++++++++ include/linux/firmware/xlnx-zynqmp.h | 3 +++ 2 files changed, 17 insertions(+) diff --git a/drivers/firmware/xilinx/zynqmp.c b/drivers/firmware/xilinx/zyn= qmp.c index 64d2109eefd2..fc7212f554ee 100644 --- a/drivers/firmware/xilinx/zynqmp.c +++ b/drivers/firmware/xilinx/zynqmp.c @@ -2110,6 +2110,20 @@ static int zynqmp_clear_pm_state(struct device *dev) "Bulk device release is not supported by firmware: %d\n", ret); ret =3D 0; } + + /* Check if the firmware supports the PM_ALL_NOTIFIERS node ID */ + ret =3D do_feature_check_call(PM_REGISTER_NOTIFIER); + if (ret >=3D 0 && ((ret & FIRMWARE_VERSION_MASK) >=3D PM_API_VERSION_3))= { + /* Attempt to unregister all notifier callbacks via firmware */ + ret =3D zynqmp_pm_register_notifier(PM_ALL_NOTIFIERS, 0, 0, 0); + if (ret) + dev_err(dev, "Failed to unregister all notifiers: %d\n", ret); + } else { + dev_warn(dev, + "Firmware doesn't support unregister all notifiers at once: %d\n", + ret); + ret =3D 0; + } } =20 return ret; diff --git a/include/linux/firmware/xlnx-zynqmp.h b/include/linux/firmware/= xlnx-zynqmp.h index ac39e5492961..69a2f74269f3 100644 --- a/include/linux/firmware/xlnx-zynqmp.h +++ b/include/linux/firmware/xlnx-zynqmp.h @@ -149,6 +149,9 @@ /* Node ID for all peripheral devices */ #define PM_DEV_ALL_PERIPH 0x18224FFFU =20 +/* Node ID for all notifier callbacks */ +#define PM_ALL_NOTIFIERS 0xFFFFFFFFU + enum pm_module_id { PM_MODULE_ID =3D 0x0, XPM_MODULE_ID =3D 0x2, --=20 2.34.1