On 7 Aug 2024, at 2:41, Mike Rapoport wrote:

 

From: "Mike Rapoport (Microsoft)" <rppt@kernel.org>

 

Until now arch_numa was directly translating firmware NUMA information

to memblock.

 

Using numa_memblks as an intermediate step has a few advantages:

* alignment with more battle tested x86 implementation

* availability of NUMA emulation

* maintaining node information for not yet populated memory

 

Adjust a few places in numa_memblks to compile with 32-bit phys_addr_t

and replace current functionality related to numa_add_memblk() and

__node_distance() in arch_numa with the implementation based on

numa_memblks and add functions required by numa_emulation.

 

Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>

Tested-by: Zi Yan <ziy@nvidia.com> # for x86_64 and arm64

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

Tested-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> [arm64 + CXL via QEMU]

Acked-by: Dan Williams <dan.j.williams@intel.com>

Acked-by: David Hildenbrand <david@redhat.com>

---

  drivers/base/Kconfig       |   1 +

  drivers/base/arch_numa.c   | 201 +++++++++++--------------------------

  include/asm-generic/numa.h |   6 +-

  mm/numa_memblks.c          |  17 ++--

  4 files changed, 75 insertions(+), 150 deletions(-)

 

 

<snip>

 

+

+u64 __init numa_emu_dma_end(void)

+{

+             return PFN_PHYS(memblock_start_of_DRAM() + SZ_4G);

+}

+

 

PFN_PHYS() translation is unnecessary here, as

memblock_start_of_DRAM() + SZ_4G is already a

memory size.

 

This should fix it:

 

diff --git a/drivers/base/arch_numa.c b/drivers/base/arch_numa.c

index 8d49893c0e94..e18701676426 100644

--- a/drivers/base/arch_numa.c

+++ b/drivers/base/arch_numa.c

@@ -346,7 +346,7 @@ void __init numa_emu_update_cpu_to_node(int *emu_nid_to_phys,

 

u64 __init numa_emu_dma_end(void)

{

-              return PFN_PHYS(memblock_start_of_DRAM() + SZ_4G);

+             return memblock_start_of_DRAM() + SZ_4G;

}

 

void debug_cpumask_set_cpu(unsigned int cpu, int node, bool enable)