All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] NUMA: no need for asm/numa.h when !NUMA
@ 2024-01-08 11:30 Jan Beulich
  2024-01-08 18:54 ` Shawn Anastasio
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Jan Beulich @ 2024-01-08 11:30 UTC (permalink / raw)
  To: xen-devel
  Cc: Andrew Cooper, George Dunlap, Julien Grall, Stefano Stabellini,
	Wei Liu, Shawn Anastasio, Bertrand Marquis, Michal Orzel,
	Oleksii Kurochko

There's no point in every architecture carrying the same stubs for the
case when NUMA isn't enabled (or even supported). Move all of that to
xen/numa.h; replace explicit uses of asm/numa.h in common code. Make
inclusion of asm/numa.h dependent upon NUMA=y.

Drop the no longer applicable "implement NUMA support" comments - in a
!NUMA section this simply makes no sense.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: Split off first_valid_mfn specific change. Re-base.

--- a/xen/arch/arm/include/asm/numa.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef __ARCH_ARM_NUMA_H
-#define __ARCH_ARM_NUMA_H
-
-#include <xen/mm.h>
-
-typedef u8 nodeid_t;
-
-#ifndef CONFIG_NUMA
-
-/* Fake one node for now. See also node_online_map. */
-#define cpu_to_node(cpu) 0
-#define node_to_cpumask(node)   (cpu_online_map)
-
-/* XXX: implement NUMA support */
-#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
-#define node_start_pfn(nid) (mfn_x(first_valid_mfn))
-#define __node_distance(a, b) (20)
-
-#endif
-
-#define arch_want_default_dmazone() (false)
-
-#endif /* __ARCH_ARM_NUMA_H */
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
--- a/xen/arch/arm/smpboot.c
+++ b/xen/arch/arm/smpboot.c
@@ -42,7 +42,7 @@ integer_param("maxcpus", max_cpus);
 /* CPU logical map: map xen cpuid to an MPIDR */
 register_t __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = MPIDR_INVALID };
 
-/* Fake one node for now. See also asm/numa.h */
+/* Fake one node for now. See also xen/numa.h */
 nodemask_t __read_mostly node_online_map = { { [0] = 1UL } };
 
 /* Xen stack for bringing up the first CPU. */
--- a/xen/arch/ppc/include/asm/numa.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef __ASM_PPC_NUMA_H__
-#define __ASM_PPC_NUMA_H__
-
-#include <xen/types.h>
-#include <xen/mm.h>
-
-typedef uint8_t nodeid_t;
-
-/* Fake one node for now. See also node_online_map. */
-#define cpu_to_node(cpu) 0
-#define node_to_cpumask(node)   (cpu_online_map)
-
-/* XXX: implement NUMA support */
-#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
-#define node_start_pfn(nid) (mfn_x(first_valid_mfn))
-#define __node_distance(a, b) (20)
-
-#define arch_want_default_dmazone() (false)
-
-#endif /* __ASM_PPC_NUMA_H__ */
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -138,7 +138,6 @@
 #include <xen/spinlock.h>
 
 #include <asm/flushtlb.h>
-#include <asm/numa.h>
 #include <asm/page.h>
 
 #include <public/sysctl.h>
--- a/xen/common/sysctl.c
+++ b/xen/common/sysctl.c
@@ -22,8 +22,8 @@
 #include <asm/current.h>
 #include <xen/hypercall.h>
 #include <public/sysctl.h>
-#include <asm/numa.h>
 #include <xen/nodemask.h>
+#include <xen/numa.h>
 #include <xsm/xsm.h>
 #include <xen/pmstat.h>
 #include <xen/livepatch.h>
--- a/xen/include/xen/domain.h
+++ b/xen/include/xen/domain.h
@@ -2,6 +2,7 @@
 #ifndef __XEN_DOMAIN_H__
 #define __XEN_DOMAIN_H__
 
+#include <xen/numa.h>
 #include <xen/types.h>
 
 #include <public/xen.h>
@@ -12,7 +13,6 @@ struct guest_area {
 };
 
 #include <asm/domain.h>
-#include <asm/numa.h>
 
 typedef union {
     struct vcpu_guest_context *nat;
--- a/xen/include/xen/numa.h
+++ b/xen/include/xen/numa.h
@@ -2,7 +2,13 @@
 #define _XEN_NUMA_H
 
 #include <xen/mm-frame.h>
+
+#ifdef CONFIG_NUMA
+#include <xen/pdx.h>
 #include <asm/numa.h>
+#else
+typedef uint8_t nodeid_t;
+#endif
 
 #define NUMA_NO_NODE     0xFF
 #define NUMA_NO_DISTANCE 0xFF
@@ -108,8 +114,18 @@ extern void numa_set_processor_nodes_par
 
 #else
 
+/* Fake one node for now. See also node_online_map. */
+#define cpu_to_node(cpu) 0
+#define node_to_cpumask(node)   cpu_online_map
+
+#define arch_want_default_dmazone() false
+
 extern mfn_t first_valid_mfn;
 
+#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
+#define node_start_pfn(nid) mfn_x(first_valid_mfn)
+#define __node_distance(a, b) 20
+
 static inline nodeid_t mfn_to_nid(mfn_t mfn)
 {
     return 0;
--- a/xen/include/xen/pci.h
+++ b/xen/include/xen/pci.h
@@ -11,10 +11,10 @@
 #include <xen/list.h>
 #include <xen/spinlock.h>
 #include <xen/irq.h>
+#include <xen/numa.h>
 #include <xen/pci_regs.h>
 #include <xen/pfn.h>
 #include <asm/device.h>
-#include <asm/numa.h>
 
 /*
  * The PCI interface treats multi-function devices as independent


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

* Re: [PATCH v2] NUMA: no need for asm/numa.h when !NUMA
  2024-01-08 11:30 [PATCH v2] NUMA: no need for asm/numa.h when !NUMA Jan Beulich
@ 2024-01-08 18:54 ` Shawn Anastasio
  2024-01-09  9:22 ` Oleksii
  2024-01-25 17:00 ` Ping: " Jan Beulich
  2 siblings, 0 replies; 5+ messages in thread
