From nobody Thu Oct 2 00:58:11 2025 Received: from SN4PR0501CU005.outbound.protection.outlook.com (mail-southcentralusazon11011018.outbound.protection.outlook.com [40.93.194.18]) (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 9D342155C97; Tue, 30 Sep 2025 04:28:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.194.18 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759206515; cv=fail; b=guFtNBOF50yeydiPVjqJ13+5yEAwf5MzdtXJatuaG6x55qTAj1cf5K3CUwCb1n3knFHvVJZ3URRELgzFaHu/RapOAfnGzFpTiQNox+1NEk8/YPcHUqUJ4NuKKo6GxXLXsv6sQejBVIUSMmpXJ0Ab8B2lCPJPwb0KXm596r88MZk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759206515; c=relaxed/simple; bh=XVgliT2EcGJ+oYgw9afyEwzbQcz1PZjXWHB6cpagb0c=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=CE74HA1w8TvvvOp2Oqi+hpN7HJ2EYL6qACu/3FB8ZNy5GdUv1g04ywon4llkCBRIz/nJByw9avw1+1dgVasoetkXMFmt1O9pOWtCihB5yepCRfYNdq6GzghWPUFvg7rc64q/vLnBbJoBoJKyGHwGc7wA69DjpGk+2cDTqJCyBVw= 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=tWf64wqt; arc=fail smtp.client-ip=40.93.194.18 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="tWf64wqt" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aND+QwMoC/1j4eH/x+s9SKo+IDibL9KkWpPIqA2hqv1x7WilGtupBusYo0WT/qvznmmFaKe5DoC7jDxTqyynyhfjFk/WEuv/uB3vl3rTSuWRvAQ+fLbwGaj2UN79XcRx1t2KA0s6+MS5Q82Jpt83+MLyXcl27WGiVgiRe0j9wbNyG9nGDBgcdRrOBuMW0YpGgWmVAOh5RpTuYqXwcSvxPTvZ3h79LVnB3eeirL97WMv4J8eVJzALJ1H2hDhAtEFpuQVjbvMyVqScT2+wOMpXNChwRPD8CUrDmJOQ1mezj0l/Ye4B+ZCcyDjGxrf3oDc8VhV4vU9kLK3E4VnHlN0xxg== 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=V8JEtvvZhbTBOofplWVQjgB0/ASZjbgEZgiIGkkaaOI=; b=m5Wekaf5FKv1udRxFoFycVT4HElBc7rgH/tUCATELPolqamg6oE+2x/0MngSyPlI2KHyIJjFCVl1SSsVH8rNo/JpyPicHRoX5prjsIEHXp2eD594euzix8uLypZqkH/cejtyPuOUFeNWu75/JyoOeENW4krc61qcTfGzO+83n8M8j8Moi8LWfyzDH1Y+0F1RUXEbucjC7xbKUrR+qR9jfu04zvUMl0sQGLakNJrT5eCfK3qTJi2NmDWdW6msNsUIIM2t2TYNRE7ba38l6aiQIu3uEBOwQxZJN5/jIEIoZaa12eg33Oe4FnNN+oAHsRkVJhJqOdl/FuJny8ug6xvf/w== 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=V8JEtvvZhbTBOofplWVQjgB0/ASZjbgEZgiIGkkaaOI=; b=tWf64wqtL9WcKZMooknXFc0waD2+SUDBm7FlT88EAz1wPWpikh9iaRgGTM9aCDk0xhqQVatd3D6c96gsNM4LqFveTGkGN3InXjtXluCH0pf8dZ9wbVxcI4vbF3WOenojHOIKVjyD50KoUksT3nn7XmNP8OFChEYTdX6Sa1YTYHU= Received: from CY5P221CA0145.NAMP221.PROD.OUTLOOK.COM (2603:10b6:930:6a::25) by DM4PR12MB7598.namprd12.prod.outlook.com (2603:10b6:8:10a::7) 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:28:29 +0000 Received: from CY4PEPF0000EE3A.namprd03.prod.outlook.com (2603:10b6:930:6a:cafe::8e) by CY5P221CA0145.outlook.office365.com (2603:10b6:930:6a::25) 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:28:30 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by CY4PEPF0000EE3A.mail.protection.outlook.com (10.167.242.12) 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:28:29 +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:28:27 -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 v2 1/5] dax/hmem, e820, resource: Defer Soft Reserved registration until hmem is ready Date: Tue, 30 Sep 2025 04:28:10 +0000 Message-ID: <20250930042814.213912-2-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250930042814.213912-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250930042814.213912-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: CY4PEPF0000EE3A:EE_|DM4PR12MB7598:EE_ X-MS-Office365-Filtering-Correlation-Id: f5818c59-ee2c-4658-5149-08ddffd9ce90 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|1800799024|82310400026|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?jTMJD6X75tXZSPUBwOfY7BYKAYeiubUZl/nLoAnWc9r4tYlbho91fJi/Q8v9?= =?us-ascii?Q?JXGh71Di9vDwjmmudPY6UjMsO2YawXbWpDnwOIjnD2yzYw8twaIRacCzmGcV?= =?us-ascii?Q?l7F4XDJNamF9hyUisqaQxxW0zVYcGCxpuaKpCy04qQlHWz2YQW4/amNWvlSP?= =?us-ascii?Q?CDiVKEmDvESSV0J2fixHkwNpc+lO7z1oWQxsJbrP9oAt9Ebbo9UebVtRDEIA?= =?us-ascii?Q?Nch08V6C/ZbXh2sNsocR8ki6HJymODKAYnebZEdycgWOIKbh76GrOEihNyI7?= =?us-ascii?Q?D+dbYjUgAhK/FxGoNbLtCXTR70jfQC0EaMlfs5U6RCewxdeizD4kruAGwEqB?= =?us-ascii?Q?NiK5OIhwhx61f1Tta3sZcfGVoJI+/BXry70sd4JEvlg2aswB3aZopg0bjwJy?= =?us-ascii?Q?2qfPTjKNxMkZqRkEhvbdXL1meE/nt9ts7Qsn6fF2I6Df7xTLyJTM6ckmOdSi?= =?us-ascii?Q?gQD33gVjd3xPlsPNazAcrRe6npSk43b94yJsxNfpRCCwxaBSB17tzFWTtl34?= =?us-ascii?Q?3LhxVXL9PFXnKePCnu2el2lzacxzJZbYaWhDPUjmd1OEUPJiEfOxP5ghRqvy?= =?us-ascii?Q?x7dXzvtfHT7P9nYlHzuo+Hi9A53pzjPoL9GD83d7knSIxXaqOMJk1aADlMBY?= =?us-ascii?Q?3F9A8R7kSOvZHD1McgXiXKGcK16VIXrYH+Fz7+PQ9UvTyPRFKHnwePSS/Fyy?= =?us-ascii?Q?+T4fnA4N/Vvwn4m42o4H56E8BAYUfxheqBO05wF/DmxRHzuIj9ID4flUjJJt?= =?us-ascii?Q?nzEuo0Uhafbj2XmGMxIvTcExkqvG1fwfuZGAwF031AXnPIeWRZLuH7kUvrFu?= =?us-ascii?Q?FeCbYy2RdukdmkzrJdmRjj94ORqbZTVzSRsK4Lxtttm62xnQ6BpVfyPJMDd6?= =?us-ascii?Q?p2YLcD0f5qFqBgXjiCHIlPbwdV6B2FdzLcKoo1MkDjMzEEXBTkgG9cQolZGQ?= =?us-ascii?Q?BqsFE36efpgp09P87WY/2Ot8CYd7QUIACH1Z3/b91/T+K8BYmhW1jcDDL/Ab?= =?us-ascii?Q?0a/19PGLZY+9DYoOz3+ycUFOmarqdOytoOhEOZ89T8ysPdx9G+Fe1/CXtXHz?= =?us-ascii?Q?oqke29V3d77JNY2mhW6VxJXywHmwfQ1/xc5sLz2YTlSY5sNS3XxCsKSWcG+7?= =?us-ascii?Q?w/SDHe38IJHcS3O22ocQQFAlQFw+3DMMsT79o5PWLuiqwTqoTKqprNRUFLXL?= =?us-ascii?Q?XO2xRLgy5n0y9Uf8cghCOMi/NpXEnkKIKo6tjRNiI0gJKi77ZiM7B/N/Ts+J?= =?us-ascii?Q?84CbH4KI3kEx+9+xCmwSx1pBbTtm/UmnPsyS/pWeRnh/FVRTMaH/NHmuWtRq?= =?us-ascii?Q?yFsR28oIRs8dF6nEexSzOlEG896pJ+CONEBZ18eBwCgnF8NF+kYshc1oI80I?= =?us-ascii?Q?hVbNOo1BxTmosZgCpYNsR/PC/bLwEXgQUAcKFQAzcvhSg4rV1lBt/3ROeCnJ?= =?us-ascii?Q?FP6eaVhVIOFF3ILJV4HcyDjpGiDKhty8sUpi3s4c2RP/Gg0YwAHl/yFRyWBq?= =?us-ascii?Q?SsnAtZ9PSTI7J7DSg0Z9WQO8DSfJ5ZQmJqOFV8lrnzVwjtsQDwzq9xmyIF8v?= =?us-ascii?Q?e5/cQouwBxDsCp9CIvc=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)(1800799024)(82310400026)(376014)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2025 04:28:29.4513 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f5818c59-ee2c-4658-5149-08ddffd9ce90 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: CY4PEPF0000EE3A.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB7598 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Dan Williams 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:11 2025 Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11011024.outbound.protection.outlook.com [52.101.52.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 8463123C4F9; Tue, 30 Sep 2025 04:28:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.52.24 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759206516; cv=fail; b=aPAdQ3aH3y5xa7LKbRmDLJPMRcPWh8Wcx+CyUjovVDuuYFW5920FdmOrXWXrdvkP+qdWC7vhLLWMae1GJeqyq+vhMNqYmctVhvzVxzoiMWWuHIMljsnocAaR8y1v+KvbzFbFDb9h3vo54rSdhfx/jrVso3MT6Opp82uvquB19go= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759206516; c=relaxed/simple; bh=TFElCL618J0pky7OWXVNwyCQiPU7n7dgQ+wbiZBATIE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Z0UxoODI/t7CKgfxKjBr7nh3tMWvSkey5FvVIcpOisRzitZM0r68P0pGlXnkJb4Xk0vDLXGDH9ev2PKP62W2+bg9jgausqv8vQ7/+nKikk8wsNK8AHkJ8nCVNuL3g0nx5Pk3g2htjlyi/jwP2chLt3LVrhTloPw8CLrghp9K3kM= 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=J3wNqUq4; arc=fail smtp.client-ip=52.101.52.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="J3wNqUq4" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lYI4j2/VXRNwMfInXmt02PKCkUSyxz6h+wD9V2BNhqvMxnG91jYdjegCcduaXjfs58cBoCO7jDzHTLXLgATAaqLKE7pFML18FRA+j+sjeFqddRzb9rbuVQIvsdyDbGP6OF6K4JDtGJsaj2EDKD4VzfZQoUa2qQBph1F8MFbMQrlpgA7IOZ+Js0kqXvBNV+SflNtnB83y0T3Ger17ijabsHoLiRON3GnN07TJ2jVKKsxm81h9hB8gmZ8y3ZOdk180W5aNIrlZMIzSXIrhIdLrEuwMm3Vj3DkhO8q/HhI4K+BHaifH1VMGJeTW8jzyaJDBHTJU0l3KY1lbJCo359fGSQ== 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=87EzanpVktAnA5nd5pdnTjXwC7lc12RygdbDQPZGCFI=; b=aoW9mf3qWgA5Y7CXBEhgssFpY5d+TiYIxj05CUT3K8EGdSyDQp7Zk+vxgapbVZj8r8wb4X73/djFSfLjcFap9zWl75Whbo7HPdPvlc2OMOtBqKzBm0uY6eFtJt8AYBiREmyaN8otf+OsQZoddSmmiz2DIIlqRIfo4kELCObXU2QMU0V2SJlBSTzYPWfv3hGjLU90q3Dw9io1s/JOKzAWEI7WgY6K2CclLK2XPlPj0UCB0f53ilJpMRA/TKTuKRFIhv3hp0Mdf6VI6u/A8i8h7bqhhnFWMfknjzR+9Y5ajRX8rh7iLVlNu9Tn/Y7wyCZtzbBWXrWXBUz757rHjkO+pw== 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=87EzanpVktAnA5nd5pdnTjXwC7lc12RygdbDQPZGCFI=; b=J3wNqUq4nWUswf5EMFMZXIxvx/fvHm1lbwU0RGZKnEtO3sP10vQ8JDUiMfnCZVCSQUJdy1B7Ylp3PXWlNvsWSTkRWpDS94uFIv49VOhprcXtjdnHTkPk3cCzvLE0wPS2eMRZpG+gvzU77NopGuF/vdS+3hgsGIbNLR5EjfRl91E= Received: from DM6PR07CA0063.namprd07.prod.outlook.com (2603:10b6:5:74::40) by MN2PR12MB4440.namprd12.prod.outlook.com (2603:10b6:208:26e::14) 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:28:31 +0000 Received: from CY4PEPF0000EE3C.namprd03.prod.outlook.com (2603:10b6:5:74:cafe::e1) by DM6PR07CA0063.outlook.office365.com (2603:10b6:5:74::40) 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:28:30 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by CY4PEPF0000EE3C.mail.protection.outlook.com (10.167.242.13) 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:28:30 +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:28:28 -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 v2 2/5] dax/hmem: Request cxl_acpi and cxl_pci before walking Soft Reserved ranges Date: Tue, 30 Sep 2025 04:28:11 +0000 Message-ID: <20250930042814.213912-3-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250930042814.213912-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250930042814.213912-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: CY4PEPF0000EE3C:EE_|MN2PR12MB4440:EE_ X-MS-Office365-Filtering-Correlation-Id: 873914d4-2035-4104-bb7d-08ddffd9cf14 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|30052699003|36860700013|376014|7416014|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ZoWoLrftHW0E1tru+SU8WC465ns4SAx3OsuIg8/YQlkrS5vhay6ILN8bM48q?= =?us-ascii?Q?bfNb88/eLeKk2cW+0MHqirsU+kKL8ugbeiZAUKjHkbvZdT7+6U8nkfjPN4nE?= =?us-ascii?Q?SS8BwOdpCeGcYB0F3O9Xj/8I8/2jYzh/ERPIkxcrzksyRIMefyxg4kt4+rlR?= =?us-ascii?Q?OmJ5p5jVDqcioexrnwyzfVaVuNWC7mJVIG9D6QeuH/CiprFEisOjOLz3GE0F?= =?us-ascii?Q?oRKv31Y2YKHnfhR6Bew61ZMfHlSeXwv1StS7EBDm/A0xVtbdJtOl1vaftO1s?= =?us-ascii?Q?7ys4jd02coYHdEqlY9jdYyM9nAlM3DH4w1+KR72cwRAIAkHThX3l8rVQrrnf?= =?us-ascii?Q?qJgqJd7zC2uCvpJXy0ZlBLKgEDkEvHY7uXuMxngM46DL2dDBV5bxCmwaT+I/?= =?us-ascii?Q?3h/sKo5GJ1lfQfcxvrL0aBta+CKp2PJrh9X6FSXrsfQNOOyjdJhEsfpVzOKI?= =?us-ascii?Q?ZUq0LRBqB3eITnmPgn6vTkpTZh0vZjfUaGe9QdZVJE3XH705UXhE7E5frmop?= =?us-ascii?Q?3BAgAyRAuWBHXdT5lkaC/qxBC4IGhtNqNb1dzVujyB13DQDkXdzBRSy8uIW0?= =?us-ascii?Q?hD9yqd+J/Xd8n+6U/dFwEXj+LD4XQCqmxSgBCbGlRnHsTeppMbMYjceoW4bY?= =?us-ascii?Q?noRdNyv6AQrwHclkOfAaoJH81/fJSARFLUtiND4Kks3HQJfNlaIenVn9x18K?= =?us-ascii?Q?03Of6DZ4znkCfq494x5PDV9bfPi8GLVnWWxGhTq/i6yzVfKWkmai3n035cZ5?= =?us-ascii?Q?4J1ockjAjmmhSBJx5XKEainWB1htsxX3LNd/ebAbpwRv80EiXgK5HWs6+hD9?= =?us-ascii?Q?WQcGbq58BIMTGw2Pwy0INp6xAQ25vRbpXEXj7LtyMsiVinpQL7fliG45/EyL?= =?us-ascii?Q?UCIZpy8aYMV8XgCmSNdsvrw8eem/ca1ZIq64NyAjpe89fI4076GXIrMw/yOm?= =?us-ascii?Q?WXqdP7q29T/WzikbEcDDfUXtLfnjl9hmux2NZj9w1CLHwjCji9CoYz9zfidW?= =?us-ascii?Q?81u/fKI9npC2746Nqqc5PmPveeliInrD3LzoaFAclV5dOYZ+g7eU9Rp9U2Lz?= =?us-ascii?Q?AfmowsLUss0+NpRYBPSYhbZoRdVjUZ6KgbUu4thRU35lgo/IIJTE7Ilk4M8h?= =?us-ascii?Q?Y/cn3H6OwEKoH3SR48k8NpyIfJ+QrvfXxc+7p58lYyQ9bpvRC2oBpe7xptWw?= =?us-ascii?Q?mcUwqVYMy//GnbeO9dRX02nCjW0vl45+04IxvB1fu5FH+UlZA/Vie9deDvGo?= =?us-ascii?Q?kLtf5Qtm9nOA7lcbt6XTsuOsW4RMW5bkabR5Mck0KhLvLMHnEXJMEfPygZzJ?= =?us-ascii?Q?/e1z9rfQ6L53HIgIFaG8OZznbwCFoq+3/DaAYu2z+orerezqKp8tuaiwbZr6?= =?us-ascii?Q?9rBM+E2QcRP8h1++e4DL/SccwPJ3nh6GRHycqKuBrC7hBujGFLsQvueYIev0?= =?us-ascii?Q?2Sm/58cd9sqReNjoread7v+jNr/MaK1T+zCL0zTZV7rnhdfviQJ/3u9hyfea?= =?us-ascii?Q?BU1PIv9otzyQrU4LjgdBuMKLjsF60++URlsnzQFNcTwlFZczXSmwdZgAuKQP?= =?us-ascii?Q?bB2x2CK52dkLQZqIqoA=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)(30052699003)(36860700013)(376014)(7416014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2025 04:28:30.3191 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 873914d4-2035-4104-bb7d-08ddffd9cf14 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: CY4PEPF0000EE3C.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4440 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Dan Williams 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:11 2025 Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazon11010048.outbound.protection.outlook.com [52.101.193.48]) (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 8333B265629; Tue, 30 Sep 2025 04:28:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.193.48 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759206518; cv=fail; b=rwcbZmxZwOQh2vUhnb1Rwmqt4A4/2HKwKMd281BkxIsVm0k4Q1GtaGqxAQLpiPShwvhtrvap1dOlxoowyz/GpGawi2Fdrg3SF64Tv2aq5FzrLIX6BOQSXku9/xQJxsu+r1Peng+/KPpfnV50ccFlkW0foHG5OPLPYlS8BqyA6dQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759206518; c=relaxed/simple; bh=Akyx+E9FFitML5nDItZdCm4pXyPaKURXa8He06tS06k=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=YLIgIVzPE0lql2xWNfazgkhfgJ9xciRJ6kafAuTHRsAAhBXbdbyN8uFo59mek0aiIBAum0vbRd2rbaKjQodiSVyStpM5pBpRjBDEinUqx72QfijE4DCycNIhf3Y4dzfm871tKIFoNx5uGzG4/isih0ap6BXCZp7UcYkZXdcaX5o= 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=ZR4mIeru; arc=fail smtp.client-ip=52.101.193.48 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="ZR4mIeru" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=e3SZ615M6ggK70B8yEuRhpPh8E8Osm6QtQ9wTW7cE4AssBWzK6YDlyBDFEfcgOAx5/uqQdcAo7jJTjRitjo0aH9z30n9X/zYH0XOei7I/qp+cZL1UGMupLxjvP2ew+RYNCvwSewoShOmwKEDlbxmxM86jw8SQE6LvEE1PWLX8aPCJ/As69R9LGZfqmN7s0tPAWtAy0uzdx6Z3OBmLPyWyzPzeV1Zg/b4DPRjO3Ejhd8eQ+NQs4DrOX61fcR/rH+cJqg+JNn9lsPteRYSWvE6Gl0x15WLXZMtTm77xDIUuuFDeEYNqZgQBHaQNx7MXwjT28GRj2z2Pm4dAeUHKCZc3g== 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=cz8G5+2OZkdzzIEFEabswkg+VtvT+UVPhgSL7dl4lJw=; b=IiFdUNEAm+7WadBaoEbh7jrcocsRynLFmU9R2wszPXOtERLb22wbCQkCyO2gDdFJrTKwzKOVJrH06RKmHBzfV72OApHx1l7C6VepHcw9dV4dArGK017l46r7QI66eg0R7QwuIAhxHpWzhT9YAe+Fy9BUNGjvJonLeR4V6j3fjMpxYfuh1n3+I4Iy7Fc8dYz0j8rKaal3BhkJUo6PBPsd5N+tz4oE/iGUyV39LpN1JvuZ8KBM7yjUD3D9ZIdxOJjhuZEgGDXUyK+2VREp40H3tJYw37XlNoN6Nglc/IfkrxXYUnwNT6lXRj3yCQ/DV0yl+eSOFvwMf4HsnLMKgLfeLg== 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=cz8G5+2OZkdzzIEFEabswkg+VtvT+UVPhgSL7dl4lJw=; b=ZR4mIeru263NU0EknCDBW1U+5ZAQm/d8hY9kBn4re9YGUiAwDrLU0Q6tiKBO75+9ZHNsKhPvswD+W/ropdkEVXWaziNHamUAkOGSwLiB1dRtPoGYuMNBryS0Ym6R7F0cmHGiUgG74U1jgB+gud7keVPJMPZFoLT/TZRTq6V2214= Received: from DM6PR07CA0055.namprd07.prod.outlook.com (2603:10b6:5:74::32) by MN0PR12MB6173.namprd12.prod.outlook.com (2603:10b6:208:3c6::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9160.14; Tue, 30 Sep 2025 04:28:31 +0000 Received: from CY4PEPF0000EE3C.namprd03.prod.outlook.com (2603:10b6:5:74:cafe::8c) by DM6PR07CA0055.outlook.office365.com (2603:10b6:5:74::32) 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:28:31 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by CY4PEPF0000EE3C.mail.protection.outlook.com (10.167.242.13) 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:28:31 +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:28:29 -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 v2 3/5] dax/hmem: Use DEV_DAX_CXL instead of CXL_REGION for deferral Date: Tue, 30 Sep 2025 04:28:12 +0000 Message-ID: <20250930042814.213912-4-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250930042814.213912-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250930042814.213912-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: CY4PEPF0000EE3C:EE_|MN0PR12MB6173:EE_ X-MS-Office365-Filtering-Correlation-Id: 4fbc8e4e-5d80-4159-6837-08ddffd9cfaa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?d18ycVufuFK8XqIeWxrUnq3/Qt8fECnB0agt+ZAevKRunzibJfXDJ95UA5Zv?= =?us-ascii?Q?osuGf2D23sM9FCeLouJ81fEospzqBCQz+5XYt2QsHzC66nhTmmjUJBNGZneG?= =?us-ascii?Q?HvQfay7/wXzv5k1E22CFsHFEG8y5w2zFYHkSHfVjJK6M3aiTapybxkel+RYe?= =?us-ascii?Q?4TFmEV3pzOSgLRybs9xyy37b/blFCeUWc2yBPQ9SMEtmcIMVy9f3UWXD+wSB?= =?us-ascii?Q?LgLFsSqKnGdIV1wEhdLuxzkxSlpa9S03X5D01YyO65ACypqLqJ79uRF/j6la?= =?us-ascii?Q?obUgFhooh6rhM9tX3Z1SB63NdmXVeRHjot4MHrVPGd0ePiHfWEVUiycSZorr?= =?us-ascii?Q?/1C5qbgEH08/B59vl2pOIeb25vRnyEDUBteDVyk+8LlXoqLdsN1fOsVODZO8?= =?us-ascii?Q?UBohZB5fkGcEU6Thh/ahYxXtaYys2SeMKWqXjH3vH3AmKMvvqEwlZhx5xg0Y?= =?us-ascii?Q?AirsHtcvNFc/V3epCoiZHE6cGqFf6hFLz35dPAHDbMn6JXRZS5TW4LHL/87+?= =?us-ascii?Q?e/qCyT4RpIU/RmxevXrIkevP35sZC6ZIMbpwv+gqMk7ZLPWB+1zANv0pNG6m?= =?us-ascii?Q?YFApOe/bc/UzpDYaqV3QnW700/161bW0XkbUXrAX6NQDMCNzMWtL1Y1xLb6j?= =?us-ascii?Q?6v5sA+9GKlSKRyOZORdP+dS47Z1q8qB91oUAiB0RFAXSadqsx5WPx24VxT5v?= =?us-ascii?Q?Kknnnie4M+WKVoPpiJzouZt1T67UwysTxmyEfjmDyYR+IsxzFzFhAEJpytrJ?= =?us-ascii?Q?50ic6QYCglGTk0WKq/gu1EoSz7iGwaleBZlcIb550CgL44iz44inpDcxF1eg?= =?us-ascii?Q?ek7y8rEEA+JvEpZWEtTo1NATrZcy/Av2HPT40Yyx2NzPsmkZqAvx54Vi7QgP?= =?us-ascii?Q?6UZC+EPAwks+1K5bKpl8W4ZuLdfcpqirTA2xACu/EFxGup+2qXB49hB5F+5p?= =?us-ascii?Q?3SFM/p7m3ovwPz6/DCM19PxhStlv6rpgubFRu5+gs4Bck56DVcwsnoUD39Sl?= =?us-ascii?Q?cRFKFINJKqqBjnVTmhldhiUtjDIHIKIn0btsrlyyU/zsGj+7WPkil1fYioUG?= =?us-ascii?Q?EA1Sx+BuY83WPtNR3fU8/cmAj+VLFwZumnjFUY7Bf1k6AFm5DbxprWoXetxx?= =?us-ascii?Q?XqI/VAS3pr/L3L8P1H9L6acDUiTa0xKtepC1ZyEe3QufsIkzgDQnI4S5QFIq?= =?us-ascii?Q?Cko95Qz1c/qDSsFIGDzZL9eQmKPw8bsS46kPIIAqsl2qyASBidwHq3JecYet?= =?us-ascii?Q?KYm1qPSo5eakL2ZsDSsojJPrrxBn3putubuKKWFI3EbpdNzSC7WEdN+mcJTl?= =?us-ascii?Q?gg/iS6Sp8VFbMFGk9oq3luJrEPHgBveuAm8W5G6GPEdOZUJ0x0MDDhxfIJCf?= =?us-ascii?Q?iRNNCoB1oMpvdYthssA4HFNEs7cdzgXgoeYS5I1IMJ5K2bP+It978v6kA+qu?= =?us-ascii?Q?Shf3UG8M2hfL9ebKMIy8b9dGx0wyi+R+680Wvs6/j8L94hRZ5DdLN34g9nd2?= =?us-ascii?Q?2I/8GApVagYvVQMkKYfJpkCJfKunMkBZiNpCl6judhrGv0usZfD6pQg9ttwa?= =?us-ascii?Q?jvvIlCiaV7yH5DqdAeg=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)(1800799024)(82310400026)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2025 04:28:31.3013 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4fbc8e4e-5d80-4159-6837-08ddffd9cfaa 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: CY4PEPF0000EE3C.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6173 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Dan Williams 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:11 2025 Received: from CY7PR03CU001.outbound.protection.outlook.com (mail-westcentralusazon11010058.outbound.protection.outlook.com [40.93.198.58]) (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 9122125A655; Tue, 30 Sep 2025 04:28:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.198.58 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759206517; cv=fail; b=cGDuqpF2DzPuuq9Ul/MrhrSQaJCYn3rGRtxLK0mUrK4UIoHMVs1pAIZOLudtBrDfB+m4r+Jkcl4tIpO0dEY/pyqcV+dGNUfvAJzQHpUcPo4liif1i/af0MKx94zyOWclqb4Rv7fwjF33stb1UGtCnQdmdU/cuMRYbKDmEum8yOg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759206517; c=relaxed/simple; bh=mM3OwFqCfbs81AoZhq0z+75zqU0rHE6OndnRE5+Vuwo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Ct2Jj2RhuKX60Fve9Crh8MoCDbdCd17CuDJKomPvYVYZ7WPBAsHgyCqYxOhFIcp5PsSiVWRbi0yUKxi6EIULkOp5RyLitoIRaHXdmbf6RrC5ubEsqUNnU1rrs+KqcEP81EsL6ZEcZ9Br9BK3fBS4yudqwCgBIgTVd3BxFChBUt4= 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=IAhBZpMP; arc=fail smtp.client-ip=40.93.198.58 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="IAhBZpMP" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Tjljx4Wwo9WQFtcgWN5yOHM7+7H5ZPGS8FsFH5VQEXsdK8jxBI4Etc2OxuvnwNi8P/ucFs8nRz80pxSW6AU+D10dhmxyzZZ1SRn4ULz6BI/tPMw9OSTNu7uG7Vta9EGGjBD9D3KNop+TxJYa63q0ufkSgzr3b7Q3aOCS0P1lPM0Hyzr/JTx4329bDl1vAQkbUZOYwfbQOZwDC8TteUfsvrYEJhqix47MgAfYzjdi6/bWNkkjNkqrr0/oU2LzFhh6/JLjQGmmojC46aqH/AZdddl3C8WVkA4xE9n8BhIv68bEPT3cFqIpTT6EUfnIO77Um/j+izai2XVr6E4jqjFrGw== 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=qpMu8HuzQnyqOjkKjmx43q7KnVLbgYI0Q8PsEG7TJ/E=; b=L9bscB1kb3Qvm9nj5m0HzmIdjc/xPnMj7B7CcOGj+qpYdBOgZyyhyPdbfPB6LMMGwP5jfZ6XKUha63NVvlKOzZE0N3CJj0QfTA6okJFA/iaDT1JtUR8W5znjTEwr2UGDZAmIFYZijGmAWjqPVK2tGX1YYJRzE6Mht0tH/V9XoSB3WvNdK6GywUKWanIiErVtlCfxRiPLRYaTA1vfUM8uZRlUlBrOGhsSwIHyo8qNT+A22RC4e2xLmTO96zQSJx/06DJAprfir2Y7JlXqk7/zSdbt0C+P+/dJuG/8gjAxxx7W2s7JiLc5bpHPd0Z2f5RBhzUf+Yc7O/y0NfJKhtfLQw== 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=qpMu8HuzQnyqOjkKjmx43q7KnVLbgYI0Q8PsEG7TJ/E=; b=IAhBZpMPsDS5rDLdMpMFe6hs/XdZ3e2u2KxErHMtmToC0v4RB6SvTozS3FZrVARiUNg7BxMwHFTJ1YGRHao0+w9tqvSpAY9q4rwPt8KIGFHoQaQM2e6gO1t+/7aPUgIFYW7Fh9cSA1P4n4tCmBCY8emlaTVcbpH2lANYm1/vzAs= Received: from DM6PR07CA0048.namprd07.prod.outlook.com (2603:10b6:5:74::25) by LV2PR12MB5845.namprd12.prod.outlook.com (2603:10b6:408:176::13) 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:28:32 +0000 Received: from CY4PEPF0000EE3C.namprd03.prod.outlook.com (2603:10b6:5:74:cafe::7f) by DM6PR07CA0048.outlook.office365.com (2603:10b6:5:74::25) 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:28:32 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by CY4PEPF0000EE3C.mail.protection.outlook.com (10.167.242.13) 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:28:32 +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:28:30 -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 v2 4/5] dax/hmem: Defer Soft Reserved overlap handling until CXL region assembly completes Date: Tue, 30 Sep 2025 04:28:13 +0000 Message-ID: <20250930042814.213912-5-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250930042814.213912-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250930042814.213912-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: CY4PEPF0000EE3C:EE_|LV2PR12MB5845:EE_ X-MS-Office365-Filtering-Correlation-Id: 692e6d9e-1a44-4a7f-e053-08ddffd9d01c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|36860700013|376014|7416014|30052699003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?O5jSYn8A9em2Wk/pRBPdibAKCGjQANRRusqfKgqaZouP1cVdCHpGXytmZfg6?= =?us-ascii?Q?ajtfCn60aQkMZIQHYO8T0BeWfgFNUQRwV+YGK2XMofLD0FXpydw3MSrsiA7m?= =?us-ascii?Q?mLAlvIXYggGD9O3ho9wgPtIGuDo06bXwjEhGavKsjthlX6DOis5AoGdQgJNo?= =?us-ascii?Q?7BIwlmXlRKMNlDU5NaTN8tZCn0bGz1omvpISwD6Cd6I5vMR5rCmcJnX9fgH5?= =?us-ascii?Q?W57ffxEsG6f7+gyhel1Aelk0C8Jk11fcDWg9MBI5qc94CCIiVyPcrTun2rmI?= =?us-ascii?Q?+TuRxukMVeXKhar8lqvw2IYE32NbEwQB8UKjoxr9YEj6CaEmACJN119WLRgd?= =?us-ascii?Q?z6/CMHhEB167xY7y7KezTW06zTIilGZ1T95iS7Bu4NAXxloCB7i4P+G5NsyE?= =?us-ascii?Q?Bs5WXMdJM0K00ggpKxjzlrj3yoJ4HSVUOt+jLSjbOOYhEI6AZG6PRYuZkghm?= =?us-ascii?Q?0TMWLw3MsgIc27SuiGuVZCOvEx9JUz8t3C8CTUobzgTK/fg3WdIelNydHbMM?= =?us-ascii?Q?pI/HNWl7uBpWzzOrFet480eA/FK+D9k52zho0CoKwnmnDVM+v84RED/aU81C?= =?us-ascii?Q?ARIAaqpjEP8ktzdGHLMnc78HpS+KlBAhRs6LSX3mPxE8eLa5IdVn0TZtgZZF?= =?us-ascii?Q?9sH1ZlGsJuoPKG+b9+MhsJuTjIzN/jnkDa4ifz+A1MtU+wcAKCgZGHjS7sKd?= =?us-ascii?Q?Kcbv+6xdcGO0x0LDRW5yxn5vQIP4C6YxKXrOlwzwW19zVKT3XhwQXpkmJQGN?= =?us-ascii?Q?O+9Wcm7+6gkx3hgculknQr+iqmPhzcVLlbS/9MhRZssTsSXw/ZgxCihXh5xH?= =?us-ascii?Q?N4s7dhEb8J0D08mZl8z8e4DkfMuQ1EA4F9c6glUS1fVy38nDdxkZXmLwJQkQ?= =?us-ascii?Q?NZaIZkCJd7IF3V4WHwx8GzFOFivL+1VQTYRlP2S9av6xORRueAlHE7vQPNVz?= =?us-ascii?Q?2mJpkI0TlK6/xBto7XwGfMyFLLHJcd6eZSI3ycuutdHuExwOxLFQkxBe0cI+?= =?us-ascii?Q?alz+YA/TxKpidIWIoVAocXDZIoMNdFbadYFTUgD1UZj/ZJXC2QL5xJgN59IC?= =?us-ascii?Q?Vf8t4kSXGLiyJqAHY2Pu+okYMxMT0vX8VoOEr1lOXfEwzQc/e+M37ylpbRj0?= =?us-ascii?Q?+b9J9Zpq9q6QHIH21dcxa/D/oFgSxBcJ8uYbAF3inwMDyGSmhqYvce1yMsUz?= =?us-ascii?Q?11GjGietL0sqnkc6Sf8TvIHhObAkGOHqLuWEa98GazwCAR66TapffACXEoiG?= =?us-ascii?Q?mOlu2fGOX+ctUPWPqE3uHpfBU7oxvRyV3G7ay6ipQtQyhZYZ43EhcATfcBaC?= =?us-ascii?Q?J2HXyoPuF9Ushmn4sfy2JY6zUQvdvf6VDN+cYEWTCo6xOeutcChe1scwFDIg?= =?us-ascii?Q?/hllP5Zq6oO9pigtdueWQjE4BeEgdVGWdjqh3gzQe3Mvpijex5o+35kHvYR9?= =?us-ascii?Q?o2Riey7TBmGtpbS9rxHSrLgou3V2bOHIKEWH+3MPwLftdaqbW1/NmEr0Phpl?= =?us-ascii?Q?HjE2Z0IuGj5t2WyJfAKSTEMq7re+1KJEdIqUHfoGsvgkOFnCPoOSSoZGt/lV?= =?us-ascii?Q?Tcls40rYfTpHycixKjI=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)(82310400026)(36860700013)(376014)(7416014)(30052699003);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2025 04:28:32.0419 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 692e6d9e-1a44-4a7f-e053-08ddffd9d01c 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: CY4PEPF0000EE3C.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5845 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Dan Williams 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:11 2025 Received: from PH8PR06CU001.outbound.protection.outlook.com (mail-westus3azon11012004.outbound.protection.outlook.com [40.107.209.4]) (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 04C7C26CE2B; Tue, 30 Sep 2025 04:28:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.209.4 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759206519; cv=fail; b=T1Czv0BwYxzqZbaoKwBGp/3Dhz6J50ZyKD0QMx3pZYEOjDPMgkbkHMvEI17CG9bCWzdqLu5aISnDdjf1v8hVEfogmfxC2v7oRS87Zut9iHDOcFQXL9PH/3QeDYtUbOZrXhBKv1jiGeaSdJTeacjq+QvajBJzPvWLCNNkxGsupuE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759206519; c=relaxed/simple; bh=S85JyUpTQ4sDButVjrL3Lnh7uMgOK3RHtGJyMboZ4K0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=fuPQMVdOMpSRl82BKz/K4E23w+2VkXya1QZ/COVjqRv+Rmwe6pWEXqOGetTBxresiEHTtGj7mEzJLWdSrEsYhOKnCXJydBq3A3cik3OyE95O9YjwWSEnlWlklT4Popfg3f39kyABvZf07t3MQDhsgpKObF4HltyT6c6Z4nRBpyE= 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=j5cKPUWC; arc=fail smtp.client-ip=40.107.209.4 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="j5cKPUWC" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dUa7EXFYEkkarOmtyqeGy0Rt+zm9mLFlJZx1lEmx6CzFvaJUqiHFgddhGpjRiF5LFS8RcRepE6D4qCCVEQFew7LsKP3jwD4TLBwWuSEekQ51P8UnYk7mnFPGimnVGH0LY97OCvbp63ixB6LCVBc2oHHcjVSWHP+HFEP7GB/Qey1wFo9hbx8M7W5zerFtvxPYfR/x4e+mQYcJWUTUkyQQ/nYt+po3XukoE5gUSd3KpDo0r9gGIwuzuceF0k53z3G1j08FbmMQ0iRBFMRZesZwpYiqLlAQ7WS8mvEY+84ydAAUFNQbus1rQCBtRvF1kmjaRLrBkGR2xRCftlclnlK4Cw== 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=dxbYszrmqDo4cCGBBcQo5+dNvGGQizprhGtPm/EgVC9o5TjR8WPNDUcqDiaHCq9mLVwL04UJ8cjtFz/VMclxBOvxRxlvhsYjMKspHwoLysymau5cHaKl0ZPCdP1BwAFL5RP/CpaqCAL8fkQlgQaLttCLphu+CR4vbCiUnP4z7itsKd6pErRWF6MCX38VYmIp7YQ/U7LKkLJGC0c45KB53OzQpNcmQjhtT54WRR7mB8FSY39Jy75F9uJWaybWUZbm91jHUdBNt+aVm2+9+UvoX4YAQLNVnG/CZRFmBvr09m0qvyVHQxt1ct7awXqD00Ih8o5b4devC6sJvP0v0KzgyA== 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=j5cKPUWCiVxzDw5G1xC2LXTxkd6sz2FJWNZwYXTACrbhJdlwphyrkX5XgQNOftReN644SY45SW2FTLtTiSDTC6B4DatyiJ6fAOeQjM2dwCkqLdVgZDGIEzXbIXOLOO9x8Bi+1ebn7lhRCC2aCxE4PWWmaJN/9c0zv5t3avvq05A= Received: from PH8PR02CA0004.namprd02.prod.outlook.com (2603:10b6:510:2d0::26) by MN0PR12MB6002.namprd12.prod.outlook.com (2603:10b6:208:37e::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:28:33 +0000 Received: from CY4PEPF0000EE3F.namprd03.prod.outlook.com (2603:10b6:510:2d0:cafe::a0) by PH8PR02CA0004.outlook.office365.com (2603:10b6:510:2d0::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9137.21 via Frontend Transport; Tue, 30 Sep 2025 04:28:33 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by CY4PEPF0000EE3F.mail.protection.outlook.com (10.167.242.17) 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:28:33 +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:28:31 -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 v2 5/5] dax/hmem: Reintroduce Soft Reserved ranges back into the iomem tree Date: Tue, 30 Sep 2025 04:28:14 +0000 Message-ID: <20250930042814.213912-6-Smita.KoralahalliChannabasappa@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250930042814.213912-1-Smita.KoralahalliChannabasappa@amd.com> References: <20250930042814.213912-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: CY4PEPF0000EE3F:EE_|MN0PR12MB6002:EE_ X-MS-Office365-Filtering-Correlation-Id: 49c11f2e-a27a-487f-e7c6-08ddffd9d0b0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|36860700013|7416014|376014|13003099007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?BMhv/C58fLyIYI4he7xntNUBpSE0uwJAmVMe3YkkZvIUr8tr7WPq+IeaACMN?= =?us-ascii?Q?UGHrcaFU3V0KnPGrMYYLcv0Pmdpo37X6dWafx+BmQVWeT7WmI/d+nJuqIaj4?= =?us-ascii?Q?sITm/8cn2Sdw+nRhznl8WpTUHviD8BLVjcPYLnLgVXvWOwV38T/hnWTXr/Ct?= =?us-ascii?Q?QyRK5WayY9SDgPvb4Cqr4fSWz8pTWVavrfS3ZajnBCezII0dwiSiFHDV5Re0?= =?us-ascii?Q?P9Shr7EYwyOZ7fqk2QvT1XlmG4YdR1aj+gnqB2AjlimoL01AxVTNH187NNiJ?= =?us-ascii?Q?h6JdU8rJiH1O3qssv5paCuff5nCILLyhw1XK/s2VFOeq2EJ/FOhh8sLkzK/Q?= =?us-ascii?Q?LVTV+GWstRW4Bf2CpxK/OMll0Rj4vWffPbQBIJb2jsEAcslJagJTO91DdnfU?= =?us-ascii?Q?LLQJkNqbgxyvNAGr97PcWpcEbNK0MrGa0OdbQRLEVIxW1ZFRRIQvDoy64xv1?= =?us-ascii?Q?x6MRTpKoLabk76LBaooiD4+wZcvk+Qz/VCSpfAIXSkAisQjpyimI3JAwq/vr?= =?us-ascii?Q?NvCVoDo3vdw8d7eG89x9Lg4OWHciJCf1541iNgsFnV2dwvZWuqTE6Ya7U8dm?= =?us-ascii?Q?r32C/xtCJz6z5DztwxImnsgKlecB2SgJUtsjpM9SVb68K3+/9qIhWee+rtR7?= =?us-ascii?Q?BSbEoAuWisyzC0wBWLjIkj/3Xe5Y+yQyjcLXphOxFAmFmLWP7ViLePncGzdW?= =?us-ascii?Q?yDufY2Fho/Z9wwnpkBu8gWX5bLIpQoAwiGMazj3qrNu0FYtCIDTqEEj92oij?= =?us-ascii?Q?CwKaNCehEYkjY8kYEzuPZPWR7fVDHhstezVAsLiCx3Cdf4TcdN9Orq2m4FPp?= =?us-ascii?Q?yYd0OjAJM7Y/MLcNA6LVJFJ80ImFs9aCC5cHYyfRYDVuTytd2Cp1F/LiJIoM?= =?us-ascii?Q?7+cWge7HNLQg73MWV8U5pckLKWzRZupy9M0NHvGOFqsZfCeSy2JzlYSx35oS?= =?us-ascii?Q?PMNGfRo0LfeOtXBq0OkxX/4l2qnmTWyE4b7nC4YLvE0s8RwYGR78kdwsDnVI?= =?us-ascii?Q?tshTvHTMZ3Vv2/f08oWZKG1hREZ6K5whyxjDofdniCKszuaPKSgf2JwobChL?= =?us-ascii?Q?xMynsyFrRSG8KqyKJK+jzRk69A9I6MKLoxuE8fEqm3LLXE24rymDScTgdAHx?= =?us-ascii?Q?wKcRuqHAfds4wPfVjI7FDG29zx5zh8dgHlkGhCiiO5hPKns87sTwdcS5Vbfn?= =?us-ascii?Q?tmv/IONBL95budYdVjhzosKi4rPKPnmGfWnVhKZTUFIEhMATOvbqIZR67QeK?= =?us-ascii?Q?O6UXV+SEqeSMylvt7aPwfg9UjJYEZ5LnUPe0IunfAmU9Z75sRMIu2XK13237?= =?us-ascii?Q?AUqSz0PvKjQWT4J5J8JfUhYEwoABauHy8FhLm3E1VkjM5R74RBk40hJB7agx?= =?us-ascii?Q?TjIDXK8fxirCohc7Zn1vv8Y6HqCuZ/iCvZa6s8zReCyzpH74G0mb21tc2l4Z?= =?us-ascii?Q?ASlipJ20ytzQ0sa5Rntf51v0pMpCW45jWGJ4wbq1vTBzfytGFK/QAIJ9cR2m?= =?us-ascii?Q?mJwd7XFKTuG48aHNAWT2KTjuqcLpNdjaYCNw?= 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)(13003099007);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Sep 2025 04:28:33.0201 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 49c11f2e-a27a-487f-e7c6-08ddffd9d0b0 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: CY4PEPF0000EE3F.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6002 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