diff options
author | Dan Williams <dan.j.williams@intel.com> | 2020-04-03 05:50:31 +0300 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2020-04-03 05:50:31 +0300 |
commit | d3b88655c0a157c11370b8faf50e82ecb1c17d54 (patch) | |
tree | e3c868d5243a6073625287979bd52cf76f4eaaa8 /drivers/nvdimm | |
parent | 91bf79bcb61df7a89690f894f06b78b0e66fb43c (diff) | |
parent | 7b27a8622f802761d5c6abd6c37b22312a35343c (diff) | |
download | linux-d3b88655c0a157c11370b8faf50e82ecb1c17d54.tar.xz |
Merge branch 'for-5.7/numa' into libnvdimm-for-next
- Promote numa_map_to_online_node() to a cross-kernel generic facility.
- Save x86 numa information to allow for node-id lookups for reserved
memory ranges, deploy that capability for the e820-pmem driver.
- Introduce phys_to_target_node() to facilitate drivers that want to
know resulting numa node if a given reserved address range was
onlined.
Diffstat (limited to 'drivers/nvdimm')
-rw-r--r-- | drivers/nvdimm/e820.c | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/drivers/nvdimm/e820.c b/drivers/nvdimm/e820.c index e02f60ad6c99..4cd18be9d0e9 100644 --- a/drivers/nvdimm/e820.c +++ b/drivers/nvdimm/e820.c @@ -7,6 +7,7 @@ #include <linux/memory_hotplug.h> #include <linux/libnvdimm.h> #include <linux/module.h> +#include <linux/numa.h> static int e820_pmem_remove(struct platform_device *pdev) { @@ -16,27 +17,16 @@ static int e820_pmem_remove(struct platform_device *pdev) return 0; } -#ifdef CONFIG_MEMORY_HOTPLUG -static int e820_range_to_nid(resource_size_t addr) -{ - return memory_add_physaddr_to_nid(addr); -} -#else -static int e820_range_to_nid(resource_size_t addr) -{ - return NUMA_NO_NODE; -} -#endif - static int e820_register_one(struct resource *res, void *data) { struct nd_region_desc ndr_desc; struct nvdimm_bus *nvdimm_bus = data; + int nid = phys_to_target_node(res->start); memset(&ndr_desc, 0, sizeof(ndr_desc)); ndr_desc.res = res; - ndr_desc.numa_node = e820_range_to_nid(res->start); - ndr_desc.target_node = ndr_desc.numa_node; + ndr_desc.numa_node = numa_map_to_online_node(nid); + ndr_desc.target_node = nid; set_bit(ND_REGION_PAGEMAP, &ndr_desc.flags); if (!nvdimm_pmem_region_create(nvdimm_bus, &ndr_desc)) return -ENXIO; |