Re: [PATCH] NUMA: Early use of cpu_to_node() returns 0 instead of the correct node id

From: Shijie Huang
Date: Mon Jan 22 2024 - 03:28:31 EST



在 2024/1/22 15:41, Mike Rapoport 写道:
On Fri, Jan 19, 2024 at 04:50:53PM +0800, Shijie Huang wrote:
在 2024/1/19 16:42, Mike Rapoport 写道:
Is there a fundamental reason to have early_cpu_to_node() at all?
The early_cpu_to_node does not work on some ARCHs (which support the NUMA),
such as SPARC, MIPS and S390.
My question was why we need early_cpu_to_node() at all and why can't we use
cpu_to_node() early on arches that do have it

As you see, some ARCHs use cpu_to_node() all the time, such as SPARC,mips and S390.

They do not use early_cpu_to_node() at all.


In some ARCHs(arm64, powerpc riscv), the cpu_to_node() is ready at:

    start_kernel --> arch_call_rest_init() --> rest_init()
                           --> kernel_init() --> kernel_init_freeable()
                           --> smp_prepare_cpus()


The cpu_to_node() is initialized too late.


I am not sure if we can move "cpu_to_node initialization" to an early place.

Move "cpu_to_node() initization" to an early place is more complicated, I guess.


Thanks

Huang Shijie