From: Shawn Anastasio @ 2024-01-08 18:54 UTC (permalink / raw)
  To: Jan Beulich, xen-devel
  Cc: Andrew Cooper, George Dunlap, Julien Grall, Stefano Stabellini,
	Wei Liu, Bertrand Marquis, Michal Orzel, Oleksii Kurochko

Hi Jan,

On 1/8/24 5:30 AM, Jan Beulich wrote:
> There's no point in every architecture carrying the same stubs for the
> case when NUMA isn't enabled (or even supported). Move all of that to
> xen/numa.h; replace explicit uses of asm/numa.h in common code. Make
> inclusion of asm/numa.h dependent upon NUMA=y.
> 
> Drop the no longer applicable "implement NUMA support" comments - in a
> !NUMA section this simply makes no sense.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>

Thanks,
Shawn


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

* Re: [PATCH v2] NUMA: no need for asm/numa.h when !NUMA
  2024-01-08 11:30 [PATCH v2] NUMA: no need for asm/numa.h when !NUMA Jan Beulich
  2024-01-08 18:54 ` Shawn Anastasio
@ 2024-01-09  9:22 ` Oleksii
  2024-01-25 17:00 ` Ping: " Jan Beulich
  2 siblings, 0 replies; 5+ messages in thread
From: Oleksii @ 2024-01-09  9:22 UTC (permalink / raw)
  To: Jan Beulich, xen-devel
  Cc: Andrew Cooper, George Dunlap, Julien Grall, Stefano Stabellini,
	Wei Liu, Shawn Anastasio, Bertrand Marquis, Michal Orzel

Looks good to me.

Acked-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Best regards,
 Oleksii

On Mon, 2024-01-08 at 12:30 +0100, Jan Beulich wrote:
> There's no point in every architecture carrying the same stubs for
> the
> case when NUMA isn't enabled (or even supported). Move all of that to
> xen/numa.h; replace explicit uses of asm/numa.h in common code. Make
> inclusion of asm/numa.h dependent upon NUMA=y.
> 
> Drop the no longer applicable "implement NUMA support" comments - in
> a
> !NUMA section this simply makes no sense.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> v2: Split off first_valid_mfn specific change. Re-base.
> 
> --- a/xen/arch/arm/include/asm/numa.h
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -#ifndef __ARCH_ARM_NUMA_H
> -#define __ARCH_ARM_NUMA_H
> -
> -#include <xen/mm.h>
> -
> -typedef u8 nodeid_t;
> -
> -#ifndef CONFIG_NUMA
> -
> -/* Fake one node for now. See also node_online_map. */
> -#define cpu_to_node(cpu) 0
> -#define node_to_cpumask(node)   (cpu_online_map)
> -
> -/* XXX: implement NUMA support */
> -#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
> -#define node_start_pfn(nid) (mfn_x(first_valid_mfn))
> -#define __node_distance(a, b) (20)
> -
> -#endif
> -
> -#define arch_want_default_dmazone() (false)
> -
> -#endif /* __ARCH_ARM_NUMA_H */
> -/*
> - * Local variables:
> - * mode: C
> - * c-file-style: "BSD"
> - * c-basic-offset: 4
> - * indent-tabs-mode: nil
> - * End:
> - */
> --- a/xen/arch/arm/smpboot.c
> +++ b/xen/arch/arm/smpboot.c
> @@ -42,7 +42,7 @@ integer_param("maxcpus", max_cpus);
>  /* CPU logical map: map xen cpuid to an MPIDR */
>  register_t __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] =
> MPIDR_INVALID };
>  
> -/* Fake one node for now. See also asm/numa.h */
> +/* Fake one node for now. See also xen/numa.h */
>  nodemask_t __read_mostly node_online_map = { { [0] = 1UL } };
>  
>  /* Xen stack for bringing up the first CPU. */
> --- a/xen/arch/ppc/include/asm/numa.h
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -#ifndef __ASM_PPC_NUMA_H__
> -#define __ASM_PPC_NUMA_H__
> -
> -#include <xen/types.h>
> -#include <xen/mm.h>
> -
> -typedef uint8_t nodeid_t;
> -
> -/* Fake one node for now. See also node_online_map. */
> -#define cpu_to_node(cpu) 0
> -#define node_to_cpumask(node)   (cpu_online_map)
> -
> -/* XXX: implement NUMA support */
> -#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
> -#define node_start_pfn(nid) (mfn_x(first_valid_mfn))
> -#define __node_distance(a, b) (20)
> -
> -#define arch_want_default_dmazone() (false)
> -
> -#endif /* __ASM_PPC_NUMA_H__ */
> --- a/xen/common/page_alloc.c
> +++ b/xen/common/page_alloc.c
> @@ -138,7 +138,6 @@
>  #include <xen/spinlock.h>
>  
>  #include <asm/flushtlb.h>
> -#include <asm/numa.h>
>  #include <asm/page.h>
>  
>  #include <public/sysctl.h>
> --- a/xen/common/sysctl.c
> +++ b/xen/common/sysctl.c
> @@ -22,8 +22,8 @@
>  #include <asm/current.h>
>  #include <xen/hypercall.h>
>  #include <public/sysctl.h>
> -#include <asm/numa.h>
>  #include <xen/nodemask.h>
> +#include <xen/numa.h>
>  #include <xsm/xsm.h>
>  #include <xen/pmstat.h>
>  #include <xen/livepatch.h>
> --- a/xen/include/xen/domain.h
> +++ b/xen/include/xen/domain.h
> @@ -2,6 +2,7 @@
>  #ifndef __XEN_DOMAIN_H__
>  #define __XEN_DOMAIN_H__
>  
> +#include <xen/numa.h>
>  #include <xen/types.h>
>  
>  #include <public/xen.h>
> @@ -12,7 +13,6 @@ struct guest_area {
>  };
>  
>  #include <asm/domain.h>
> -#include <asm/numa.h>
>  
>  typedef union {
>      struct vcpu_guest_context *nat;
> --- a/xen/include/xen/numa.h
> +++ b/xen/include/xen/numa.h
> @@ -2,7 +2,13 @@
>  #define _XEN_NUMA_H
>  
>  #include <xen/mm-frame.h>
> +
> +#ifdef CONFIG_NUMA
> +#include <xen/pdx.h>
>  #include <asm/numa.h>
> +#else
> +typedef uint8_t nodeid_t;
> +#endif
>  
>  #define NUMA_NO_NODE     0xFF
>  #define NUMA_NO_DISTANCE 0xFF
> @@ -108,8 +114,18 @@ extern void numa_set_processor_nodes_par
>  
>  #else
>  
> +/* Fake one node for now. See also node_online_map. */
> +#define cpu_to_node(cpu) 0
> +#define node_to_cpumask(node)   cpu_online_map
> +
> +#define arch_want_default_dmazone() false
> +
>  extern mfn_t first_valid_mfn;
>  
> +#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
> +#define node_start_pfn(nid) mfn_x(first_valid_mfn)
> +#define __node_distance(a, b) 20
> +
>  static inline nodeid_t mfn_to_nid(mfn_t mfn)
>  {
>      return 0;
> --- a/xen/include/xen/pci.h
> +++ b/xen/include/xen/pci.h
> @@ -11,10 +11,10 @@
>  #include <xen/list.h>
>  #include <xen/spinlock.h>
>  #include <xen/irq.h>
> +#include <xen/numa.h>
>  #include <xen/pci_regs.h>
>  #include <xen/pfn.h>
>  #include <asm/device.h>
> -#include <asm/numa.h>
>  
>  /*
>   * The PCI interface treats multi-function devices as independent



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

* Ping: [PATCH v2] NUMA: no need for asm/numa.h when !NUMA
  2024-01-08 11:30 [PATCH v2] NUMA: no need for asm/numa.h when !NUMA Jan Beulich
  2024-01-08 18:54 ` Shawn Anastasio
  2024-01-09  9:22 ` Oleksii
@ 2024-01-25 17:00 ` Jan Beulich
  2024-01-25 18:23   ` Julien Grall
  2 siblings, 1 reply; 5+ messages in thread
From: Jan Beulich @ 2024-01-25 17:00 UTC (permalink / raw)
  To: Julien Grall, Stefano Stabellini, Bertrand Marquis, Michal Orzel
  Cc: Andrew Cooper, George Dunlap, Wei Liu, Shawn Anastasio,
	Oleksii Kurochko, xen-devel

On 08.01.2024 12:30, Jan Beulich wrote:
> There's no point in every architecture carrying the same stubs for the
> case when NUMA isn't enabled (or even supported). Move all of that to
> xen/numa.h; replace explicit uses of asm/numa.h in common code. Make
> inclusion of asm/numa.h dependent upon NUMA=y.
> 
> Drop the no longer applicable "implement NUMA support" comments - in a
> !NUMA section this simply makes no sense.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

May I please ask for an Arm ack (or otherwise) here?

Thanks, Jan

> --- a/xen/arch/arm/include/asm/numa.h
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -#ifndef __ARCH_ARM_NUMA_H
> -#define __ARCH_ARM_NUMA_H
> -
> -#include <xen/mm.h>
> -
> -typedef u8 nodeid_t;
> -
> -#ifndef CONFIG_NUMA
> -
> -/* Fake one node for now. See also node_online_map. */
> -#define cpu_to_node(cpu) 0
> -#define node_to_cpumask(node)   (cpu_online_map)
> -
> -/* XXX: implement NUMA support */
> -#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
> -#define node_start_pfn(nid) (mfn_x(first_valid_mfn))
> -#define __node_distance(a, b) (20)
> -
> -#endif
> -
> -#define arch_want_default_dmazone() (false)
> -
> -#endif /* __ARCH_ARM_NUMA_H */
> -/*
> - * Local variables:
> - * mode: C
> - * c-file-style: "BSD"
> - * c-basic-offset: 4
> - * indent-tabs-mode: nil
> - * End:
> - */
> --- a/xen/arch/arm/smpboot.c
> +++ b/xen/arch/arm/smpboot.c
> @@ -42,7 +42,7 @@ integer_param("maxcpus", max_cpus);
>  /* CPU logical map: map xen cpuid to an MPIDR */
>  register_t __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = MPIDR_INVALID };
>  
> -/* Fake one node for now. See also asm/numa.h */
> +/* Fake one node for now. See also xen/numa.h */
>  nodemask_t __read_mostly node_online_map = { { [0] = 1UL } };
>  
>  /* Xen stack for bringing up the first CPU. */
> --- a/xen/arch/ppc/include/asm/numa.h
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -#ifndef __ASM_PPC_NUMA_H__
> -#define __ASM_PPC_NUMA_H__
> -
> -#include <xen/types.h>
> -#include <xen/mm.h>
> -
> -typedef uint8_t nodeid_t;
> -
> -/* Fake one node for now. See also node_online_map. */
> -#define cpu_to_node(cpu) 0
> -#define node_to_cpumask(node)   (cpu_online_map)
> -
> -/* XXX: implement NUMA support */
> -#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
> -#define node_start_pfn(nid) (mfn_x(first_valid_mfn))
> -#define __node_distance(a, b) (20)
> -
> -#define arch_want_default_dmazone() (false)
> -
> -#endif /* __ASM_PPC_NUMA_H__ */
> --- a/xen/common/page_alloc.c
> +++ b/xen/common/page_alloc.c
> @@ -138,7 +138,6 @@
>  #include <xen/spinlock.h>
>  
>  #include <asm/flushtlb.h>
> -#include <asm/numa.h>
>  #include <asm/page.h>
>  
>  #include <public/sysctl.h>
> --- a/xen/common/sysctl.c
> +++ b/xen/common/sysctl.c
> @@ -22,8 +22,8 @@
>  #include <asm/current.h>
>  #include <xen/hypercall.h>
>  #include <public/sysctl.h>
> -#include <asm/numa.h>
>  #include <xen/nodemask.h>
> +#include <xen/numa.h>
>  #include <xsm/xsm.h>
>  #include <xen/pmstat.h>
>  #include <xen/livepatch.h>
> --- a/xen/include/xen/domain.h
> +++ b/xen/include/xen/domain.h
> @@ -2,6 +2,7 @@
>  #ifndef __XEN_DOMAIN_H__
>  #define __XEN_DOMAIN_H__
>  
> +#include <xen/numa.h>
>  #include <xen/types.h>
>  
>  #include <public/xen.h>
> @@ -12,7 +13,6 @@ struct guest_area {
>  };
>  
>  #include <asm/domain.h>
> -#include <asm/numa.h>
>  
>  typedef union {
>      struct vcpu_guest_context *nat;
> --- a/xen/include/xen/numa.h
> +++ b/xen/include/xen/numa.h
> @@ -2,7 +2,13 @@
>  #define _XEN_NUMA_H
>  
>  #include <xen/mm-frame.h>
> +
> +#ifdef CONFIG_NUMA
> +#include <xen/pdx.h>
>  #include <asm/numa.h>
> +#else
> +typedef uint8_t nodeid_t;
> +#endif
>  
>  #define NUMA_NO_NODE     0xFF
>  #define NUMA_NO_DISTANCE 0xFF
> @@ -108,8 +114,18 @@ extern void numa_set_processor_nodes_par
>  
>  #else
>  
> +/* Fake one node for now. See also node_online_map. */
> +#define cpu_to_node(cpu) 0
> +#define node_to_cpumask(node)   cpu_online_map
> +
> +#define arch_want_default_dmazone() false
> +
>  extern mfn_t first_valid_mfn;
>  
> +#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
> +#define node_start_pfn(nid) mfn_x(first_valid_mfn)
> +#define __node_distance(a, b) 20
> +
>  static inline nodeid_t mfn_to_nid(mfn_t mfn)
>  {
>      return 0;
> --- a/xen/include/xen/pci.h
> +++ b/xen/include/xen/pci.h
> @@ -11,10 +11,10 @@
>  #include <xen/list.h>
>  #include <xen/spinlock.h>
>  #include <xen/irq.h>
> +#include <xen/numa.h>
>  #include <xen/pci_regs.h>
>  #include <xen/pfn.h>
>  #include <asm/device.h>
> -#include <asm/numa.h>
>  
>  /*
>   * The PCI interface treats multi-function devices as independent



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

* Re: Ping: [PATCH v2] NUMA: no need for asm/numa.h when !NUMA
  2024-01-25 17:00 ` Ping: " Jan Beulich
