From nobody Thu Oct 2 00:58:07 2025 Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11012036.outbound.protection.outlook.com [52.101.43.36]) (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 91309262FD3; Tue, 30 Sep 2025 04:48:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.43.36 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759207697; cv=fail; b=shh+RpSoB9TyQ1LoRodVttCJBK5lLKxJ5cewgaI8eClUSbpTxejMXhcL8LPQE3I+Qg8YfmPPTurdGlUy9gYOaN9zTT8M7+QBRAMZ1QAgsQgC/3/rvGcq2hL95L6F56sBwu5AqO+YKExqLwxB63ITkoyqMvXenZfzZ6zQKBQV9YQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759207697; c=relaxed/simple; bh=V4yMNgEhh7MK04wsd8RvmubmaMyndrueeekyKFuDYg8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Whbm/wK1WeHN5R41WtK91O027AKbfYp/KFY3Ap0CoD4fJ5ITzi3kOklxaHU0degOrvFylG9QOn8QBkUeLfNoxHFY7impVzgV3weWeH4wc8rVa42QUeMoRIvdLp8sJaS02Ipcz5rBt+QYxFCyBX51j8jsIlNOcjjyL4w8WGTudBI= 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=Qf1rBX3F; arc=fail smtp.client-ip=52.101.43.36 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="Qf1rBX3F" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iarJToUVgDzfr3l04tCjQ1jEw9D6vtcer5/QAupCpL/vCwVwLlDlp7CDTF+RBEdC5qkBB5u+k1DTOOnMMaMPSODADwZBuG2TGUwBO3NHlLrgWjiMdMnf52mPa0KINg2B4AiMxY3Nu+eH2/FeK3vDvWHamVh3bw4SUe2UVvdfuQNnZLbJBMUNq6lO7mix6DWi6dKGnyGRDOUaquQtnXvHX7o09/17e8/qX8+UnO8QPtPgW8LgB6YLqCfCRYKut7UzYKfzK2EYSw0dsTJwvZ9yKi6nONoU+5AnX3eICfqYbAee2VeSAWdm7wP/BlbJaXs2VEjm1QcSPQTVzHdk1CEMmQ== 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=TSrO0m4u6mlcT96L/QQYH2R3BEozxm2oE5lOmnXcbIo=; b=Y3FVb4skizDBHuYefx2UKxAtBnNr5Dp1FPTM8mUnfuu4JgKUx1XzXGQMrEgf/YZGyMpo7ikeRCKdiPr0aFrqXyfcKEOU51JRzU+/xofqj9dTPcfQm1QMdz6sO32L6doRRlKP16By+THjOvxZB2VdyAqBLahnSph+tIJZ/akudL+VobI8zS24NEbG6FmhvtY7M9si1YxU9XZxzPZRDYla3jmySfTmCzYMY3hEV6Z84iQ9Xfkk0Afx2qLJXMEZ4lA6tFWcN73j1jezotL/dLaNqEHJg7UH+a2LV7vdG8Ia7uMeSDKNRRP8ZABT0irzlfUtJEyL3tCnz5ziE7vGEfvu1Q== 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=TSrO0m4u6mlcT96L/QQYH2R3BEozxm2oE5lOmnXcbIo=; b=Qf1rBX3FrAQKs3x/yVOQC4cM97N2+gWHBBmoONW+dzgZQ6akGqVHvw7b6xXrsEXRkrXYa3dn+Kjh4KKc7VSr1iZokitZHEF1kOOBH2fYQPFlZ4dQ4WC1H6a4fdQ1fFFNGo9YIrM9Xrhk1/HBWfepS0HJgtnl3ejseJ0DYcP+WDs= Received: from BY1P220CA0025.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::12) by IA0PR12MB8227.namprd12.prod.outlook.com (2603:10b6:208:406::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.17; Tue, 30 Sep 2025 04:48:10 +0000 Received: from SJ5PEPF000001E8.namprd05.prod.outlook.com (2603:10b6:a03:5c3:cafe::f1) by BY1P220CA0025.outlook.office365.com (2603:10b6:a03:5c3::12) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9160.17 via Frontend Transport; Tue, 30 Sep 2025 04:48:10 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by SJ5PEPF000001E8.mail.protection.outlook.com (10.167.242.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.9 via Frontend Transport; Tue, 30 Sep 2025 04:48:10 +0000 Received: from ethanolx50f7host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Mon, 29 Sep 2025 21:48:08 -0700 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 , Zhijian Li , "Borislav Petkov" , Ard Biesheuvel Subject: [PATCH v3 1/5] dax/hmem, e820, resource: Defer Soft Reserved registration until hmem is ready Date: Tue, 30 Sep 2025 04:47:53 +0000 Message-ID: <20250930044757.214798-2-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250930044757.214798-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250930044757.214798-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: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001E8:EE_|IA0PR12MB8227:EE_ X-MS-Office365-Filtering-Correlation-Id: 3860e479-44d1-4daf-6f24-08ddffdc8e53 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|7416014|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?1gNiAstxtz3LOmNuQaigare15OzsGZS/YX2XfKOcL1sLru9JvmSK3vy2WC7F?= =?us-ascii?Q?tl8cOc/jZ+1E6vwE3B0O6eh5pWvLpcQLjxgbZrKxQJ0vcB+NbPEzC1y2cxiD?= =?us-ascii?Q?36AziOGXLDJSwv2RyuWSox8PI4fL1tDO2JYAeD/6xo1do7J1tXLg9GnH61cM?= =?us-ascii?Q?8YEgUQ1p6bKc8FIPQeTqGTtrEQedsi5e6U2mZbJi9zcUwNrEP3BMfODwPkXb?= =?us-ascii?Q?G9gXLcZFYy7ksIkDrsaOSy09/nf1ltZvjiZJ/XnQTgbmsDdvvm5NbiufQUHr?= =?us-ascii?Q?ubGc1TUjMDKe39NzQ78TyQk3jS97iAhu0VDapAsWL77qDp/90f9vi0VPNjDk?= =?us-ascii?Q?luMfj8Ftbm2NUHMMUZPvsn8Ef048/zU4S6BHuzyNxL29qvOKanm+UlLgDgXa?= =?us-ascii?Q?4pI9EFFfeDkZMjJR6/2XbRyRQGzVXhw+CMUPwhYoz8kJoiXZW1y9mivd7x5L?= =?us-ascii?Q?f3S5kg3SlI15aPhwN64d0WAsRo4fIhne/NcFSH+HDQn5R37byFLcMxiJqQVy?= =?us-ascii?Q?DsGNDbAx5uuiUYuf3KA79pMJxmsN54zTqX12Kr7iAyyDT8Ngcrxd7xNtj6k1?= =?us-ascii?Q?RgZ4d1aUcZGGD5nzDw0HQzGE7cqbuLbAAZPuWwo+qOZv6YNmlwiIkeVg3P7X?= =?us-ascii?Q?dADKSn8mnZhk6hAneECjt99wfuGyad+gq3MCfYyDvlOzMfLU/LlfQAPgAqeB?= =?us-ascii?Q?ieBb6xF4d0PSDQgIxtZBKiCKPDIKqYDug4YjwASrJyt9EdcxF0qhUNsJHrnB?= =?us-ascii?Q?/kluDQuLhZNJXXALBGGpDGWFdHkcHXPoeMaapKzkR/PF/mYE0F81EboNY8pV?= =?us-ascii?Q?Tzhem1HVlzp7NnEnw++3L7q+r7HqWwY4yhYzdI0f3K8SF14Ve1WIBfsHp6h3?= =?us-ascii?Q?HaAZAljYAK8wqeCdVbFSCdGSDvsQIuMpw0fjyPTnkQdtHHzcINz8fs6j4yj1?= =?us-ascii?Q?5ma6tUzuk9mPkHyECm2jqpiNY5FvI69dCONXUrhbxMA+2dGgNaYxcRfLRaWF?= =?us-ascii?Q?a/RZJ9uFH4SmgEUZWBegBfJ+iObM29aIgalikiwWBJ138W5r0r0fn9yH1RSG?= =?us-ascii?Q?GHMK2+dGW9efcxVR4ckVu0ALtniVVAGVmByapfIw63nnq3Cn6NLaWAv7K3WJ?= =?us-ascii?Q?Voi2QhEKvs0kZwx9RTcUt5CP2wZljEeiGCFohZROiaGlHz5BDj87aQJUq3Bj?= =?us-ascii?Q?4pgSLW5EuHKcxAt528zAcTKs8guzUQ1dcABxuhEjapp5s7KE9dAQgzuFT4nb?= =?us-ascii?Q?Bjr9xcVpuNGFiH0EBlFY4atOhwDY94B8oO+Jds1jeQ/j+F5LYFiRVbFKlwTj?= =?us-ascii?Q?jfI5mqRhI5HwiwlCOVXig2/QDvjHZUZ/QIjP86lkapcZdHbHRSgr9WCuHFRD?= =?us-ascii?Q?srXFYcXrOoRM6UTBh1qp0nENQDliUKFYRIgfArljTngrFv/nsFaoto3MF1gt?= =?us-ascii?Q?Bb4zEf/AZd9zJt7erRBmQx3N4fFf2ChDrQzKW3osswnXNTmvAFg9aFdAsewF?= =?us-ascii?Q?N8fcb89i2jj5ljv0YFsXwYSM8zFFuN2S2AW7RuypSf9RMc5MlU/VuwOtnF8p?= =?us-ascii?Q?OkNtmFiwxYjKfJlHnbM=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(36860700013)(7416014)(376014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2025 04:48:10.1480 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3860e479-44d1-4daf-6f24-08ddffdc8e53 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF000001E8.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8227 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Dan Williams 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: Dan Williams Co-developed-by: Smita Koralahalli Signed-off-by: Smita Koralahalli --- arch/x86/kernel/e820.c | 2 +- drivers/cxl/acpi.c | 2 +- drivers/dax/hmem/device.c | 4 +- drivers/dax/hmem/hmem.c | 7 ++- include/linux/ioport.h | 13 +++++- kernel/resource.c | 92 +++++++++++++++++++++++++++++++++------ 6 files changed, 100 insertions(+), 20 deletions(-) diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c index c3acbd26408b..c32f144f0e4a 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_expand_to_fit(res); res++; } =20 diff --git a/drivers/cxl/acpi.c b/drivers/cxl/acpi.c index 712624cba2b6..3b73adf80bb4 100644 --- a/drivers/cxl/acpi.c +++ b/drivers/cxl/acpi.c @@ -839,7 +839,7 @@ static int add_cxl_resources(struct resource *cxl_res) */ cxl_set_public_resource(res, new); =20 - insert_resource_expand_to_fit(&iomem_resource, new); + __insert_resource_expand_to_fit(&iomem_resource, new); =20 next =3D res->sibling; while (next && resource_overlaps(new, next)) { 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..48f4642f4bb8 100644 --- a/drivers/dax/hmem/hmem.c +++ b/drivers/dax/hmem/hmem.c @@ -73,11 +73,14 @@ static int hmem_register_device(struct device *host, in= t target_nid, return 0; } =20 - rc =3D region_intersects(res->start, resource_size(res), IORESOURCE_MEM, - IORES_DESC_SOFT_RESERVED); + rc =3D region_intersects_soft_reserve(res->start, resource_size(res), + IORESOURCE_MEM, + IORES_DESC_SOFT_RESERVED); if (rc !=3D REGION_INTERSECTS) return 0; =20 + /* TODO: Add Soft-Reserved memory back to iomem */ + id =3D memregion_alloc(GFP_KERNEL); if (id < 0) { dev_err(host, "memregion allocation failure for %pr\n", res); diff --git a/include/linux/ioport.h b/include/linux/ioport.h index e8b2d6aa4013..e20226870a81 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); @@ -242,7 +245,8 @@ extern void reserve_region_with_split(struct resource *= root, const char *name); extern struct resource *insert_resource_conflict(struct resource *parent, = struct resource *new); extern int insert_resource(struct resource *parent, struct resource *new); -extern void insert_resource_expand_to_fit(struct resource *root, struct re= source *new); +extern void __insert_resource_expand_to_fit(struct resource *root, struct = resource *new); +extern void insert_resource_expand_to_fit(struct resource *new); extern int remove_resource(struct resource *old); extern void arch_remove_reservations(struct resource *avail); extern int allocate_resource(struct resource *root, struct resource *new, @@ -409,6 +413,13 @@ 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 *)); +extern int +walk_soft_reserve_res_desc(unsigned long desc, unsigned long flags, + u64 start, u64 end, void *arg, + int (*func)(struct resource *, void *)); +extern 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..70e750cc0d7b 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,22 @@ int region_intersects(resource_size_t start, size_t si= ze, unsigned long flags, } EXPORT_SYMBOL_GPL(region_intersects); =20 +#ifdef CONFIG_EFI_SOFT_RESERVE +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); +#endif + void __weak arch_remove_reservations(struct resource *avail) { } @@ -966,7 +1019,7 @@ EXPORT_SYMBOL_GPL(insert_resource); * Insert a resource into the resource tree, possibly expanding it in order * to make it encompass any conflicting resources. */ -void insert_resource_expand_to_fit(struct resource *root, struct resource = *new) +void __insert_resource_expand_to_fit(struct resource *root, struct resourc= e *new) { if (new->parent) return; @@ -997,7 +1050,20 @@ void insert_resource_expand_to_fit(struct resource *r= oot, struct resource *new) * to use this interface. The former are built-in and only the latter, * CXL, is a module. */ -EXPORT_SYMBOL_NS_GPL(insert_resource_expand_to_fit, "CXL"); +EXPORT_SYMBOL_NS_GPL(__insert_resource_expand_to_fit, "CXL"); + +void insert_resource_expand_to_fit(struct resource *new) +{ + struct resource *root =3D &iomem_resource; + +#ifdef CONFIG_EFI_SOFT_RESERVE + if (new->desc =3D=3D IORES_DESC_SOFT_RESERVED) + root =3D &soft_reserve_resource; +#endif + + __insert_resource_expand_to_fit(root, new); +} +EXPORT_SYMBOL_GPL(insert_resource_expand_to_fit); =20 /** * remove_resource - Remove a resource in the resource tree --=20 2.17.1 From nobody Thu Oct 2 00:58:07 2025 Received: from SA9PR02CU001.outbound.protection.outlook.com (mail-southcentralusazon11013043.outbound.protection.outlook.com [40.93.196.43]) (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 062EC2472BD; Tue, 30 Sep 2025 04:48:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.196.43 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759207696; cv=fail; b=BzubTDuNJ/hh7+D44FjsZxXvqmpgDKA9SS6fXY/gBxsa/9M2A2eLQIcOaJ9IEO8I9albGdc4OeSnvX27JdnWVVKOHF83u1CaMjEFcVkf3zyAw4U28Y24VF+HCUQr3Esj/bQdS9YJ//OhFHzsOb4uVfrElsfx4lnXEPUeUaXbX9s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759207696; c=relaxed/simple; bh=x2w4n85FGFNMzlT+WUxgZLDsBBJvDLZMVBgI4S9KUWY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=V/q6bKN9JdYI95B4O3HZeqlPfP+ronKqB0PtWlWZlMKy5oXSzhMMWW4yEhUaZsLkpIgS991iVrtYZTAbcKGX3VE5y0LKPVUvYmt5HnebcWJtYJ5CzGf5VEg3oXoaunRjrURNx/j9NxEUrHA/HGcupi4Woqj+vwY7wYrLcEfjeSk= 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=22e7cfvP; arc=fail smtp.client-ip=40.93.196.43 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="22e7cfvP" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lQakiO978ARgzeOW2H8eByCCIneT3kaBQaxJNt3vYaDRjtmSDaqyLZlMqnxv0tuWVT/zp5hLskXajjSbbt8XEiQFQ2XMizpNDafMxFZfvCwhPkzzBuB1BuL97cCKVzrbxKjjchjB1LT4ex5AAgLu2dTQBAWQIA8onAa8GI2QM8P2Oyh29XKmwAy+FINhWTR0FZOSrNHCZz7iGGmcWD1XFgpkt/fDsohaxUhKdpUJUEPnSi6LqXSVAVCqCh+zBvSXU4Wa8qqJsT2zptF0B7iStt6EUvuNVER1EI8isykoFJ3nCqUlf1ypWSUVKdt5LTFRezEHoUNriaB/3AX0x6DcXA== 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=HSQ5jqPZDp0lVmqZYWhF+HkDbaVaexTZR4Tn1gl/iyE=; b=y3Ii/8HlmxIfsrCRjhtgEYqNTrCCKVBV6LI1dnYHpdUa9/TMnp+BRCAluuju0laISWoNI153XpTSWXDGc0w7rWWcXxIDCvwWfMHLMOZ1sq6Ai9XccH65Y0WfHUJk3ozvAwU6Bc58UsVAbv5QckK4psKtBLynNIa1NUo4wVECiFrm96HFHB8i5tccOkC93Wtjp9VU1o1FKtI+EkPHInfwUI+b0ApdI4uVZ7x8dxOQImNJxXPGbuz379cCr0f0+BQmw8uX5bFZdNAfmBtPTWcvgOPHffaGuji5qjVpnQLCJrlZqvmfbEbtrk0zKcB/0jWX9+3AJ14E8XeASdPVQYzQsA== 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=HSQ5jqPZDp0lVmqZYWhF+HkDbaVaexTZR4Tn1gl/iyE=; b=22e7cfvPOTbv3kWDB6wk9g+VgR8PPWPLI+gS/orbDLxMuwuoR/sXDu28yvf6/Uf0tVqIVEf2aCFJ2e7jAlG7IvBYOJk/CjFkBXoIqETzn28pv7s8V964otXzx7rH7ibXBRjb9z4+loL2VGFa+CQIyWajOYO04OIJ7nnrBf9xA2U= Received: from BY1P220CA0024.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::9) by SA5PPFE494AA682.namprd12.prod.outlook.com (2603:10b6:80f:fc04::8e7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9137.19; Tue, 30 Sep 2025 04:48:11 +0000 Received: from SJ5PEPF000001E8.namprd05.prod.outlook.com (2603:10b6:a03:5c3:cafe::58) by BY1P220CA0024.outlook.office365.com (2603:10b6:a03:5c3::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9160.17 via Frontend Transport; Tue, 30 Sep 2025 04:48:10 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by SJ5PEPF000001E8.mail.protection.outlook.com (10.167.242.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.9 via Frontend Transport; Tue, 30 Sep 2025 04:48:10 +0000 Received: from ethanolx50f7host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Mon, 29 Sep 2025 21:48:09 -0700 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 , Zhijian Li , "Borislav Petkov" , Ard Biesheuvel Subject: [PATCH v3 2/5] dax/hmem: Request cxl_acpi and cxl_pci before walking Soft Reserved ranges Date: Tue, 30 Sep 2025 04:47:54 +0000 Message-ID: <20250930044757.214798-3-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250930044757.214798-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250930044757.214798-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: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001E8:EE_|SA5PPFE494AA682:EE_ X-MS-Office365-Filtering-Correlation-Id: 2ab85c74-315b-45fb-de36-08ddffdc8ebc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700013|7416014|376014|1800799024|30052699003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?eNMnirAhc6T53SRFalep//llpmXL5yvbroTMssJz14EJeSN19Y9ly3h7w8Z+?= =?us-ascii?Q?Ebdw4Dj4n4uHVzoUNw8kwFKinfdl2LFfhOi+VUDScraflDMRiyXP1lRtB/Kl?= =?us-ascii?Q?8DB9sUhTx/BldPnCbVmGMHBifZPBWarGq3LnHUD84baEp2+kiRKoGYzneElP?= =?us-ascii?Q?dDhQcc7nd7xOj2O3jGVVA5K58tFxcffGwV7U3UGXxwl8scuFpr8WZkct1zjr?= =?us-ascii?Q?yY+KQAojZu0hAoAloUJHGJb1Jmz6Kh1TOnINKCQTYnUco8CUycMUIK9/sMTV?= =?us-ascii?Q?K0XB+bRQhy+r0IZz3/K8Y9+jKB2Zy+66a5pRmegObDgvQN9Mw2MjYayBGQm8?= =?us-ascii?Q?jcIanS9U90G8zPYgFytL29XLmvogLYecJEQrwXvlAkX6EkeL2/xnIi8Pypr1?= =?us-ascii?Q?LMaF+QNHICccHvYqstDAWxEj+hXN3xLStm6Zw4eHaRPd5LwihEIMKY42eBhJ?= =?us-ascii?Q?hbWMn7wQq1Pxf1n9wfcIolbO904zh5/NNPA54GXyhn1b1GVW53L4hLeIwJT0?= =?us-ascii?Q?mUioF3AdYACCpN5S4a06ykmPopBF8xfdsCj3QYInfKWuVJ8UDPKsqBoKLjS0?= =?us-ascii?Q?THPQ815TBv7/6kCyaaeCvFb2Sl9Y22Ppzlb8S/1vx0WUtRD+TFNLWcNQBvEg?= =?us-ascii?Q?pTbutDh5CmyYtVQt55f+n4O860utocOWCnhddNqCW8kfYlLNiCP9eQPH2Ifq?= =?us-ascii?Q?ME6ykqOVcfBjrH3OuD4BUCRTIfTn0og5OZHp1hO5DyvSAwN/d4AlQsik7j/8?= =?us-ascii?Q?tPJCJ3ZoTnsR8kW2Ib8sf+BNDcQhYqT5r66uW06NUSQPF6Kety3vN3QJfwGA?= =?us-ascii?Q?ji9TXnl9VdUX5mHoeuLtKJJuhfm8PaHVbKqeZRuOXWHGgP5R5k9S85usSlih?= =?us-ascii?Q?CrMkPkss3Oj01/fcW994RCJ9vBdmWUrgHKSmiXeJ2ZjwBkpJ8DPyKCNQt9Dm?= =?us-ascii?Q?FPR3+k+wJhE3QfTH9bIp47llXSZ0xLA/G9ERzfE2FMuIMvL5ok+FA45/49Ul?= =?us-ascii?Q?B0AM8U4VGKSfvEJMMdCWqd13uxhEbW7piPv0OVYh1YyT3cey2ETY7H0xWDNi?= =?us-ascii?Q?Y8/ff68tYx2FIYlc5dzz8Aa0fxGC+Eu+0lD4RaQabLMJFclS6uP4twtHZHy/?= =?us-ascii?Q?XVQlO2uctxgCf+2uUr4YH3E31fij6m9hiS1tn41Tyx2rUvurNLR3oq5P8RIO?= =?us-ascii?Q?ko2DWQ/TXmP9do+W3TUtTRh7R5S2yk3p5FNrsJOGLT8Mb4GLCDh3TQC3S5g+?= =?us-ascii?Q?W6/DJLD1cmvtSdhbSHjnV63Eurct6EHEL7rnAfjrHAevvEz9hE4R30gXvg/A?= =?us-ascii?Q?3iPQqYMnPEThEfXZsnlsUYlQgduHt7og2e7nXOd0Oqn8xu6QLx5LA2GNWY0m?= =?us-ascii?Q?GxhNFMpJzqgx0OToBVv5q+sOl8oHp7BtibIEQdp4MOSHkjtkbPIOLqA6UNvS?= =?us-ascii?Q?tqnHh67v7dQY0OEQDL6Mi1agOdxVkzVF48tYM13Egm+yD+5rjDFfi2yUAN2P?= =?us-ascii?Q?VI1QyXiX8wxpvnbLfG4sodA9U2GA1ILPh+xmiTdQIc0x3AFWPI/qjVOYs5ho?= =?us-ascii?Q?YpOh8Ks6Ykv1+gWGAtE=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(36860700013)(7416014)(376014)(1800799024)(30052699003);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2025 04:48:10.8397 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2ab85c74-315b-45fb-de36-08ddffdc8ebc X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF000001E8.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA5PPFE494AA682 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Dan Williams 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. Add an additional 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. Signed-off-by: Dan Williams Signed-off-by: Smita Koralahalli Reviewed-by: Dave Jiang --- drivers/dax/Kconfig | 2 ++ drivers/dax/hmem/hmem.c | 17 ++++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) 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 48f4642f4bb8..02e79c7adf75 100644 --- a/drivers/dax/hmem/hmem.c +++ b/drivers/dax/hmem/hmem.c @@ -141,6 +141,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; @@ -161,13 +171,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 Thu Oct 2 00:58:07 2025 Received: from CH5PR02CU005.outbound.protection.outlook.com (mail-northcentralusazon11012062.outbound.protection.outlook.com [40.107.200.62]) (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 5244626529B; Tue, 30 Sep 2025 04:48:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.200.62 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759207697; cv=fail; b=X8lZ7QIc0vlJBFJTx06qQxSpqgMSY8P9OaTLVNj8FDqBDLiNEe05sfFrb0AEjjD1ePjuVi6BvFM3Z+D5zexWJirqqJQN6nl81wCRdPHJzzFOW5vA3La/5fkaO7EQParUrREKJ8DQJwcy13PzKaCnID/ISvIwxyHDgDTVV6VxAjw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759207697; c=relaxed/simple; bh=gyzzOdjogrF2nGbqKXspVsgzAB2DUgrZH2wJX3ELSuU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=dHdYpSd8g7BqSfPwnVIWudFKBorN59nOnKnacs889bX9m9BPIV/r4Og9RagRE9eBWYqAzGgVcgMaAar+82hejGRtl/VcoQC0bgJ/Pjq2d1mGehUnu5uhiMcsp6DvA5+5tgsFzBulrveoWLN//dGhXWx1xLnEnYEtbKtIEZjuC5o= 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=AAcp1Rca; arc=fail smtp.client-ip=40.107.200.62 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="AAcp1Rca" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WNw6gh6OjutvupM3YgHSjzcSGJWGqG6+cM6MBOl1Fsx9s9xGZfYxK7RddOnTDQqbDR1d3YeJ8dYW5/cx5hsrWksiefoaKlz3opgOZxzFampyDxxdbDxSjAmVXEq/QBbSXmLlKh07U+2J/xSikOq6cbbRQIyx5IJ68cX/TCiUI1HEAMfXrqc7FEnbQmYdGqLgwg7B2Ri/CDd//FnUa2NmWPeiehjeTCaW0rBXSGLZHyB9oJJxC2Pmn5vtKQ+OYie1YQHHYRHQfHQC7HGqqQByJTSvyxce9n39Bb2ErkDcipmf7XpDFkiRYraBg+zVMw9wRgkTF+ayux4TrnSY7TFZsg== 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=Qi9bzNnXYcX62J6yZBgaOmuGxA469d3CJUp/ObbUFns=; b=xFmOjeP55mE9TrAANsKjbZUWaCEG/YKoOWWBfWJKLJT5/0lvK0EDuuyg2AhBvWPAH/uVNprKOlrCwLOLYOIGAccHEDIBH0VXjrS9Mp+Z5UV2ZG3ZGKoKVH5oDpLZ1sxKAUSA0yQQoKG/bvwDChXGjC0O6K1rdiwKf7CQhf6nv+V2+/q5GgDH1zyfTmDynvZkwcyIH+jHmYhLR1X+a1s1tvdkRo34O/Edcab/8rW9TmdwEPPzPY07DZ81iNfWsnynvzmolgbyDjWZVWEemxU9G8GjpO2LDqaIO4yL2x4ssOGELsTlzXMxmb4nN2yOUk1JwJ8MdyQX/BljLnq+tJAI1w== 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=Qi9bzNnXYcX62J6yZBgaOmuGxA469d3CJUp/ObbUFns=; b=AAcp1RcaxTYk29GsNJ/zCTOIYyyLSrwCsqy3PkHsHnC22K8XFMATSA6aQ0QWYl8dx/mC4fzLR9U/0iD7JovzKuxtHXrqj9H8KX3XmWmk5TaSLtwMIrX8tSd97yqj/kCNVsFV8E6W8nAh0+7T4z9kR4ym2A2yPul0WzRMiwwVofg= Received: from BY1P220CA0017.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::6) by CH1PR12MB9645.namprd12.prod.outlook.com (2603:10b6:610:2af::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9137.19; Tue, 30 Sep 2025 04:48:12 +0000 Received: from SJ5PEPF000001E8.namprd05.prod.outlook.com (2603:10b6:a03:5c3:cafe::d7) by BY1P220CA0017.outlook.office365.com (2603:10b6:a03:5c3::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9160.17 via Frontend Transport; Tue, 30 Sep 2025 04:48:11 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by SJ5PEPF000001E8.mail.protection.outlook.com (10.167.242.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.9 via Frontend Transport; Tue, 30 Sep 2025 04:48:11 +0000 Received: from ethanolx50f7host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Mon, 29 Sep 2025 21:48:10 -0700 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 , Zhijian Li , "Borislav Petkov" , Ard Biesheuvel Subject: [PATCH v3 3/5] dax/hmem: Use DEV_DAX_CXL instead of CXL_REGION for deferral Date: Tue, 30 Sep 2025 04:47:55 +0000 Message-ID: <20250930044757.214798-4-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250930044757.214798-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250930044757.214798-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: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001E8:EE_|CH1PR12MB9645:EE_ X-MS-Office365-Filtering-Correlation-Id: 15583d6b-b105-4368-77c0-08ddffdc8f49 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|36860700013|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?HNUo18X2izVCnTrR69VGdPEs0p2T0tM4JUPV8wPYAbKMRa0eSLUDkYXSLhba?= =?us-ascii?Q?wo6DaEiqHWtOMiB/8TqMeAKGGMLt1xDQcGp4tgsbNkHyLJGdxqYBUtcFeqLA?= =?us-ascii?Q?iXJ1gUWzBfY+434YTSZdZbNIQsoZ4ckhvpPnvGng9pT/JvcNQYwh8JC+p/iW?= =?us-ascii?Q?5Sakus4peTI3c2AwNPBlgxXJMLW3NT1TeT6gYv68HJTu9lhoXxU1ULWBXK/d?= =?us-ascii?Q?ulygT645f5p/PS7BF6FmDsmyYtiT3PSLDHRvnj3YQA69q0Sc65D+pLqswwHF?= =?us-ascii?Q?pWgGLulOSXubsJvupeLS745apv2IHkqe7GEpVP64UxCRuLWJhRne94o63mO0?= =?us-ascii?Q?FccIJrvyWbljEpttKaviIqKQxnQM3TMKK5Pu16fkcFAnMzvP497mRo0CvcZm?= =?us-ascii?Q?tLAl+TtYFBjLxwzgN0sd347UYT2VqNXfeL7/pby+Rzg8i/gUqTNGSRqSTj6n?= =?us-ascii?Q?KDizdZkQx1C6/k6KVn1B4NkY3TI+VNDdvhM/29myAvKI2P7Wg6R7+IDWlon7?= =?us-ascii?Q?CM/vkC4cbGZU1X/D6M4iKOlkY+RHdH9z4ixuoDvHdQ3wk2eUludGb2HYoi5y?= =?us-ascii?Q?le7iVkhxL//dTUlBEYArntCqSe0nSGlqVXClgaaXBUJaHadOy5UWZ78YnYJc?= =?us-ascii?Q?pgy7WF/R4qpQP0BRa+BD1bv7bFJYHm0V00T8FBUoLN0qCV9BhkYQZXViJW0A?= =?us-ascii?Q?96GggXseToYmnkySdwz6z9ynigH17BaHFJUdjVGf6EnXgt3YgTmAlsOkt7BK?= =?us-ascii?Q?82pCyfSYZ418wviwQSo18aAl7QhSWYN78CodyDdlCsDM8vFyL+B/Xyzru0Rl?= =?us-ascii?Q?zoLyU1Jm3nDDbkgdnWr0XxVNeU65cLhWQNopX4diKDReSTs9lY1PIebyUdbf?= =?us-ascii?Q?HncGLG3m/FxYCtUMWxrry9ICecj2mbEMG4icnRGiliYuOcXQBx89VfNLWzdI?= =?us-ascii?Q?wpyMsR8/+63FTbDx9nOosGieTTRsVM3//CdjMmC/M2vdCgsOendc6HNUhtjv?= =?us-ascii?Q?Wo0vX12OQGwAfgrh2hSJNWMu6YNqCo3T8BtuIm+/ny8PlO0oy70n17QWTmoC?= =?us-ascii?Q?AiM+I7NKjeDIHRVrIKybWj4ok5FLvsL9d6+pr2bugUMlbrt48ZfrWF8xg9WS?= =?us-ascii?Q?M8zRZrrDFWSc03InDtUhHafWgE6+/ncq1GmPLL/IIClQAan/M4XqZHv65VqT?= =?us-ascii?Q?eKnxWo862Le5Q8japf9bpaTEOJAUOd4drcSdrehc+5Ri6LVllAUJv8VFHUoC?= =?us-ascii?Q?etDVyvFgEbsFAYyHbIaCi+nafXsWIBlhLTL+hxv9v5EC38PgkYY4ejNdXzDA?= =?us-ascii?Q?JIeY+sTgvz3iK9eGAXlV1zQCL971rNkmthCwsdMntOBm9aOYJZXj4JTVuCh3?= =?us-ascii?Q?jsYxkfQxY5ZZHu0vGa2boZ77tLui2O+XYi3MMFugLqMTXlqnyctJLyYDAonY?= =?us-ascii?Q?eVOL7Ch8py2TLsxXAW0ODPk5W2xU7Y3/hnDaoQXi4UzOVRi/N4INHIfg77rm?= =?us-ascii?Q?619eLLfqF6auUarEX99wFJQw9qXjhz92pNgISfr34JGaJHB20lgEEjDL0NJe?= =?us-ascii?Q?npVsw92d8gynSa5IqUA=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(36860700013)(7416014)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2025 04:48:11.7609 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 15583d6b-b105-4368-77c0-08ddffdc8f49 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF000001E8.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PR12MB9645 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Dan Williams Replace IS_ENABLED(CONFIG_CXL_REGION) with IS_ENABLED(CONFIG_DEV_DAX_CXL) so that dax_hmem only defers Soft Reserved ranges when CXL DAX support is enabled. This makes the coordination between dax_hmem and the CXL stack more precise and prevents deferral in unrelated CXL configurations. Signed-off-by: Dan Williams Signed-off-by: Smita Koralahalli --- drivers/dax/hmem/hmem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/dax/hmem/hmem.c b/drivers/dax/hmem/hmem.c index 02e79c7adf75..c2c110b194e5 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 Thu Oct 2 00:58:07 2025 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012040.outbound.protection.outlook.com [52.101.48.40]) (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 CF597271464; Tue, 30 Sep 2025 04:48:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.48.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759207702; cv=fail; b=oNv1fGXlS1u4dK0kJE5qmeFjRZsxu2sSu2H9FbuaGls/xo7QBJIB/ONqfkJzzIyxdpazQZsYOOpBW17pnzM6QYKdVtapAgYwaMc6jplNsqXJJPUSky0vCO2/Xaq7HiOt9F6yMailEX3J6ar6A4fZunHYwAwV9y0xm7cgO9uWL7k= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759207702; c=relaxed/simple; bh=bM6zgPkc/WSk3V5BgjpmdS6XIWMDPdmgExWWZUDIDgY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=MNzcuqxQ9ilWzK4j9l9qbytjOTOdkN6glUKdnfSZJyFJCqrwxiabQQ2NGvJIL33FgkwsdZ4D6f44xDuaY6LAKQZs7hTngUwQfJcQ49keWIMph+uKfd//QchtuS2irFithyFlSpfw+4+u6WC0Fgcii+NILEtCOZQhxDmgXAO/s3A= 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=twMjbj9C; arc=fail smtp.client-ip=52.101.48.40 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="twMjbj9C" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ojXxkU/+D+IpfQHO0ANUNJ9Cinx0uZfdu+vTvFKQ8ppbrp9jC3RZVbmFazXP3jA0JczrYhzCXKNgffdhlkB8vwZP1G1YL9Xfiq6iXawHyKcV0zMi/mjupVMzqy0YzKunlhCOeYHO2v0/ugD3uLXkEIigHjpYP0vmSk+rOvVFTo5B4kAjiLmcN1FTQRmc1uYkMQwcQzjFbDepZS2BjJyZXQIxYDhhPFv5CF5p+gvD+fMateogcXFoQtc/4SilfRnqRUtApnaMIM/n2R6DizdnHCKpSauVZLPUUjZwgCMbFR7EcSaI9l/HSjPL3ti2E5IysOqsmoarKyPuXI9dI/hQFQ== 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=nU85OQv+cw1A5brQstAzlJdfY3ITWl3Ohn+ZIdwk1zY=; b=GhPCYSJQnYxk3688AasaGcGJ61O++UsEdP+yNxH4XGrUSmkYZTpZytsS8gIbrCiLs8WdZJF1eeyShgPJ+vRJrdteCeY0HAh0dFp3M0fleo1GHK2iwBd//LuJ/St8HS7tuELhrA4XnT5BUP/H5UHil4xUAghGG4BchTE7h+PjkQT2wwm8L/Q9PHAFXhqfBgAQ2sAWTEnQ8LQcceDORcjH7wc4wxQ9CzitneFfiEnsVb2VA/AvGw0rQQNwWpCOJ+2DTuN7bZ+diuAumrVgIUbfGLqtG3N7Vig26LacYvWXMBd3RBb65EOvw1tX/8lFruDG/xulRBFIWlDb/Yf0s/wa1Q== 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=nU85OQv+cw1A5brQstAzlJdfY3ITWl3Ohn+ZIdwk1zY=; b=twMjbj9CRYThWbmaWBh7J83HrM95N9v44tE57TuHBP9Ilx0kj5a9bV7FOg0uRE5sFbIJDwnGhXmHNNSO75AC87KZNviVK8v2iZUUWNy96L6OkyM51PqoRH0LT4GQfluaZMz8tib+TdEcI5HAxeErNRdhUhnV1xmSU91orJZsY90= Received: from BY1P220CA0016.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::13) by PH7PR12MB5735.namprd12.prod.outlook.com (2603:10b6:510:1e2::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.16; Tue, 30 Sep 2025 04:48:13 +0000 Received: from SJ5PEPF000001E8.namprd05.prod.outlook.com (2603:10b6:a03:5c3:cafe::f8) by BY1P220CA0016.outlook.office365.com (2603:10b6:a03:5c3::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9160.18 via Frontend Transport; Tue, 30 Sep 2025 04:48:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by SJ5PEPF000001E8.mail.protection.outlook.com (10.167.242.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.9 via Frontend Transport; Tue, 30 Sep 2025 04:48:13 +0000 Received: from ethanolx50f7host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Mon, 29 Sep 2025 21:48:10 -0700 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 , Zhijian Li , "Borislav Petkov" , Ard Biesheuvel Subject: [PATCH v3 4/5] dax/hmem: Defer Soft Reserved overlap handling until CXL region assembly completes Date: Tue, 30 Sep 2025 04:47:56 +0000 Message-ID: <20250930044757.214798-5-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250930044757.214798-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250930044757.214798-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: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001E8:EE_|PH7PR12MB5735:EE_ X-MS-Office365-Filtering-Correlation-Id: c36741de-42d0-4a67-1c2d-08ddffdc901d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|30052699003|1800799024|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?+Gk9dqCQJvwsYEUeHSm5PII3XhQoxbbmQgHrCXAtJRrk5CnkSCcxnWsr1BQg?= =?us-ascii?Q?kTZ1PtBvVvieEad60AZxNtjus1Qt6at/EVAzYboBuXTG8sW5l/3kEIKGebTj?= =?us-ascii?Q?0t6N2sMjVEsQQmFCwIevITqGRHUVjrCEqXUEdM4SKnAR6IkhY5eF/twHb4LX?= =?us-ascii?Q?WduWSF6EVzUoJvuUULIJVcRec/Yw0PXKlir5Xvg9AYp/gO4paYOyqf/6NSMR?= =?us-ascii?Q?Sm6mXeoYs5wazfamV02tsPzadmlhzmm/PmnAHnlWNMin1SvBxvQFSIW+FgiL?= =?us-ascii?Q?2Jrh40V4LGx66nTxScdjncqWgTlYBeD6uyqqwZXRQOsQBQ9BCxmF2RJrHYMT?= =?us-ascii?Q?vd35Ejm0N1tQj6o2uFxeCE6fXvfYr8AHoimj8lwpOx8dEuhA+VOyzB0t9zTO?= =?us-ascii?Q?UDirgVgCS52VZzqK0WUG7yeLf0xC+64RTTJ2HPwvYB0Q8u7/vp6O0sK47qLZ?= =?us-ascii?Q?v3Cp3I8VlYhH68w5qOYInxvpW3wiZcY9UERim0Ru1w0uhLelJfp5Jy2/Ijrz?= =?us-ascii?Q?iRocL/62PN3b++uIXQZWXUzwlv79ZFX8VhmwWfdR/KXwkpL35E7Xb1E/5EEG?= =?us-ascii?Q?tBXjWxRWxt0MULWCLIuZ+6lvmEe+QfpiVngsp4TrNBLrEu6BMefawlQfzvjk?= =?us-ascii?Q?mlpS2LuBk4SgUMRPXlHLNtTpaHDlBfy0lJh/AMkk9HA6JBdf0wsJY0D4ykdZ?= =?us-ascii?Q?z31+SfdBgtD72E2FDXH8y+EIul3nceFnQll0NwsgZ6T/wXgcwVXSval29hns?= =?us-ascii?Q?CwPICtEFDCrtuC/mXh9m3FQRpNAgrePXGIyKaahbOV2kExwDCT+JQf8LMEPc?= =?us-ascii?Q?aZFeXvo1fRXCKImYwJLtY1i6/G/gmTwv/GZIimtyO7wOvqJyWgICmgSS2N/Y?= =?us-ascii?Q?v/UpHovcNC9fwKwtuALFafEIq0aVWc9afilgjZMUGBHCKL7Ck6a70wa2zWhT?= =?us-ascii?Q?J3s2gJ1XbQ9IQg0WdCb/RSOw2ilyIsLfwxJjU6/HkVh2Yaenqoi9AyHNAqLr?= =?us-ascii?Q?rZBnQYsYPTK3PdlWG1EIy13nZBf7gZRUWSjBlKgY9pBtHIEHrVgURm6JZGCL?= =?us-ascii?Q?JwNd7iaFGhhBKr4nh+IEvdliqZzWtYQCpEpTHAEgYTMykWR+MWbvNR4cJcq8?= =?us-ascii?Q?qj6tHbWsqd7FAE6Ps6MlhXVM+ZhM7eQD7ni+V20EWy2P8X83bQQ2A8J9qeOs?= =?us-ascii?Q?w9hQ/iQBcndnV97RCeSrXSe4bYPfrCmP8+MP56WW9G/IlKzoF2c6W/Oc9f9v?= =?us-ascii?Q?pAXzL2ESvC31FkPt2tp8tiRuvmVoxeG0dMHo2potwN9YfF1HV37x0FbI3Lwc?= =?us-ascii?Q?6lRSTPPJdAda6aF63vmCDBRcYXM38oS9OVNwG0WCaVk9/Q4up8HFKXv40Yl+?= =?us-ascii?Q?SislSMMNEQCsjDMm1XF0PYhHQsGxAvald3XB4j+4LxJZ2ey4i2at6w3hulzO?= =?us-ascii?Q?CkFanyuqTOgH39Pc9+rt2fW8Ssq/+7X2l6w4lHKuGpJGFExWIagp0ggN1vly?= =?us-ascii?Q?9XZuT47LCy9zFRxYdBdOYuXMB4KCZ4xJ5gRA//K1L/s+KtQXWZ0ZO7Hlxfn/?= =?us-ascii?Q?Wj/RTealPZEPIHlMhqI=3D?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(7416014)(376014)(30052699003)(1800799024)(82310400026)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2025 04:48:13.1483 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c36741de-42d0-4a67-1c2d-08ddffdc901d X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF000001E8.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5735 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Dan Williams 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: Dan Williams Signed-off-by: Smita Koralahalli --- 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 c2c110b194e5..0498cb234c06 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 rc =3D region_intersects_soft_reserve(res->start, resource_size(res), @@ -125,8 +171,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 Thu Oct 2 00:58:07 2025 Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazon11010024.outbound.protection.outlook.com [52.101.193.24]) (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 2E83826FDA8; Tue, 30 Sep 2025 04:48:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.193.24 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759207702; cv=fail; b=nYVSVXawnABrRu0gxbB1KTSyLdw/lHYWMgZg/idqXTfKLqFtSP6D5jCjkjVxuG65rvGyhloKqzWNx4P9OjRhrkZLPC9BTXxQNf2aVycp08EhuD/R8I4wdWdQQtEfdUPbGXHz6vskQOcJIe0PyruH5QOKzLEAUcCSqfMu9f0Z6X0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759207702; c=relaxed/simple; bh=S85JyUpTQ4sDButVjrL3Lnh7uMgOK3RHtGJyMboZ4K0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=R/UJZRQSzVndJa3ZuoOIfz5IhWCokp9aKJ/EM9L41fnXrQn3Znj9/VVwBF5fJz1pxQFexj04I4oSSpePFvbNnvH0vwEeW0su14zcvNwiOkrR6zhIIugrnkyyshDcbiBUcylJltidmCC+it8YnNTbj/+Gq57IvXY/MHPOmbIybuE= 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=NIwA0pmu; arc=fail smtp.client-ip=52.101.193.24 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="NIwA0pmu" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UOEfj0hqAmABuWyEZU+oJxq3/EEp5zwWgklAtEZrcRDzWfw1QyItMzYhQoBxWUZ589lkpn9fbXM0efJJDm/lxcMOohE3Z0rxUc+lPi4u6zNCAnmTSX/hAfh4q6UScPE6dYkf2l8EEB89cpz4PEk6dF4AxrV1PbGgbUzPl8v8DYDOI/An5b2J6DyBxbAWGooAKB1XuT8lhSebjqtancY9L8o8L2JalwyNFnnj6lce7XWOke6w30JXOswYWmpe2gH1JlgJ1Z5k0rUZABoW4Ewo6qmsKdBS95Wb9D5NJNmFhvFpc70Cse0IWy2RntB1bsa8ANy94jf4ureIh7T7pvz6Vg== 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=ma5oSCysClIIkYhBFPHuIimjgX3X/PLd/CYMk3UjMg8=; b=u7EBNS7rVse6sEv/o7qMjpHMF8Xd1lD7puOnAu5kL9zWZjojx16N+bPFjtnhc+K50BtXTWPYx31CwhS6iFDbA7gAxLkyxiAaJDojoINu6hyREvMUGMqspASL1czAeoU9Iu12SoW9eTu5BgkEji3vTz27VG4EobnZzfKyTT36FyEkPenD107kJmczRpxbfv1kemh9I0S8dnty8KLukz6VFXnqRmaaea/vrFbBL5mJeBuAk4fGO+axHq3IjRwBrFMBCtjE5icGB6e+EnkKI36SLonCZj254FpTyDDGZwsEl58CktutX0XrP2r1t1/ylMwrlJ38v851JKe3rlEVTeiFHw== 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=ma5oSCysClIIkYhBFPHuIimjgX3X/PLd/CYMk3UjMg8=; b=NIwA0pmu++hPX6KLso4S3gMhL1qec+SNVgsqLIg4kx/5kyFLvaIDNfYzxCneeuhAmwr1M6mlYfuUhRzXLd+ZOIFnFs12yFUXu6JhgjLkjyXwg1qBPREfiivA4sOGi7QnfdO4rnudhvGMeuz1x6JxZ9QxNJC1ZZyep2hY9hr5i3o= Received: from BY1P220CA0020.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::7) by MN2PR12MB4319.namprd12.prod.outlook.com (2603:10b6:208:1dc::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.17; Tue, 30 Sep 2025 04:48:14 +0000 Received: from SJ5PEPF000001E8.namprd05.prod.outlook.com (2603:10b6:a03:5c3:cafe::9a) by BY1P220CA0020.outlook.office365.com (2603:10b6:a03:5c3::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9160.17 via Frontend Transport; Tue, 30 Sep 2025 04:48:14 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by SJ5PEPF000001E8.mail.protection.outlook.com (10.167.242.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.9 via Frontend Transport; Tue, 30 Sep 2025 04:48:14 +0000 Received: from ethanolx50f7host.amd.com (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Mon, 29 Sep 2025 21:48:11 -0700 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 , Zhijian Li , "Borislav Petkov" , Ard Biesheuvel Subject: [PATCH v3 5/5] dax/hmem: Reintroduce Soft Reserved ranges back into the iomem tree Date: Tue, 30 Sep 2025 04:47:57 +0000 Message-ID: <20250930044757.214798-6-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250930044757.214798-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250930044757.214798-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: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001E8:EE_|MN2PR12MB4319:EE_ X-MS-Office365-Filtering-Correlation-Id: 31ec1a3c-d40a-4a44-06dc-08ddffdc90d6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|1800799024|82310400026|376014|36860700013|13003099007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?5QzqA9lTHUEWpt97DIpSh7YvnbmuBm6EJRJJO4Z4lqXljHpuRObGRvLEESH0?= =?us-ascii?Q?JN5R2KHFmgzrZi6RqfFG6NJWEqO8epQkzBQwzt6PqqOLdN9QSarzeNOS7d6f?= =?us-ascii?Q?GGe26J8wz//eStLvqB6NzU4NiJXath8mW/Y8V20M6AZObvwtuisi5Phkgl2Y?= =?us-ascii?Q?IKJnNTtDZ5RdnDBvCo1dJfvjHw77V4P7PapkAGN3vjKZWHKzTs3rawkcotVm?= =?us-ascii?Q?1EOWXl1kth9ALqk9aP1GMROagxj73qdH1dVN1VU3IteImD6Eb224EASagiVJ?= =?us-ascii?Q?Nj6kGKpi0qrN9ooQd3/l6CKtTgj3gguX5Wyh9HzRuUrVN5KAHXJFbgWJvvZJ?= =?us-ascii?Q?cf1sMDC2HNI7JjLsxFj3jt2wVCQGhdhf69XF8KgPZZk/On+mxzcFWjvlP7L3?= =?us-ascii?Q?AQs++YxmK5gwU4fVaqJcPr558mXfyetgc+lNtYat/Y0AvlBjqlRqGtwCUP6A?= =?us-ascii?Q?Jd0SC03MspDK9+7NYe/c76dVBJ4/YbjakzUai2mQitWLJwIpZnRK5gdwV206?= =?us-ascii?Q?HwAulSRlb0TVc8IvfmWMVbcJgwDENnKhXzmxmwEp96cpQ3wwyq1LNPTEnVuC?= =?us-ascii?Q?G73D4PA7GtlMaY4ZSVll9IdAdXtzgOLqvv+z5Szgb4dryl2Ql6HK5JNlXTVt?= =?us-ascii?Q?8CMK34W/byRx5FHAE0smDEo3i0EZ1JvulYdILI+pOkxrXZw7Q68H+pUd2k7b?= =?us-ascii?Q?MXREzBHDOrey6g9Q+0//jsZhqXBg+YY/Tpx3zC9PDTv9tXRS3RawmraNIh4r?= =?us-ascii?Q?gaRnnHwJkbVuSMXe9gAeKIXSRGRfFUFMUznucHIPl4DPxkniZRNl+CaS/id8?= =?us-ascii?Q?TmvrJIcA9/sPdFzHm1d3VxWvHIT8vXV+J4d7gaAdYGdABs7UawornxXDd4Xk?= =?us-ascii?Q?bnHUQWmR3oXvkqhl1o3IN8wDkkO9Pp8CStSXw3rPO2MCETBFNqtRRC/olVdw?= =?us-ascii?Q?ixHsaWfb6Cmmum+9oHHCs57AFh9JHNFncOBgrHed8uMZ3CO/Gy4YDneT4C2h?= =?us-ascii?Q?ofduHuwEYohWcJ+qHPWIUjrOaXLgTCJ+LUkRotV/+S4T+lIL1i5Qu+9B/YMc?= =?us-ascii?Q?Cv5+6m8tdRrd7tYXSS6TrGL9luybSFf65nsKOPeH796Kaa/sOlxb/f9E5tYW?= =?us-ascii?Q?qpRfAYsTq0wMFQSKiBcfso7btpU/TdYD7D2K1HWfhVd2zwHGHe2S6C9VPytS?= =?us-ascii?Q?GSWWPtE3b7kfgpFKCkaaVVvgN+huwJT9ncrWtvgo1SgCZ6/3UNbFBkOstEO1?= =?us-ascii?Q?HI4NqBXj10lMuayh586tEqbHeQZ696JcrRqp0kYBkgNK9HVw9YeUGl+mWuNQ?= =?us-ascii?Q?xVJcybQRzHMNpYBAaMQErlyVCRx4sdqpFc+lUJiREu2JbnDVnby1RKFln+W9?= =?us-ascii?Q?ZE1iIS0IrCX6PL4sKrq/08vpKxOA/GE8g2OyaGY+6XoiT+AMFWN3vNkF7pCC?= =?us-ascii?Q?B1x/qQ18J/AbtJo8NwIX/OczkkhQnvWdhaDY3gkyKovlsmzO7xQX+m+qPP7M?= =?us-ascii?Q?g9oQv5SNdCaT/NyxVHGGiOV+dU8hMjvnEBpv?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(7416014)(1800799024)(82310400026)(376014)(36860700013)(13003099007);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2025 04:48:14.3595 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 31ec1a3c-d40a-4a44-06dc-08ddffdc90d6 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF000001E8.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4319 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 Co-developed-by: Zhijian Li Signed-off-by: Zhijian Li Signed-off-by: Smita Koralahalli Reviewed-by: Dave Jiang Reviewed-by: Jonathan Cameron --- drivers/dax/hmem/hmem.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/drivers/dax/hmem/hmem.c b/drivers/dax/hmem/hmem.c index 0498cb234c06..9dc6eb15c4d2 100644 --- a/drivers/dax/hmem/hmem.c +++ b/drivers/dax/hmem/hmem.c @@ -93,6 +93,34 @@ static void process_defer_work(struct work_struct *_work) walk_hmem_resources(&pdev->dev, handle_deferred_cxl); } =20 +static void remove_soft_reserved(void *r) +{ + remove_resource(r); + kfree(r); +} + +static int add_soft_reserve_into_iomem(struct device *host, + const struct resource *res) +{ + struct resource *soft __free(kfree) =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) + return rc; + + return devm_add_action_or_reset(host, remove_soft_reserved, + no_free_ptr(soft)); +} + static int hmem_register_device(struct device *host, int target_nid, const struct resource *res) { @@ -125,7 +153,9 @@ static int hmem_register_device(struct device *host, in= t target_nid, if (rc !=3D REGION_INTERSECTS) return 0; =20 - /* TODO: Add Soft-Reserved memory back to iomem */ + rc =3D add_soft_reserve_into_iomem(host, res); + if (rc) + return rc; =20 id =3D memregion_alloc(GFP_KERNEL); if (id < 0) { --=20 2.17.1