public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/2] x86/of: split x86_dtb_init for early x86_flattree_get_config call
@ 2023-08-25  7:47 Saurabh Sengar
  2023-08-25  7:47 ` [PATCH v2 2/2] x86/numa: Add Devicetree support Saurabh Sengar
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Saurabh Sengar @ 2023-08-25  7:47 UTC (permalink / raw)
  To: tglx, mingo, bp, dave.hansen, x86, hpa, luto, peterz, mikelley,
	linux-kernel
  Cc: ssengar

Fetching the device tree configuration before initmem_init is necessary
to allow the parsing of NUMA node information. However moving entire
x86_dtb_init before initmem_init is not correct as APIC/IO-APIC enumeration
has to be after initmem_init. Thus, split the x86_dtb_init function to
incorporate a call to x86_flattree_get_config before initmem_init, and
leaving the ACPI/IOAPIC registration sequence as is.

Signed-off-by: Saurabh Sengar <ssengar@linux.microsoft.com>
---
[V2]
 - split the x86_dtb_init to call x86_flattree_get_config early

 arch/x86/include/asm/prom.h  | 5 +++++
 arch/x86/kernel/devicetree.c | 6 +-----
 arch/x86/kernel/setup.c      | 2 ++
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/arch/x86/include/asm/prom.h b/arch/x86/include/asm/prom.h
index b716d291d0d4..65dee2420624 100644
--- a/arch/x86/include/asm/prom.h
+++ b/arch/x86/include/asm/prom.h
@@ -31,6 +31,11 @@ static inline void x86_dtb_init(void) { }
 #define of_ioapic 0
 #endif
 
+#ifdef CONFIG_OF_EARLY_FLATTREE
+void x86_flattree_get_config(void);
+#else
+static inline void x86_flattree_get_config(void) { }
+#endif
 extern char cmd_line[COMMAND_LINE_SIZE];
 
 #endif /* __ASSEMBLY__ */
diff --git a/arch/x86/kernel/devicetree.c b/arch/x86/kernel/devicetree.c
index 87d38f17ff5c..afd09924094e 100644
--- a/arch/x86/kernel/devicetree.c
+++ b/arch/x86/kernel/devicetree.c
@@ -278,7 +278,7 @@ static void __init dtb_apic_setup(void)
 }
 
 #ifdef CONFIG_OF_EARLY_FLATTREE
-static void __init x86_flattree_get_config(void)
+void __init x86_flattree_get_config(void)
 {
 	u32 size, map_len;
 	void *dt;
@@ -300,14 +300,10 @@ static void __init x86_flattree_get_config(void)
 	unflatten_and_copy_device_tree();
 	early_memunmap(dt, map_len);
 }
-#else
-static inline void x86_flattree_get_config(void) { }
 #endif
 
 void __init x86_dtb_init(void)
 {
-	x86_flattree_get_config();
-
 	if (!of_have_populated_dt())
 		return;
 
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index b9145a63da77..ef73704fa27f 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -1221,6 +1221,8 @@ void __init setup_arch(char **cmdline_p)
 
 	early_acpi_boot_init();
 
+	x86_flattree_get_config();
+
 	initmem_init();
 	dma_contiguous_reserve(max_pfn_mapped << PAGE_SHIFT);
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v2 2/2] x86/numa: Add Devicetree support
  2023-08-25  7:47 [PATCH v2 1/2] x86/of: split x86_dtb_init for early x86_flattree_get_config call Saurabh Sengar
@ 2023-08-25  7:47 ` Saurabh Sengar
  2023-10-02 19:41   ` [tip: x86/platform] " tip-bot2 for Saurabh Sengar
  2023-09-15  5:03 ` [PATCH v2 1/2] x86/of: split x86_dtb_init for early x86_flattree_get_config call Saurabh Singh Sengar
  2023-10-02 19:41 ` [tip: x86/platform] x86/of: Move the x86_flattree_get_config() call out of x86_dtb_init() tip-bot2 for Saurabh Sengar
  2 siblings, 1 reply; 5+ messages in thread
From: Saurabh Sengar @ 2023-08-25  7:47 UTC (permalink / raw)
  To: tglx, mingo, bp, dave.hansen, x86, hpa, luto, peterz, mikelley,
	linux-kernel
  Cc: ssengar

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.

Signed-off-by: Saurabh Sengar <ssengar@linux.microsoft.com>
---
 arch/x86/Kconfig   | 1 +
 arch/x86/mm/numa.c | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 982b777eadc7..16ac287e9628 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -1534,6 +1534,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/mm/numa.c b/arch/x86/mm/numa.c
index 2aadb2019b4f..c79f12e449ea 100644
--- a/arch/x86/mm/numa.c
+++ b/arch/x86/mm/numa.c
@@ -3,6 +3,7 @@
 #include <linux/acpi.h>
 #include <linux/kernel.h>
 #include <linux/mm.h>
+#include <linux/of.h>
 #include <linux/string.h>
 #include <linux/init.h>
 #include <linux/memblock.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


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 1/2] x86/of: split x86_dtb_init for early x86_flattree_get_config call
  2023-08-25  7:47 [PATCH v2 1/2] x86/of: split x86_dtb_init for early x86_flattree_get_config call Saurabh Sengar
  2023-08-25  7:47 ` [PATCH v2 2/2] x86/numa: Add Devicetree support Saurabh Sengar