@ 2024-01-25 18:23   ` Julien Grall
  0 siblings, 0 replies; 5+ messages in thread
From: Julien Grall @ 2024-01-25 18:23 UTC (permalink / raw)
  To: Jan Beulich, Stefano Stabellini, Bertrand Marquis, Michal Orzel
  Cc: Andrew Cooper, George Dunlap, Wei Liu, Shawn Anastasio,
	Oleksii Kurochko, xen-devel

Hi Jan,

On 25/01/2024 17:00, Jan Beulich wrote:
> On 08.01.2024 12:30, Jan Beulich wrote:
>> There's no point in every architecture carrying the same stubs for the
>> case when NUMA isn't enabled (or even supported). Move all of that to
>> xen/numa.h; replace explicit uses of asm/numa.h in common code. Make
>> inclusion of asm/numa.h dependent upon NUMA=y.
>>
>> Drop the no longer applicable "implement NUMA support" comments - in a
>> !NUMA section this simply makes no sense.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> May I please ask for an Arm ack (or otherwise) here?

Thanks for the reminder.

Acked-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall


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

end of thread, other threads:[~2024-01-25 18:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-08 11:30 [PATCH v2] NUMA: no need for asm/numa.h when !NUMA Jan Beulich
2024-01-08 18:54 ` Shawn Anastasio
2024-01-09  9:22 ` Oleksii
2024-01-25 17:00 ` Ping: " Jan Beulich
2024-01-25 18:23   ` Julien Grall

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.