From nobody Tue Oct 7 02:15:31 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2065.outbound.protection.outlook.com [40.107.223.65]) (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 107BF299AB3; Tue, 15 Jul 2025 18:04:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.65 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752602673; cv=fail; b=WgX9bW0PCxRhbzUqky74U2eJav5OYy51MF85XRgublRC2/eUJUij9qdwcyzAZyI+KJUEZhBHfdzcDzV8T9KbH3+4qL3/LNobg2NjnTgr8sg1sR6B9RKf+zIuOdM+2rlymXWBhfVo83Mo1gGloxGMQXA4tCoAN3ZtWVizImTYLq8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752602673; c=relaxed/simple; bh=tT1dXhB9yY2Z+P0RQNxzfnRgt8D/I7yDzhyXyJRfm4M=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=mieEUTK3Dn+rMHChGyVH1eUOOwaa/S4uegbFL+UPtXD5W4tv+UHCghvZRmmVgmzuCSnN9wEgd2hg9ZlJbaivhj0p9c9/IT1lxyBtTklJrx8RHYxFPZg1mJcRl4Kqt8fs5Ex6JpDb6ffR8LhO3gr3kL4rVVTE3H1CeNlRRi/fS3E= 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=hFnn2OFa; arc=fail smtp.client-ip=40.107.223.65 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="hFnn2OFa" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NDyL/idn5Lvik91KHosKuXT0091Y+rjgJfGNP6lvUnpSV/0UUTBuEw9uRFBBa/mwf0ZmjwE48BT5lLOaaRl2eqgPjpd4YeS74DK+ACIqQ4nxF76BBY8MCjPJvYzaqouyEkyB+pqPbpcNOjAi4b4BZAdrgwxCkqhIPRukOKNWqHarJerUCOlAIr+n/wVpRWK3YqSs/TlZ9hGI4sozOoJtWPlTyQGGeRJyLK5I6vIdQI8da9WUqX7beAgSsqkG7uVQ/FcRpngiwsaf6KyaNqKZGOzBoUcnhBs7eqtteEuCGrDK4mgxtOJs0oJz0SAjg42zx2fUlu69KHymCdORvtlEJA== 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=ZjDSqg6fSX2JA+g/uTYt7OPCuo06uidLe6//XkxdMuA=; b=jIg5Js52p49kMq9NnkiSB3Pz7lZzC4YdzOa6tSqFxINxvSx/JhstT0Gc6KmMI3jU+cWQ+YfQpBan0cVKRuHWOzo8QvvErKIVtQST3EB4Lq2ik9sMADBISzhDzgSyuISTrBK6oOD8kybTwwbsmvBaagnX0ds1vM5/sJfOGc7PcmYDmmdMHWtYobkephAf790MIwd7FKXmDd1d0PLISvDAsC1VRkMkjOvBJIIHD5prTWbUB+XUgrsAcGywThmVYrXuuBocVaXd0AksE2aumIaUqKC9FKQGWfegaeyiziVLFWKSTZwlx0NtPKc9c/ueni0zlEhGM+7KaqRO2DLI775+pA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.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=ZjDSqg6fSX2JA+g/uTYt7OPCuo06uidLe6//XkxdMuA=; b=hFnn2OFawGUDp86fYPoRfkFAHn3Oz16NbKUxyjxMQc9LcUNjakemK4/Y/hOX/SinzgRG50I3jh/tRc2G5KeW30yNKj/+tJ5J1dqKVl66ArdCGJAZ9a6sxmrU/1fHzzgGEIsBn6Rgqz1eIiyfMvRCufN/6oJ4g8ZH7JfB25zna8A= Received: from BY3PR04CA0026.namprd04.prod.outlook.com (2603:10b6:a03:217::31) by SA0PR12MB4384.namprd12.prod.outlook.com (2603:10b6:806:9f::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.35; Tue, 15 Jul 2025 18:04:28 +0000 Received: from SJ5PEPF000001D0.namprd05.prod.outlook.com (2603:10b6:a03:217:cafe::6d) by BY3PR04CA0026.outlook.office365.com (2603:10b6:a03:217::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8922.33 via Frontend Transport; Tue, 15 Jul 2025 18:04:28 +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=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ5PEPF000001D0.mail.protection.outlook.com (10.167.242.52) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8922.22 via Frontend Transport; Tue, 15 Jul 2025 18:04:27 +0000 Received: from ethanolx50f7host.amd.com (10.180.168.240) 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; Tue, 15 Jul 2025 13:04:25 -0500 From: Smita Koralahalli To: , , , , CC: Davidlohr Bueso , Jonathan Cameron , Dave Jiang , "Alison Schofield" , Vishal Verma , Ira Weiny , Dan Williams , Matthew Wilcox , Jan Kara , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Li Ming , Jeff Johnson , "Ying Huang" , Yao Xingtao , Peter Zijlstra , Greg KH , Nathan Fontenot , Smita Koralahalli , Terry Bowman , Robert Richter , Benjamin Cheatham , PradeepVineshReddy Kodamati , Zhijian Li Subject: [PATCH v5 1/7] cxl/acpi: Refactor cxl_acpi_probe() to always schedule fallback DAX registration Date: Tue, 15 Jul 2025 18:04:01 +0000 Message-ID: <20250715180407.47426-2-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250715180407.47426-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250715180407.47426-1-Smita.KoralahalliChannabasappa@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001D0:EE_|SA0PR12MB4384:EE_ X-MS-Office365-Filtering-Correlation-Id: efa62404-7dbe-4fd7-6554-08ddc3ca09e5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|7416014|82310400026|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?bQCWiBXDd7BrOWzDL8BRNyTuSv9w7T6T//ZCi5xWMgtoZFYX7aAp99DY60zz?= =?us-ascii?Q?aj5DH1JR00j5EqcG/KIY0kxygPByQbrULtFD+4T+lXeY+TNOBd0dx5zzblHo?= =?us-ascii?Q?12wJtSc0SFBAPyiFpG/t6FgMswyGTq8lvlS3nokX3j0o8QBSDy8gZHN9vMfK?= =?us-ascii?Q?owkUzESJ254GnUmB0fuh2FfqkasgSW/F1NSOqhiUlc5+/mKGnPgEWyYY4jzo?= =?us-ascii?Q?BBlFUmlVzvBUxtPws+FAATdKRd7dJOennn/2bPMrMorLwUwu9Bkoqp28ploY?= =?us-ascii?Q?LQ+bcZfQ1SDi1uKUS5uv9BVz94wnPWiSLR0mqncBhoGw+kVyiYyh0sZ7LAT7?= =?us-ascii?Q?0pNpmUzd0yqQPVQ26IWdKh8M45B5kVc3d2FW7ooyqc68UMOgJj/QpVjKSerX?= =?us-ascii?Q?cbfY3vCvwlDPfZpI3s9cY08HBn6M5h359TiK7hPL1sRnyTY001EFb1Rvw0Ug?= =?us-ascii?Q?BdCskUAL6mAiM7VPqnAIypBqKRoi/+Y2mtO1XWfekuJeNbB64gsf2G7IwQmr?= =?us-ascii?Q?npSTG1RmBCRkuI0gCzfgz77V31RoBsenOHWCDTUUFVxjWAXWGTqNe1gXP/lE?= =?us-ascii?Q?HrCyeEQimVSNnr0uTxXyVz5e/5D4KppTqjegiHeFaZjgOqjFp09R4TllxdCn?= =?us-ascii?Q?djQlds8fcXiDYdj+Dpp647zuYzEtoZd5fKDTn327wkcov50UPsaNQ6TKP/ak?= =?us-ascii?Q?wyVayW74kE50VDtT2/voSpLQynSESFZTbKS+/2xXMHGvNH49zqRAqSwEEaQU?= =?us-ascii?Q?sfP8DAHdLJD5+3jhcJG1AWRkoqJazzUOFUyII8bkC0rAidTeJ1cdJa1gx3cK?= =?us-ascii?Q?W+AITn8FUHxFBLXZ/EdbtECI7vbdeAeul5gKdrkH5/D9DJLuPJQa+DF8Vd8G?= =?us-ascii?Q?yFbZ8afA2/8IDe4BCA3+InuisMpL7CXS/clTFA6d6NxwOkcpNz0tLPDnn3+3?= =?us-ascii?Q?uCLbbUklI22Ge1Jl5fU+e49DoFpff3I1p9LD/aw1I96EtTOVaC65fsJWpQ+B?= =?us-ascii?Q?JzFsiIO63bLNYMBxykOAgdZSv/6ngm3PMi78BuAd9k7slMsEpw1eXHFpQut3?= =?us-ascii?Q?AjePIx7nCc9TMmx13XuAti74Y/vYgWqon8LiewKM+bjXp6dQgHPmf2C39726?= =?us-ascii?Q?W1tBFkKtgWwmkjHwL0LqPCfPJoK8a68Gd02b2cECjzDWTm3XQHRBzbQ6AyA8?= =?us-ascii?Q?UcRDTDuu0IrknarjIpal0PK34pqaTsZ5eVp9KSEbCEYu/YuiWJ1aV3w2DBBz?= =?us-ascii?Q?C9Ya9WJDiwoF4hw2zlUc8fs8o335f2cK6HDCIubPstmzBELeT0FCg/ULwgNU?= =?us-ascii?Q?1RQUOok/9ijDEjDwSijsaGmkHOOtxRIzg4o1xKhyPQFg7/RVFDojKkQXKWhB?= =?us-ascii?Q?c63Ds65C2TWZ0L95J+zpCCghA+DNJpEpF2/NT+TGTSRwzhtk31/UtHDMJZnm?= =?us-ascii?Q?yYTOocqayEuSQ0ljyrCzieyPf11WP5cHZ2HkGJ6YRgYBYbq5a6oSgkM5MdxA?= =?us-ascii?Q?49gKomSMNFbYBmje2o2pVeJt13VyAVZLRIQZ?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(7416014)(82310400026)(1800799024)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jul 2025 18:04:27.1869 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: efa62404-7dbe-4fd7-6554-08ddc3ca09e5 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF000001D0.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4384 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Refactor cxl_acpi_probe() to use a single exit path so that the fallback DAX registration can be scheduled regardless of probe success or failure. With CONFIG_CXL_ACPI enabled, future patches will bypass DAX device registration via the HMAT and hmem drivers. To avoid missing DAX registration for SOFT RESERVED regions, the fallback path must be triggered regardless of probe outcome. No functional changes. Signed-off-by: Smita Koralahalli --- drivers/cxl/acpi.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/drivers/cxl/acpi.c b/drivers/cxl/acpi.c index a1a99ec3f12c..ca06d5acdf8f 100644 --- a/drivers/cxl/acpi.c +++ b/drivers/cxl/acpi.c @@ -825,7 +825,7 @@ static int pair_cxl_resource(struct device *dev, void *= data) =20 static int cxl_acpi_probe(struct platform_device *pdev) { - int rc; + int rc =3D 0; struct resource *cxl_res; struct cxl_root *cxl_root; struct cxl_port *root_port; @@ -837,7 +837,7 @@ static int cxl_acpi_probe(struct platform_device *pdev) rc =3D devm_add_action_or_reset(&pdev->dev, cxl_acpi_lock_reset_class, &pdev->dev); if (rc) - return rc; + goto out; =20 cxl_res =3D devm_kzalloc(host, sizeof(*cxl_res), GFP_KERNEL); if (!cxl_res) @@ -848,18 +848,20 @@ static int cxl_acpi_probe(struct platform_device *pde= v) cxl_res->flags =3D IORESOURCE_MEM; =20 cxl_root =3D devm_cxl_add_root(host, &acpi_root_ops); - if (IS_ERR(cxl_root)) - return PTR_ERR(cxl_root); + if (IS_ERR(cxl_root)) { + rc =3D PTR_ERR(cxl_root); + goto out; + } root_port =3D &cxl_root->port; =20 rc =3D bus_for_each_dev(adev->dev.bus, NULL, root_port, add_host_bridge_dport); if (rc < 0) - return rc; + goto out; =20 rc =3D devm_add_action_or_reset(host, remove_cxl_resources, cxl_res); if (rc) - return rc; + goto out; =20 ctx =3D (struct cxl_cfmws_context) { .dev =3D host, @@ -867,12 +869,14 @@ static int cxl_acpi_probe(struct platform_device *pde= v) .cxl_res =3D cxl_res, }; rc =3D acpi_table_parse_cedt(ACPI_CEDT_TYPE_CFMWS, cxl_parse_cfmws, &ctx); - if (rc < 0) - return -ENXIO; + if (rc < 0) { + rc =3D -ENXIO; + goto out; + } =20 rc =3D add_cxl_resources(cxl_res); if (rc) - return rc; + goto out; =20 /* * Populate the root decoders with their related iomem resource, @@ -887,17 +891,19 @@ static int cxl_acpi_probe(struct platform_device *pde= v) rc =3D bus_for_each_dev(adev->dev.bus, NULL, root_port, add_host_bridge_uport); if (rc < 0) - return rc; + goto out; =20 if (IS_ENABLED(CONFIG_CXL_PMEM)) rc =3D device_for_each_child(&root_port->dev, root_port, add_root_nvdimm_bridge); if (rc < 0) - return rc; + goto out; =20 /* In case PCI is scanned before ACPI re-trigger memdev attach */ cxl_bus_rescan(); - return 0; + +out: + return rc; } =20 static const struct acpi_device_id cxl_acpi_ids[] =3D { --=20 2.17.1 From nobody Tue Oct 7 02:15:31 2025 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2067.outbound.protection.outlook.com [40.107.237.67]) (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 09BB529AAE3; Tue, 15 Jul 2025 18:04:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752602674; cv=fail; b=AaIVFtqvXecTdeVCwAjxMJHQkGLG2vDgYtXYalIk/A+oZZTdcnstk+DA6NyaU5ScABe27Gz4JYZ3wLqADccOqdMQw5Qo3ECDPwpjXMluIeam54fyfmJsX/6c6A5XaO9UKSSi3hKtPA7uY0WokoxkF+56Ar9m1mWiTFHGl8+ccxE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752602674; c=relaxed/simple; bh=f3S7I5CCykyORFk8vxLMw4JFfP+kVILpBa2SkE69blc=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=UZC0ySUUfqNMhtQBU/XTokJWm8Z8gdzgGKcmYA0vP4Yi/aY4NBW9np8BRbg13qp77k0QJ7dHh9uypzUyWzCKXiOzV8HPgu+Ef6Zsi9xZDOnVFLLOjFDvcqXqa00ep8Gxb59SNIv6E0PdsmH68PnjsLyhq/XxqR1RIUPbpViD1KE= 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=lhw+Y7am; arc=fail smtp.client-ip=40.107.237.67 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="lhw+Y7am" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LP1vFKG02kLOn5kl7uIGZ7DjrWXBH+U9o/tXSg2Wh7eyTkInrMCR0sSOKfUfvLFgdK2QVMSnMOPq9Wjc/I7SHH+PGBpS3Gzvg+M4phqUubZ7Wg4UaBIpDwKXkFgp3jkHFPjZpqlyt+8SORQkcSGwKxd0/cjd41TfIhUg196wij0EbDSNP1xNFJnUPR8B8NE+8HI4kRzH8Ds+sSYst+sCNplQcPFjsDKXH1NhjDZ82Ll53A+dSG5dcEqNb8B0y9WSZbBe0uOhqSHoxxnudXt2InTCLA7sh3lDjkiEeW0Kzj6S6BYSKp6IKV7pxEIlj4Ld2vd/7WOtEVnoIotlcqXtlA== 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=7J2bo91wVPJQhPnuS1Q5588KdrQ2oBJZ953/6sUZqvY=; b=DZNhyl4I8KjRQ2riULWXnYKx1xNY2tOqhnKYgjb0XzIMtahwyaHyBSGP0uKfKt0/CRkoJC+XoUnTiRIrR3IsXsqpPtGwrJpjRlQx7xjocZvxipCwyaxXMpPG3k8+RIEY/u9LpxvTf2WsHUSVj84XHjOxkTSWqFxvUu4tWHe4btYZ7GuKwW5U7kJeO4RgGyDWwqjsSlNjJtdFTdAjPcfzRWami4V2l0YvraZX0HbqiJL7CQ+ue5CWHnWWxrcQV9358jg+vO0NP4I+Bh1j8Z3wfqsktcIhQqgMcEVwlof3iJhu0L2YqzZJ5uJC3Z0IyuF8p9T8VXaxBrgw0CY+Jp+kVg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.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=7J2bo91wVPJQhPnuS1Q5588KdrQ2oBJZ953/6sUZqvY=; b=lhw+Y7amvonCiG3U9DLwnFve1re+4+nEd3+XWt4cYJRTxmEqMR34aaCwC/KZEsfNnlZq9wScfNhLSvL0fkXAchG/cIX3xETs/dqVnRvp81y05atdy310oPKwPyIpL1CaX1BFbVjtE0xn5onTcrifVjGB6mTsCiDtUSxfK2savcI= Received: from BY3PR04CA0028.namprd04.prod.outlook.com (2603:10b6:a03:217::33) by DM6PR12MB4314.namprd12.prod.outlook.com (2603:10b6:5:211::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.35; Tue, 15 Jul 2025 18:04:29 +0000 Received: from SJ5PEPF000001D0.namprd05.prod.outlook.com (2603:10b6:a03:217:cafe::89) by BY3PR04CA0028.outlook.office365.com (2603:10b6:a03:217::33) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8943.19 via Frontend Transport; Tue, 15 Jul 2025 18:04:29 +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=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ5PEPF000001D0.mail.protection.outlook.com (10.167.242.52) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8922.22 via Frontend Transport; Tue, 15 Jul 2025 18:04:29 +0000 Received: from ethanolx50f7host.amd.com (10.180.168.240) 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; Tue, 15 Jul 2025 13:04:26 -0500 From: Smita Koralahalli To: , , , , CC: Davidlohr Bueso , Jonathan Cameron , Dave Jiang , "Alison Schofield" , Vishal Verma , Ira Weiny , Dan Williams , Matthew Wilcox , Jan Kara , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Li Ming , Jeff Johnson , "Ying Huang" , Yao Xingtao , Peter Zijlstra , Greg KH , Nathan Fontenot , Smita Koralahalli , Terry Bowman , Robert Richter , Benjamin Cheatham , PradeepVineshReddy Kodamati , Zhijian Li Subject: [PATCH v5 2/7] cxl/core: Rename suspend.c to probe_state.c and remove CONFIG_CXL_SUSPEND Date: Tue, 15 Jul 2025 18:04:02 +0000 Message-ID: <20250715180407.47426-3-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250715180407.47426-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250715180407.47426-1-Smita.KoralahalliChannabasappa@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001D0:EE_|DM6PR12MB4314:EE_ X-MS-Office365-Filtering-Correlation-Id: 8c3cd4f6-8516-41b6-39c5-08ddc3ca0b55 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|376014|7416014|82310400026|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?TDBwSQygH7SidFB3Z9PjcXK30A7iawHNPuLDZD/AXPd3l2peyS7kJxvXd6sw?= =?us-ascii?Q?FOheg+7vUf0H048nOAP3rlPpFlzwJRb95bC57Nak2K8r8Og3+o8OrG01soK0?= =?us-ascii?Q?QBieZNVurj9XzF7KMZ/e1hFU5W/DeyxEhccV4kca+bKlJb2co1v28NHLUEyo?= =?us-ascii?Q?Pcp7hDH8HdalYAjX3tJCAMyomMfLesIUPkXQ3eQq8AaGKROn9je/uMmFiX3A?= =?us-ascii?Q?ofUqSffA4AwPKPCVYum6X623EyX4xoHY4nC1YwA7jJcCXthV5pJ385Zel8Vu?= =?us-ascii?Q?ox/QBL3vX5Y1CsqrFf+6sDU2vEu5HvldnWOXEwqWMw4n1VK2LqcGsWYffV/G?= =?us-ascii?Q?UKOh6twP+ExP/C49iBVET/yU3ytfTXAJU0aHZVsbJ7wWeanBAcUPINFsOS6k?= =?us-ascii?Q?Pa4Ky3iQwkWljogVJ/grqYWE6UVXsUn5ON7Muedzc8XMXOEiLA9IWo+h8+5h?= =?us-ascii?Q?MFXE3oNaAcPfal8SNzvV7wwhM8seu9aPPf+kAuq6hytoURRllzurzJEqtIro?= =?us-ascii?Q?9g4aC1gpOBKkhL1M/RxCXT+m8pRjFCAFUTQ2dFedMj5nGj8+X4UFUMQNcYNJ?= =?us-ascii?Q?7EQ/+AqZ2a/IeEo6KpO+aGA92/XUlsIBoyE+UVmAkMLfVwbq6JTkmOftyJeB?= =?us-ascii?Q?0LjwMIMP/Bd7LvtPpiyHrn4XbGcRh34TexDaeCZ2X3P3LyMXTYwDEnhPgWRc?= =?us-ascii?Q?Ck3IwC5ReiT13fo9qC3CldgvgeQ+wRujIdSaV6ejibfK9ZJculiuPp4NWEpw?= =?us-ascii?Q?kaLijnP89oDxYLLzQ1J/Exw/KGIeva2XKkNg2SOO4vZU7U6eVxtQIHZJQEsY?= =?us-ascii?Q?MOwwNzbmULkaXH0hUI3mdjMBSKKerMQrkGnXP9d1a8oxgONaYckkkEviGRZc?= =?us-ascii?Q?5hNN9wx1i7p5Q+TuJpbyL1EdXtbHUswSybJHfzMiG2yKfDyH3gU8STlgrOib?= =?us-ascii?Q?asavsdfZotTHNh/t9fZ3A1hXyDs9a2srhk66hFFuWfcxA/9RyKfLkS5k6oNG?= =?us-ascii?Q?d2+1lvfY4CMd/NGhwfykLWjaCEt3DxiHackJ9Utt/2GHbLBSvvFSi/7IU6EP?= =?us-ascii?Q?4+OC9M06CSBFnarm9337sBL7DFoE7qLu0AW8jJPOHs5EbOR7XKf8yEkuHZcN?= =?us-ascii?Q?pJzIQSCKOiwxA0ZrwFlo7tcA5FX4bZWni2HBIFFNdwWmhslStS6GXKP50rKQ?= =?us-ascii?Q?JtF2BQZ6KKfjX3HzjSMl58HeaFoop8sgZ8oKOU3My+J/sVOINFkBkKercIft?= =?us-ascii?Q?/YXmKnUcITqpzwI/T6vvlZyo+Od5kd9ixo9ARXwKDX5wiRJZVPqMDT8ATx1A?= =?us-ascii?Q?Gcm4BWBFXFGIPAOXzCudIiF10+E4gDfLvVqPq4zClCJPglnowa1wBDClQtK/?= =?us-ascii?Q?DqthlrUROj2ax9U94kd9DNsMiIImo80BD5Qy813TZZob3aApP15AwELoZi/a?= =?us-ascii?Q?BO6KlTy0ZStaB2ckb0/JJtG+RJk972yNJf1U81FULCZaqzR/B5t9mHggM4WB?= =?us-ascii?Q?D7OpNLC4kLPdPtOdy/dOY++gdxBxCgBTaQK6?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(376014)(7416014)(82310400026)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jul 2025 18:04:29.6073 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8c3cd4f6-8516-41b6-39c5-08ddc3ca0b55 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF000001D0.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4314 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The cxl_mem_active_inc()/dec() and cxl_mem_active() helpers were initially introduced to coordinate suspend/resume behavior. However, upcoming changes will reuse these helpers to track cxl_mem_probe() activity during SOFT RESERVED region handling. To reflect this broader purpose, rename suspend.c to probe_state.c and remove CONFIG_CXL_SUSPEND Kconfig option. These helpers are now always built into the CXL core subsystem. This ensures drivers like cxl_acpi to coordinate with cxl_mem for region setup and hotplug handling. Co-developed-by: Nathan Fontenot Signed-off-by: Nathan Fontenot Co-developed-by: Terry Bowman Signed-off-by: Terry Bowman Signed-off-by: Smita Koralahalli --- While these helpers are no longer specific to suspend, they couldn't be moved into files like memdev.c or mem.c, as those are built as modules. The problem is that cxl_mem_active() is invoked by core kernel components such as kernel/power/suspend.c and hibernate.c, which are built into vmlinux. If the helpers were moved into a module, it would result in unresolved symbol errors as symbols are not guaranteed to be available. One option would be to force memdev.o to be built-in, but that introduces unnecessary constraints, since it includes broader device management logic. Instead, I have renamed it to probe_state.c. --- drivers/cxl/Kconfig | 4 ---- drivers/cxl/core/Makefile | 2 +- drivers/cxl/core/{suspend.c =3D> probe_state.c} | 5 ++++- drivers/cxl/cxlmem.h | 9 --------- include/linux/pm.h | 7 ------- 5 files changed, 5 insertions(+), 22 deletions(-) rename drivers/cxl/core/{suspend.c =3D> probe_state.c} (83%) diff --git a/drivers/cxl/Kconfig b/drivers/cxl/Kconfig index 48b7314afdb8..d407d2c96a7a 100644 --- a/drivers/cxl/Kconfig +++ b/drivers/cxl/Kconfig @@ -189,10 +189,6 @@ config CXL_PORT default CXL_BUS tristate =20 -config CXL_SUSPEND - def_bool y - depends on SUSPEND && CXL_MEM - config CXL_REGION bool "CXL: Region Support" default CXL_BUS diff --git a/drivers/cxl/core/Makefile b/drivers/cxl/core/Makefile index 79e2ef81fde8..0fa7aa530de4 100644 --- a/drivers/cxl/core/Makefile +++ b/drivers/cxl/core/Makefile @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 obj-$(CONFIG_CXL_BUS) +=3D cxl_core.o -obj-$(CONFIG_CXL_SUSPEND) +=3D suspend.o +obj-y +=3D probe_state.o =20 ccflags-y +=3D -I$(srctree)/drivers/cxl CFLAGS_trace.o =3D -DTRACE_INCLUDE_PATH=3D. -I$(src) diff --git a/drivers/cxl/core/suspend.c b/drivers/cxl/core/probe_state.c similarity index 83% rename from drivers/cxl/core/suspend.c rename to drivers/cxl/core/probe_state.c index 29aa5cc5e565..5ba4b4de0e33 100644 --- a/drivers/cxl/core/suspend.c +++ b/drivers/cxl/core/probe_state.c @@ -8,7 +8,10 @@ static atomic_t mem_active; =20 bool cxl_mem_active(void) { - return atomic_read(&mem_active) !=3D 0; + if (IS_ENABLED(CONFIG_CXL_MEM)) + return atomic_read(&mem_active) !=3D 0; + + return false; } =20 void cxl_mem_active_inc(void) diff --git a/drivers/cxl/cxlmem.h b/drivers/cxl/cxlmem.h index 551b0ba2caa1..86e43475a1e1 100644 --- a/drivers/cxl/cxlmem.h +++ b/drivers/cxl/cxlmem.h @@ -883,17 +883,8 @@ static inline void devm_cxl_memdev_edac_release(struct= cxl_memdev *cxlmd) { return; } #endif =20 -#ifdef CONFIG_CXL_SUSPEND void cxl_mem_active_inc(void); void cxl_mem_active_dec(void); -#else -static inline void cxl_mem_active_inc(void) -{ -} -static inline void cxl_mem_active_dec(void) -{ -} -#endif =20 int cxl_mem_sanitize(struct cxl_memdev *cxlmd, u16 cmd); =20 diff --git a/include/linux/pm.h b/include/linux/pm.h index f0bd8fbae4f2..415928e0b6ca 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h @@ -35,14 +35,7 @@ static inline void pm_vt_switch_unregister(struct device= *dev) } #endif /* CONFIG_VT_CONSOLE_SLEEP */ =20 -#ifdef CONFIG_CXL_SUSPEND bool cxl_mem_active(void); -#else -static inline bool cxl_mem_active(void) -{ - return false; -} -#endif =20 /* * Device power management --=20 2.17.1 From nobody Tue Oct 7 02:15:31 2025 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2057.outbound.protection.outlook.com [40.107.93.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 C7F2029C328; Tue, 15 Jul 2025 18:04:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.57 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752602676; cv=fail; b=bWdwdNhY0WcKbAuQp5c820b9gGN134XKLiElZXh3ZSM2KLzgramM2g47HikjClYA8pKtVnlBYZFAH2hqgeLnkxjrLzqbJY97/gSdL86393CKdXEGTPxIfCdn37v9fL8X6fk/KC+Wen+nGKRzOghamRI79kz+39QSHmp8fUUgxLg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752602676; c=relaxed/simple; bh=oDoXq258QUMOumsvgMo4BYpsBp5f7Di5WWHSB1jNbng=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=oWs+xAfTsTTqjDR8TqRk3mJseUyzQNKhF7V8GFxLiBRHA8rPROLF7fPj+QtsPFW1Z0Y7RfnCKAFC0IhIyTRW3g9mHzuRiiy0uvHiCw+92YqMpNsbTLbQs3aNhQ6NI3MSuULVNOWpfc1iw678J/apDiuIBTdRHzJjctOb9+hbO5M= 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=0QYAmwzH; arc=fail smtp.client-ip=40.107.93.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="0QYAmwzH" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Og3uBfPdn0ClV3IHEGdK3EYh3o1yb3zOKl35OTRsq1vNJIdYzbKqKs8svP+Y4Jd8Qo2YtPdiDYgjo+2l04kw/2naDavzKRk0BEGFHUpdfvbwop4NLuObsLhPsalfckqdRKDXHU524d59f9axp7XlyyHjdGiDzraEXFMNoD8BGiJocoxbdi1kfSQiEvCeemN2b7iP6iSIKBTNW6ZkrdP70KjwW46Oik9PsQA82Ti/yc1I3ulLDHjsOquPbSQM6jqmLN1zsq7Cv3D8IlQh2dXD/cEuow1yhNFQgq8N7CCG0+9b0SY11YgXfz6Ny8WeQ0yUumYLFrfI/skPK1+ZOaPibg== 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=IGVzPLsW5IcmU3fwL+pJo3+R4qkmThPMGSYxwuQhB54=; b=exle9nOWXJjjFLS7JXOiCwy+FXq0yAPQh6tmM+r1cO/fssI0epk8QRACNC389Qe/QX9G78iQ4EviBHyjYgok2SPKGlpJjgSPyRYzPpz1rGuTc6pKe8dykfOId8ei43Te/ZU//GOhMzlp+cGqwZ52M/QUdMRnf5krav5RhfAytQzP6FKZuExgaRiIU6cak0TTnRR0YRypv6qpt1I81nWBOjGsmt4jzYvPLvHUCz/YYvNZDePMQJl+dM8YRTJJHGUcDt8B4vEm1c4M/fb2GafmhoZTSjJDfHM2Foa3ReRwMs3B1Bl+xSrD4fkPMtNVvnV77aBCACxwHLak05CK4EX1dA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.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=IGVzPLsW5IcmU3fwL+pJo3+R4qkmThPMGSYxwuQhB54=; b=0QYAmwzHQVxSNSn8vCll5U1p4MbsaP4TnCYcjS+DbuFBX5/hnfapUgxmEwCG9yzzbEPcpsW9VyO0NxoVRyGblPPSVS50IzEb7ZI3yRKWxR1GQ7w4Bim5MwHwvKthKVNJg2F5TLjLJ8DZW4kV0ZAbbbTVewLMJG7nhuHeT2T266w= Received: from BY3PR04CA0020.namprd04.prod.outlook.com (2603:10b6:a03:217::25) by DS0PR12MB8785.namprd12.prod.outlook.com (2603:10b6:8:14c::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.35; Tue, 15 Jul 2025 18:04:30 +0000 Received: from SJ5PEPF000001D0.namprd05.prod.outlook.com (2603:10b6:a03:217:cafe::c3) by BY3PR04CA0020.outlook.office365.com (2603:10b6:a03:217::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8943.17 via Frontend Transport; Tue, 15 Jul 2025 18:04:30 +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=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ5PEPF000001D0.mail.protection.outlook.com (10.167.242.52) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8922.22 via Frontend Transport; Tue, 15 Jul 2025 18:04:30 +0000 Received: from ethanolx50f7host.amd.com (10.180.168.240) 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; Tue, 15 Jul 2025 13:04:27 -0500 From: Smita Koralahalli To: , , , , CC: Davidlohr Bueso , Jonathan Cameron , Dave Jiang , "Alison Schofield" , Vishal Verma , Ira Weiny , Dan Williams , Matthew Wilcox , Jan Kara , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Li Ming , Jeff Johnson , "Ying Huang" , Yao Xingtao , Peter Zijlstra , Greg KH , Nathan Fontenot , Smita Koralahalli , Terry Bowman , Robert Richter , Benjamin Cheatham , PradeepVineshReddy Kodamati , Zhijian Li Subject: [PATCH v5 3/7] cxl/acpi: Add background worker to coordinate with cxl_mem probe completion Date: Tue, 15 Jul 2025 18:04:03 +0000 Message-ID: <20250715180407.47426-4-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250715180407.47426-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250715180407.47426-1-Smita.KoralahalliChannabasappa@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001D0:EE_|DS0PR12MB8785:EE_ X-MS-Office365-Filtering-Correlation-Id: e0573b98-a259-4ccd-552d-08ddc3ca0bb5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|82310400026|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?syndIYNd/fXioqKJk648z59M+VY6yoJw1+baD9B8o9GIFp5qyeIfT1NKj2j+?= =?us-ascii?Q?KondhjKnLV2wBeFbybgETSay7wqIDJSkZFciaH7AUrp1PU1x3WQe7OYWvRVO?= =?us-ascii?Q?VbXJ3UY/yzqmwZ6kHHXUFJqFMGa5NtNEOzIgcnhUGfepq7jvqyKHiDVO8IDZ?= =?us-ascii?Q?qF8+k/ejXnXabCljpaT2/ykwIJPoXekr7I4MC68Szw2R3iFFfbFJJNAUSxG2?= =?us-ascii?Q?kuHNcaNSSUr6eXDuFyXLV4lQOVxAVSqsDaBPnCWZXNJ/hA2j/7q1C2KcsZRI?= =?us-ascii?Q?jaaNbP42o03wwiFcWa3ROYimQ5bbTsxCciJUmGE11/lOpkS+/9ins5CJBXnL?= =?us-ascii?Q?i4y3+aXSYLFYDB1jxikTXJTXmq6UMUP6g4KNEonJHq+x3AMSGjr7YO8KEDKd?= =?us-ascii?Q?0Ri9/jQIOJtP8uvrI69w4UNnjj3TIS7IbVXfBPaouGJNC+sbNGKfrToWIZz7?= =?us-ascii?Q?qDxgPgtK2t3zC3uEze7NNfAQR29OlmuMvmkHx9suSRXFPG2QlTLhpUazStmt?= =?us-ascii?Q?ZHVLk7YvzgLbEnq+Saif1sjcO26L9D/zcXL5EyrQEf+0t+eCJdOzteLCHxaQ?= =?us-ascii?Q?RG6MwaXUndfm+J5ia9Sdw7sbfba1eRRkuzZVoE7LTNkYivwn7pMICiHfhFm4?= =?us-ascii?Q?9MsPjXTrMyVDxXiq1E/xMzgWE4nttQeQ8yQtovctkATIFRdiMOhPklxcAOE4?= =?us-ascii?Q?6wZZS8Qjf2BpMkFAMlAtNyKk4bcR7tJ0sUBV4bAJzKyFuL+paWSMSLTar4qW?= =?us-ascii?Q?3jqkF07JQbzNI2Yuv2SERvm1fAi6x5xGYREZ1qNEL5zujGk164tFHgCG1+Xo?= =?us-ascii?Q?jBm6W+B5FgeU6ic6gTHl9h6pIVEkEzIaLUgYgioaLAIthUUkiYnuph+keOwK?= =?us-ascii?Q?g4hgN1yWcGt46PGx+eZKCl4UkxBBG7FTgBKKsRrg6fcUpFPpH636liJJyNxD?= =?us-ascii?Q?ugzeVKMeVM9I0aW5xxZFGkIm2KcShHdSFzBE3XffFZAsHQZRZZl09NW7+eIH?= =?us-ascii?Q?jBMSsPYh8i8mRvrMm6P/2FpYELYyZgDwTaGmPuV4AGu2HQFWQle3kBhpEjUo?= =?us-ascii?Q?Lb0pEFNwL+ZoHa/uTvoclVMksaOxd4qZxJAh5PIzl+Aj7g6wwjm9vLMSJ5JY?= =?us-ascii?Q?q36mw6YUKfI3dz06OD2DGoDqBkCdK7LWid2k89TQ/ZDUNVlA3hiKbVgCSGKk?= =?us-ascii?Q?/6dijOXW5ylQvo44yeo8vLyAhodZRT2sDRhE4CC5hX0qGKhACLdbH0YUYzz4?= =?us-ascii?Q?1iNFBdcqGgrHV36d9hmrkpsJ+Ang8l7W9yHr2hUfinvgS0G6kIcQleIxo1Hj?= =?us-ascii?Q?TCvxuFWcjYRt9DFBziKnYqXNcXOh/730E7NYK+QrXlCT58r5AmLIxfSUcMrk?= =?us-ascii?Q?yOUtkssRfLHZLy6xWdjbg0Jwdk0U+HeYZj0dcg/DDG3PIyD4C7ST3VP+al3k?= =?us-ascii?Q?YxpFWAEYwFO5TwtGsmyB+E2CAwq54m48xPe6taSfWFGLhVsxthmpON0tjrPF?= =?us-ascii?Q?sXqzjXIJelpYsEqYZBo2Hq2KojrMNuKqR96z?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(7416014)(376014)(82310400026)(1800799024)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jul 2025 18:04:30.2175 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e0573b98-a259-4ccd-552d-08ddc3ca0bb5 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF000001D0.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8785 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Introduce a background worker in cxl_acpi to delay SOFT RESERVE handling until the cxl_mem driver has probed at least one device. This coordination ensures that DAX registration or fallback handling for soft-reserved regions is not triggered prematurely. The worker waits on cxl_wait_queue, which is signaled via cxl_mem_active_inc() during cxl_mem_probe(). Once at least one memory device probe is confirmed, the worker invokes wait_for_device_probe() to allow the rest of the CXL device hierarchy to complete initialization. Additionally, it also handles initialization order issues where cxl_acpi_probe() may complete before other drivers such as cxl_port or cxl_mem have loaded, especially when cxl_acpi and cxl_port are built-in and cxl_mem is a loadable module. In such cases, using only wait_for_device_probe() is insufficient, as it may return before all relevant probes are registered. While region creation happens in cxl_port_probe(), waiting on cxl_mem_active() would be sufficient as cxl_mem_probe() can only succeed after the port hierarchy is in place. Furthermore, since cxl_mem depends on cxl_pci, this also guarantees that cxl_pci has loaded by the time the wait completes. As cxl_mem_active() infrastructure already exists for tracking probe activity, cxl_acpi can use it without introducing new coordination mechanisms. Co-developed-by: Nathan Fontenot Signed-off-by: Nathan Fontenot Co-developed-by: Terry Bowman Signed-off-by: Terry Bowman Signed-off-by: Smita Koralahalli --- drivers/cxl/acpi.c | 18 ++++++++++++++++++ drivers/cxl/core/probe_state.c | 5 +++++ drivers/cxl/cxl.h | 2 ++ 3 files changed, 25 insertions(+) diff --git a/drivers/cxl/acpi.c b/drivers/cxl/acpi.c index ca06d5acdf8f..3a27289e669b 100644 --- a/drivers/cxl/acpi.c +++ b/drivers/cxl/acpi.c @@ -823,6 +823,20 @@ static int pair_cxl_resource(struct device *dev, void = *data) return 0; } =20 +static void cxl_softreserv_mem_work_fn(struct work_struct *work) +{ + if (!wait_event_timeout(cxl_wait_queue, cxl_mem_active(), 30 * HZ)) + pr_debug("Timeout waiting for cxl_mem probing"); + + wait_for_device_probe(); +} +static DECLARE_WORK(cxl_sr_work, cxl_softreserv_mem_work_fn); + +static void cxl_softreserv_mem_update(void) +{ + schedule_work(&cxl_sr_work); +} + static int cxl_acpi_probe(struct platform_device *pdev) { int rc =3D 0; @@ -903,6 +917,9 @@ static int cxl_acpi_probe(struct platform_device *pdev) cxl_bus_rescan(); =20 out: + /* Update SOFT RESERVE resources that intersect with CXL regions */ + cxl_softreserv_mem_update(); + return rc; } =20 @@ -934,6 +951,7 @@ static int __init cxl_acpi_init(void) =20 static void __exit cxl_acpi_exit(void) { + cancel_work_sync(&cxl_sr_work); platform_driver_unregister(&cxl_acpi_driver); cxl_bus_drain(); } diff --git a/drivers/cxl/core/probe_state.c b/drivers/cxl/core/probe_state.c index 5ba4b4de0e33..3089b2698b32 100644 --- a/drivers/cxl/core/probe_state.c +++ b/drivers/cxl/core/probe_state.c @@ -2,9 +2,12 @@ /* Copyright(c) 2022 Intel Corporation. All rights reserved. */ #include #include +#include #include "cxlmem.h" =20 static atomic_t mem_active; +DECLARE_WAIT_QUEUE_HEAD(cxl_wait_queue); +EXPORT_SYMBOL_NS_GPL(cxl_wait_queue, "CXL"); =20 bool cxl_mem_active(void) { @@ -13,10 +16,12 @@ bool cxl_mem_active(void) =20 return false; } +EXPORT_SYMBOL_NS_GPL(cxl_mem_active, "CXL"); =20 void cxl_mem_active_inc(void) { atomic_inc(&mem_active); + wake_up(&cxl_wait_queue); } EXPORT_SYMBOL_NS_GPL(cxl_mem_active_inc, "CXL"); =20 diff --git a/drivers/cxl/cxl.h b/drivers/cxl/cxl.h index 3f1695c96abc..3117136f0208 100644 --- a/drivers/cxl/cxl.h +++ b/drivers/cxl/cxl.h @@ -903,6 +903,8 @@ void cxl_coordinates_combine(struct access_coordinate *= out, =20 bool cxl_endpoint_decoder_reset_detected(struct cxl_port *port); =20 +extern wait_queue_head_t cxl_wait_queue; + /* * Unit test builds overrides this to __weak, find the 'strong' version * of these symbols in tools/testing/cxl/. --=20 2.17.1 From nobody Tue Oct 7 02:15:31 2025 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2066.outbound.protection.outlook.com [40.107.101.66]) (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 B5F0229B206; Tue, 15 Jul 2025 18:04:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.101.66 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752602675; cv=fail; b=lHj2qjo1WLVDMKzvYTRD7EmU+ATnpf7pIzCCXfkV35ei0G0BT5CvOFZ6DOnh/V2tfnvWpIRS7N8d9tJX/M/Gvimff+Cyol68s/am06fS0zmO6B9aHZqWDArhuU0g/TIcwqkWoSijBzyO6YVgjeqdYlwh5346bDVLckLW1Tk50zo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752602675; c=relaxed/simple; bh=nT+7esWnGIEqFbX/VlGU2QiF4INLVXoiRpAunxZEFSs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=oeXGDLQSFWF9/yk4eCgntQnER+Dg14FB5/ngxsnO2BEzXuTMcuo+KQHfwhiZEryexQW/22RtxURr4okbb5jC0ZzFx7fTfpXNFvecBfumUPibgeyV/HGYO8vo8J9N+v5AfwrIPfub4P+NVRzYX61LWzx40SkLsIM9m3M/vbYCqGY= 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=CEdIx7Mx; arc=fail smtp.client-ip=40.107.101.66 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="CEdIx7Mx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bZ6Z2QdOXp0tdTrC9zC/bjLLOIjLwqqTH/4Uu0TvBEv7hEtnozSa/4pmvpWRv68EWYqmd9wsbWaTrS89NH59z+WRgaHKtyPPTcjy1h8Qp4x32qBmPy6ejCbjIwr1SG711TLdEmXcPnPxYQg+eaVZaFqsudJeBxkUp8HrafMTWIEwnWq1sqgB1APAKmTzEQcJe8M3mshhYujjoIt/nzZaCs5XaBtdNO0y4xfWztT4zEvhwjPLlfSdNxdcCAPY7uaGbG3dQWryn95jJIrQkjc0dngyTr81qvRl8iSCnZvJ6KWS1kU6haBQr/jZFp9vE/UDw4PGynBtFGD1FfWq4UnQgA== 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=C7m+dCGNO7fGDIgOpTkEGPiONiV1JFCz4LTL8dwwtIw=; b=Zbq8pvP70G/ewFu7wPAmU3Oh/ZDUk4YmXW4NJWzR41EAuHsrpaNcJeMewIhT+s/UIDPWxqYyKWgMk/egvbpR9G3zybxCuagSbFpBtQRZQ1dQAHVJIkzGr7+vRrWZnUQk/e7fwz2UJuI7dzNNzrinpD9f7Rq8xfb8a1DcFYt5luT23sDuCyu6jsJIop8oKCNMeA6BapgkrRAuHdgc9Tn6fDRb+Lgwye4V+Lye22go8WZRVu3q5HDOIH3SYnV36yjKNHWm7nXxI7Ur1kIX68imeNgcpmuLjr4bU2nMIhf/jZ6tc0Re8enaxoP7FcZyU0uKKss69iy1b1C4nYhj4OlkLQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.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=C7m+dCGNO7fGDIgOpTkEGPiONiV1JFCz4LTL8dwwtIw=; b=CEdIx7MxkqHBg3NqVxdfIMVxgUKPXHtwewaJvoagGJcmfF3yPMlZcN5cdKmBrvtBDoiaCRtRk79Vdd5FBYkY2lC4rEROunz6Ax/mQGptPWsWBiBv4hsEgL/2M+rwv31MmW58eBtbE05eqkiZCa/0lTnwyvBa6KGQs0/Zry/y5JY= Received: from BY5PR17CA0052.namprd17.prod.outlook.com (2603:10b6:a03:167::29) by DS4PR12MB9681.namprd12.prod.outlook.com (2603:10b6:8:281::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8922.33; Tue, 15 Jul 2025 18:04:31 +0000 Received: from SJ5PEPF000001D1.namprd05.prod.outlook.com (2603:10b6:a03:167:cafe::6f) by BY5PR17CA0052.outlook.office365.com (2603:10b6:a03:167::29) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8922.33 via Frontend Transport; Tue, 15 Jul 2025 18:04:31 +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=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ5PEPF000001D1.mail.protection.outlook.com (10.167.242.53) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8922.22 via Frontend Transport; Tue, 15 Jul 2025 18:04:30 +0000 Received: from ethanolx50f7host.amd.com (10.180.168.240) 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; Tue, 15 Jul 2025 13:04:28 -0500 From: Smita Koralahalli To: , , , , CC: Davidlohr Bueso , Jonathan Cameron , Dave Jiang , "Alison Schofield" , Vishal Verma , Ira Weiny , Dan Williams , Matthew Wilcox , Jan Kara , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Li Ming , Jeff Johnson , "Ying Huang" , Yao Xingtao , Peter Zijlstra , Greg KH , Nathan Fontenot , Smita Koralahalli , Terry Bowman , Robert Richter , Benjamin Cheatham , PradeepVineshReddy Kodamati , Zhijian Li Subject: [PATCH v5 4/7] cxl/region: Introduce SOFT RESERVED resource removal on region teardown Date: Tue, 15 Jul 2025 18:04:04 +0000 Message-ID: <20250715180407.47426-5-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250715180407.47426-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250715180407.47426-1-Smita.KoralahalliChannabasappa@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001D1:EE_|DS4PR12MB9681:EE_ X-MS-Office365-Filtering-Correlation-Id: f2286c7b-37bc-45d1-a743-08ddc3ca0c20 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?GvKmdGLLHwvEkNUW7RzPcVZCqQhsem4BT3SLt/P2nrwotennorFMeqdHzz1V?= =?us-ascii?Q?t/ivmiJziO29yO4rwUPV/70utBj8o07qppMKdRqBaABp75yxq/9j/FXg6K36?= =?us-ascii?Q?BH6haF2a65VjzkTwDDrBTKjzsQGyvRAnbHtUXm7RqK6LuLlgzjUShvq6lR+k?= =?us-ascii?Q?FGQnhbDTXuLHco7Xgy/afUVIGm3PKEfzfuWsskSAPoWwpnPNhmk0KSSNj+Z8?= =?us-ascii?Q?MazqACtoYvySzDcS4sIyxppvAe78eiwBHDpxRmINvDwqc6Wnh3AIfwtvHKnl?= =?us-ascii?Q?vBO1oo46GFrUxXSbXxAtxzS3IQoIYEu0o7Qi1tsa9U+vBa+qaITdV44G9TWb?= =?us-ascii?Q?QLsBDbm3BE+HLzvbJLB7KUbSBqpY20Y5LH7NNAI14BQEe+EICgBHCoZk/E5p?= =?us-ascii?Q?uStiQPn/nwKrRfexlKY5c+hWHu1oayh4hmEcXdY3gkkpLR2rLDNxN6d/xMA9?= =?us-ascii?Q?2XQ6T2ErRzSWr2rTJgz5xDxNzP+romkihTIIUduu0G8N25aIMIkwYLmHeQVk?= =?us-ascii?Q?TVGY8iaTEBEABHFWAzUNJesmInuOJ2yjaVxmpFcjaQq32hQtFY8Jp7wtGmoJ?= =?us-ascii?Q?znfzwgf2Ei2698IQAGTxawlz07dmi0x0/Ip/R0r3PTTirlYuUqCtQyd9rLFF?= =?us-ascii?Q?yWXrqlmySOd85cgdYtr1Sm4kWYsOXfPClqAWnMpj3XGKSS/BrjlyF6y+IfwS?= =?us-ascii?Q?FTwXMGLuXFzxF6y6GPAY2v+cr8RY9Fea3QG9GgNYaub07iF1QZ2BsHaQ5vXS?= =?us-ascii?Q?urj4WA8od4n9oFvfUmawz6SULrb5h57ttMoQ9FMQFiMwaV8jNVzQ08sQKfjL?= =?us-ascii?Q?sPoeHj6ByJjmBuxe5VqonCt/RO76gf8xCAqpsOxpVL7reflxKMshFmQV7F40?= =?us-ascii?Q?XBpPrARUlApEkbWXZSKeO5EVQNgjrxjJWJ6jlLK+AZzedqoZKDNbyZFtyN2Y?= =?us-ascii?Q?+FPnMpcr1wMF324oMmcyOFrl0Mts9pVGFqCjNzEf4Iq1BWAcFT8mljzos/3N?= =?us-ascii?Q?xoKKyPkW++7HzEK9Aci3yxghzkO4orRGlJ0iNuZAj6+Z5P8Riq8vXQuQvZXL?= =?us-ascii?Q?whK4so6mbd4/iuP6DZ1z3mW/1T0DppGsPRaII/gvGd6+AzvJNEkVnrwGwj5c?= =?us-ascii?Q?CKmtbspPQ4DNMJmNusNrst1u1IlGe3uxmnElDsxVMl1ztdk/hb3QNQnhpVJI?= =?us-ascii?Q?TtDT2YgKs8BDYdI23aWJapkQbgw4bR/5pV6LzDVB4xQzlzG1eYToLsjrmbwD?= =?us-ascii?Q?jDkW5Lui9UzICGz6XHwVKU9mhrlomdORAsBN9rVWO2q3DPddjgHEpwv969qx?= =?us-ascii?Q?WsLElkkkWN0Boaq9Uok146KFJWZCGzgwxIjb9wzYihRhiBZENUxuibMQLgU5?= =?us-ascii?Q?CbIDoGpXuXuMRP5b4xaiJZbtBonc25LCol1hXwZuH2qDVeyNzi0PNcd5znjP?= =?us-ascii?Q?xynlQUmpKkGw6UnP29C84gUMwoKRCYHJVUOQl0A4f/lbXpmnSLDbkN5jroa3?= =?us-ascii?Q?lWcljhVZLprsnbML/+vIBrpS+cAKpLEVnlVA?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(82310400026)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jul 2025 18:04:30.9405 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f2286c7b-37bc-45d1-a743-08ddc3ca0c20 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF000001D1.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PR12MB9681 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Reworked from a patch by Alison Schofield Previously, when CXL regions were created through autodiscovery and their resources overlapped with SOFT RESERVED ranges, the soft reserved resource remained in place after region teardown. This left the HPA range unavailable for reuse even after the region was destroyed. Enhance the logic to reliably remove SOFT RESERVED resources associated with a region, regardless of alignment or hierarchy in the iomem tree. Link: https://lore.kernel.org/linux-cxl/29312c0765224ae76862d59a17748c8188f= b95f1.1692638817.git.alison.schofield@intel.com/ Co-developed-by: Alison Schofield Signed-off-by: Alison Schofield Co-developed-by: Terry Bowman Signed-off-by: Terry Bowman Signed-off-by: Smita Koralahalli --- drivers/cxl/acpi.c | 2 + drivers/cxl/core/region.c | 124 ++++++++++++++++++++++++++++++++++++++ drivers/cxl/cxl.h | 2 + include/linux/ioport.h | 1 + kernel/resource.c | 34 +++++++++++ 5 files changed, 163 insertions(+) diff --git a/drivers/cxl/acpi.c b/drivers/cxl/acpi.c index 3a27289e669b..9eb8a9587dee 100644 --- a/drivers/cxl/acpi.c +++ b/drivers/cxl/acpi.c @@ -829,6 +829,8 @@ static void cxl_softreserv_mem_work_fn(struct work_stru= ct *work) pr_debug("Timeout waiting for cxl_mem probing"); =20 wait_for_device_probe(); + + cxl_region_softreserv_update(); } static DECLARE_WORK(cxl_sr_work, cxl_softreserv_mem_work_fn); =20 diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index 6e5e1460068d..95951a1f1cab 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -3486,6 +3486,130 @@ int cxl_add_to_region(struct cxl_endpoint_decoder *= cxled) } EXPORT_SYMBOL_NS_GPL(cxl_add_to_region, "CXL"); =20 +static int add_soft_reserved(resource_size_t start, resource_size_t len, + unsigned long flags) +{ + struct resource *res =3D kzalloc(sizeof(*res), GFP_KERNEL); + int rc; + + if (!res) + return -ENOMEM; + + *res =3D DEFINE_RES_NAMED_DESC(start, len, "Soft Reserved", + flags | IORESOURCE_MEM, + IORES_DESC_SOFT_RESERVED); + + rc =3D insert_resource(&iomem_resource, res); + if (rc) { + kfree(res); + return rc; + } + + return 0; +} + +static void remove_soft_reserved(struct cxl_region *cxlr, struct resource = *soft, + resource_size_t start, resource_size_t end) +{ + struct cxl_root_decoder *cxlrd =3D to_cxl_root_decoder(cxlr->dev.parent); + resource_size_t new_start, new_end; + int rc; + + guard(mutex)(&cxlrd->range_lock); + + if (soft->start =3D=3D start && soft->end =3D=3D end) { + /* + * Exact alignment at both start and end. The entire region is + * removed below. + */ + + } else if (soft->start =3D=3D start || soft->end =3D=3D end) { + /* Aligns at either resource start or end */ + if (soft->start =3D=3D start) { + new_start =3D end + 1; + new_end =3D soft->end; + } else { + new_start =3D soft->start; + new_end =3D start - 1; + } + + /* + * Reuse original flags as the trimmed portion retains the same + * memory type and access characteristics. + */ + rc =3D add_soft_reserved(new_start, new_end - new_start + 1, + soft->flags); + if (rc) + dev_warn(&cxlr->dev, + "cannot add new soft reserved resource at %pa\n", + &new_start); + + } else { + /* No alignment - Split into two new soft reserved regions */ + new_start =3D soft->start; + new_end =3D soft->end; + + rc =3D add_soft_reserved(new_start, start - new_start, + soft->flags); + if (rc) + dev_warn(&cxlr->dev, + "cannot add new soft reserved resource at %pa\n", + &new_start); + + rc =3D add_soft_reserved(end + 1, new_end - end, soft->flags); + if (rc) + dev_warn(&cxlr->dev, + "cannot add new soft reserved resource at %pa + 1\n", + &end); + } + + rc =3D remove_resource(soft); + if (rc) + dev_warn(&cxlr->dev, "cannot remove soft reserved resource %pr\n", + soft); +} + +static int __cxl_region_softreserv_update(struct resource *soft, + void *_cxlr) +{ + struct cxl_region *cxlr =3D _cxlr; + struct resource *res =3D cxlr->params.res; + + /* Skip non-intersecting soft-reserved regions */ + if (soft->end < res->start || soft->start > res->end) + return 0; + + soft =3D normalize_resource(soft); + if (!soft) + return -EINVAL; + + remove_soft_reserved(cxlr, soft, res->start, res->end); + + return 0; +} + +static int cxl_region_softreserv_update_cb(struct device *dev, void *data) +{ + struct cxl_region *cxlr; + + if (!is_cxl_region(dev)) + return 0; + + cxlr =3D to_cxl_region(dev); + + walk_iomem_res_desc(IORES_DESC_SOFT_RESERVED, IORESOURCE_MEM, 0, -1, + cxlr, __cxl_region_softreserv_update); + + return 0; +} + +void cxl_region_softreserv_update(void) +{ + bus_for_each_dev(&cxl_bus_type, NULL, NULL, + cxl_region_softreserv_update_cb); +} +EXPORT_SYMBOL_NS_GPL(cxl_region_softreserv_update, "CXL"); + u64 cxl_port_get_spa_cache_alias(struct cxl_port *endpoint, u64 spa) { struct cxl_region_ref *iter; diff --git a/drivers/cxl/cxl.h b/drivers/cxl/cxl.h index 3117136f0208..9f173467e497 100644 --- a/drivers/cxl/cxl.h +++ b/drivers/cxl/cxl.h @@ -862,6 +862,7 @@ struct cxl_pmem_region *to_cxl_pmem_region(struct devic= e *dev); int cxl_add_to_region(struct cxl_endpoint_decoder *cxled); struct cxl_dax_region *to_cxl_dax_region(struct device *dev); u64 cxl_port_get_spa_cache_alias(struct cxl_port *endpoint, u64 spa); +void cxl_region_softreserv_update(void); #else static inline bool is_cxl_pmem_region(struct device *dev) { @@ -884,6 +885,7 @@ static inline u64 cxl_port_get_spa_cache_alias(struct c= xl_port *endpoint, { return 0; } +static inline void cxl_region_softreserv_update(void) { } #endif =20 void cxl_endpoint_parse_cdat(struct cxl_port *port); diff --git a/include/linux/ioport.h b/include/linux/ioport.h index e8b2d6aa4013..8693e095d32b 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h @@ -233,6 +233,7 @@ struct resource_constraint { extern struct resource ioport_resource; extern struct resource iomem_resource; =20 +extern struct resource *normalize_resource(struct resource *res); extern struct resource *request_resource_conflict(struct resource *root, s= truct resource *new); extern int request_resource(struct resource *root, struct resource *new); extern int release_resource(struct resource *new); diff --git a/kernel/resource.c b/kernel/resource.c index 8d3e6ed0bdc1..3d8dc2a59cb2 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -50,6 +50,40 @@ EXPORT_SYMBOL(iomem_resource); =20 static DEFINE_RWLOCK(resource_lock); =20 +/* + * normalize_resource + * + * The walk_iomem_res_desc() returns a copy of a resource, not a reference + * to the actual resource in the iomem_resource tree. As a result, + * __release_resource() which relies on pointer equality will fail. + * + * This helper walks the children of the resource's parent to find and + * return the original resource pointer that matches the given resource's + * start and end addresses. + * + * Return: Pointer to the matching original resource in iomem_resource, or + * NULL if not found or invalid input. + */ +struct resource *normalize_resource(struct resource *res) +{ + if (!res || !res->parent) + return NULL; + + read_lock(&resource_lock); + for (struct resource *res_iter =3D res->parent->child; res_iter !=3D NULL; + res_iter =3D res_iter->sibling) { + if ((res_iter->start =3D=3D res->start) && + (res_iter->end =3D=3D res->end)) { + read_unlock(&resource_lock); + return res_iter; + } + } + + read_unlock(&resource_lock); + return NULL; +} +EXPORT_SYMBOL_NS_GPL(normalize_resource, "CXL"); + /* * Return the next node of @p in pre-order tree traversal. If * @skip_children is true, skip the descendant nodes of @p in --=20 2.17.1 From nobody Tue Oct 7 02:15:31 2025 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2085.outbound.protection.outlook.com [40.107.243.85]) (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 8111629E0FB; Tue, 15 Jul 2025 18:04:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.85 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752602678; cv=fail; b=bg6MPPA0atRcykk/QAZXn5aWiRONZx9vjTu5Of0g4oye99P4XZHZKEJFKEFoVrCBCNdSwAHfwN2DGfgwuUXmChzV3p6klhWojFWaJwAJgHKrTapqJuHCMvwfDAZfq1pbIMZ8eyUgXe/U6GRtoDRoNjcaD+U3/+6oCvgNEHq1Bzk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752602678; c=relaxed/simple; bh=g5OuHNAzAmcd1mtOUouNRCgxjgjiEgFfNdtgo/cSuHY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=I/2D3OD3I7J88qLss9Ji5CUau9dRb7CsxL2QWdv3gfT/yoD2h3sf3JRWEGPlwQJIiNvOSaE6b4hN27oDsFE90H5C+Ff7ueBCJFlUkdRVi5beny08LOi1M9PA8BDH10o3il8G+Xp/Z+LrSb6FikXoQSrQh0e+kWJ1ugM4/BRe1qY= 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=Wui63A2S; arc=fail smtp.client-ip=40.107.243.85 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="Wui63A2S" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Qbdo7SbIfaWqJOA1WhmhZQTqXL3WD4cRedf8zLO1RdYAEf5sX0hY2bHBc2GKK9JLegFk9bMZ2oIo0CxkDX67FcC+B04T8FJ7a32pTS4ifLyg6kNO0jUsIPY+aX2ShxlTxAmh7bf997QMico30Vu/U/ZJiwkEANI0XUTYOMeN8NJt1AP+oBd2C82GGLcx/35kaaRFt+nRRpchmEBEyPNCZjlyyKuzOQjy307ru9j65C4q+rCeUQ7zWwo1Ib69kQCNgdQbqr1O91tmH5Pfv1bmbU3GWchiklK00h4hqAz6pmzSUjmKSEA8xfU59XRS7kx2+9VPRFuOoxNbdHcOhQhU0g== 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=buMO3LfYHL8RO8UoHaQ5B6GUP+9sOoBoqKH1RQ/FUdE=; b=LOjACIirLsKAYpD9IEiXMu29uwvW+scOjO6uJ8JYpOUrwsPjgvvDYoynzJsgPeO80Pt56t3AdVVgDq2fX1wi0i7iEFTq7XPPnReANFbfeWusNB53B8te6+ruFOpfs7HizW7ZVxoU+aB4EX7KwhHKsJIDX6I0Pd32aa8IFTogANTmjPQo8ELkplFM4lM4VdVKdIv1hFZZApiJo00OSsAUKa1ApBM0R8aM1CaOcxKhuQSWrX2Ug0PpOhtIGjQJCqzQ1iPL0YqfzeKzu8pKahtqfoCgwoaEjWW6n/+vRtxYmOB4zjreX5glX5NQ3kFWw59F6wIV+/bjjnxBmk4bwQ179A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.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=buMO3LfYHL8RO8UoHaQ5B6GUP+9sOoBoqKH1RQ/FUdE=; b=Wui63A2SwzuFlf3LIF+BC+UkfoH2lJCe7WZBDJV/BvaMwvwCaP0sy9IhKgEB1c0ce3i766wDm6snkwTZ9etdXoFcsBPfoqD139erQrTQKIoJ/UGM/IMzvfv8dE1tNfrFnB32hujV7jCZosFyR5vra4BZpsceOhfqklV0WNMh3jQ= Received: from BY3PR04CA0003.namprd04.prod.outlook.com (2603:10b6:a03:217::8) by IA0PR12MB8896.namprd12.prod.outlook.com (2603:10b6:208:493::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.28; Tue, 15 Jul 2025 18:04:32 +0000 Received: from SJ5PEPF000001D0.namprd05.prod.outlook.com (2603:10b6:a03:217:cafe::95) by BY3PR04CA0003.outlook.office365.com (2603:10b6:a03:217::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8943.17 via Frontend Transport; Tue, 15 Jul 2025 18:04:31 +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=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ5PEPF000001D0.mail.protection.outlook.com (10.167.242.52) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8922.22 via Frontend Transport; Tue, 15 Jul 2025 18:04:31 +0000 Received: from ethanolx50f7host.amd.com (10.180.168.240) 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; Tue, 15 Jul 2025 13:04:29 -0500 From: Smita Koralahalli To: , , , , CC: Davidlohr Bueso , Jonathan Cameron , Dave Jiang , "Alison Schofield" , Vishal Verma , Ira Weiny , Dan Williams , Matthew Wilcox , Jan Kara , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Li Ming , Jeff Johnson , "Ying Huang" , Yao Xingtao , Peter Zijlstra , Greg KH , Nathan Fontenot , Smita Koralahalli , Terry Bowman , Robert Richter , Benjamin Cheatham , PradeepVineshReddy Kodamati , Zhijian Li Subject: [PATCH v5 5/7] dax/hmem: Save the DAX HMEM platform device pointer Date: Tue, 15 Jul 2025 18:04:05 +0000 Message-ID: <20250715180407.47426-6-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250715180407.47426-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250715180407.47426-1-Smita.KoralahalliChannabasappa@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001D0:EE_|IA0PR12MB8896:EE_ X-MS-Office365-Filtering-Correlation-Id: 40eba2bf-64d9-4f82-dfb8-08ddc3ca0c63 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700013|7416014|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?rZEaJ2TfW+l+hh6D2vvQfO/7NZt9qa4laNn58WEIUauhgmI7BYJ4GJxep58c?= =?us-ascii?Q?mANxkIm/f8sVWYTNuQDfziDo3246V/CQa0vnJHNXGt4fXsSWDv9fkVN/3Pk9?= =?us-ascii?Q?Ml4ZH9uZ21zLhObx2hcd8/5kOkhOobHvgAVqwtRmpCr6sijb3nr3N1jCpQzn?= =?us-ascii?Q?/7tHaKTgqY99qfjk+s4PkJwdCdDiTBEpS+jcMqWEyq1ZncNUFl1sYt9w895F?= =?us-ascii?Q?HZbAs7oyUgjHhHrqvw6bvKqDhq8EhFwGPZsjkdA0u+it773pBR4V4RM/sQ+M?= =?us-ascii?Q?0VC8RGdIyMazR2xW62O5nVtcIxaU3Pb3McE/AF8iZ98c/wFWwe5kAC3TqTf4?= =?us-ascii?Q?cEG9QFG4fPCddnVcuZlYxJFTPcr1k+EQrDESzIg2PvCvScL8kqMDUshrP9aM?= =?us-ascii?Q?Cye3ewSyh1fcgcRswNtmw3l8DXdH26AMkB4y7T5r3/kl11KP+LyIQeDATfCN?= =?us-ascii?Q?npvNfQ03KpO/9lznTTc+BBBccnLE2L42pJpM4t2R4Bt/hi7N5tO5VgYJ5VGZ?= =?us-ascii?Q?DMgoHaaOE/KisTlAVsAi0Xf1/Gucqb87nrcRjGkeHeyK7mX4IdB8iWG3Nixq?= =?us-ascii?Q?m2QyWUFmMnQ4SWubwHE12h4VXrOs/kinb6FoE22ksse4CaX7TF5lVnB9Clxv?= =?us-ascii?Q?ubh0MpG74j9tIueL0gm/Bn29XkouXSd6VLz6hmBSI1zG2jqv0GQ8cH6zpvBQ?= =?us-ascii?Q?xl9C7O5gYubVKfmrRHfJeaPavDShMJhJu8wps1umhdm6OB0xGqE5DM8Yrq42?= =?us-ascii?Q?5ttkzOa6fvugHhI1mTw5GC11NSEVn+bzNa7uha47E4wqJk0OqEszhpyKy3Je?= =?us-ascii?Q?so2zFCtZVEObXsUTu3ig5QwW6yuqXRYG/V5eoSHEAkaq6i5ifXYZWwayoRf5?= =?us-ascii?Q?3jpIuEmwHlD+UATTVjW5q4Woryjpp9w+bkptZ/LFtUQt90nWWvbLKtD/keZ1?= =?us-ascii?Q?JeJwypa+2n/l1UmK5fBYVeT1wnorH9ubFsQTE9XI0nNcd0sOdjw/iJyaF/Ha?= =?us-ascii?Q?BsVDTYNHT7wTJd6C9EOL3NOSjo7K9riZUBEAEeP3qTCLsQtrKJX8VKVH248Y?= =?us-ascii?Q?C0sHLGfwRdG/Wqhjte450VMeppOSGgP+hWT/SzJtax/xNZbtb/YcXiFltxV5?= =?us-ascii?Q?tCihkwxzb1/p/Qs1R9xPcI9c98SvLG6BLhcNLyVWn1/v2rbzCsogMt2MqpN0?= =?us-ascii?Q?zDXuUng0E1DQE4ittSM4fvMRJu0y45lVrxmtU0tA0vCkw7dbUPVeNzVHn3Pa?= =?us-ascii?Q?eiIJpFePtS2pKxUO/DhyOWaVJzMEuBj/Pr0cZ81EzqtdnLX31ELMxDfqy4Wu?= =?us-ascii?Q?IPY5i7ALmDvwxr+o5syfOTezEuQPHmGeb3jCz9A534OOjy/QxMea7dhy1JsY?= =?us-ascii?Q?QOZApaj4+SWxO7WTL4vmXzukxA1b5PVmPWwL8gQlzPUlS3twM6Z/7t3724bn?= =?us-ascii?Q?itZTT2L6J4nMKIw35djZwrXYH4NbbWy+plZEpAw4niaAvz7NBvLikO5pCjIi?= =?us-ascii?Q?QEaCZEDwiXcq/FyR6NmhsrPBGtOV5aOBGvir?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(36860700013)(7416014)(1800799024)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jul 2025 18:04:31.3800 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 40eba2bf-64d9-4f82-dfb8-08ddc3ca0c63 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF000001D0.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8896 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Nathan Fontenot To enable registration of HMEM devices for SOFT RESERVED regions after the DAX HMEM device is initialized, this patch saves a reference to the DAX HMEM platform device. This saved pointer will be used in a follow-up patch to allow late registration of SOFT RESERVED memory ranges. It also enables simplification of the walk_hmem_resources() by removing the need to pass a struct device argument. There are no functional changes. Co-developed-by: Nathan Fontenot Signed-off-by: Nathan Fontenot Co-developed-by: Terry Bowman Signed-off-by: Terry Bowman Signed-off-by: Smita Koralahalli --- drivers/dax/hmem/device.c | 4 ++-- drivers/dax/hmem/hmem.c | 9 ++++++--- include/linux/dax.h | 5 ++--- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/drivers/dax/hmem/device.c b/drivers/dax/hmem/device.c index f9e1a76a04a9..59ad44761191 100644 --- a/drivers/dax/hmem/device.c +++ b/drivers/dax/hmem/device.c @@ -17,14 +17,14 @@ static struct resource hmem_active =3D { .flags =3D IORESOURCE_MEM, }; =20 -int walk_hmem_resources(struct device *host, walk_hmem_fn fn) +int walk_hmem_resources(walk_hmem_fn fn) { struct resource *res; int rc =3D 0; =20 mutex_lock(&hmem_resource_lock); for (res =3D hmem_active.child; res; res =3D res->sibling) { - rc =3D fn(host, (int) res->desc, res); + rc =3D fn((int) res->desc, res); if (rc) break; } diff --git a/drivers/dax/hmem/hmem.c b/drivers/dax/hmem/hmem.c index 5e7c53f18491..3aedef5f1be1 100644 --- a/drivers/dax/hmem/hmem.c +++ b/drivers/dax/hmem/hmem.c @@ -9,6 +9,8 @@ static bool region_idle; module_param_named(region_idle, region_idle, bool, 0644); =20 +static struct platform_device *dax_hmem_pdev; + static int dax_hmem_probe(struct platform_device *pdev) { unsigned long flags =3D IORESOURCE_DAX_KMEM; @@ -59,9 +61,9 @@ static void release_hmem(void *pdev) platform_device_unregister(pdev); } =20 -static int hmem_register_device(struct device *host, int target_nid, - const struct resource *res) +static int hmem_register_device(int target_nid, const struct resource *res) { + struct device *host =3D &dax_hmem_pdev->dev; struct platform_device *pdev; struct memregion_info info; long id; @@ -125,7 +127,8 @@ static int hmem_register_device(struct device *host, in= t target_nid, =20 static int dax_hmem_platform_probe(struct platform_device *pdev) { - return walk_hmem_resources(&pdev->dev, hmem_register_device); + dax_hmem_pdev =3D pdev; + return walk_hmem_resources(hmem_register_device); } =20 static struct platform_driver dax_hmem_platform_driver =3D { diff --git a/include/linux/dax.h b/include/linux/dax.h index dcc9fcdf14e4..a4ad3708ea35 100644 --- a/include/linux/dax.h +++ b/include/linux/dax.h @@ -305,7 +305,6 @@ static inline void hmem_register_resource(int target_ni= d, struct resource *r) } #endif =20 -typedef int (*walk_hmem_fn)(struct device *dev, int target_nid, - const struct resource *res); -int walk_hmem_resources(struct device *dev, walk_hmem_fn fn); +typedef int (*walk_hmem_fn)(int target_nid, const struct resource *res); +int walk_hmem_resources(walk_hmem_fn fn); #endif --=20 2.17.1 From nobody Tue Oct 7 02:15:31 2025 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2068.outbound.protection.outlook.com [40.107.236.68]) (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 376C329E0EE; Tue, 15 Jul 2025 18:04:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.68 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752602678; cv=fail; b=QL+ZQaoi5Abo1wNEJDECbk0ICA2lplIdKOVwpXuvgngPustdIMQwLQ6yTPezCK0/+JMsBBX6ZrUCTVMxP8NTzvnUZUWjiLmv2XOuV7T2DlA7LElXVVFDyHx4xOCJFPfkJkFWpy91UG+AyA2pd4kONBiUFhNdQmv5S3ILaDXmnZg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752602678; c=relaxed/simple; bh=sNjcrVBkr/YrcPc3Cgi/6pQk0NNTnv36ho5N+9nm104=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=i+NQlmB0cacMmCopS4NAdAdqayNsW3gkNOuje2GwEiUJ5EGX0JEAOHNqFLjAVehnAgcnMObF21XKRfeMXlcL/TMVcpv4a5ylYuf7EeKf3SEOMgm7Wi0srblCayeGhdDGlH6W2ao/T5uAnVNHnsezodsMh8yrTDYXsyQt5PIhbnE= 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=lLKBcsmh; arc=fail smtp.client-ip=40.107.236.68 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="lLKBcsmh" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UUEL4e2O5b7UpjZcoouvzECBnu40+FPum2EHLEvzhN5x7in4vY0K0oLorifIZSCl4BayO0A/jgrue5uqa1NyvGCB1WQ3rq322+TF3+QN1gFi0pT7MUJWfi66ZOm+PFEWNvPDyZKG6M3bH3elLuqmQJzj96gRyZ3UJmpxP+WQjVZqhsmz7sqJSb1OGXthhgPuZXf7a9AzLOQFrEZWwZly4+J1zjOcJNunC3L1K+iZVlCyTFEIX2jpjCypwvbHluwCPu8NV6gtGhPzzIFIjANaZdNcXbzVhRciVoLZ7/tGNNIwuiexb7BD/SFEiI3F6O5D53v+Ycx/r659Ntu2oBVE1A== 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=2nBOiQREOdpxsTzMWk2zUprn2elJjcxh4Ts7G8tiLuY=; b=tG5QaYbnUG85UuwQVidy6b3jU9OJXHRB7d1GEvUzlvSw06CTHgdjaBxkYYKbUVdehEzCWCFwGg8ouyVkBPbKoOy99c9BpIsmxF5+Sb/fHt495HM455PYVobaBdLOe6HQ44GAJ4Nvp9Jg1nDyv33KD9bg4XtFB+HhDyPALRSdO4lDZEPuhPDX/YGmFGEk1JvmBM8lDu5wenvOqZGLu/sSRMXZC6khRGhLh8qW8+qEZTx71uf9ZAbQSrQKgVhZZJlrAq3H2w3Xl83nWCJKoPI7omwbD5QqnX6F6W995CxRlimPl8tZZSJumveSQZw175DdbNMF4aACDRUCxe0POlq3og== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.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=2nBOiQREOdpxsTzMWk2zUprn2elJjcxh4Ts7G8tiLuY=; b=lLKBcsmhJDpEbYfOBbiVHkwxcEPlsM+XoR6eohdGn/dWOEgfHkaQZ/FrmGaHAxyWknfrZt90o5yTGYN7z8pSDyCYfWMg+hB1NIJs+EF29iVvLeFN8u7ZFCma+0XgU62ixrxUvnCf936F+nhAycyxxA9x9bIaBZTQOTr3GqhUQnI= Received: from BY5PR17CA0063.namprd17.prod.outlook.com (2603:10b6:a03:167::40) by DS0PR12MB8367.namprd12.prod.outlook.com (2603:10b6:8:fd::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.35; Tue, 15 Jul 2025 18:04:32 +0000 Received: from SJ5PEPF000001D1.namprd05.prod.outlook.com (2603:10b6:a03:167:cafe::ab) by BY5PR17CA0063.outlook.office365.com (2603:10b6:a03:167::40) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8943.19 via Frontend Transport; Tue, 15 Jul 2025 18:04:32 +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=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ5PEPF000001D1.mail.protection.outlook.com (10.167.242.53) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8922.22 via Frontend Transport; Tue, 15 Jul 2025 18:04:31 +0000 Received: from ethanolx50f7host.amd.com (10.180.168.240) 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; Tue, 15 Jul 2025 13:04:30 -0500 From: Smita Koralahalli To: , , , , CC: Davidlohr Bueso , Jonathan Cameron , Dave Jiang , "Alison Schofield" , Vishal Verma , Ira Weiny , Dan Williams , Matthew Wilcox , Jan Kara , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Li Ming , Jeff Johnson , "Ying Huang" , Yao Xingtao , Peter Zijlstra , Greg KH , Nathan Fontenot , Smita Koralahalli , Terry Bowman , Robert Richter , Benjamin Cheatham , PradeepVineshReddy Kodamati , Zhijian Li Subject: [PATCH v5 6/7] dax/hmem, cxl: Defer DAX consumption of SOFT RESERVED resources until after CXL region creation Date: Tue, 15 Jul 2025 18:04:06 +0000 Message-ID: <20250715180407.47426-7-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250715180407.47426-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250715180407.47426-1-Smita.KoralahalliChannabasappa@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001D1:EE_|DS0PR12MB8367:EE_ X-MS-Office365-Filtering-Correlation-Id: 95859a01-17be-41d4-4e40-08ddc3ca0cad X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|36860700013|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?EM5mi5YNbjd/tqTZBpY/MIsMMgDmWEevBiw8YmXSj4lE2fZ3Vs+Od+nm22Zw?= =?us-ascii?Q?KsogjzRQVqFwywP9UeM7pnSZZ1qcQ/nmfjAH8vAaU2YXNNl/Um72b+pKgNK5?= =?us-ascii?Q?J+0gJGaptng3UWMAPyV2ktTof/BmfykZw5yqjhgXqPlZ5WtXcjReNFqdhDdL?= =?us-ascii?Q?Qy9dlecH+5K8FwVsc6a3cB3W7Uo6yd3YSEQS+qYSFYtJMwYQfJLvPXWtxW11?= =?us-ascii?Q?3Pq34QKOaxQVyfvjh8ZNhOF/+Y+eIdQzCWbYdATOgy1kDUHtfvEWuEiYck9A?= =?us-ascii?Q?mVfcIaWKzrydnTkoEPRrt9yRvkOlnLkKrQepGnfUUVsPeByI1P7FtAbyIoNt?= =?us-ascii?Q?f9aWUwdbctXTrNkl5SB75LJrefMXGTuYFc1kDAVWLJ9cbiEsNowtc8ELfLv0?= =?us-ascii?Q?NXJ3I0nZAg+Wdhzw8FetyZqjR4bClLJiwbYONxWrRjj2Lloi8YXmL/VINhEQ?= =?us-ascii?Q?W28ViAqISRW+XeoAzL1SIriHiTZAOQq3i7EN25IghGeHU7lRxV1DLvW+Rxm2?= =?us-ascii?Q?ofGLupNing9Dw8Cm8XAVlkmlTK76HNylYfUObL2a32QROeC3kpZLwFT29bw5?= =?us-ascii?Q?nIHTozkumUkCucTqG1Jn1LWvHRBAbvP2hDXFnFU5xyhgCbgNiyzHk3mF8UVV?= =?us-ascii?Q?L88GDGJx+lYtJ5hhEK8/YZ2yA1B3QGSWL3ftoFKo7O4imt9Dncouz3o5Etyt?= =?us-ascii?Q?LrbHkQkbmgeKTu9zSIArQgXmZNb6xNs9tCjOovTlvMD8fJnH/k8isa9r4C3F?= =?us-ascii?Q?Qh92GkFWKWkmSPtgI98j08ivZwrxsfVe9Ga159AVgjTl1MQi4ykkylAw/Ykv?= =?us-ascii?Q?yfCDWiDRDmjhBZWvflm841kItnmCTV5tdz+fw0623gHra1se9Bl+ej2SMhqu?= =?us-ascii?Q?usCUgCQTRf02YmCIOGIu7ZMo8aXfeNX49eE/qVdeb9Q3/EgwlI7FhXA5EklM?= =?us-ascii?Q?9gQtwv6sh5SsicEN4DhTsfndUd/386iVzkf9pGZk6Ugns4RtGi8sCgaBnJzu?= =?us-ascii?Q?49kw7L/72WHlhwZogQQVgf3Q9HE9NrmxYXha755OYtkkpxRvG6XYeevmT4Tj?= =?us-ascii?Q?TvUAjtdMPiTyaUlb66tPRjq3MO39ZABIOFVCi6iYUUnBNLaBGhuLvSZNWkTV?= =?us-ascii?Q?9T+xMH6Ve5P8l+JB/umqbyeCFd6GvDTj2XcmSIJncoJVf+OpTj5ELG91YJNc?= =?us-ascii?Q?VWbzgmAiDz3+Nq+SDlYyVvmyrMoO84uIubeDWTgM5pv5Z3LBif+RGiuCIwKL?= =?us-ascii?Q?eBz5C6Kr7EAYMBJSs7nVqSap7ZxcD16jp8tEMZivG5o+e7D9ns/cUhfDLH/2?= =?us-ascii?Q?C1GzHbrhdZZtubqsViIm8VnEtRW7F5vBaveNetNx6mojDWVHBf57D33IoZez?= =?us-ascii?Q?55Eye16euulsFowBSEyPJZbtScreI4vpXw1cCnPcx6l9gP0KDVslmG6FbNBR?= =?us-ascii?Q?XmjzMhBZSiJtzqgKBKx2VgEV5vpC1kqSHosw2Y2JF+yXszZoPaGFrTRfPwZi?= =?us-ascii?Q?4pZPoHnX7o6ss96UHlmKGg/gLWq8EZ2BAmPy?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(7416014)(36860700013)(1800799024)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jul 2025 18:04:31.8602 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 95859a01-17be-41d4-4e40-08ddc3ca0cad 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF000001D1.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8367 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Introduce a fallback registration mechanism in the DAX HMEM driver to enable deferred registration of SOFT RESERVED regions. This allows coordination with the CXL subsystem to avoid conflicts during CXL region setup. When CONFIG_CXL_ACPI is enabled, the DAX HMEM driver and HMAT skips walking SOFT RESERVED resources. Instead, DAX driver provides a fallback registration mechanism via hmem_register_fallback_handler() and hmem_fallback_register_device(). The CXL driver invokes hmem_fallback_register_device() after trimming soft reserves to register any remaining SOFT RESERVED regions that are not consumed by CXL. This ensures that the DAX driver does not consume memory ranges that are intended to be part of CXL regions. Co-developed-by: Nathan Fontenot Signed-off-by: Nathan Fontenot Co-developed-by: Terry Bowman Signed-off-by: Terry Bowman Signed-off-by: Smita Koralahalli --- drivers/acpi/numa/hmat.c | 4 ++++ drivers/cxl/core/region.c | 11 +++++++++ drivers/dax/hmem/Makefile | 1 + drivers/dax/hmem/device.c | 43 +++++++++++++++++----------------- drivers/dax/hmem/hmem.c | 6 +++++ drivers/dax/hmem/hmem_notify.c | 27 +++++++++++++++++++++ include/linux/dax.h | 2 ++ 7 files changed, 73 insertions(+), 21 deletions(-) create mode 100644 drivers/dax/hmem/hmem_notify.c diff --git a/drivers/acpi/numa/hmat.c b/drivers/acpi/numa/hmat.c index 9d9052258e92..8883fd4a229b 100644 --- a/drivers/acpi/numa/hmat.c +++ b/drivers/acpi/numa/hmat.c @@ -901,6 +901,10 @@ static void hmat_register_target_devices(struct memory= _target *target) if (!IS_ENABLED(CONFIG_DEV_DAX_HMEM)) return; =20 + /* Allow CXL to manage the dax devices if enabled */ + if (IS_ENABLED(CONFIG_CXL_ACPI)) + return; + for (res =3D target->memregions.child; res; res =3D res->sibling) { int target_nid =3D pxm_to_node(target->memory_pxm); =20 diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index 95951a1f1cab..b1fa38e0b987 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include "core.h" @@ -3603,10 +3604,20 @@ static int cxl_region_softreserv_update_cb(struct d= evice *dev, void *data) return 0; } =20 +static int cxl_softreserv_mem_register(struct resource *res, void *unused) +{ + hmem_fallback_register_device(phys_to_target_node(res->start), res); + return 0; +} + void cxl_region_softreserv_update(void) { bus_for_each_dev(&cxl_bus_type, NULL, NULL, cxl_region_softreserv_update_cb); + + /* Now register any remaining SOFT RESERVES with DAX */ + walk_iomem_res_desc(IORES_DESC_SOFT_RESERVED, IORESOURCE_MEM, + 0, -1, NULL, cxl_softreserv_mem_register); } EXPORT_SYMBOL_NS_GPL(cxl_region_softreserv_update, "CXL"); =20 diff --git a/drivers/dax/hmem/Makefile b/drivers/dax/hmem/Makefile index d4c4cd6bccd7..aa8742e20408 100644 --- a/drivers/dax/hmem/Makefile +++ b/drivers/dax/hmem/Makefile @@ -2,6 +2,7 @@ # device_hmem.o deliberately precedes dax_hmem.o for initcall ordering obj-$(CONFIG_DEV_DAX_HMEM_DEVICES) +=3D device_hmem.o obj-$(CONFIG_DEV_DAX_HMEM) +=3D dax_hmem.o +obj-y +=3D hmem_notify.o =20 device_hmem-y :=3D device.o dax_hmem-y :=3D hmem.o diff --git a/drivers/dax/hmem/device.c b/drivers/dax/hmem/device.c index 59ad44761191..cc1ed7bbdb1a 100644 --- a/drivers/dax/hmem/device.c +++ b/drivers/dax/hmem/device.c @@ -8,7 +8,6 @@ static bool nohmem; module_param_named(disable, nohmem, bool, 0444); =20 -static bool platform_initialized; static DEFINE_MUTEX(hmem_resource_lock); static struct resource hmem_active =3D { .name =3D "HMEM devices", @@ -35,9 +34,7 @@ EXPORT_SYMBOL_GPL(walk_hmem_resources); =20 static void __hmem_register_resource(int target_nid, struct resource *res) { - struct platform_device *pdev; struct resource *new; - int rc; =20 new =3D __request_region(&hmem_active, res->start, resource_size(res), "", 0); @@ -47,21 +44,6 @@ static void __hmem_register_resource(int target_nid, str= uct resource *res) } =20 new->desc =3D target_nid; - - if (platform_initialized) - return; - - pdev =3D platform_device_alloc("hmem_platform", 0); - if (!pdev) { - pr_err_once("failed to register device-dax hmem_platform device\n"); - return; - } - - rc =3D platform_device_add(pdev); - if (rc) - platform_device_put(pdev); - else - platform_initialized =3D true; } =20 void hmem_register_resource(int target_nid, struct resource *res) @@ -83,9 +65,28 @@ static __init int hmem_register_one(struct resource *res= , void *data) =20 static __init int hmem_init(void) { - walk_iomem_res_desc(IORES_DESC_SOFT_RESERVED, - IORESOURCE_MEM, 0, -1, NULL, hmem_register_one); - return 0; + struct platform_device *pdev; + int rc; + + if (!IS_ENABLED(CONFIG_CXL_ACPI)) { + walk_iomem_res_desc(IORES_DESC_SOFT_RESERVED, + IORESOURCE_MEM, 0, -1, NULL, + hmem_register_one); + } + + pdev =3D platform_device_alloc("hmem_platform", 0); + if (!pdev) { + pr_err("failed to register device-dax hmem_platform device\n"); + return -1; + } + + rc =3D platform_device_add(pdev); + if (rc) { + pr_err("failed to add device-dax hmem_platform device\n"); + platform_device_put(pdev); + } + + return rc; } =20 /* diff --git a/drivers/dax/hmem/hmem.c b/drivers/dax/hmem/hmem.c index 3aedef5f1be1..16873ae0a53b 100644 --- a/drivers/dax/hmem/hmem.c +++ b/drivers/dax/hmem/hmem.c @@ -128,6 +128,12 @@ static int hmem_register_device(int target_nid, const = struct resource *res) static int dax_hmem_platform_probe(struct platform_device *pdev) { dax_hmem_pdev =3D pdev; + + if (IS_ENABLED(CONFIG_CXL_ACPI)) { + hmem_register_fallback_handler(hmem_register_device); + return 0; + } + return walk_hmem_resources(hmem_register_device); } =20 diff --git a/drivers/dax/hmem/hmem_notify.c b/drivers/dax/hmem/hmem_notify.c new file mode 100644 index 000000000000..1b366ffbda66 --- /dev/null +++ b/drivers/dax/hmem/hmem_notify.c @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright(c) 2025 AMD Corporation. All rights reserved. */ + +#include +#include + +static walk_hmem_fn hmem_fallback_fn; +static DEFINE_SPINLOCK(hmem_notify_lock); + +void hmem_register_fallback_handler(walk_hmem_fn hmem_fn) +{ + guard(spinlock_irqsave)(&hmem_notify_lock); + hmem_fallback_fn =3D hmem_fn; +} +EXPORT_SYMBOL_GPL(hmem_register_fallback_handler); + +void hmem_fallback_register_device(int target_nid, const struct resource *= res) +{ + walk_hmem_fn hmem_fn; + + guard(spinlock)(&hmem_notify_lock); + hmem_fn =3D hmem_fallback_fn; + + if (hmem_fn) + hmem_fn(target_nid, res); +} +EXPORT_SYMBOL_GPL(hmem_fallback_register_device); diff --git a/include/linux/dax.h b/include/linux/dax.h index a4ad3708ea35..069ded715e5a 100644 --- a/include/linux/dax.h +++ b/include/linux/dax.h @@ -307,4 +307,6 @@ static inline void hmem_register_resource(int target_ni= d, struct resource *r) =20 typedef int (*walk_hmem_fn)(int target_nid, const struct resource *res); int walk_hmem_resources(walk_hmem_fn fn); +void hmem_register_fallback_handler(walk_hmem_fn hmem_fn); +void hmem_fallback_register_device(int target_nid, const struct resource *= res); #endif --=20 2.17.1 From nobody Tue Oct 7 02:15:31 2025 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2077.outbound.protection.outlook.com [40.107.244.77]) (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 E6E9C2BE630; Tue, 15 Jul 2025 18:04:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.244.77 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752602681; cv=fail; b=hjjtjCRZNRrqcH9mWYfDJpcIYaV2z0OdJuzmRQnBo3TMnlmBK52Z/FWEnYn1HuqCQKiDKbV6oFkfqVaRHy2GuIsAHMg4kMNcULlG2FSRazUTxkECBee88HDS8JR7TVvX3bjCv0Z+ftzur2LHjl00p0ntFixQyWuMrF2Y2ZMDE3c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752602681; c=relaxed/simple; bh=CnCOih+6DG6cc7LLPNYs4TsTogEbv/xz8U4CS7ba0q0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=NRARNStVNsHawlkWSzP5pYo5STdLISCQbXpydUwGq9NGq38dRkCfCJEpowo9Va/V6XKJTO/Ojmk880N1ePKTFs0o2XQzthvqFCd5hrG6J7C2HCXS53hrIW+wzRW8PuJVqXyivQ4b9iatpZsl6vFBE2MxjcNenn2T6ozarndAnRk= 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=twJVUQ7L; arc=fail smtp.client-ip=40.107.244.77 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="twJVUQ7L" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VltTdtmoyRL40oxx6lLFcUaoSN0dIvT/t34d1SZATGzQ4fq+3DD6GPMO3IDGYFCi84nWwikcnHBcIyrSMqyG5RPTVBbf/88zoQkq4kH0Jo6CU5IL45+HafVF8dOjde8rOh5sIUuMiGj6YeHaPVdnXCO9d8ocqyuqv/e+YUIhmXdkQr9UjRWIYQRfUQRC+YBREXAtGlx6JON9XFMPgIVLYLF0KwL5Gq7aTPymkXUqxmHzoflDZDZeWdoG7z/SBlO5bYv9qZXSuF5gB1PaqiV6pDzxl/AR9h9FBbYAuZZUGkwfEQHnr6m87IrlWXOPIyUhwvoOf43vDUTa58ttzKPqNQ== 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=G6+VvgOWtMjk4Y0Q9TcpPy0GcOXf4NZ8T3smecIRPZg=; b=RggIlQ1HDL3IDhSsD/Ywc2cQlPhUp08IoVJO2sNuorJKI+MN/bSscQrvX6j9JZoTgE4cHgr/Bmxz+D1zcJsgomkXhepqq265xSM3um1p4eHh1kvzOULct26gW6sOn1Y5tT9svt9ltcZIJbpHtn8d/wn3Yhd6EMarigc5pgrxprIPWZu8SVqBFawzBSmS7SH9UL1ZYhZxZmQYJkNv93NvxZrxZqfaJI2MbfFv6DOXYmrzJuCbnWoStNOVCnqLdwF674v1ImlKV8DxBDtjcm3tat33LesTWT1oLqSfVf4nVuvKc55M3OShZMt+4XwdMnKXgHV+yiLRq69nzCNEco83jg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.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=G6+VvgOWtMjk4Y0Q9TcpPy0GcOXf4NZ8T3smecIRPZg=; b=twJVUQ7LLPGD0z4jV1sV2ojA1NFLg7vYVs8NO/JVEcStSiaUgmR9HacGp0+giSRQ5Q0IS1Ov27Xx9vA0CoVEzOpL48TKu8vgE8W8emMzunktdEZH/v4K/S2Z6hZsXura6QlV5/2Z/rKJy5JixhgTvieuYdBVCwbG+p8unoCTaUs= Received: from BY3PR04CA0014.namprd04.prod.outlook.com (2603:10b6:a03:217::19) by DM4PR12MB7766.namprd12.prod.outlook.com (2603:10b6:8:101::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.35; Tue, 15 Jul 2025 18:04:37 +0000 Received: from SJ5PEPF000001D0.namprd05.prod.outlook.com (2603:10b6:a03:217:cafe::36) by BY3PR04CA0014.outlook.office365.com (2603:10b6:a03:217::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8922.33 via Frontend Transport; Tue, 15 Jul 2025 18:04:37 +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=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ5PEPF000001D0.mail.protection.outlook.com (10.167.242.52) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8922.22 via Frontend Transport; Tue, 15 Jul 2025 18:04:37 +0000 Received: from ethanolx50f7host.amd.com (10.180.168.240) 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; Tue, 15 Jul 2025 13:04:31 -0500 From: Smita Koralahalli To: , , , , CC: Davidlohr Bueso , Jonathan Cameron , Dave Jiang , "Alison Schofield" , Vishal Verma , Ira Weiny , Dan Williams , Matthew Wilcox , Jan Kara , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Li Ming , Jeff Johnson , "Ying Huang" , Yao Xingtao , Peter Zijlstra , Greg KH , Nathan Fontenot , Smita Koralahalli , Terry Bowman , Robert Richter , Benjamin Cheatham , PradeepVineshReddy Kodamati , Zhijian Li Subject: [PATCH v5 7/7] dax/hmem: Preserve fallback SOFT RESERVED regions if DAX HMEM loads late Date: Tue, 15 Jul 2025 18:04:07 +0000 Message-ID: <20250715180407.47426-8-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250715180407.47426-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250715180407.47426-1-Smita.KoralahalliChannabasappa@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001D0:EE_|DM4PR12MB7766:EE_ X-MS-Office365-Filtering-Correlation-Id: 9fae8456-d4d0-43e4-6ae4-08ddc3ca0fd7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|7416014|82310400026|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?1+OLS+w25xnx1ozt0pjA/srbemWhaWb6fTqtW+jC53w+0HqWi1BAvldHlbIa?= =?us-ascii?Q?eSTDA+OkfhRmRZ4DXQLwpYh67mfzM1+nTLypIXfhceLmxMTLc6TXICejjGUF?= =?us-ascii?Q?dmzh/+v3vNKcIxOHUyJbR6/6K7w2vg3JUJyt4cpspLaSCFV7o0arRIgIu5VF?= =?us-ascii?Q?gOwKkwBnZZGcorAhiAxenWFffUg/dRAoXbLSLbLkn52hguZK4Hy5EIkYca+G?= =?us-ascii?Q?8n0mZGH3m6Tqb7VrMNDg/ZSgUsiwSKk+EHjF6pnsr7pycqatz3e/+AWM7Hud?= =?us-ascii?Q?zxo+fc4S515f10/N2/k2S/SY7/YUSzTxAb8iuXvJD8uFCkPZ4WKYvTIbSP88?= =?us-ascii?Q?FXeyd0KOlEadHsFERFIctm2M+ux2nRLN5nfAvbqvfodmBMFcq8dfS1V248gq?= =?us-ascii?Q?hKUjgB42VftfUvxto6imyCAncdPWDHn0SduTp6zqFwz9vZp8VBWg/6DrEdEf?= =?us-ascii?Q?BpmbvHk5CI9bFntZagbpQVo3A6Rl0xD7MBzGGwFccWfifp1UQZ89Up26gwkQ?= =?us-ascii?Q?O7G/sPEABIUQsTqKAEjeSIzIUcBZkwRLGQprLhQqRj1J8lTY5sA687MxdyYi?= =?us-ascii?Q?aTqd/1BoZ7q8peTmNwuuqXwNYadoQ1+1gvmy4b9mn2vIZopjyzfspB44+UI4?= =?us-ascii?Q?PnmbcWTataQSmGd65R/FUi3OwNnHUOhHx55vkz67QCbtodffzTodAPI/iYN1?= =?us-ascii?Q?bTmojKGhTtzbp8pciNolSiyUPAdSH8+/ssJbiZR5ESGbHnPK0MHPt29Va7Oh?= =?us-ascii?Q?6uqa9fHFA9a0TRN7tiRE2kWO4sEeca7JN2xyBSuHV6B2o44e4sH5bT8sNGcT?= =?us-ascii?Q?7TvZpyIsQBVHr9VP2bna1PzDRBbMO7H2RiE061pgvXk9HUbitu/2zv6MxBGy?= =?us-ascii?Q?8MX3Zn71d4T3w0OmZiGXPtdNFSfX9mUQ5Tu7tm9wbJMEPvv1/AXMTa3J+4FZ?= =?us-ascii?Q?cYSxAEUPmQGWxHq1RboMVguZ0fJxJz6aw4ErfRD9Hh7gszXsEp4N3brzUb4h?= =?us-ascii?Q?DimunDPkA5TFr/WT4yiPjyJ317Gy5yCKqNO00o76GYR5Zf4+lVRa2serbjh8?= =?us-ascii?Q?2DSxX0ND70bjJJM94l+AB+6MB0WNdhoeABtCwHIR/3nSEgerZ4duRl+Jr6F8?= =?us-ascii?Q?awkxPGF/mXYU3lx02ArGo6Pwfb3lKWJw7AfbKMG1RwiZk1x/OiXsrMwU1B5W?= =?us-ascii?Q?K5ERek0mJIrT+8FZ1LwpGR29NyUNo/lQXr9mLL5T3tvtGCr9JETBubjRslrD?= =?us-ascii?Q?eAEhAqQg5x2zmGJTk2mPVBrvy7JsOWnyzcFnmQogqkNH3NRl2SU/HGjxAOks?= =?us-ascii?Q?vweE5HvJqdxDK2yqGusOcFtKgzKqZBtmqaCJFdd/S8hB845evWipdpydHBLU?= =?us-ascii?Q?C8Hmuo02d3Q4VLyteVnNMAXEdwOS8QjkBOmEkuLMq2j03N50i6JvaSgcAAX1?= =?us-ascii?Q?5evQ4hqS7c6FEtjR/Z+zbBcqskElg7Gl+iEHswW5y+bRUVp1P4wlxJGgfPLR?= =?us-ascii?Q?vv5Mc07pPUQzn973OYxsGkSUKXF28eV8pQ+a?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(7416014)(82310400026)(376014)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jul 2025 18:04:37.1719 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9fae8456-d4d0-43e4-6ae4-08ddc3ca0fd7 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF000001D0.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB7766 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" After CXL completes trimming SOFT RESERVED ranges that intersect with CXL regions, it invokes hmem_fallback_register_device() to register any leftover ranges. If this occurs before the DAX HMEM driver has initialized, the call becomes a no-op and those resources are lost. To prevent this, store fallback-registered resources in a separate deferred tree (hmem_deferred_active). When the DAX HMEM driver is initialized, it walks this deferred list to properly register DAX devices. Signed-off-by: Smita Koralahalli --- drivers/dax/hmem/device.c | 17 +++++++++++++---- drivers/dax/hmem/hmem.c | 1 - drivers/dax/hmem/hmem_notify.c | 2 ++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/drivers/dax/hmem/device.c b/drivers/dax/hmem/device.c index cc1ed7bbdb1a..41c5886a30d1 100644 --- a/drivers/dax/hmem/device.c +++ b/drivers/dax/hmem/device.c @@ -16,13 +16,21 @@ static struct resource hmem_active =3D { .flags =3D IORESOURCE_MEM, }; =20 +static struct resource hmem_deferred_active =3D { + .name =3D "Deferred HMEM devices", + .start =3D 0, + .end =3D -1, + .flags =3D IORESOURCE_MEM, +}; +static struct resource *hmem_resource_root =3D &hmem_active; + int walk_hmem_resources(walk_hmem_fn fn) { struct resource *res; int rc =3D 0; =20 mutex_lock(&hmem_resource_lock); - for (res =3D hmem_active.child; res; res =3D res->sibling) { + for (res =3D hmem_resource_root->child; res; res =3D res->sibling) { rc =3D fn((int) res->desc, res); if (rc) break; @@ -36,8 +44,8 @@ static void __hmem_register_resource(int target_nid, stru= ct resource *res) { struct resource *new; =20 - new =3D __request_region(&hmem_active, res->start, resource_size(res), "", - 0); + new =3D __request_region(hmem_resource_root, res->start, + resource_size(res), "", 0); if (!new) { pr_debug("hmem range %pr already active\n", res); return; @@ -72,7 +80,8 @@ static __init int hmem_init(void) walk_iomem_res_desc(IORES_DESC_SOFT_RESERVED, IORESOURCE_MEM, 0, -1, NULL, hmem_register_one); - } + } else + hmem_resource_root =3D &hmem_deferred_active; =20 pdev =3D platform_device_alloc("hmem_platform", 0); if (!pdev) { diff --git a/drivers/dax/hmem/hmem.c b/drivers/dax/hmem/hmem.c index 16873ae0a53b..76a381c274a8 100644 --- a/drivers/dax/hmem/hmem.c +++ b/drivers/dax/hmem/hmem.c @@ -131,7 +131,6 @@ static int dax_hmem_platform_probe(struct platform_devi= ce *pdev) =20 if (IS_ENABLED(CONFIG_CXL_ACPI)) { hmem_register_fallback_handler(hmem_register_device); - return 0; } =20 return walk_hmem_resources(hmem_register_device); diff --git a/drivers/dax/hmem/hmem_notify.c b/drivers/dax/hmem/hmem_notify.c index 1b366ffbda66..6c276c5bd51d 100644 --- a/drivers/dax/hmem/hmem_notify.c +++ b/drivers/dax/hmem/hmem_notify.c @@ -23,5 +23,7 @@ void hmem_fallback_register_device(int target_nid, const = struct resource *res) =20 if (hmem_fn) hmem_fn(target_nid, res); + else + hmem_register_resource(target_nid, (struct resource *)res); } EXPORT_SYMBOL_GPL(hmem_fallback_register_device); --=20 2.17.1