@ 2023-09-15  5:03 ` Saurabh Singh Sengar
  2023-10-02 19:41 ` [tip: x86/platform] x86/of: Move the x86_flattree_get_config() call out of x86_dtb_init() tip-bot2 for Saurabh Sengar
  2 siblings, 0 replies; 5+ messages in thread
From: Saurabh Singh Sengar @ 2023-09-15  5:03 UTC (permalink / raw)
  To: tglx, mingo, bp, dave.hansen, x86, hpa, luto, peterz, mikelley,
	linux-kernel

On Fri, Aug 25, 2023 at 12:47:36AM -0700, Saurabh Sengar wrote:
> Fetching the device tree configuration before initmem_init is necessary
> to allow the parsing of NUMA node information. However moving entire
> x86_dtb_init before initmem_init is not correct as APIC/IO-APIC enumeration
> has to be after initmem_init. Thus, split the x86_dtb_init function to
> incorporate a call to x86_flattree_get_config before initmem_init, and
> leaving the ACPI/IOAPIC registration sequence as is.
> 
> Signed-off-by: Saurabh Sengar <ssengar@linux.microsoft.com>
> ---
> [V2]
>  - split the x86_dtb_init to call x86_flattree_get_config early
> 
>  arch/x86/include/asm/prom.h  | 5 +++++
>  arch/x86/kernel/devicetree.c | 6 +-----
>  arch/x86/kernel/setup.c      | 2 ++
>  3 files changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/x86/include/asm/prom.h b/arch/x86/include/asm/prom.h
> index b716d291d0d4..65dee2420624 100644
> --- a/arch/x86/include/asm/prom.h
> +++ b/arch/x86/include/asm/prom.h
> @@ -31,6 +31,11 @@ static inline void x86_dtb_init(void) { }
>  #define of_ioapic 0
>  #endif
>  
> +#ifdef CONFIG_OF_EARLY_FLATTREE
> +void x86_flattree_get_config(void);
> +#else
> +static inline void x86_flattree_get_config(void) { }
> +#endif
>  extern char cmd_line[COMMAND_LINE_SIZE];
>  
>  #endif /* __ASSEMBLY__ */
> diff --git a/arch/x86/kernel/devicetree.c b/arch/x86/kernel/devicetree.c
> index 87d38f17ff5c..afd09924094e 100644
> --- a/arch/x86/kernel/devicetree.c
> +++ b/arch/x86/kernel/devicetree.c
> @@ -278,7 +278,7 @@ static void __init dtb_apic_setup(void)
>  }
>  
>  #ifdef CONFIG_OF_EARLY_FLATTREE
> -static void __init x86_flattree_get_config(void)
> +void __init x86_flattree_get_config(void)
>  {
>  	u32 size, map_len;
>  	void *dt;
> @@ -300,14 +300,10 @@ static void __init x86_flattree_get_config(void)
>  	unflatten_and_copy_device_tree();
>  	early_memunmap(dt, map_len);
>  }
> -#else
> -static inline void x86_flattree_get_config(void) { }
>  #endif
>  
>  void __init x86_dtb_init(void)
>  {
> -	x86_flattree_get_config();
> -
>  	if (!of_have_populated_dt())
>  		return;
>  
> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> index b9145a63da77..ef73704fa27f 100644
> --- a/arch/x86/kernel/setup.c
> +++ b/arch/x86/kernel/setup.c
> @@ -1221,6 +1221,8 @@ void __init setup_arch(char **cmdline_p)
>  
>  	early_acpi_boot_init();
>  
> +	x86_flattree_get_config();
> +
>  	initmem_init();
>  	dma_contiguous_reserve(max_pfn_mapped << PAGE_SHIFT);
>  
> -- 
> 2.34.1

Kind reminder to review this patch series.

- Saurabh

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [tip: x86/platform] x86/numa: Add Devicetree support
  2023-08-25  7:47 ` [PATCH v2 2/2] x86/numa: Add Devicetree support Saurabh Sengar
@ 2023-10-02 19:41   ` tip-bot2 for Saurabh Sengar
  0 siblings, 0 replies; 5+ messages in thread
From: tip-bot2 for Saurabh Sengar @ 2023-10-02 19:41 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Saurabh Sengar, Ingo Molnar, Sebastian Andrzej Siewior, x86,
	linux-kernel

The following commit has been merged into the x86/platform branch of tip:

Commit-ID:     0c436a58292d0ca1af213ede75b2508995c8af0b
Gitweb:        https://git.kernel.org/tip/0c436a58292d0ca1af213ede75b2508995c8af0b
Author:        Saurabh Sengar <ssengar@linux.microsoft.com>
AuthorDate:    Fri, 25 Aug 2023 00:47:37 -07:00
Committer:     Ingo Molnar <mingo@kernel.org>
CommitterDate: Mon, 02 Oct 2023 21:30:20 +02:00

x86/numa: Add Devicetree support

Hyper-V has usecases where it needs to fetch NUMA information from
Devicetree. Currently, it is not possible to extract the NUMA information
from Devicetree for the x86 arch.

Add support for Devicetree in the x86_numa_init() function, allowing the
retrieval of NUMA node information from the Devicetree.

Signed-off-by: Saurabh Sengar <ssengar@linux.microsoft.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Link: https://lore.kernel.org/r/1692949657-16446-2-git-send-email-ssengar@linux.microsoft.com
---
 arch/x86/Kconfig   | 1 +
 arch/x86/mm/numa.c | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 66bfaba..aab5e32 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -1534,6 +1534,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/mm/numa.c b/arch/x86/mm/numa.c
index 2aadb20..c79f12e 100644
--- a/arch/x86/mm/numa.c
+++ b/arch/x86/mm/numa.c
@@ -3,6 +3,7 @@
 #include <linux/acpi.h>
 #include <linux/kernel.h>
 #include <linux/mm.h>
+#include <linux/of.h>
 #include <linux/string.h>
 #include <linux/init.h>
 #include <linux/memblock.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);

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [tip: x86/platform] x86/of: Move the x86_flattree_get_config() call out of x86_dtb_init()
  2023-08-25  7:47 [PATCH v2 1/2] x86/of: split x86_dtb_init for early x86_flattree_get_config call Saurabh Sengar
  2023-08-25  7:47 ` [PATCH v2 2/2] x86/numa: Add Devicetree support Saurabh Sengar
  2023-09-15  5:03 ` [PATCH v2 1/2] x86/of: split x86_dtb_init for early x86_flattree_get_config call Saurabh Singh Sengar
@ 2023-10-02 19:41 ` tip-bot2 for Saurabh Sengar
  2 siblings, 0 replies; 5+ messages in thread
From: tip-bot2 for Saurabh Sengar @ 2023-10-02 19:41 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Saurabh Sengar, Ingo Molnar, Sebastian Andrzej Siewior, x86,
	linux-kernel

The following commit has been merged into the x86/platform branch of tip:

Commit-ID:     0d294c8c4efa5c0f283a6dfc82dc014a5dbd9308
Gitweb:        https://git.kernel.org/tip/0d294c8c4efa5c0f283a6dfc82dc014a5dbd9308
Author:        Saurabh Sengar <ssengar@linux.microsoft.com>
AuthorDate:    Fri, 25 Aug 2023 00:47:36 -07:00
Committer:     Ingo Molnar <mingo@kernel.org>
CommitterDate: Mon, 02 Oct 2023 21:30:09 +02:00

x86/of: Move the x86_flattree_get_config() call out of x86_dtb_init()

Fetching the device tree configuration before initmem_init() is necessary
to allow the parsing of NUMA node information. However moving the entire
x86_dtb_init() call before initmem_init() is not correct as APIC/IO-APIC enumeration
has to be after initmem_init().

Thus, move the x86_flattree_get_config() call out of x86_dtb_init(),
into setup_arch(), to call it before initmem_init(), and
leave the ACPI/IOAPIC registration sequence as-is.

[ mingo: Updated the changelog for clarity. ]

Signed-off-by: Saurabh Sengar <ssengar@linux.microsoft.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Link: https://lore.kernel.org/r/1692949657-16446-1-git-send-email-ssengar@linux.microsoft.com
---
 arch/x86/include/asm/prom.h  | 5 +++++
 arch/x86/kernel/devicetree.c | 6 +-----
 arch/x86/kernel/setup.c      | 2 ++
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/arch/x86/include/asm/prom.h b/arch/x86/include/asm/prom.h
index b716d29..65dee24 100644
--- a/arch/x86/include/asm/prom.h
+++ b/arch/x86/include/asm/prom.h
@@ -31,6 +31,11 @@ static inline void x86_dtb_init(void) { }
 #define of_ioapic 0
 #endif
 
+#ifdef CONFIG_OF_EARLY_FLATTREE
+void x86_flattree_get_config(void);
+#else
+static inline void x86_flattree_get_config(void) { }
+#endif
 extern char cmd_line[COMMAND_LINE_SIZE];
 
 #endif /* __ASSEMBLY__ */
diff --git a/arch/x86/kernel/devicetree.c b/arch/x86/kernel/devicetree.c
index 87d38f1..afd0992 100644
--- a/arch/x86/kernel/devicetree.c
+++ b/arch/x86/kernel/devicetree.c
@@ -278,7 +278,7 @@ static void __init dtb_apic_setup(void)
 }
 
 #ifdef CONFIG_OF_EARLY_FLATTREE
-static void __init x86_flattree_get_config(void)
+void __init x86_flattree_get_config(void)
 {
 	u32 size, map_len;
 	void *dt;
@@ -300,14 +300,10 @@ static void __init x86_flattree_get_config(void)
 	unflatten_and_copy_device_tree();
 	early_memunmap(dt, map_len);
 }
-#else
-static inline void x86_flattree_get_config(void) { }
 #endif
 
 void __init x86_dtb_init(void)
 {
-	x86_flattree_get_config();
-
 	if (!of_have_populated_dt())
 		return;
 
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index b9145a6..ef73704 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -1221,6 +1221,8 @@ void __init setup_arch(char **cmdline_p)
 
 	early_acpi_boot_init();
 
+	x86_flattree_get_config();
+
 	initmem_init();
 	dma_contiguous_reserve(max_pfn_mapped << PAGE_SHIFT);
 

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-10-02 19:41 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-25  7:47 [PATCH v2 1/2] x86/of: split x86_dtb_init for early x86_flattree_get_config call Saurabh Sengar
2023-08-25  7:47 ` [PATCH v2 2/2] x86/numa: Add Devicetree support Saurabh Sengar
2023-10-02 19:41   ` [tip: x86/platform] " tip-bot2 for Saurabh Sengar
2023-09-15  5:03 ` [PATCH v2 1/2] x86/of: split x86_dtb_init for early x86_flattree_get_config call Saurabh Singh Sengar
2023-10-02 19:41 ` [tip: x86/platform] x86/of: Move the x86_flattree_get_config() call out of x86_dtb_init() tip-bot2 for Saurabh Sengar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox