RE: [PATCH] x86/numa: Add Devicetree support

From: Saurabh Singh Sengar
Date: Wed Jul 12 2023 - 04:11:46 EST




> -----Original Message-----
> From: Saurabh Sengar <ssengar@xxxxxxxxxxxxxxxxxxx>
> Sent: Tuesday, June 27, 2023 12:58 PM
> To: tglx@xxxxxxxxxxxxx; mingo@xxxxxxxxxx; bp@xxxxxxxxx;
> dave.hansen@xxxxxxxxxxxxxxx; x86@xxxxxxxxxx; hpa@xxxxxxxxx;
> luto@xxxxxxxxxx; peterz@xxxxxxxxxxxxx; Michael Kelley (LINUX)
> <mikelley@xxxxxxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx
> Cc: ssengar@xxxxxxxxxxxxxxxxxxx
> Subject: [PATCH] x86/numa: Add Devicetree support
>
> Hyper-V has usecases where it need to fetch NUMA information from
> Devicetree. Currently, it is not possible to extract the NUMA
> information from Devicetree for x86 arch.
>
> Add support for Devicetree in the x86_numa_init function, allowing
> the retrieval of NUMA node information from the Devicetree.
>
> Additionally, relocate the x86_dtb_init function before initmem_init
> to ensure the Devicetree initialization prior to its utilization in
> x86_numa_init.
>
> Signed-off-by: Saurabh Sengar <ssengar@xxxxxxxxxxxxxxxxxxx>
> ---
> arch/x86/Kconfig | 1 +
> arch/x86/kernel/setup.c | 2 +-
> arch/x86/mm/numa.c | 3 +++
> 3 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index c531b16ee0bf..a2ada193b2d8 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -1567,6 +1567,7 @@ config NUMA
> depends on X86_64 || (X86_32 && HIGHMEM64G && X86_BIGSMP)
> default y if X86_BIGSMP
> select USE_PERCPU_NUMA_NODE_ID
> + select OF_NUMA if OF
> help
> Enable NUMA (Non-Uniform Memory Access) support.
>
> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> index fd975a4a5200..940c92a6a5e9 100644
> --- a/arch/x86/kernel/setup.c
> +++ b/arch/x86/kernel/setup.c
> @@ -1220,6 +1220,7 @@ void __init setup_arch(char **cmdline_p)
>
> early_acpi_boot_init();
>
> + x86_dtb_init();
> initmem_init();
> dma_contiguous_reserve(max_pfn_mapped << PAGE_SHIFT);
>
> @@ -1261,7 +1262,6 @@ void __init setup_arch(char **cmdline_p)
> * Read APIC and some other early information from ACPI tables.
> */
> acpi_boot_init();
> - x86_dtb_init();
>
> /*
> * get boot-time SMP configuration:
> diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c
> index 2aadb2019b4f..a6d3d331fda2 100644
> --- a/arch/x86/mm/numa.c
> +++ b/arch/x86/mm/numa.c
> @@ -11,6 +11,7 @@
> #include <linux/nodemask.h>
> #include <linux/sched.h>
> #include <linux/topology.h>
> +#include <linux/of.h>
>
> #include <asm/e820/api.h>
> #include <asm/proto.h>
> @@ -733,6 +734,8 @@ void __init x86_numa_init(void)
> if (!numa_init(amd_numa_init))
> return;
> #endif
> + if (acpi_disabled && !numa_init(of_numa_init))
> + return;
> }
>
> numa_init(dummy_numa_init);
> --
> 2.34.1

Hi x86 Maintainers,

May I get your feedback on this patch.

Regards,
Saurabh