Message ID | 94cffa48-5e31-4557-827d-c6dec6031d05@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] NUMA: no need for asm/numa.h when !NUMA | expand |
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
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
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
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,
--- 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
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.