]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
cxl_test: Limit location for fake CFMWS to mappable range
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Tue, 27 May 2025 15:34:51 +0000 (16:34 +0100)
committerDave Jiang <dave.jiang@intel.com>
Mon, 30 Jun 2025 23:36:06 +0000 (16:36 -0700)
Some architectures (e.g. arm64) only support memory hotplug operations on
a restricted set of physical addresses. This applies even when we are
faking some CXL fixed memory windows for the purposes of cxl_test.
That range can be queried with mhp_get_pluggable_range(true). Use the
minimum of that the top of that range and iomem_resource.end to establish
the 64GiB region used by cxl_test.

From thread #2 which was related to the issue in #1.

[ dj: Add CONFIG_MEMORY_HOTPLUG config check, from Alison ]

Link: https://lore.kernel.org/linux-cxl/20250522145622.00002633@huawei.com/
Reported-by: Itaru Kitayama <itaru.kitayama@linux.dev>
Closes: https://github.com/pmem/ndctl/issues/278 #1
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Tested-by: Itaru Kitayama <itaru.kitayama@fujitsu.com <mailto:itaru.kitayama@fujitsu.com>
Tested-by: Marc Herbert <marc.herbert@linux.intel.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Link: https://patch.msgid.link/20250527153451.82858-1-Jonathan.Cameron@huawei.com
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
tools/testing/cxl/config_check.c
tools/testing/cxl/test/cxl.c

index 0902c5d6e41044333d55f8dabaae315d5b109a6d..a80bc2c062fe9feda5f2fb1a1cefbf67c93cc856 100644 (file)
@@ -14,4 +14,5 @@ void check(void)
        BUILD_BUG_ON(!IS_ENABLED(CONFIG_CXL_REGION_INVALIDATION_TEST));
        BUILD_BUG_ON(!IS_ENABLED(CONFIG_NVDIMM_SECURITY_TEST));
        BUILD_BUG_ON(!IS_ENABLED(CONFIG_DEBUG_FS));
+       BUILD_BUG_ON(!IS_ENABLED(CONFIG_MEMORY_HOTPLUG));
 }
index 8a5815ca870df58b3d643ac5665c3c43ab480072..6a25cca5636f75eb130327ce800b4fd69ad60c39 100644 (file)
@@ -2,6 +2,7 @@
 // Copyright(c) 2021 Intel Corporation. All rights reserved.
 
 #include <linux/platform_device.h>
+#include <linux/memory_hotplug.h>
 #include <linux/genalloc.h>
 #include <linux/module.h>
 #include <linux/mutex.h>
@@ -1328,6 +1329,7 @@ err_mem:
 static __init int cxl_test_init(void)
 {
        int rc, i;
+       struct range mappable;
 
        cxl_acpi_test();
        cxl_core_test();
@@ -1342,8 +1344,11 @@ static __init int cxl_test_init(void)
                rc = -ENOMEM;
                goto err_gen_pool_create;
        }
+       mappable = mhp_get_pluggable_range(true);
 
-       rc = gen_pool_add(cxl_mock_pool, iomem_resource.end + 1 - SZ_64G,
+       rc = gen_pool_add(cxl_mock_pool,
+                         min(iomem_resource.end + 1 - SZ_64G,
+                             mappable.end + 1 - SZ_64G),
                          SZ_64G, NUMA_NO_NODE);
        if (rc)
                goto err_gen_pool_add;