From nobody Sat Oct 4 00:33:13 2025 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2085.outbound.protection.outlook.com [40.107.237.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 D1F9928B4FA; Fri, 22 Aug 2025 03:42:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.85 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755834143; cv=fail; b=so3gC7hNrYjQjxok/cQDiPSK4A4S6FWyciaNHMFZ/6XAlH8K5hXj74TawIFJeczuTDnmXCXyY5HMM1Z/YKVg/yuNGpNcyBk3nH1PkIpjrg8/QtEq612EoerzeWhOobIjx46ETWq0iPory1wWjgUnhD722Gk5jwNdWFQOWeMB3LE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755834143; c=relaxed/simple; bh=wiMk9nau87WssVgq+MdAtePeaukk24zZ/2NJ1QbOqUs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=lP1cWiItpA5Q7Vt3pv91cj0URAyNRbUn2FYUA1ziKVPwUmbtYRj7ihSAs+37MyMFcTGwBqA066nLg2GCRStQWP0nPU7HU9Ygufcr5QK8ZsLfrtHtdgdxGTOfncZntHj1rC10NNEpfmMZaenhAPZ8aYrPQ4PLAwKuD6CN1RV1H+Q= 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=Gg/IDwNg; arc=fail smtp.client-ip=40.107.237.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="Gg/IDwNg" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LPW8pQcHPJ03Z++w58lGKEGRu9fEKCBpSI+5TD8bwCX9QItgGcyCQL9W3iU7sRXOrPB2cSPsyIU4eYavBNlyXgMPgIVhr3FXTII3CgHCpkAlprH0ZW/6tFkvqWfQhzId0oB/fy6Goqd4KSZT8Gsgnh4cwgZXHuHkuAkeOjFempqIc8Pv10LS/Rt2And7uv4j7/iggT5/7RyUJoK9PWOwFr3/wnF3SO+hsLHPpCO6KbFVfVSDkCi1PoZ2Zuj/KKKis34os8fQXlw1l/YJ8JlM8ob12Ui9VzdS9RE3mrXC66dNCw36DHyn5Csd8LMP2h27L+9r8tPZAIfWCg5siGDB6Q== 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=pRIVC+g7Yqlxa6QC9HxZd2wNcXIYl+fV8j8TDOPJkIE=; b=Bqq1/XQVgLQT+JtbrsLEUwCt17W0hhoU/ROrpw2rJW8ycbK1crmlBr3yaFZnUnDCbTGIJ0BuVXozp1W/0Ikp7WO5yYUvzu0HhwrOo7H9G8vBdvqUSDfThVQFBrVhlsI8MNvKLcqEIXQvq89gpw8DC5W+B3qBZURNjHxc12hdKpwQcX9cTuyN1RSEnUvqDZuQkIoN6QUiVCot4zyFP89V05DG66JVuNhRk5IUBvNHLwLtmro7A+7+tJ3HKlTvr2bjqiXcnkvN5UgTviLUZbhhatxNqIdd+ZPvO2b67Dz2sS4CoewGoFoHO99pF9KfDrORckvqqbwOGPOU0YeN4/3V9w== 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=pRIVC+g7Yqlxa6QC9HxZd2wNcXIYl+fV8j8TDOPJkIE=; b=Gg/IDwNg8wcCne3VMH2QG1aw7uh3xmfHO51V7mwgOsXdOwzo/yhvcIqqmfdZcbHqkVxb7/tt028aKPfK8Cqi/wPkLdHTw1a4EmP7IVBTR3ZtwNkFhJ7qc/EX/wtNx5fno571a9B44cgp7guAGXG+1ASKW5UtGkzG2DvpK30C2WE= Received: from BY5PR13CA0028.namprd13.prod.outlook.com (2603:10b6:a03:180::41) by DS0PR12MB7629.namprd12.prod.outlook.com (2603:10b6:8:13e::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.14; Fri, 22 Aug 2025 03:42:16 +0000 Received: from SJ1PEPF000026C7.namprd04.prod.outlook.com (2603:10b6:a03:180:cafe::7e) by BY5PR13CA0028.outlook.office365.com (2603:10b6:a03:180::41) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9073.7 via Frontend Transport; Fri, 22 Aug 2025 03:42:15 +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 SJ1PEPF000026C7.mail.protection.outlook.com (10.167.244.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.9052.8 via Frontend Transport; Fri, 22 Aug 2025 03:42:15 +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; Thu, 21 Aug 2025 22:42:14 -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 1/6] dax/hmem, e820, resource: Defer Soft Reserved registration until hmem is ready Date: Fri, 22 Aug 2025 03:41:57 +0000 Message-ID: <20250822034202.26896-2-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250822034202.26896-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250822034202.26896-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: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF000026C7:EE_|DS0PR12MB7629:EE_ X-MS-Office365-Filtering-Correlation-Id: 4510eab9-b64a-404f-d7e9-08dde12de33a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|36860700013|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?bt0jF5ev+DKjs8xay/V1rp6Hp7NnQRnUngUj39Rb4dyfW4kCswgzU9jbuBHP?= =?us-ascii?Q?zkzAmuJH11RREAEhhhNhgLF5UJr3akVKJn+fGzS8caHS+h5vJxWkqIbC+IGD?= =?us-ascii?Q?6Ua1W/O7sSBRJRiN86WjBv755/6ha5vnxGriBbFRerx4n6dx+0p8qwtdVIXE?= =?us-ascii?Q?wkpkzdHUnhOp5RMDpODsKmNVPPf6nHfztZRq8nTTFXVM5t3bqePY9RTpiyI7?= =?us-ascii?Q?Kji0hAiX9VyxtrOOhgKxi53dB9JtYE1prCDihgPczDvUve+mmsN6/Y5IjR0+?= =?us-ascii?Q?XjnxFG7G762NP5QnwLTeXDjN/RA4jwsvmFnWs2MuUgaL5e3u7XBSFYwjbJmu?= =?us-ascii?Q?zD5oV9WuyOAHedREf3lQMcTlbnivSiqJSCs9kQ+g3lm8UU3IPgsgpo2zIAPr?= =?us-ascii?Q?bkyoEpuRVneUYtWquzXK5V81Sx5qjyTKKsVeH9ZR5v4el03DAtCjgIi80GCO?= =?us-ascii?Q?k+8qToyzakQn/99/gJ/lAzBUW3FjnFwS3/S7ISDbV4IJcEEIb2Z1xx5zWq41?= =?us-ascii?Q?v3aaK2kfAE/FAaoTOxZsRN5IYN7sxykDR41VmEsIToAEOfScf4D4THO0Nm3K?= =?us-ascii?Q?/8/O2jvfeUR09yWXI+OfG+hN0NGHlnpkOTUhaM9xDvyY/xjqdoSwN7C4alxt?= =?us-ascii?Q?YElxYrPvVwLpmLgQ4wv/Vtw2nadqxv12IkqsSILvyJqoyYbbJWp9eRcXlCZr?= =?us-ascii?Q?yYFD3LdrmZB+6hxGRSu/CFWyUjcmnxfWbGMAFBL4zTTLScje+ixVtdH2nZWz?= =?us-ascii?Q?yW4Qv2zdnwVt4nZb2tQoBWREsuvpG5JJIavx0sONB92AuwX8YmO/Pu0R3k8y?= =?us-ascii?Q?pDS70tCyGly3AlcRtGh3wWVz7DzDTwwVPsJmIixzFTGrKQv3Lz0UNe9g+ON2?= =?us-ascii?Q?vYGLtUFGT2VS2IwkSniyViskGPfva2WQJryhwt23qA/Fnvo5RuoXXFZH8oYY?= =?us-ascii?Q?6PyV2BiPz5EhrSBJEI2ji0hyCLCzZzVdn/3vk4MFckWev69pi0QvKphaxjVw?= =?us-ascii?Q?V+fJRHdrMtFBJMKEOgU+BRLZONTFe365Cy1OJzjvrM3eIeocVIDfRY3yrQq0?= =?us-ascii?Q?9ZFCNRzFfcTaTZ2rS6c4qrSgfx+aPsO5+wP6Adcz+Ojdq0jeiznfaB3gt+kS?= =?us-ascii?Q?U5N44InDplTxzoFAxIeFEKscIs+XNtIWfg0lqu4GaqqTAqY1NQD5OftXxT1L?= =?us-ascii?Q?ykB9S1/0zq+xVv4lSaISrFUgNjq9GU9zGAcQGgiVYTNr560oRtNGLmHi75iL?= =?us-ascii?Q?NXaztSjUYgV2Etlk48aWwrEMd4bEaO6Zep8Bup1CbmvHmfdl4246VEs/XuKp?= =?us-ascii?Q?uQ5yrHmMuZkA2aLNU6Mki060m9clxVzOW8J215D09wKub0Z+4+mnoCIb/eYo?= =?us-ascii?Q?/I+Uk46fslQp+QlIB2TEklbdOLscyBBkJjnSf6KlCC+F+7eEn7qabbiVp2bf?= =?us-ascii?Q?UVyzBAGGoZ62JeRoRPX2lPboLWuGgIBkMhMZhKkSgDw5YsErikZMjEA0Viex?= =?us-ascii?Q?r/bLPDGC5j0W8KUmNh4CjDY9sykQDcXb1NCE?= 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)(1800799024)(82310400026)(36860700013)(7416014)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Aug 2025 03:42:15.7179 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4510eab9-b64a-404f-d7e9-08dde12de33a 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: SJ1PEPF000026C7.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7629 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Insert Soft Reserved memory into a dedicated soft_reserve_resource tree instead of the iomem_resource tree at boot. Publishing Soft Reserved ranges into iomem too early causes conflicts with CXL hotplug and region assembly failure, especially when Soft Reserved overlaps CXL regions. Re-inserting these ranges into iomem will be handled in follow-up patches, after ensuring CXL window publication ordering is stabilized and when the dax_hmem is ready to consume them. This avoids trimming or deleting resources later and provides a cleaner handoff between EFI-defined memory and CXL resource management. Signed-off-by: Smita Koralahalli Signed-off-by: Dan Williams --- arch/x86/kernel/e820.c | 2 +- drivers/dax/hmem/device.c | 4 +-- drivers/dax/hmem/hmem.c | 8 +++++ include/linux/ioport.h | 24 +++++++++++++ kernel/resource.c | 73 +++++++++++++++++++++++++++++++++------ 5 files changed, 97 insertions(+), 14 deletions(-) diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c index c3acbd26408b..aef1ff2cabda 100644 --- a/arch/x86/kernel/e820.c +++ b/arch/x86/kernel/e820.c @@ -1153,7 +1153,7 @@ void __init e820__reserve_resources_late(void) res =3D e820_res; for (i =3D 0; i < e820_table->nr_entries; i++) { if (!res->parent && res->end) - insert_resource_expand_to_fit(&iomem_resource, res); + insert_resource_late(res); res++; } =20 diff --git a/drivers/dax/hmem/device.c b/drivers/dax/hmem/device.c index f9e1a76a04a9..22732b729017 100644 --- a/drivers/dax/hmem/device.c +++ b/drivers/dax/hmem/device.c @@ -83,8 +83,8 @@ 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); + walk_soft_reserve_res_desc(IORES_DESC_SOFT_RESERVED, IORESOURCE_MEM, 0, + -1, NULL, hmem_register_one); return 0; } =20 diff --git a/drivers/dax/hmem/hmem.c b/drivers/dax/hmem/hmem.c index c18451a37e4f..d5b8f06d531e 100644 --- a/drivers/dax/hmem/hmem.c +++ b/drivers/dax/hmem/hmem.c @@ -73,10 +73,18 @@ static int hmem_register_device(struct device *host, in= t target_nid, return 0; } =20 +#ifdef CONFIG_EFI_SOFT_RESERVE + rc =3D region_intersects_soft_reserve(res->start, resource_size(res), + IORESOURCE_MEM, + IORES_DESC_SOFT_RESERVED); + if (rc !=3D REGION_INTERSECTS) + return 0; +#else rc =3D region_intersects(res->start, resource_size(res), IORESOURCE_MEM, IORES_DESC_SOFT_RESERVED); if (rc !=3D REGION_INTERSECTS) return 0; +#endif =20 id =3D memregion_alloc(GFP_KERNEL); if (id < 0) { diff --git a/include/linux/ioport.h b/include/linux/ioport.h index e8b2d6aa4013..889bc4982777 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h @@ -232,6 +232,9 @@ struct resource_constraint { /* PC/ISA/whatever - the normal PC address spaces: IO and memory */ extern struct resource ioport_resource; extern struct resource iomem_resource; +#ifdef CONFIG_EFI_SOFT_RESERVE +extern struct resource soft_reserve_resource; +#endif =20 extern struct resource *request_resource_conflict(struct resource *root, s= truct resource *new); extern int request_resource(struct resource *root, struct resource *new); @@ -255,6 +258,22 @@ int adjust_resource(struct resource *res, resource_siz= e_t start, resource_size_t size); resource_size_t resource_alignment(struct resource *res); =20 + +#ifdef CONFIG_EFI_SOFT_RESERVE +static inline void insert_resource_late(struct resource *new) +{ + if (new->desc =3D=3D IORES_DESC_SOFT_RESERVED) + insert_resource_expand_to_fit(&soft_reserve_resource, new); + else + insert_resource_expand_to_fit(&iomem_resource, new); +} +#else +static inline void insert_resource_late(struct resource *new) +{ + insert_resource_expand_to_fit(&iomem_resource, new); +} +#endif + /** * resource_set_size - Calculate resource end address from size and start * @res: Resource descriptor @@ -409,6 +428,11 @@ walk_system_ram_res_rev(u64 start, u64 end, void *arg, extern int walk_iomem_res_desc(unsigned long desc, unsigned long flags, u64 start, u6= 4 end, void *arg, int (*func)(struct resource *, void *)); +int walk_soft_reserve_res_desc(unsigned long desc, unsigned long flags, + u64 start, u64 end, void *arg, + int (*func)(struct resource *, void *)); +int region_intersects_soft_reserve(resource_size_t start, size_t size, + unsigned long flags, unsigned long desc); =20 struct resource *devm_request_free_mem_region(struct device *dev, struct resource *base, unsigned long size); diff --git a/kernel/resource.c b/kernel/resource.c index f9bb5481501a..8479a99441e2 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -321,13 +321,14 @@ static bool is_type_match(struct resource *p, unsigne= d long flags, unsigned long } =20 /** - * find_next_iomem_res - Finds the lowest iomem resource that covers part = of - * [@start..@end]. + * find_next_res - Finds the lowest resource that covers part of + * [@start..@end]. * * If a resource is found, returns 0 and @*res is overwritten with the part * of the resource that's within [@start..@end]; if none is found, returns * -ENODEV. Returns -EINVAL for invalid parameters. * + * @parent: resource tree root to search * @start: start address of the resource searched for * @end: end address of same resource * @flags: flags which the resource must have @@ -337,9 +338,9 @@ static bool is_type_match(struct resource *p, unsigned = long flags, unsigned long * The caller must specify @start, @end, @flags, and @desc * (which may be IORES_DESC_NONE). */ -static int find_next_iomem_res(resource_size_t start, resource_size_t end, - unsigned long flags, unsigned long desc, - struct resource *res) +static int find_next_res(struct resource *parent, resource_size_t start, + resource_size_t end, unsigned long flags, + unsigned long desc, struct resource *res) { struct resource *p; =20 @@ -351,7 +352,7 @@ static int find_next_iomem_res(resource_size_t start, r= esource_size_t end, =20 read_lock(&resource_lock); =20 - for_each_resource(&iomem_resource, p, false) { + for_each_resource(parent, p, false) { /* If we passed the resource we are looking for, stop */ if (p->start > end) { p =3D NULL; @@ -382,16 +383,23 @@ static int find_next_iomem_res(resource_size_t start,= resource_size_t end, return p ? 0 : -ENODEV; } =20 -static int __walk_iomem_res_desc(resource_size_t start, resource_size_t en= d, - unsigned long flags, unsigned long desc, - void *arg, - int (*func)(struct resource *, void *)) +static int find_next_iomem_res(resource_size_t start, resource_size_t end, + unsigned long flags, unsigned long desc, + struct resource *res) +{ + return find_next_res(&iomem_resource, start, end, flags, desc, res); +} + +static int walk_res_desc(struct resource *parent, resource_size_t start, + resource_size_t end, unsigned long flags, + unsigned long desc, void *arg, + int (*func)(struct resource *, void *)) { struct resource res; int ret =3D -EINVAL; =20 while (start < end && - !find_next_iomem_res(start, end, flags, desc, &res)) { + !find_next_res(parent, start, end, flags, desc, &res)) { ret =3D (*func)(&res, arg); if (ret) break; @@ -402,6 +410,15 @@ static int __walk_iomem_res_desc(resource_size_t start= , resource_size_t end, return ret; } =20 +static int __walk_iomem_res_desc(resource_size_t start, resource_size_t en= d, + unsigned long flags, unsigned long desc, + void *arg, + int (*func)(struct resource *, void *)) +{ + return walk_res_desc(&iomem_resource, start, end, flags, desc, arg, func); +} + + /** * walk_iomem_res_desc - Walks through iomem resources and calls func() * with matching resource ranges. @@ -426,6 +443,26 @@ int walk_iomem_res_desc(unsigned long desc, unsigned l= ong flags, u64 start, } EXPORT_SYMBOL_GPL(walk_iomem_res_desc); =20 +#ifdef CONFIG_EFI_SOFT_RESERVE +struct resource soft_reserve_resource =3D { + .name =3D "Soft Reserved", + .start =3D 0, + .end =3D -1, + .desc =3D IORES_DESC_SOFT_RESERVED, + .flags =3D IORESOURCE_MEM, +}; +EXPORT_SYMBOL_GPL(soft_reserve_resource); + +int walk_soft_reserve_res_desc(unsigned long desc, unsigned long flags, + u64 start, u64 end, void *arg, + int (*func)(struct resource *, void *)) +{ + return walk_res_desc(&soft_reserve_resource, start, end, flags, desc, + arg, func); +} +EXPORT_SYMBOL_GPL(walk_soft_reserve_res_desc); +#endif + /* * This function calls the @func callback against all memory ranges of type * System RAM which are marked as IORESOURCE_SYSTEM_RAM and IORESOUCE_BUSY. @@ -648,6 +685,20 @@ int region_intersects(resource_size_t start, size_t si= ze, unsigned long flags, } EXPORT_SYMBOL_GPL(region_intersects); =20 +int region_intersects_soft_reserve(resource_size_t start, size_t size, + unsigned long flags, unsigned long desc) +{ + int ret; + + read_lock(&resource_lock); + ret =3D __region_intersects(&soft_reserve_resource, start, size, flags, + desc); + read_unlock(&resource_lock); + + return ret; +} +EXPORT_SYMBOL_GPL(region_intersects_soft_reserve); + void __weak arch_remove_reservations(struct resource *avail) { } --=20 2.17.1 From nobody Sat Oct 4 00:33:13 2025 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2045.outbound.protection.outlook.com [40.107.244.45]) (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 7581028D83D; Fri, 22 Aug 2025 03:42:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.244.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755834145; cv=fail; b=VkrH3hap1BNBJqdFjAJeEE2E5Bew+A7dJlbEOvGlwkKa8tSsaErTwz2e7YdKtVyGx1MNnkZzC/i+LNUrv43uIt/PG86M4wflbXfh+AYzDwQ3q+UZbh8YQoNHCZkLHso5Cs9UTb/+0XbkrDQtgA/VmOYM74AZ9PwDxv+6SUjzfbY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755834145; c=relaxed/simple; bh=GLsjNpbsy1Jpga/89eMrs0wbKIHAEjhOIPLfUG2hgV8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=haDg1O6O+4WCNLntuBtmyTy44jZm1XuM2q62LKItrJaNRgi6+HvyA+FJzHLxYQKNGhAv2YKOvzNqEISPPVqEFH3cERCI4cm2JOcVZYQPg/deBHYRWNsvcDcDoMUmvcIIRkR4QwHCv4jfXZb9UjrCoHMRmmx4Y73xcaAnif6MhbU= 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=WGnVk+x7; arc=fail smtp.client-ip=40.107.244.45 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="WGnVk+x7" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jVbv0BUAsCoxa7inhqEZpnYD1ZDVpyzecSolDLJnnEHdYHpt73DMzMBzizL4SJeUSqlS4/8NrRBm252rRkz4f9xJ6g8is0CnUKQt2Aly61iYHFR4X9b5i2vmE+8xt+tzgfOG0FYZ0pTHExr4J4t9wgy6TCyaSBQPyoMx5K0tpaMNxoYR3Ot/jBT0aY2b8ON1nus2GbrsHnjQ99gf7+mcBhGHLCQvoj0DZlVRkrUJbt2MCDyLTiA/OK4ym5eQbxVEqGwyPcYlkQOk4tvS10F7mufWHAkCIcuWjeMATrwslofofMycsh5Yt11NnocHAwQf4k23qzpDt3DBhYfsbU9BKg== 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=QvvpaH957xAQl6KpXPvvoBnQ0bdUsdx6q8ABmS07MFE=; b=x7mZVcnwMfU3yo8B0+7WRwvIgTrpOfty7GoxqSeLqq8T9kuvcp0ZcApSFRw6Zs8m8gp2IOIB9bDZgQPVOP7sEsAadpvBIvQXawMWPOBhGvqAiF24/w5Q/kdz+BHKG68nhPwRGODKCxpC/B5yL8sbTyOgiWeAA4kgPl1XSOprKy/W9qYNLEGcPi0ieU6Zzga6fAGW0Qr1V1AjIA1gJtlkmUuuhvHWvhPbP1sFYLH2P/Kp+JBIWCNvt3P9qn7sStiBK//SKEOgfkA0Te4CoKQ+G2BDDqjiNS0NCiFGo/pRNGQA9Kn2NDxuwxZVbNe424XSu11v4iTjPOWq2wdk1vkHFA== 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=QvvpaH957xAQl6KpXPvvoBnQ0bdUsdx6q8ABmS07MFE=; b=WGnVk+x7fqrpUAPKctGl5ei7t/Zzn7xyUv331S/fFfhHlTN2UNsAP3sg6VW0ph8lK/hVrS5nhkpN6/kgDIMIIWYP7Ef+in2LNLqcLFSysaEqb2dDlG5P7UdPd+mgepJP2jSftylkAIb5M59+XpaoK5n6cGKBh9hDWOyQvZnj4d4= Received: from YTBP288CA0004.CANP288.PROD.OUTLOOK.COM (2603:10b6:b01:14::17) by DS7PR12MB8083.namprd12.prod.outlook.com (2603:10b6:8:e4::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.14; Fri, 22 Aug 2025 03:42:17 +0000 Received: from BN3PEPF0000B076.namprd04.prod.outlook.com (2603:10b6:b01:14:cafe::c6) by YTBP288CA0004.outlook.office365.com (2603:10b6:b01:14::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9052.16 via Frontend Transport; Fri, 22 Aug 2025 03:41: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 BN3PEPF0000B076.mail.protection.outlook.com (10.167.243.121) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.9052.8 via Frontend Transport; Fri, 22 Aug 2025 03:42:17 +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; Thu, 21 Aug 2025 22:42:15 -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 2/6] dax/hmem: Request cxl_acpi and cxl_pci before walking Soft Reserved ranges Date: Fri, 22 Aug 2025 03:41:58 +0000 Message-ID: <20250822034202.26896-3-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250822034202.26896-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250822034202.26896-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: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B076:EE_|DS7PR12MB8083:EE_ X-MS-Office365-Filtering-Correlation-Id: 8a2867ee-4414-4bf5-c8c1-08dde12de41f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|7416014|30052699003|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?gkz5EkIK+O8jYkSilkB1ps8zkxY7kxLhaHCTUSbssgUVyXD2hC5w/UvIu8k6?= =?us-ascii?Q?ISLrb1AkkSa4MWDdAYGpRr+MdEiBXYw1Kep+tiUCrWitmyAurKAJ5p8JdGTk?= =?us-ascii?Q?KiAeuh81ZxnJlBsyKNxTZdZ2KhhEGGnl8kD697HgxEkc03kOxzht+ZjBBahD?= =?us-ascii?Q?mRPlKlGSJkvALzNLjEWO5HNNEBbw7GyCDsweWfWNJLW0bAaO8IVGWLl4LMC2?= =?us-ascii?Q?RWv90yQ6NELmsPeOXuVzHVQlT+m0FBJ7p7Y/QUcXTGndgWytGRSWmPt9YzoT?= =?us-ascii?Q?mvwBAI/+M+elod1VZW9dN588eLhp7a1Vp9QN8Xl83yIUq56ei594b8KrSqGg?= =?us-ascii?Q?hH5KWZnphOsV7ne4Ip1hNyT29TNO0XYgF/Ie6oZh37Z95To2L8aiKMl4xNqC?= =?us-ascii?Q?z6nqpBsrCDYGG92W0PQLltQC1lgHLOWjy5fn7CQra74ehPjRzCXQ10GwgBNZ?= =?us-ascii?Q?CVALSBegUGSZIulwl7BGBUDrWuBaJZSewDZ3NL7s7C/pBmc+uIL7oTcJXEo3?= =?us-ascii?Q?iwIoTQlm1oFLnQYylaHDcv6c387g/0H7ZJutnFFVm9q4XGwkXu0icZBd64jq?= =?us-ascii?Q?XuN2z3LpcZRKHT8RgbrsLwgvMrsTVnaYaFCrCo8xW6EQiBXPDY7l4ndH0jX1?= =?us-ascii?Q?KXQVp50jxaPqWV2eiHF4PQsAhxV2L3Ub0iXfJNJyzdAqymCQsgB9ISjFfIpK?= =?us-ascii?Q?nGjILySIQ24ZryGKBqW2gA2i3Q571TA0ZtTs7/k5+y1o+eZ6QkVzYMIj6G1x?= =?us-ascii?Q?STpfhwS2kphZnKFfUBTul1nSGrxjjjSOrw+n/gM6yGNO06YZNuTdgslk18DE?= =?us-ascii?Q?st+n31mGv8pOHS79FYRLPYrvAD0E7OKyrotPNucNuw270hRNbp74s3unjuVV?= =?us-ascii?Q?91VXyOZkEnK0IWL40WmrkyyfDHWJXc1cFlnf0lDo2ZHo1ao3j2F/JadXWBmZ?= =?us-ascii?Q?uNmBdD09GuHtGftqJuZ1aq/EyinOnE1lZGDA5KdB8aOz135KBVV2lsJkSvFA?= =?us-ascii?Q?C5OEdNDnYtiqAiJiU5jkIByNwjUkiemLMLY6OR7ePAuCr5yaTlx5FnIBWEJd?= =?us-ascii?Q?qwDeEiH5dQzxalCDKj5FdG9zx4ONzIyACGq7IqSRreBkXkwABb61ZmsgOKyM?= =?us-ascii?Q?SC57Prea/qQ6cT33s+e/AMI4b3sARrLU1Y95CRZD8i/BlcCAjeY92RxHbbDx?= =?us-ascii?Q?gxdl5I116/z5a7sszEjHogWuI/DUzNJ3cT5LHk1cSl5ywAPI+Hrukj08tRsM?= =?us-ascii?Q?dXAUvMdaMHRnBNx7QK4VwQslOEGP/cJb1hxKl0ddPYbhJftFMKfKnZW8vMP7?= =?us-ascii?Q?7aVqvV2Q8/0LCWzvCwoAWRh7XOjt9ktFE5xpeJKyQjGTElq1w2tVsjen+9JT?= =?us-ascii?Q?s3SyQVs1regWZuffxRWv0EJFryP0SwEfC6S/ZRMgajQQ4FCcBSOSG+lTuTK0?= =?us-ascii?Q?6PdX74uoQchVYG7oC5korREc6bw+BaOGEYB74nMpPdO/NCG4187mNYHwxA7g?= =?us-ascii?Q?/UMoIhsYEJYn7HchXJS+wswgJjjzKGd4ro+E?= 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)(1800799024)(7416014)(30052699003)(376014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Aug 2025 03:42:17.3127 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8a2867ee-4414-4bf5-c8c1-08dde12de41f 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: BN3PEPF0000B076.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8083 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Ensure that cxl_acpi has published CXL Window resources before dax_hmem walks Soft Reserved ranges. Replace MODULE_SOFTDEP("pre: cxl_acpi") with an explicit, synchronous request_module("cxl_acpi"). MODULE_SOFTDEP() only guarantees eventual loading, it does not enforce that the dependency has finished init before the current module runs. This can cause dax_hmem to start before cxl_acpi has populated the resource tree, breaking detection of overlaps between Soft Reserved and CXL Windows. Also, request cxl_pci before dax_hmem walks Soft Reserved ranges. Unlike cxl_acpi, cxl_pci attach is asynchronous and creates dependent devices that trigger further module loads. Asynchronous probe flushing (wait_for_device_probe()) is added later in the series in a deferred context before dax_hmem makes ownership decisions for Soft Reserved ranges. Signed-off-by: Smita Koralahalli Signed-off-by: Dan Williams Reviewed-by: Dave Jiang --- drivers/dax/hmem/hmem.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/dax/hmem/hmem.c b/drivers/dax/hmem/hmem.c index d5b8f06d531e..9277e5ea0019 100644 --- a/drivers/dax/hmem/hmem.c +++ b/drivers/dax/hmem/hmem.c @@ -146,6 +146,16 @@ static __init int dax_hmem_init(void) { int rc; =20 + /* + * Ensure that cxl_acpi and cxl_pci have a chance to kick off + * CXL topology discovery at least once before scanning the + * iomem resource tree for IORES_DESC_CXL resources. + */ + if (IS_ENABLED(CONFIG_DEV_DAX_CXL)) { + request_module("cxl_acpi"); + request_module("cxl_pci"); + } + rc =3D platform_driver_register(&dax_hmem_platform_driver); if (rc) return rc; @@ -166,13 +176,6 @@ static __exit void dax_hmem_exit(void) module_init(dax_hmem_init); module_exit(dax_hmem_exit); =20 -/* Allow for CXL to define its own dax regions */ -#if IS_ENABLED(CONFIG_CXL_REGION) -#if IS_MODULE(CONFIG_CXL_ACPI) -MODULE_SOFTDEP("pre: cxl_acpi"); -#endif -#endif - MODULE_ALIAS("platform:hmem*"); MODULE_ALIAS("platform:hmem_platform*"); MODULE_DESCRIPTION("HMEM DAX: direct access to 'specific purpose' memory"); --=20 2.17.1 From nobody Sat Oct 4 00:33:13 2025 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2046.outbound.protection.outlook.com [40.107.243.46]) (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 AD5C926B0A9; Fri, 22 Aug 2025 03:42:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.46 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755834143; cv=fail; b=K2SFHTbJCyLiavH5D0nvRaZrm8sf53DOuhjQuNuK4l4aRL42fD95xOCBsg9SB6yisdkYWx6iTPgicjPgoJGXsekw2aP77kwK6TJEaigRZsHzKi6oZ8BLER45OM8MjIqJezp98hVgZw2HqoSytTomWZ9Tctv85rEhvnVKRWvu0KA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755834143; c=relaxed/simple; bh=SWE7FHFRT3ZWvaPD7FTVEpgdCQte8FOOcuBuaL5niSs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=YDUXNusrCkN0TS+qRoPdqiNpj96+FPLN6TbAy0cqWNWJN+i1XS0JMiB8dsyUqLTTmERxpQJF/Y8/fhrS+ncLjWWZqdEH4jBRG7KSPPFx9o8tu55lsHQC8WtR7Ee20HOzbtb9amm210MBKGk0g3XWGtO9wDjWb6Fl2J4rrlkRYIc= 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=t7SNxVho; arc=fail smtp.client-ip=40.107.243.46 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="t7SNxVho" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VT8AYoJVwtnjkY7rewqbSfQvImE11qXG4ovko4oiZ/UIFBFxCiy6l6qsuqFdnj9N1OI1gEmDWzKaC1Q+cT9Is/7Vw9vhFFYzRgP7Bm8YWS5d+lm5TPEFNyZbR0M5e/eHt4LLgMZ3v+cYOM4bB8MPirmDO1pes/nUdutQyl1C7h6CrqkEaE+wIrnXYoTbw74Yx2YAKWlbxapz8BsYYcOPAMNlL4/5OwSpmnxffo3o/W5cFDEHL43918Rx1B5EMJN4kP/Hx6i6CpwK3WzTn3jXdQ9G6+qf5PHiiYVQDAJ4DsSvDDJOw/oMAt1Nj9OYWoT+KkiWWawJbj9X1W8a5CISPg== 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=iTAWbdqN8kd2OY7GYH1ultj6kEbWvczlW6XDc4bODfc=; b=WceSnKQ65NtxuMAH1jdUyq0I+YUR5FoDsFc6KPeJYucqDDVeya0EWQne403/4mRyZ/GXbbGKWL3d47ymb3WiZ3C30Dc9MN7Mp1bsMY5GNi57tcMG6fDClW6wm9DS0DFTlZr/YscLcnJdFyk1mad/i+KnbybngD8fAsAOdemeKNleZetoBV45Fc6wfVWNOfwxx/UBn9+tgUOYYOpLin8xKeHUJZ6i3Z8LMPaWiuBHZthx0WZkCH9HfZ+feuVQXAxBMi+QQaRvvrCPVkVpwS/Y7xNCUKQCIuN+TXPzuzTOKR9EChcgyTvSaQKfKmPH53y7h+OgCWjUnj3+hci7LgzlnQ== 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=iTAWbdqN8kd2OY7GYH1ultj6kEbWvczlW6XDc4bODfc=; b=t7SNxVhoPdIPsWUpsNOHC3Crq+09CscYKPWjBC5H0UUPqgJaGutjVWk3osj+nSPgLE7w7irWLsxZISuA0lQyhqvuULV4xylcjzpGtuCeU6aRfX5wPbRVM6VS5/jzqAIPwc2REy3Uj/J6vi3GpqEczyD4ePuLfsjMreIRUMAx3lA= Received: from SJ0PR03CA0380.namprd03.prod.outlook.com (2603:10b6:a03:3a1::25) by DS0PR12MB7874.namprd12.prod.outlook.com (2603:10b6:8:141::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.21; Fri, 22 Aug 2025 03:42:18 +0000 Received: from SJ1PEPF000026C5.namprd04.prod.outlook.com (2603:10b6:a03:3a1:cafe::1b) by SJ0PR03CA0380.outlook.office365.com (2603:10b6:a03:3a1::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9052.16 via Frontend Transport; Fri, 22 Aug 2025 03:42:18 +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 SJ1PEPF000026C5.mail.protection.outlook.com (10.167.244.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.9052.8 via Frontend Transport; Fri, 22 Aug 2025 03:42:18 +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; Thu, 21 Aug 2025 22:42:16 -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 3/6] dax/hmem, cxl: Tighten dependencies on DEV_DAX_CXL and dax_hmem Date: Fri, 22 Aug 2025 03:41:59 +0000 Message-ID: <20250822034202.26896-4-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250822034202.26896-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250822034202.26896-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: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF000026C5:EE_|DS0PR12MB7874:EE_ X-MS-Office365-Filtering-Correlation-Id: cd952e4c-7c80-40af-2fa1-08dde12de4cd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|30052699003|36860700013|1800799024|82310400026|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?j+BxH58AIV0IzVnSzWde204ZhMtXDWdzKsG3LNoLr3G2GHogNohk0WiRuR6u?= =?us-ascii?Q?bK1qQznmjpOwbxvnmkEhaAtxIZkS91ilv5SoI7ARdt7yK7QTfLgr90e9vGWf?= =?us-ascii?Q?aCj1To5SUwRs+v4QD6pbkv/yZsW0mwQO13boga+iIsNVUx9rFxuObbdKhP6b?= =?us-ascii?Q?apdmad3C5Y7b/EkN3j9U7+hQeDe6rEl3dJ8+3CiMeeOxyJJ6Xjk+oils5QgR?= =?us-ascii?Q?/AzuUDK3QLTsRSR0rTR+4A9Q4y9lPhngmJvjGpHCkfkPPjxOlqo1otiLiDvr?= =?us-ascii?Q?X3ZnQwKonRuOrCp+IefaE8MHaHuI7Dz+QrqNL2AxflEuqrTta/8JoHhSBldf?= =?us-ascii?Q?8Jt6kGLSgTmOBbtj8gwXxhzTPLCCIwxem36BbBrNwwSdBk8QzM2qO60R0YhW?= =?us-ascii?Q?DtoiGrRC1jbnCGRHly4TdlWYFFbu+79brbFlfQjQ04CqoUitke5d9eZg0b/3?= =?us-ascii?Q?2zRs6Nw2zKX2xgPAgota0sw2BkDSC9FWoJO5vFXXB509VarX3WrUpez8U9rb?= =?us-ascii?Q?QcsXojGUSYUP8A62VxeCWIBydqHAbyk8oFiUfzd7hL5vj9+FxNZF+/qLG2L3?= =?us-ascii?Q?btao5V8Cgr/4hXH3VujBBhSnmXVn2ua9tW3ASX6RiRvAHdIg8PR2H/nrVnhD?= =?us-ascii?Q?6utJh+gppEFluVYC5fr0IxRrV6o6eTGa6dWzFhjBzBxFVHO/d2R4fLlwAfwx?= =?us-ascii?Q?403SzOc1Y/l7sMvea1lr5ipR4eWgZz9rzoxCcBQF9oXqzqt6mauY3X+91HHh?= =?us-ascii?Q?HnITAPlN0EbcCS9tC4Kz+NDGT2CtsecbdT791TyzWGwg3ZuUEgokVwBKYBJN?= =?us-ascii?Q?YlIIk9JTx/9/j8zlF4w3zP+wlwJaYxIAy2Um+2xEX0Z3tpS6xGqshGMb4GyX?= =?us-ascii?Q?HMrg8zAxxTnTxiuqVvHNZr33N60twRdxQCtkKZq+D3UhJ+h0dBR0cidQW7BR?= =?us-ascii?Q?VL/hXgNMSQJzH7siQuVtmLkoH1lJCQyP++zaoF6s2fi/rWX1s1iuN5icvhbT?= =?us-ascii?Q?Qb69DQp/JP35wr3Xh/c7kv9dbKA+j+alyb6NNyNCe2oyqOM+edavqzX/lUSn?= =?us-ascii?Q?3p1d0L7W1V9SKAFEf7e4Zjy4q1pdo3nncKO8ooMN1RvAXldfUUnHlzPfNb+7?= =?us-ascii?Q?4QeZSZm3rmnUil2uHB86rZsmIHzVjZVbUx1pKCZRgV6YOruToeFGbBHiQV9B?= =?us-ascii?Q?X+WMjovVXdHtWcU9fL2p7IcYtsz6Ce8yIL5HKB6Sb4uDG3XiNgQ6pzyi6bKH?= =?us-ascii?Q?CTGjh9jJN72ky+8s4tSyDKpFzm//ZLSnpxqOhjRLn+e2tdxrJmUDb5W+sbnk?= =?us-ascii?Q?Vo5CM6UrU3b3DHj7oF1a92V0ogyRkBCL3FHcVr5QUreINNfuSbbB+F/u9rau?= =?us-ascii?Q?V1AVryc5QmmmYBzlFNBAoZkpenlvppE1k6xvuXk8NVA0e6i0iXx5DZJpmQqk?= =?us-ascii?Q?ykdtiFrm4EnmKb5+NkC34eGUqRTT9mvaoONoR4XW75n//afqMz5xgKmvosUV?= =?us-ascii?Q?W+NHH3tE7pOfx0iBC/pGountslIZXvBC9Vvs?= 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)(30052699003)(36860700013)(1800799024)(82310400026)(7416014)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Aug 2025 03:42:18.3552 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cd952e4c-7c80-40af-2fa1-08dde12de4cd 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: SJ1PEPF000026C5.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7874 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Update Kconfig and runtime checks to better coordinate dax_cxl and dax_hmem registration. Add explicit Kconfig ordering so that CXL_ACPI and CXL_PCI must be initialized before DEV_DAX_HMEM. This prevents dax_hmem from consuming Soft Reserved ranges before CXL drivers have had a chance to claim them. Replace IS_ENABLED(CONFIG_CXL_REGION) with IS_ENABLED(CONFIG_DEV_DAX_CXL) so the code more precisely reflects when CXL-specific DAX coordination is expected. This ensures that ownership of Soft Reserved ranges is consistently handed off to the CXL stack when DEV_DAX_CXL is configured. Signed-off-by: Smita Koralahalli Signed-off-by: Dan Williams --- drivers/dax/Kconfig | 2 ++ drivers/dax/hmem/hmem.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/dax/Kconfig b/drivers/dax/Kconfig index d656e4c0eb84..3683bb3f2311 100644 --- a/drivers/dax/Kconfig +++ b/drivers/dax/Kconfig @@ -48,6 +48,8 @@ config DEV_DAX_CXL tristate "CXL DAX: direct access to CXL RAM regions" depends on CXL_BUS && CXL_REGION && DEV_DAX default CXL_REGION && DEV_DAX + depends on CXL_ACPI >=3D DEV_DAX_HMEM + depends on CXL_PCI >=3D DEV_DAX_HMEM help CXL RAM regions are either mapped by platform-firmware and published in the initial system-memory map as "System RAM", mapped diff --git a/drivers/dax/hmem/hmem.c b/drivers/dax/hmem/hmem.c index 9277e5ea0019..7ada820cb177 100644 --- a/drivers/dax/hmem/hmem.c +++ b/drivers/dax/hmem/hmem.c @@ -66,7 +66,7 @@ static int hmem_register_device(struct device *host, int = target_nid, long id; int rc; =20 - if (IS_ENABLED(CONFIG_CXL_REGION) && + if (IS_ENABLED(CONFIG_DEV_DAX_CXL) && region_intersects(res->start, resource_size(res), IORESOURCE_MEM, IORES_DESC_CXL) !=3D REGION_DISJOINT) { dev_dbg(host, "deferring range to CXL: %pr\n", res); --=20 2.17.1 From nobody Sat Oct 4 00:33:13 2025 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2050.outbound.protection.outlook.com [40.107.102.50]) (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 1E9A228C871; Fri, 22 Aug 2025 03:42:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.102.50 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755834144; cv=fail; b=IKWh1Zx6spDDZ++IZ9DGGf85wmWNw6ZzG+8/xjTkpHlDhhUy7AeXlnOrFb8hGctr2MGb7UaYSjr0kzAanjebHKnT9OanAc8FvRX3Tqy+WBIkatP/iBm6ZRVEKDapWrhSJ8w2TmInVSU5nBNiCto4KBQuXEKjhYRzDYEtL/C3BUY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755834144; c=relaxed/simple; bh=88Cg+lLQBuqi3QqjIFfsXWqKP25eldIGvx4aDTQ/dsE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=TMx3elhhb/E41BI+lFAGzQYPgYVPqDWuqacm6NntME83A+5Jl037HTKfkwEPga1cpBomK1xXGA0ywYZjvhrbWBLecnd6uCTTgOR1LaMYS7udYmt+U9t+3NRXbrJNUcqcLpo0BxZvTmt32q63GzLYtFD9wW+u3RmyhGyzivyKnS0= 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=VCSWmqE1; arc=fail smtp.client-ip=40.107.102.50 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="VCSWmqE1" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aNohLDNbBTExnUfbkVCGgGoUNPGmjsjl0eQkHzKu63pegbbPW3dyuGuaEI06JjdZl5qKWLctnWDiazhVG61b6/9oCuXc1G87Iw9HtpGsGn83LxO0ZG+8ImVZrnxyJBIOszrfi8BCGwn6bxy/+O/VPW0vVVUkfGkSWU8Mh/CA//9UpN1dweF4kZ2cPt+pf7E5cXETk/rpN3fGkEsB44dzDxouBDg16Sm/HDWy/y7WJATncVnBuD5Tkwthw0uV7sxz/heEnxbj7ekmvaaztqjHEaNjf4ZEnnuLNHToAarsRTnawadNXWF/O5bbkheZGSqn4ReGphO0GtCDkSZq85TlCw== 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=Eo0n6MX0Oo5gQAFDbyEJWjC43s5ka2o7WU52PkP8iPA=; b=Bib+OfEiphkNtCOsOiRol2h7+4KTXudolKy6Jc5YTZGlj8Y5H3K4wktOTkS+svotfFmi4vrmBKIyUHCnX8iN4IpVHzODb/Omr5G7ukui8MdQA2LjQ0nqHtFUD2gh2UHHeB2FAIsz7gFoQmZvJebXwyxi7UCWZg1eFxtkTLdpNc8Sk1ln2sNp/NLLjutkGtNe31ou8cWP1ULRma2ir/gPQwOSwOagnGDSy6e+1vGst8glvBj+hwcufECgfeZlkW3OrekmpqO03IBaoxtf+qdQgTL+Bk/2Fiq9Q1rxIgsRnK444ZhoGMPr74pK8iPC6ujtulcoMCavYkK8n6UrS0+akw== 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=Eo0n6MX0Oo5gQAFDbyEJWjC43s5ka2o7WU52PkP8iPA=; b=VCSWmqE1+UPvi6jcmLeMT4ggG/3NiMcaHGCe5kPYZGArJvx0xtNPn9Lc0EXBsm+F3+MGRBlv9cSzzAdC55uqfHYNEi+ZevL+19/m7BP1s6Uk6yf2A3XUzE9eQ6YxMD16N75Kiu1aNQa3l4C6pKZJBwv2Zdvy7T+1BvP61vi1VxI= Received: from BN0PR04CA0147.namprd04.prod.outlook.com (2603:10b6:408:ed::32) by DS0PR12MB8341.namprd12.prod.outlook.com (2603:10b6:8:f8::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.14; Fri, 22 Aug 2025 03:42:19 +0000 Received: from BN3PEPF0000B073.namprd04.prod.outlook.com (2603:10b6:408:ed:cafe::d8) by BN0PR04CA0147.outlook.office365.com (2603:10b6:408:ed::32) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9052.16 via Frontend Transport; Fri, 22 Aug 2025 03:42:19 +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 BN3PEPF0000B073.mail.protection.outlook.com (10.167.243.118) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.9052.8 via Frontend Transport; Fri, 22 Aug 2025 03:42:19 +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; Thu, 21 Aug 2025 22:42:17 -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 4/6] dax/hmem: Defer Soft Reserved overlap handling until CXL region assembly completes Date: Fri, 22 Aug 2025 03:42:00 +0000 Message-ID: <20250822034202.26896-5-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250822034202.26896-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250822034202.26896-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: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B073:EE_|DS0PR12MB8341:EE_ X-MS-Office365-Filtering-Correlation-Id: 487aa085-bd91-414d-78da-08dde12de566 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|30052699003|82310400026|1800799024|36860700013|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?5CuOD1FAaYS92BSeZqeY0X/2336v1yjj90idPpG+xX5Aj4CkkhsoC22wvsVJ?= =?us-ascii?Q?M4JT1lOLcuiyrps6sNifyby2P/7Fut/IqaiuXOqn3UileL062YLQMN2Js7tz?= =?us-ascii?Q?Vb53zxxz8nMq61S8cfe2u2020uexBNZHoUBNQEaaAbkBiMItqf+gucHgI/pb?= =?us-ascii?Q?sBzAYYOInIKa2KYhEMFmy+Ld2ALmAkZGHMvkqVszPZNDm4pgp04mwcOzGO8x?= =?us-ascii?Q?clFbHGrIa5si9ZLx8IVN90caTT2AQtRFfmys93Ze12p+Rb337iPFMZVkOPwp?= =?us-ascii?Q?whHiDV/FbGbh4AjF/XAV8J3C6/EoZ21CCjN67UmqHOBnOQy72Lb2AZBV/XHY?= =?us-ascii?Q?iCTPvyz4tsQCsIb188WW3uxsroos8dftRsurv9mPHKp6Q16wjX6GmpD6tZkN?= =?us-ascii?Q?AmFkids8pGL2u9l8OsDxML/uzKuUiITylIkZEcZsKFShSLTDEgzNoP6MPuJ5?= =?us-ascii?Q?bWWiML2w/kGlVH4b5vTr+p1qGGa2Q5bfoEmjm/HMDpgrLmEA5gRngH5KvXhZ?= =?us-ascii?Q?MTLRFyfggeCy30tjCxTqPb9c+TzPogysd9OvAm7CZ/Vmi4zcRNt48s9j7IGt?= =?us-ascii?Q?Vjva4RafkhkpZZj53GB/PyeG4XiBD2uflpqDRjiyrkMgqKPHzJ41sZ9gOe1k?= =?us-ascii?Q?ZKuJGLp2/6YH+7Ic95ytdKiVlvvEQZ4G/TVF5oIlVwfcia+e2pgb8tuRHntp?= =?us-ascii?Q?SVbtYEU7U64N4c5nJcPLydB/IgcO1E7LEEX2+bhZUVNRU4nSnklANesUmLcS?= =?us-ascii?Q?61edRhCKdLh87Q32QG02k84oFHB2GimmrdLYc4VhEWebblF+vpK1JEqs5Ohl?= =?us-ascii?Q?cm0IJ19huK3C+fkoHEmli5gmJh1d1crfgJgQoY8U0zawKGCiurXh2NUPnqJx?= =?us-ascii?Q?yXaS+b3hVovm71lUqJ6MXB8jrQ5BjT5RE4nPaG3CuMBOn3noqtUHjyL/mdHb?= =?us-ascii?Q?NMWttHJrVkfRT5s9mqMhUUXSjx41PFHJXMpmrO3NK95yYqkzqSgohI9FZBGz?= =?us-ascii?Q?XxkAqNAo0IkUdiOS0WMzJdIvjJ6g8TO2Eqlxnd/96c1IHDQZEw5WV/SGYdEb?= =?us-ascii?Q?lMrWpdH+eEC4oCf03MBSSwbNwDx83LD9D8ktvIcy9wwhF298/+aWkgR8OOH9?= =?us-ascii?Q?3ufxe6WNOYj11bqCXV/0rOO8Vfbo40TiHeuwCdBi2VxbyhQXhLztYsNjKBoF?= =?us-ascii?Q?0L0xY3JN1uYBtxZloNPRm5rZ/Fx4s5ydP2qPdfw0yqy2TYg0FaV40IdPHdUV?= =?us-ascii?Q?uo/8GVnFrzEGOlTkNcBELj2SKtw8uHemKeek22mmUOsxUAzXowCnnrDioFBu?= =?us-ascii?Q?b1Uc6EfDwIBRgyspFO2Zre+P6M+TV/Bi6bqLje0qRwAgMkztRJy0QmaLvs9Z?= =?us-ascii?Q?WDJVm/Hczw4383Wtbmz57NxKGlBJg/U4uSaxBtIB6sx7GCPTT51SVgsPCbuK?= =?us-ascii?Q?MCKH0p5S/zAdhpysLlkpyFdF6h8wccRbIzYSQyn4ZCcaAF6KxmhaIwVEATw8?= =?us-ascii?Q?Czj685PQeCnnmLQwMeeWUPbRyAh9pD8sE8SR?= 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)(30052699003)(82310400026)(1800799024)(36860700013)(7416014)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Aug 2025 03:42:19.4532 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 487aa085-bd91-414d-78da-08dde12de566 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: BN3PEPF0000B073.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8341 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Previously, dax_hmem deferred to CXL only when an immediate resource intersection with a CXL window was detected. This left a gap: if cxl_acpi or cxl_pci probing or region assembly had not yet started, hmem could prematurely claim ranges. Fix this by introducing a dax_cxl_mode state machine and a deferred work mechanism. The new workqueue delays consideration of Soft Reserved overlaps until the CXL subsystem has had a chance to complete its discovery and region assembly. This avoids premature iomem claims, eliminates race conditions with async cxl_pci probe, and provides a cleaner handoff between hmem and CXL resource management. Signed-off-by: Smita Koralahalli Signed-off-by: Dan Williams --- drivers/dax/hmem/hmem.c | 72 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/drivers/dax/hmem/hmem.c b/drivers/dax/hmem/hmem.c index 7ada820cb177..90978518e5f4 100644 --- a/drivers/dax/hmem/hmem.c +++ b/drivers/dax/hmem/hmem.c @@ -58,9 +58,45 @@ static void release_hmem(void *pdev) platform_device_unregister(pdev); } =20 +static enum dax_cxl_mode { + DAX_CXL_MODE_DEFER, + DAX_CXL_MODE_REGISTER, + DAX_CXL_MODE_DROP, +} dax_cxl_mode; + +static int handle_deferred_cxl(struct device *host, int target_nid, + const struct resource *res) +{ + if (region_intersects(res->start, resource_size(res), IORESOURCE_MEM, + IORES_DESC_CXL) !=3D REGION_DISJOINT) { + if (dax_cxl_mode =3D=3D DAX_CXL_MODE_DROP) + dev_dbg(host, "dropping CXL range: %pr\n", res); + } + return 0; +} + +struct dax_defer_work { + struct platform_device *pdev; + struct work_struct work; +}; + +static void process_defer_work(struct work_struct *_work) +{ + struct dax_defer_work *work =3D container_of(_work, typeof(*work), work); + struct platform_device *pdev =3D work->pdev; + + /* relies on cxl_acpi and cxl_pci having had a chance to load */ + wait_for_device_probe(); + + dax_cxl_mode =3D DAX_CXL_MODE_DROP; + + walk_hmem_resources(&pdev->dev, handle_deferred_cxl); +} + static int hmem_register_device(struct device *host, int target_nid, const struct resource *res) { + struct dax_defer_work *work =3D dev_get_drvdata(host); struct platform_device *pdev; struct memregion_info info; long id; @@ -69,8 +105,18 @@ static int hmem_register_device(struct device *host, in= t target_nid, if (IS_ENABLED(CONFIG_DEV_DAX_CXL) && region_intersects(res->start, resource_size(res), IORESOURCE_MEM, IORES_DESC_CXL) !=3D REGION_DISJOINT) { - dev_dbg(host, "deferring range to CXL: %pr\n", res); - return 0; + switch (dax_cxl_mode) { + case DAX_CXL_MODE_DEFER: + dev_dbg(host, "deferring range to CXL: %pr\n", res); + schedule_work(&work->work); + return 0; + case DAX_CXL_MODE_REGISTER: + dev_dbg(host, "registering CXL range: %pr\n", res); + break; + case DAX_CXL_MODE_DROP: + dev_dbg(host, "dropping CXL range: %pr\n", res); + return 0; + } } =20 #ifdef CONFIG_EFI_SOFT_RESERVE @@ -130,8 +176,30 @@ static int hmem_register_device(struct device *host, i= nt target_nid, return rc; } =20 +static void kill_defer_work(void *_work) +{ + struct dax_defer_work *work =3D container_of(_work, typeof(*work), work); + + cancel_work_sync(&work->work); + kfree(work); +} + static int dax_hmem_platform_probe(struct platform_device *pdev) { + struct dax_defer_work *work =3D kzalloc(sizeof(*work), GFP_KERNEL); + int rc; + + if (!work) + return -ENOMEM; + + work->pdev =3D pdev; + INIT_WORK(&work->work, process_defer_work); + + rc =3D devm_add_action_or_reset(&pdev->dev, kill_defer_work, work); + if (rc) + return rc; + + platform_set_drvdata(pdev, work); return walk_hmem_resources(&pdev->dev, hmem_register_device); } =20 --=20 2.17.1 From nobody Sat Oct 4 00:33:13 2025 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2041.outbound.protection.outlook.com [40.107.101.41]) (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 4C6D729A9F9; Fri, 22 Aug 2025 03:42:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.101.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755834147; cv=fail; b=KSsY2MdgNx36isXceRqTCARmLbXHzh9dgUouhXStivEsKN8KL7pd4EA2JfywWCydvGjFGy5gy4AwTAZrPqbdgwrYfVkajz0+h4WkUdtO5FN52nvCWp6tdtIznN0LXvMmN6H0RPqtMlYzrpCI+lWVbSzYt4DyeqR+3hYofY6Jasg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755834147; c=relaxed/simple; bh=k6xToHZCIwzzvjPuUmm8KCVXBqQvfqCUfKM0PTZbTA4=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=dE0Wd5Ac5gUiP+/fhBWQDIs1tq6Jv+yA9t8cMrMhPw/6I9da6TldBe47ygsrD8HcIzOmeEAP1HeThqQ0LY6c9XR8+Kpxg4cGgBwSK+wbNtyxGl52UOmPj517ZTkUi41WTRzHvKJOMFm3qmnkdgpF5DY9ROgQvBwL+HFtpHE2CyE= 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=u70LPZlc; arc=fail smtp.client-ip=40.107.101.41 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="u70LPZlc" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RLzUdpnElvCpGnEG54lln7Gt7jxebNHf/m0mOnvD/eEj4W2aOOHAxzY+ac3mgDP/OmXj9karQwWQ1ozXOi555keHLKhLxLc8+qoqu+KO/QJceRx2oAF6C/PX+/ZQAFZpd7jjQem3lYfmVihw81+6N0LBZJD8Dcbj9PhxJWuzOnxkAmjbzAnBqE7fkpps8qqQPi3nubBmuw/PDWPwzZWI2lt6pcviOQbKbqMfOXaSNx7afbVHjnGVhu1Y7S02BhcEWDjOn5pYjfRqdccUha9w4JFbSZfLrgdW+jWIIt5MWd8TfsZm/aEeoOUlvfliyJfnEJnQGuobEQsaruunbylrgQ== 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=lGxxuH6cTkEwxs0HyuZEYfnX0n4BqEF+j51O6Ip4Z/8=; b=aA8YZDImC5WxAX5MHHzzA0hW6GIaI/TwvrGESJa1OQ8YiTDurx4jL+z3oAgh/Vjud7ku7U62dRHTOd04yVh2gJcK6QciTpJDSK7sGDRqDI6ax6qImBNz1X8HzbKTwtmgctX+d0ozw6P8xauALhaCjUdCN2lUMVYGFQmI3PmBDRbEGruhytdtRkbl+UiMahw5m+tA5GdAl3oe+sy3e/Fov7/UMpVZ2K0SeriFDxhd3BNDOFHFdSUNgzJhlZ99/2hK2JD1XfaO13jE23VQgRy9f7xMf80tlONngnO+B+qihq/0Xif+ZGz7JYVLuf15tl+/O3HIjnwNxswMk7I13jcJAg== 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=lGxxuH6cTkEwxs0HyuZEYfnX0n4BqEF+j51O6Ip4Z/8=; b=u70LPZlcADD46UAqTxP5TQWDgB72hA0K1+MUByBtx7a9bGz/eKInHx01v16gPzZa5DDD08THEKOe9shXp3wW4ITZAUWdvZG98G8Na+06+anjcKKo2rT79gqKkCLNYpqR7pdFpmHKGumNukt+IJ7sqlCoN8j/VfX8U04W02mN8bI= Received: from MN2PR03CA0027.namprd03.prod.outlook.com (2603:10b6:208:23a::32) by PH0PR12MB7864.namprd12.prod.outlook.com (2603:10b6:510:26c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.16; Fri, 22 Aug 2025 03:42:21 +0000 Received: from BN3PEPF0000B078.namprd04.prod.outlook.com (2603:10b6:208:23a:cafe::42) by MN2PR03CA0027.outlook.office365.com (2603:10b6:208:23a::32) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9052.17 via Frontend Transport; Fri, 22 Aug 2025 03:42:20 +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 BN3PEPF0000B078.mail.protection.outlook.com (10.167.243.123) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.9052.8 via Frontend Transport; Fri, 22 Aug 2025 03:42:20 +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; Thu, 21 Aug 2025 22:42:18 -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 5/6] dax/hmem: Reintroduce Soft Reserved ranges back into the iomem tree Date: Fri, 22 Aug 2025 03:42:01 +0000 Message-ID: <20250822034202.26896-6-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250822034202.26896-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250822034202.26896-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: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B078:EE_|PH0PR12MB7864:EE_ X-MS-Office365-Filtering-Correlation-Id: fce420f3-696d-4c3a-38ea-08dde12de5f5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700013|1800799024|376014|7416014|13003099007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?DHXvKWVPCk4gd1ciZC7zfWwxf36gj1gFn2Vw+B7jjG9iBzvRlE3w6dvQsEfz?= =?us-ascii?Q?aFcwFO3B/tI0xkQntYWlKcBPUnFdvGjeL9RQYgYMlyGwNHDFoETlbRp2+ASy?= =?us-ascii?Q?dD8BRn3xrEzq22RACCkLVaLtwv0mwbyDCVeEaZMLfk/mJCJ9bTvofAwVUNrh?= =?us-ascii?Q?g4NnaQmjclXLaD50c9pVsxTLSuR+cBXzck9/mJ3/9sOVkdr1ZTp++hSCnwbl?= =?us-ascii?Q?0x4zg2QDJUDUJceiNza1PwDtiZLDVttlXxmioXuiFu/xgzuTJv9wKlV4l2RM?= =?us-ascii?Q?E+Fy4Cy82m5DNG7Y8f/bqSnb1QqBidKauWpZbGEnsJJ/NBzzrA8Jux2oJpJi?= =?us-ascii?Q?bGa+haE8M9dHWfdBGdBuc7tdeApbjD4d2cKCxl3ALLOqGo0oq6REip+EzaEA?= =?us-ascii?Q?JpJTYmvHmdAeRy7il4LFDPPduBaN53IeuuXbtpAJ6pYO+ThfZe+bDTlYNRIm?= =?us-ascii?Q?f5h/afVWp1yHUqj0v+2vZF6b5vdjcafCc/4d4K8x5zBhP0qjvjhblxBOjZKx?= =?us-ascii?Q?0bTKPjVWSB95kCtPGy5KUF6NT8sjlzld9+JzE9CXGDZRkUaOXclsWU2Z1Zzv?= =?us-ascii?Q?6a/nZehRC0rE49EukRgUQ87NqH1/OTTT5i83Zfnk0vXvo55Y38O4WfxEV+xe?= =?us-ascii?Q?kk+V7trgR5YxQMgD2bYLDZMQz/M5bPTMikvLNSRIHL8jelNfwqjjXC7SHL2v?= =?us-ascii?Q?tvvO0bGyMfqEEjP3caUpPYzk3LArKus8BMaUGQLnZEIsinHLhDL0cKzqFZOr?= =?us-ascii?Q?I2KJgOO7e/j0cq/25ulT65ba74t71LZovnq8Ly59Xa5FjoVm1wPpa5VDkG2d?= =?us-ascii?Q?jlNQsepSzjZizXhdJQW0mLEHQvIrI3H2bTWdOcH0F3JmTNEK7uoDcJO7zyZi?= =?us-ascii?Q?odCBiszOeFnoMud6sPBQM6sLNQx+y3BybEXRfg9c0hEQ+mvrKouqzhTBU+ia?= =?us-ascii?Q?n3P5+Cf9nmQwjEN0XY9y2F1S+ptlU0xQP30iUpV+c2PLYu2WLfgsbo8abWBs?= =?us-ascii?Q?QyxI8/v+MEcfWOL6kbtoTkL8j2cOUDZXqQ5xnSeOxoENDjJmCR+1kyQTGE7Y?= =?us-ascii?Q?yioVnclQ0rkmrTKhWbPbU9Gx7ImwlNMB2CjvfLrMRjUxd/opzuIbGtwGVgv8?= =?us-ascii?Q?J1uS8EQrpkR5wy8B4yFdV3NDqMWjavU8mjYMLtK7jmF0BsDxsAR6o6crZEno?= =?us-ascii?Q?36WWQbH4a+L62IFXN6pBim5ajTnQlYuz79YcjOUQgcVhKs2WAS2UVG+63WwY?= =?us-ascii?Q?VVnYlRVL6sZs6wGzEV7U7BbPOBD4XmFrpHMciuHep7MDDkBUsYOXHY+l9QMm?= =?us-ascii?Q?A0cUv7HCD8WMLLVcuSeq/bKWTAR/gpKbdv/TFDd/Jlpl6ck774VyoMkE723T?= =?us-ascii?Q?dPgrdtI6OSFaE3ZNeXjp73//Lzrggb07oPh8DaM3TpArnQ58JuwF7tq9iQJT?= =?us-ascii?Q?HzGH/K+Wdy6VLAPPzPPlZDdVHNSfZMrZD4jsVCD0LbFiui+d8lk966CFaiUj?= =?us-ascii?Q?HfpUTkNo15kWkmVsEtuwHMPU1cil+uVQ8LAK4VcZBdbPOZ5Ge9zfjB19iw?= =?us-ascii?Q?=3D=3D?= 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)(1800799024)(376014)(7416014)(13003099007);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Aug 2025 03:42:20.3883 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fce420f3-696d-4c3a-38ea-08dde12de5f5 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: BN3PEPF0000B078.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB7864 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Reworked from a patch by Alison Schofield Reintroduce Soft Reserved range into the iomem_resource tree for dax_hmem to consume. This restores visibility in /proc/iomem for ranges actively in use, while avoiding the early-boot conflicts that occurred when Soft Reserved was published into iomem before CXL window and region discovery. 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 Signed-off-by: Smita Koralahalli Reviewed-by: Dave Jiang Reviewed-by: Jonathan Cameron --- drivers/dax/hmem/hmem.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/drivers/dax/hmem/hmem.c b/drivers/dax/hmem/hmem.c index 90978518e5f4..24a6e7e3d916 100644 --- a/drivers/dax/hmem/hmem.c +++ b/drivers/dax/hmem/hmem.c @@ -93,6 +93,40 @@ static void process_defer_work(struct work_struct *_work) walk_hmem_resources(&pdev->dev, handle_deferred_cxl); } =20 +static void remove_soft_reserved(void *data) +{ + struct resource *r =3D data; + + remove_resource(r); + kfree(r); +} + +static int add_soft_reserve_into_iomem(struct device *host, + const struct resource *res) +{ + struct resource *soft =3D kzalloc(sizeof(*soft), GFP_KERNEL); + int rc; + + if (!soft) + return -ENOMEM; + + *soft =3D DEFINE_RES_NAMED_DESC(res->start, (res->end - res->start + 1), + "Soft Reserved", IORESOURCE_MEM, + IORES_DESC_SOFT_RESERVED); + + rc =3D insert_resource(&iomem_resource, soft); + if (rc) { + kfree(soft); + return rc; + } + + rc =3D devm_add_action_or_reset(host, remove_soft_reserved, soft); + if (rc) + return rc; + + return 0; +} + static int hmem_register_device(struct device *host, int target_nid, const struct resource *res) { @@ -125,6 +159,10 @@ static int hmem_register_device(struct device *host, i= nt target_nid, IORES_DESC_SOFT_RESERVED); if (rc !=3D REGION_INTERSECTS) return 0; + + rc =3D add_soft_reserve_into_iomem(host, res); + if (rc) + return rc; #else rc =3D region_intersects(res->start, resource_size(res), IORESOURCE_MEM, IORES_DESC_SOFT_RESERVED); --=20 2.17.1 From nobody Sat Oct 4 00:33:13 2025 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2078.outbound.protection.outlook.com [40.107.94.78]) (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 918A029994B; Fri, 22 Aug 2025 03:42:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755834147; cv=fail; b=PNW593uLt49FoxWzyxz1f5GRn0RRApCE/61qtb5rdrPsAVfk+bei/JYFaPrRC0LvLoMO416JgzOCVdi0v15HfCrgiBF6VCyegWOve09pF06nn5LfQKOboHKd/vAfnkVrheFb/aq2iTLqbsntgF8c4B85tosjFROhYWcY3LukPQQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755834147; c=relaxed/simple; bh=QHZ+cDCy+qyBNKOn6zxrBOfKLYEtulfBEuSvoJhkOjI=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Q3Nv2ca9o1aD4Wx2CbhxFt20u7FJn+MXtfzEh/QBhWpL0l0U3syDeOvr3XtZjkYsCpBNE4VKaEwOP8tGJthGs5ayC6623zfiyGFBrTuJfzwKp477H4xRCBtQVy1Rk0vFDDwTxquSsZ7FDDROvYwS9C4L7wje/aRe9oPC8KVavXI= 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=xNAVZyz1; arc=fail smtp.client-ip=40.107.94.78 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="xNAVZyz1" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hAIGUTs+465Qg7Jpb2ddWKyugpi3WADSZgbtU0d56bJ0NHGDwbEFVOIA/A5XncBdK8z0wHVeDPB3+Cj0NiNCnOLLTTJzf9dn0z3DFFSaAnwBCVClc6txWOrwxHtarIka7qgHt3YGa8pbmFc4VKMOABgnvYj8qtdvos+ibSRgUUCqu3IsJ6tVA1MsDVtVXdmFlNNe+vI1yhZMr7QV+gINGGEMS3TEC7s9AX7KdZ7FNui/s6XC9+xiEa1i+A9VlQX/wCt4MQ8bRpDC9MCQhNZVrhEoM7axSayvIWba+XKyARDdCPFMOGQpjHCLoxZ1Y4oXSrizKJQiRalAueS0enVGiQ== 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=9xMrOwc5VBxCl2DlrXqvAwcrz/6+g4wlVF6XcA6wb2g=; b=UyFLrkenTBgEk2kZnCX8pqDTsu+nhYnOzYAEPijlNJML9IH5FOjgfbedQw2EzCfnF4OxzI0qNTaxnYNN/j6qUj5sl66TY1z15bx4B1h6db3Ah9RjQYIN+7YXl4Cj4xWSg7UCODLwtXb4o2IPB6fCpBRsz0YKv6qOV0UNuhDd8ImlzL+EvzwJjXp37qjP29MDabehc+wzM1lcGa0MmR25Bh+NRKHc0KgH3uGQCfIHBCOjKxxgOPKJvVkzR+4j6z7B+khA/RJVgolnIX2A9jyznCkeb+e47U5ZsyUzI2yzolg5AYW5MtjmY5AP6pK3UZFAWYNqCR665rwsEn99HI/oIw== 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=9xMrOwc5VBxCl2DlrXqvAwcrz/6+g4wlVF6XcA6wb2g=; b=xNAVZyz1z+ZuYgNugjmgjwrspt7suVRJfKAnnHaz896lxUI5sRmf1g4cQssIqPte6e3mY0zQjVYMDiFz9rRhwur3k6wbqeQ4heEOL92hcIcY0E6/RzjTlyb+GPR6Nn3cBan5sboArIGtgXONKo+dTv0jmKLC/SiozjwjSsWEXPg= Received: from MN2PR03CA0020.namprd03.prod.outlook.com (2603:10b6:208:23a::25) by BY5PR12MB4305.namprd12.prod.outlook.com (2603:10b6:a03:213::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.25; Fri, 22 Aug 2025 03:42:22 +0000 Received: from BN3PEPF0000B078.namprd04.prod.outlook.com (2603:10b6:208:23a:cafe::c) by MN2PR03CA0020.outlook.office365.com (2603:10b6:208:23a::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9052.17 via Frontend Transport; Fri, 22 Aug 2025 03:42:21 +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 BN3PEPF0000B078.mail.protection.outlook.com (10.167.243.123) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.9052.8 via Frontend Transport; Fri, 22 Aug 2025 03:42:21 +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; Thu, 21 Aug 2025 22:42:20 -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: [RFC PATCH 6/6] cxl/region, dax/hmem: Guard CXL DAX region creation and tighten HMEM deps Date: Fri, 22 Aug 2025 03:42:02 +0000 Message-ID: <20250822034202.26896-7-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250822034202.26896-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250822034202.26896-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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B078:EE_|BY5PR12MB4305:EE_ X-MS-Office365-Filtering-Correlation-Id: c305e812-4e7e-4247-7785-08dde12de6a0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700013|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?bGZORGUrUXJueS9tL2MwNHczcGhxYWV2U0RFWUhvdjE4bkh3SXlyMnVDbW1h?= =?utf-8?B?TUxsRExON1pYVEJWaE9KWGliTTROWnBvNnhjSkpUNXo1RDk3cmlzSG5oWEhn?= =?utf-8?B?dDIzMnA2bnRLWGg4VmpMYUNEaTNjelpkN2Nscmx4V3RGL3BDTU1wR2hmdWFU?= =?utf-8?B?UHNZemIrV21vZlBpV0lSVE9DTW1NdmNUTHlQRjltR3Aya2txMGdmd243ei9s?= =?utf-8?B?UEcvNm5lR21JUmpSeUZ6U1VId2lrc1NkalptcXV5Y0FyVmJKWmVQSzI0RDRI?= =?utf-8?B?ckg0c0RHMklPaUxvRWFoVW03UlZZY3BnWnBzOGErRFllTGJIZ1VVTERZV1JL?= =?utf-8?B?MFoxT3dzYnBTMjlQa1lpazJFTkdSb2UxQ0hLL2dXZTlWNS9NMFJIVWF1dExF?= =?utf-8?B?VXoxcFJpZWlaaVlJK3pmSTROb3drUVRmTm4yR2hKRjFHZEgvaU9wdndIRHhG?= =?utf-8?B?aWp5djJwQlNGb1V5eG9nU2dzbmVRRHlOWDN0bVpuQjUyYVg2TGRNbG5QRHhl?= =?utf-8?B?Q1MxenBlSU04cnFmMFZoN1ByU2tkUEw3Nk1Jb3ZKUDNQN1BkRmRpWjlxSXdN?= =?utf-8?B?ZUpLbHdyQnh0cFNZTEl3Ty84aGRTMy9hUTFUVmlHV2RhNk9IYnhGV0ZtVjZ5?= =?utf-8?B?Vm42Tjhxa3ZBZWp4T0U4RU56NFZFWmdJOE5neE9ZZWVOZlc3Q3AyN0YrN2Y3?= =?utf-8?B?RmM5NjRjN2doUmpha0JUekpJVVhFdnlrTlRCQVFRL2cxODREem1vYkFtUmlE?= =?utf-8?B?MDRHUjJKUFMwT3ZneFRWNDE0b2l3Tzlob0cxR0NhNEk3TEdvSE5wa0k0R3dx?= =?utf-8?B?NnBNbVI3Qlh6WHplc1kzdHlRR0JwNDRwdjgvS3hSejY2Rk1yRUNibmpXemxu?= =?utf-8?B?eXNmamRpdERteUc2YStjeWxGb3lDT0s3SXhINXgwOGg3OEc0RDl2czRWaWsz?= =?utf-8?B?eGdPelFqK3gvZ1hkd01HTEdCNFhsakRLZFBkcUhXSS96Rkp2NmNLSlFJNnQr?= =?utf-8?B?SlFPRGVKNDd3Ym1rMFhwZ0w5L1lHcm12REZTVmhNV0pzS0ZxWS9BRXlDMDJv?= =?utf-8?B?UnVRQ3NXTXkzK1NYMGlpaGVTZkg1eFdwYWFmNTQ5RkJJNTUrUGVQV09iVzUz?= =?utf-8?B?R2RaOFA2bk51d1I0b1BVQVhncjBiQ0E5c3JqK0tYQWQ0Tm05WFRRSXcwR1Q2?= =?utf-8?B?Rklmb2dETm9MQlpnSEVjTHNPSWRnbzl1UzN3emtLRm5tTWNyU0ZVRmlWbHNj?= =?utf-8?B?K1FEL1d6QktLU2hCdHpjUlBiUWFraVZES0ZKc3BDdUllSnZYeGFPK0xZcHUw?= =?utf-8?B?UVBxWEJFcDNUNjlBbCtTY1VLOE5hZTBxM1NQODZ1cjFSYVRWeDVZeExHUWdv?= =?utf-8?B?RzE0ZTNoZ05HSFdXczhiZSsvNnRrK0QxNHBOSUdWYUFCT3V5U24xdFBXUnJl?= =?utf-8?B?SExMNG42djVLTWFNUFVwUzU0dlJvOWdkN01WVFJaMWxBT291K2g1aW1DNHBa?= =?utf-8?B?N0hiN2YwTDlmTzdlNEl0OEt4SjBvRGV0MVNKYVo5SG1tKy9Sa1JDNW5idDdC?= =?utf-8?B?V0U1NTAxZEgvK1UvR3JlNGIyVmFqcm5QVEZJTmpuK3l0UDF0Wm8vWk5hcnZV?= =?utf-8?B?cWo5QXhwL3hJSkkydHRXcEhDU3FubDF4QjhFZjFGSmhmQmM5LzNkekhlOWdC?= =?utf-8?B?a0xvdnJNU05IY20zVG5pcGFtL2p1YXZXWUpVSkgzb2xqMkc0dWx2bE9OMWtU?= =?utf-8?B?U2hKcngwTUh6M0YvVGR6dktoK1hvU0sxQkVXaDI3VXg4NmpheFI5N2Q2aEN5?= =?utf-8?B?UUZ6emphN3hhNjBqaFBBSGhiTzZQcnJPT1A1R2RZMVY3ZnFmWjk4OWlBdWMy?= =?utf-8?B?UnY4ZVZ4MWlxL3RIdmQ1NzY0UmdvMFlLbFVTazZOS2NDUzRBSGJmZnYvQVpk?= =?utf-8?B?ck5ZNmt3R2YzY1hFUGxWd3FUZUJxT052c1RmNC9kMllDOEh6enpZdWRFaVUr?= =?utf-8?B?dlZrRncyckNYUkJqSjZOU2d6YjNOelRCdmMweXBDMkp0czluUU16NUNDSmVp?= =?utf-8?Q?B/tSmy?= 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)(1800799024)(82310400026)(376014)(36860700013)(7416014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Aug 2025 03:42:21.5102 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c305e812-4e7e-4247-7785-08dde12de6a0 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: BN3PEPF0000B078.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4305 Prevent cxl_region_probe() from unconditionally calling into devm_cxl_add_dax_region() when the DEV_DAX_CXL driver is not enabled. Wrap the call with IS_ENABLED(CONFIG_DEV_DAX_CXL) so region probe skips DAX setup cleanly if no consumer is present. In parallel, update DEV_DAX_HMEM=E2=80=99s Kconfig to depend on !CXL_BUS || (CXL_ACPI && CXL_PCI) || m. This ensures: Built-in (y) HMEM is allowed when CXL is disabled, or when the full CXL discovery stack is built-in. Module (m) HMEM remains always possible. Signed-off-by: Smita Koralahalli --- I did not want to override Dan=E2=80=99s original approach, so I am posting= this as an RFC. This patch addresses a corner case when applied on top of Patches 1=E2=80= =935. When DEV_DAX_HMEM=3Dy and CXL=3Dm, the DEV_DAX_CXL option ends up disabled. In that configuration, with Patches 1=E2=80=935 applied, ownership of the S= oft Reserved ranges falls back to dax_hmem. As a result, /proc/iomem looks like this: 850000000-284fffffff : CXL Window 0 850000000-284fffffff : region3 850000000-284fffffff : Soft Reserved 850000000-284fffffff : dax0.0 850000000-284fffffff : System RAM (kmem) 2850000000-484fffffff : CXL Window 1 2850000000-484fffffff : region4 2850000000-484fffffff : Soft Reserved 2850000000-484fffffff : dax1.0 2850000000-484fffffff : System RAM (kmem) 4850000000-684fffffff : CXL Window 2 4850000000-684fffffff : region5 4850000000-684fffffff : Soft Reserved 4850000000-684fffffff : dax2.0 4850000000-684fffffff : System RAM (kmem) In this case the dax devices are created by dax_hmem, not by dax_cxl. Consequently, a "cxl disable-region " operation does not unregister these devices. In addition, the dmesg output can be misleading to users, since it looks like the CXL region driver created the devdax devices: devm_cxl_add_region: cxl_acpi ACPI0017:00: decoder0.2: created region5 .. .. This patch addresses those situations. I am not entirely sure how clean the approach of using =E2=80=9C|| m=E2=80=9D is, so I am sending it as RFC = for feedback. --- drivers/cxl/core/region.c | 4 +++- drivers/dax/Kconfig | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index 71cc42d05248..6a2c21e55dbc 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -3617,7 +3617,9 @@ static int cxl_region_probe(struct device *dev) p->res->start, p->res->end, cxlr, is_system_ram) > 0) return 0; - return devm_cxl_add_dax_region(cxlr); + if (IS_ENABLED(CONFIG_DEV_DAX_CXL)) + return devm_cxl_add_dax_region(cxlr); + return 0; default: dev_dbg(&cxlr->dev, "unsupported region mode: %d\n", cxlr->mode); diff --git a/drivers/dax/Kconfig b/drivers/dax/Kconfig index 3683bb3f2311..fd12cca91c78 100644 --- a/drivers/dax/Kconfig +++ b/drivers/dax/Kconfig @@ -30,6 +30,7 @@ config DEV_DAX_PMEM config DEV_DAX_HMEM tristate "HMEM DAX: direct access to 'specific purpose' memory" depends on EFI_SOFT_RESERVE + depends on !CXL_BUS || (CXL_ACPI && CXL_PCI) || m select NUMA_KEEP_MEMINFO if NUMA_MEMBLKS default DEV_DAX help --=20 2.17.1