On 06.07.20 03:19, Jia He wrote: > Previously, numa_off is set to true unconditionally in dummy_numa_init(), > even if there is a fake numa node. > > But acpi will translate node id to NUMA_NO_NODE(-1) in acpi_map_pxm_to_node() > because it regards numa_off as turning off the numa node. > > Without this patch, pmem can't be probed as a RAM device on arm64 if SRAT table > isn't present. > > $ndctl create-namespace -fe namespace0.0 --mode=devdax --map=dev -s 1g -a 64K > kmem dax0.0: rejecting DAX region [mem 0x240400000-0x2bfffffff] with invalid node: -1 > kmem: probe of dax0.0 failed with error -22 > > This fixes it by setting numa_off to false. > > Signed-off-by: Jia He <justin.he@xxxxxxx> > --- > arch/arm64/mm/numa.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/mm/numa.c b/arch/arm64/mm/numa.c > index aafcee3e3f7e..7689986020d9 100644 > --- a/arch/arm64/mm/numa.c > +++ b/arch/arm64/mm/numa.c > @@ -440,7 +440,8 @@ static int __init dummy_numa_init(void) > return ret; > } > > - numa_off = true; > + /* force numa_off to be false since we have a fake numa node here */ > + numa_off = false; > return 0; > } > > What would happen if we use something like this in drivers/dax/kmem.c instead: numa_node = dev_dax->target_node; if (numa_node == NUMA_NO_NODE) numa_node = memory_add_physaddr_to_nid(kmem_start); and eventually dropping the pr_warn in arm64/memory_add_physaddr_to_nid() ? Would that work? -- Thanks, David / dhildenb