Re: [PATCH v4 24/26] arch_numa: switch over to numa_memblks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

 

From: "Mike Rapoport (Microsoft)" <rppt@xxxxxxxxxx>

 

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@xxxxxxxxxx>

Tested-by: Zi Yan <ziy@xxxxxxxxxx> # for x86_64 and arm64

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>

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

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

Acked-by: David Hildenbrand <david@xxxxxxxxxx>

---

  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)

 

 


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux