xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Wei Chen <Wei.Chen@arm.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"julien@xen.org" <julien@xen.org>,
	Bertrand Marquis <Bertrand.Marquis@arm.com>,
	"jbeulich@suse.com" <jbeulich@suse.com>,
	"andrew.cooper3@citrix.com" <andrew.cooper3@citrix.com>,
	"roger.pau@citrix.com" <roger.pau@citrix.com>,
	"wl@xen.org" <wl@xen.org>
Subject: RE: [PATCH 07/37] xen/x86: use paddr_t for addresses in NUMA node structure
Date: Fri, 24 Sep 2021 03:00:54 +0000	[thread overview]
Message-ID: <DB9PR08MB68572DE787D203438F15DE269EA49@DB9PR08MB6857.eurprd08.prod.outlook.com> (raw)
In-Reply-To: <alpine.DEB.2.21.2109231712550.17979@sstabellini-ThinkPad-T480s>



> -----Original Message-----
> From: Stefano Stabellini <sstabellini@kernel.org>
> Sent: 2021年9月24日 8:14
> To: Stefano Stabellini <sstabellini@kernel.org>
> Cc: Wei Chen <Wei.Chen@arm.com>; xen-devel@lists.xenproject.org;
> julien@xen.org; Bertrand Marquis <Bertrand.Marquis@arm.com>;
> jbeulich@suse.com; andrew.cooper3@citrix.com; roger.pau@citrix.com;
> wl@xen.org
> Subject: Re: [PATCH 07/37] xen/x86: use paddr_t for addresses in NUMA node
> structure
> 
> You forgot to add the x86 maintainers in CC to all the patches touching
> x86 code in this series. Adding them now but you should probably resend.
>

I am very sorry about it. I realized the problem when I pressed Enter.
I had wanted to repost it at that time, but I didn't know whether these
patches will be turned into spamming... 

I will resend this series ASAP with some changes to address your comments.

> 
> On Thu, 23 Sep 2021, Stefano Stabellini wrote:
> > On Thu, 23 Sep 2021, Wei Chen wrote:
> > > NUMA node structure "struct node" is using u64 as node memory
> > > range. In order to make other architectures can reuse this
> > > NUMA node relative code, we replace the u64 to paddr_t. And
> > > use pfn_to_paddr and paddr_to_pfn to replace explicit shift
> > > operations. The relate PRIx64 in print messages have been
> > > replaced by PRIpaddr at the same time.
> > >
> > > Signed-off-by: Wei Chen <wei.chen@arm.com>
> > > ---
> > >  xen/arch/x86/numa.c        | 32 +++++++++++++++++---------------
> > >  xen/arch/x86/srat.c        | 26 +++++++++++++-------------
> > >  xen/include/asm-x86/numa.h |  8 ++++----
> > >  3 files changed, 34 insertions(+), 32 deletions(-)
> > >
> > > diff --git a/xen/arch/x86/numa.c b/xen/arch/x86/numa.c
> > > index 1fabbe8281..6337bbdf31 100644
> > > --- a/xen/arch/x86/numa.c
> > > +++ b/xen/arch/x86/numa.c
> > > @@ -165,12 +165,12 @@ int __init compute_hash_shift(struct node *nodes,
> int numnodes,
> > >      return shift;
> > >  }
> > >  /* initialize NODE_DATA given nodeid and start/end */
> > > -void __init setup_node_bootmem(nodeid_t nodeid, u64 start, u64 end)
> > > -{
> > > +void __init setup_node_bootmem(nodeid_t nodeid, paddr_t start,
> paddr_t end)
> > > +{
> > >      unsigned long start_pfn, end_pfn;
> > >
> > > -    start_pfn = start >> PAGE_SHIFT;
> > > -    end_pfn = end >> PAGE_SHIFT;
> > > +    start_pfn = paddr_to_pfn(start);
> > > +    end_pfn = paddr_to_pfn(end);
> > >
> > >      NODE_DATA(nodeid)->node_start_pfn = start_pfn;
> > >      NODE_DATA(nodeid)->node_spanned_pages = end_pfn - start_pfn;
> > > @@ -201,11 +201,12 @@ void __init numa_init_array(void)
> > >  static int numa_fake __initdata = 0;
> > >
> > >  /* Numa emulation */
> > > -static int __init numa_emulation(u64 start_pfn, u64 end_pfn)
> > > +static int __init numa_emulation(unsigned long start_pfn,
> > > +                                 unsigned long end_pfn)
> >
> > Why not changing numa_emulation to take paddr_t too?
> >

numa_emulation parameter is pfn, it's not address. I have discussed
with Julien in RFC about pfn. He suggested to use mfn_t or unsigned
long for pfn. Comparing to mfn_t, use unsigned long brings less
changes.

> >
> > >  {
> > >      int i;
> > >      struct node nodes[MAX_NUMNODES];
> > > -    u64 sz = ((end_pfn - start_pfn)<<PAGE_SHIFT) / numa_fake;
> > > +    u64 sz = pfn_to_paddr(end_pfn - start_pfn) / numa_fake;
> > >
> > >      /* Kludge needed for the hash function */
> > >      if ( hweight64(sz) > 1 )
> > > @@ -221,9 +222,9 @@ static int __init numa_emulation(u64 start_pfn,
> u64 end_pfn)
> > >      memset(&nodes,0,sizeof(nodes));
> > >      for ( i = 0; i < numa_fake; i++ )
> > >      {
> > > -        nodes[i].start = (start_pfn<<PAGE_SHIFT) + i*sz;
> > > +        nodes[i].start = pfn_to_paddr(start_pfn) + i*sz;
> > >          if ( i == numa_fake - 1 )
> > > -            sz = (end_pfn<<PAGE_SHIFT) - nodes[i].start;
> > > +            sz = pfn_to_paddr(end_pfn) - nodes[i].start;
> > >          nodes[i].end = nodes[i].start + sz;
> > >          printk(KERN_INFO "Faking node %d at %"PRIx64"-%"PRIx64"
> (%"PRIu64"MB)\n",
> > >                 i,
> > > @@ -249,24 +250,26 @@ static int __init numa_emulation(u64 start_pfn,
> u64 end_pfn)
> > >  void __init numa_initmem_init(unsigned long start_pfn, unsigned long
> end_pfn)
> >
> > same here
> >
> >
> > >  {
> > >      int i;
> > > +    paddr_t start, end;
> > >
> > >  #ifdef CONFIG_NUMA_EMU
> > >      if ( numa_fake && !numa_emulation(start_pfn, end_pfn) )
> > >          return;
> > >  #endif
> > >
> > > +    start = pfn_to_paddr(start_pfn);
> > > +    end = pfn_to_paddr(end_pfn);
> > > +
> > >  #ifdef CONFIG_ACPI_NUMA
> > > -    if ( !numa_off && !acpi_scan_nodes((u64)start_pfn << PAGE_SHIFT,
> > > -         (u64)end_pfn << PAGE_SHIFT) )
> > > +    if ( !numa_off && !acpi_scan_nodes(start, end) )
> > >          return;
> > >  #endif
> > >
> > >      printk(KERN_INFO "%s\n",
> > >             numa_off ? "NUMA turned off" : "No NUMA configuration
> found");
> > >
> > > -    printk(KERN_INFO "Faking a node at %016"PRIx64"-%016"PRIx64"\n",
> > > -           (u64)start_pfn << PAGE_SHIFT,
> > > -           (u64)end_pfn << PAGE_SHIFT);
> > > +    printk(KERN_INFO "Faking a node at %016"PRIpaddr"-
> %016"PRIpaddr"\n",
> > > +           start, end);
> > >      /* setup dummy node covering all memory */
> > >      memnode_shift = BITS_PER_LONG - 1;
> > >      memnodemap = _memnodemap;
> > > @@ -279,8 +282,7 @@ void __init numa_initmem_init(unsigned long
> start_pfn, unsigned long end_pfn)
> > >      for ( i = 0; i < nr_cpu_ids; i++ )
> > >          numa_set_node(i, 0);
> > >      cpumask_copy(&node_to_cpumask[0], cpumask_of(0));
> > > -    setup_node_bootmem(0, (u64)start_pfn << PAGE_SHIFT,
> > > -                    (u64)end_pfn << PAGE_SHIFT);
> > > +    setup_node_bootmem(0, start, end);
> > >  }
> > >
> > >  void numa_add_cpu(int cpu)
> > > diff --git a/xen/arch/x86/srat.c b/xen/arch/x86/srat.c
> > > index 6b77b98201..7d20d7f222 100644
> > > --- a/xen/arch/x86/srat.c
> > > +++ b/xen/arch/x86/srat.c
> > > @@ -104,7 +104,7 @@ nodeid_t setup_node(unsigned pxm)
> > >  	return node;
> > >  }
> > >
> > > -int valid_numa_range(u64 start, u64 end, nodeid_t node)
> > > +int valid_numa_range(paddr_t start, paddr_t end, nodeid_t node)
> > >  {
> > >  	int i;
> > >
> > > @@ -119,7 +119,7 @@ int valid_numa_range(u64 start, u64 end, nodeid_t
> node)
> > >  	return 0;
> > >  }
> > >
> > > -static __init int conflicting_memblks(u64 start, u64 end)
> > > +static __init int conflicting_memblks(paddr_t start, paddr_t end)
> > >  {
> > >  	int i;
> > >
> > > @@ -135,7 +135,7 @@ static __init int conflicting_memblks(u64 start,
> u64 end)
> > >  	return -1;
> > >  }
> > >
> > > -static __init void cutoff_node(int i, u64 start, u64 end)
> > > +static __init void cutoff_node(int i, paddr_t start, paddr_t end)
> > >  {
> > >  	struct node *nd = &nodes[i];
> > >  	if (nd->start < start) {
> > > @@ -275,7 +275,7 @@ acpi_numa_processor_affinity_init(const struct
> acpi_srat_cpu_affinity *pa)
> > >  void __init
> > >  acpi_numa_memory_affinity_init(const struct acpi_srat_mem_affinity
> *ma)
> > >  {
> > > -	u64 start, end;
> > > +	paddr_t start, end;
> > >  	unsigned pxm;
> > >  	nodeid_t node;
> > >  	int i;
> > > @@ -318,7 +318,7 @@ acpi_numa_memory_affinity_init(const struct
> acpi_srat_mem_affinity *ma)
> > >  		bool mismatch = !(ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE) !=
> > >  		                !test_bit(i, memblk_hotplug);
> > >
> > > -		printk("%sSRAT: PXM %u (%"PRIx64"-%"PRIx64") overlaps with
> itself (%"PRIx64"-%"PRIx64")\n",
> > > +		printk("%sSRAT: PXM %u (%"PRIpaddr"-%"PRIpaddr") overlaps with
> itself (%"PRIpaddr"-%"PRIpaddr")\n",
> > >  		       mismatch ? KERN_ERR : KERN_WARNING, pxm, start, end,
> > >  		       node_memblk_range[i].start, node_memblk_range[i].end);
> > >  		if (mismatch) {
> > > @@ -327,7 +327,7 @@ acpi_numa_memory_affinity_init(const struct
> acpi_srat_mem_affinity *ma)
> > >  		}
> > >  	} else {
> > >  		printk(KERN_ERR
> > > -		       "SRAT: PXM %u (%"PRIx64"-%"PRIx64") overlaps with
> PXM %u (%"PRIx64"-%"PRIx64")\n",
> > > +		       "SRAT: PXM %u (%"PRIpaddr"-%"PRIpaddr") overlaps with
> PXM %u (%"PRIpaddr"-%"PRIpaddr")\n",
> > >  		       pxm, start, end, node_to_pxm(memblk_nodeid[i]),
> > >  		       node_memblk_range[i].start, node_memblk_range[i].end);
> > >  		bad_srat();
> > > @@ -346,7 +346,7 @@ acpi_numa_memory_affinity_init(const struct
> acpi_srat_mem_affinity *ma)
> > >  				nd->end = end;
> > >  		}
> > >  	}
> > > -	printk(KERN_INFO "SRAT: Node %u PXM %u %"PRIx64"-%"PRIx64"%s\n",
> > > +	printk(KERN_INFO "SRAT: Node %u PXM %u %"PRIpaddr"-%"PRIpaddr"%s\n",
> > >  	       node, pxm, start, end,
> > >  	       ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE ? " (hotplug)" : "");
> > >
> > > @@ -369,7 +369,7 @@ static int __init nodes_cover_memory(void)
> > >
> > >  	for (i = 0; i < e820.nr_map; i++) {
> > >  		int j, found;
> > > -		unsigned long long start, end;
> > > +		paddr_t start, end;
> > >
> > >  		if (e820.map[i].type != E820_RAM) {
> > >  			continue;
> > > @@ -396,7 +396,7 @@ static int __init nodes_cover_memory(void)
> > >
> > >  		if (start < end) {
> > >  			printk(KERN_ERR "SRAT: No PXM for e820 range: "
> > > -				"%016Lx - %016Lx\n", start, end);
> > > +				"%"PRIpaddr" - %"PRIpaddr"\n", start, end);
> > >  			return 0;
> > >  		}
> > >  	}
> > > @@ -432,7 +432,7 @@ static int __init srat_parse_region(struct
> acpi_subtable_header *header,
> > >  	return 0;
> > >  }
> > >
> > > -void __init srat_parse_regions(u64 addr)
> > > +void __init srat_parse_regions(paddr_t addr)
> > >  {
> > >  	u64 mask;
> > >  	unsigned int i;
> > > @@ -441,7 +441,7 @@ void __init srat_parse_regions(u64 addr)
> > >  	    acpi_table_parse(ACPI_SIG_SRAT, acpi_parse_srat))
> > >  		return;
> > >
> > > -	srat_region_mask = pdx_init_mask(addr);
> > > +	srat_region_mask = pdx_init_mask((u64)addr);
> > >  	acpi_table_parse_srat(ACPI_SRAT_TYPE_MEMORY_AFFINITY,
> > >  			      srat_parse_region, 0);
> > >
> > > @@ -457,7 +457,7 @@ void __init srat_parse_regions(u64 addr)
> > >  }
> > >
> > >  /* Use the information discovered above to actually set up the nodes.
> */
> > > -int __init acpi_scan_nodes(u64 start, u64 end)
> > > +int __init acpi_scan_nodes(paddr_t start, paddr_t end)
> > >  {
> > >  	int i;
> > >  	nodemask_t all_nodes_parsed;
> > > @@ -489,7 +489,7 @@ int __init acpi_scan_nodes(u64 start, u64 end)
> > >  	/* Finally register nodes */
> > >  	for_each_node_mask(i, all_nodes_parsed)
> > >  	{
> > > -		u64 size = nodes[i].end - nodes[i].start;
> > > +		paddr_t size = nodes[i].end - nodes[i].start;
> > >  		if ( size == 0 )
> > >  			printk(KERN_WARNING "SRAT: Node %u has no memory. "
> > >  			       "BIOS Bug or mis-configured hardware?\n", i);
> > > diff --git a/xen/include/asm-x86/numa.h b/xen/include/asm-x86/numa.h
> > > index 8060cbf3f4..50cfd8e7ef 100644
> > > --- a/xen/include/asm-x86/numa.h
> > > +++ b/xen/include/asm-x86/numa.h
> > > @@ -16,7 +16,7 @@ extern cpumask_t     node_to_cpumask[];
> > >  #define node_to_cpumask(node)    (node_to_cpumask[node])
> > >
> > >  struct node {
> > > -	u64 start,end;
> > > +	paddr_t start,end;
> > >  };
> > >
> > >  extern int compute_hash_shift(struct node *nodes, int numnodes,
> > > @@ -36,7 +36,7 @@ extern void numa_set_node(int cpu, nodeid_t node);
> > >  extern nodeid_t setup_node(unsigned int pxm);
> > >  extern void srat_detect_node(int cpu);
> > >
> > > -extern void setup_node_bootmem(nodeid_t nodeid, u64 start, u64 end);
> > > +extern void setup_node_bootmem(nodeid_t nodeid, paddr_t start,
> paddr_t end);
> > >  extern nodeid_t apicid_to_node[];
> > >  extern void init_cpu_to_node(void);
> > >
> > > @@ -73,9 +73,9 @@ static inline __attribute__((pure)) nodeid_t
> phys_to_nid(paddr_t addr)
> > >  #define node_end_pfn(nid)       (NODE_DATA(nid)->node_start_pfn + \
> > >  				 NODE_DATA(nid)->node_spanned_pages)
> > >
> > > -extern int valid_numa_range(u64 start, u64 end, nodeid_t node);
> > > +extern int valid_numa_range(paddr_t start, paddr_t end, nodeid_t
> node);
> > >
> > > -void srat_parse_regions(u64 addr);
> > > +void srat_parse_regions(paddr_t addr);
> > >  extern u8 __node_distance(nodeid_t a, nodeid_t b);
> > >  unsigned int arch_get_dma_bitsize(void);
> > >  unsigned int arch_have_default_dmazone(void);
> > > --
> > > 2.25.1
> > >
> >

  reply	other threads:[~2021-09-24  3:01 UTC|newest]

Thread overview: 192+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-23 12:01 [PATCH 00/37] Add device tree based NUMA support to Arm Wei Chen
2021-09-23 12:02 ` [PATCH 01/37] xen/arm: Print a 64-bit number in hex from early uart Wei Chen
2021-09-23 12:02 ` [PATCH 02/37] xen: introduce a Kconfig option to configure NUMA nodes number Wei Chen
2021-09-23 23:45   ` Stefano Stabellini
2021-09-24  1:24     ` Wei Chen
2021-09-24  8:55   ` Jan Beulich
2021-09-24 10:33     ` Wei Chen
2021-09-24 10:47       ` Jan Beulich
2021-09-23 12:02 ` [PATCH 03/37] xen/x86: Initialize memnodemapsize while faking NUMA node Wei Chen
2021-09-24  8:57   ` Jan Beulich
2021-09-24 10:34     ` Wei Chen
2021-09-23 12:02 ` [PATCH 04/37] xen: introduce an arch helper for default dma zone status Wei Chen
2021-09-23 23:55   ` Stefano Stabellini
2021-09-24  1:50     ` Wei Chen
2022-01-17 16:10   ` Jan Beulich
2022-01-18  7:51     ` Wei Chen
2022-01-18  8:16       ` Jan Beulich
2022-01-18  9:20         ` Wei Chen
2022-01-18 14:16           ` Jan Beulich
2022-01-19  2:49             ` Wei Chen
2022-01-19  7:50               ` Jan Beulich
2022-01-19  8:33                 ` Wei Chen
2021-09-23 12:02 ` [PATCH 05/37] xen: decouple NUMA from ACPI in Kconfig Wei Chen
2021-09-23 12:02 ` [PATCH 06/37] xen/arm: use !CONFIG_NUMA to keep fake NUMA API Wei Chen
2021-09-24  0:05   ` Stefano Stabellini
2021-09-24 10:21     ` Wei Chen
2021-09-23 12:02 ` [PATCH 07/37] xen/x86: use paddr_t for addresses in NUMA node structure Wei Chen
2021-09-24  0:11   ` Stefano Stabellini
2021-09-24  0:13     ` Stefano Stabellini
2021-09-24  3:00       ` Wei Chen [this message]
2022-01-18 15:22   ` Jan Beulich
2022-01-19  6:33     ` Wei Chen
2022-01-19  7:55       ` Jan Beulich
2022-01-19  8:36         ` Wei Chen
2021-09-23 12:02 ` [PATCH 08/37] xen/x86: add detection of discontinous node memory range Wei Chen
2021-09-24  0:25   ` Stefano Stabellini
2021-09-24  4:28     ` Wei Chen
2021-09-24 19:52       ` Stefano Stabellini
2021-09-26 10:11         ` Wei Chen
2021-09-27  3:13           ` Stefano Stabellini
2021-09-27  5:05             ` Stefano Stabellini
2021-09-27  9:50               ` Wei Chen
2021-09-27 17:19                 ` Stefano Stabellini
2021-09-28  4:41                   ` Wei Chen
2021-09-28  4:59                     ` Stefano Stabellini
2022-01-18 16:13   ` Jan Beulich
2022-01-19  7:33     ` Wei Chen
2022-01-19  8:01       ` Jan Beulich
2022-01-19  8:24         ` Wei Chen
2021-09-23 12:02 ` [PATCH 09/37] xen/x86: introduce two helpers to access memory hotplug end Wei Chen
2021-09-24  0:29   ` Stefano Stabellini
2021-09-24  4:21     ` Wei Chen
2022-01-24 16:24   ` Jan Beulich
2022-01-26  7:53     ` Wei Chen
2021-09-23 12:02 ` [PATCH 10/37] xen/x86: use helpers to access/update mem_hotplug Wei Chen
2021-09-24  0:31   ` Stefano Stabellini
2021-09-24  4:29     ` Wei Chen
2022-01-24 16:29   ` Jan Beulich
2022-01-26  7:58     ` Wei Chen
2021-09-23 12:02 ` [PATCH 11/37] xen/x86: abstract neutral code from acpi_numa_memory_affinity_init Wei Chen
2021-09-24  0:38   ` Stefano Stabellini
2022-01-24 16:50   ` Jan Beulich
2022-01-26 10:39     ` Wei Chen
2021-09-23 12:02 ` [PATCH 12/37] xen/x86: decouple nodes_cover_memory from E820 map Wei Chen
2021-09-24  0:39   ` Stefano Stabellini
2022-01-24 16:59   ` Jan Beulich
2022-01-27  8:03     ` Wei Chen
2022-01-27  8:08       ` Jan Beulich
2022-01-27  9:03         ` Wei Chen
2022-01-27  9:22           ` Jan Beulich
2022-01-27  9:27             ` Wei Chen
2021-09-23 12:02 ` [PATCH 13/37] xen/x86: decouple processor_nodes_parsed from acpi numa functions Wei Chen
2021-09-24  0:40   ` Stefano Stabellini
2022-01-25  9:49   ` Jan Beulich
2022-01-27  8:06     ` Wei Chen
2021-09-23 12:02 ` [PATCH 14/37] xen/x86: use name fw_numa to replace acpi_numa Wei Chen
2021-09-24  0:40   ` Stefano Stabellini
2022-01-25 10:12   ` Jan Beulich
2022-01-27  8:09     ` Wei Chen
2021-09-23 12:02 ` [PATCH 15/37] xen/x86: rename acpi_scan_nodes to numa_scan_nodes Wei Chen
2021-09-24  0:40   ` Stefano Stabellini
2022-01-25 10:17   ` Jan Beulich
2022-01-27  8:14     ` Wei Chen
2021-09-23 12:02 ` [PATCH 16/37] xen/x86: export srat_bad to external Wei Chen
2021-09-24  0:41   ` Stefano Stabellini
2022-01-25 10:22   ` Jan Beulich
2022-01-27  8:35     ` Wei Chen
2022-01-27  8:37       ` Jan Beulich
2022-01-27  8:47         ` Wei Chen
2021-09-23 12:02 ` [PATCH 17/37] xen/x86: use CONFIG_NUMA to gate numa_scan_nodes Wei Chen
2021-09-24  0:41   ` Stefano Stabellini
2022-01-25 10:26   ` Jan Beulich
2022-01-27  8:37     ` Wei Chen
2021-09-23 12:02 ` [PATCH 18/37] xen: move NUMA common code from x86 to common Wei Chen
2021-09-23 12:02 ` [PATCH 19/37] xen/x86: promote VIRTUAL_BUG_ON to ASSERT in Wei Chen
2022-01-17 16:21   ` Jan Beulich
2022-01-18  7:52     ` Wei Chen
2021-09-23 12:02 ` [PATCH 20/37] xen: introduce CONFIG_EFI to stub API for non-EFI architecture Wei Chen
2021-09-24  1:15   ` Stefano Stabellini
2021-09-24  4:34     ` Wei Chen
2021-09-24  7:58       ` Jan Beulich
2021-09-24 10:31         ` Wei Chen
2021-09-24 10:49           ` Jan Beulich
2021-09-26 10:25             ` Wei Chen
2021-09-27 10:28               ` Wei Chen
2021-09-28  0:59                 ` Stefano Stabellini
2021-09-28  4:16                   ` Wei Chen
2021-09-28  5:01                     ` Stefano Stabellini
2021-09-28  8:02                       ` Jan Beulich
2021-10-03 23:28                         ` Wei Chen
2022-01-25 10:34   ` Jan Beulich
2022-01-27  8:44     ` Wei Chen
2022-01-27  8:51       ` Wei Chen
2022-01-27  9:00         ` Jan Beulich
2022-01-27  9:09           ` Wei Chen
2022-01-27  9:16             ` Jan Beulich
2022-01-27  9:25               ` Wei Chen
2022-01-27  9:27                 ` Jan Beulich
2022-01-27 10:00                   ` Julien Grall
2022-01-28  4:35                     ` Wei Chen
2021-09-23 12:02 ` [PATCH 21/37] xen/arm: Keep memory nodes in dtb for NUMA when boot from EFI Wei Chen
2021-09-24  1:23   ` Stefano Stabellini
2021-09-24  4:36     ` Wei Chen
2022-01-25 10:38   ` Jan Beulich
2022-01-27  8:45     ` Wei Chen
2021-09-23 12:02 ` [PATCH 22/37] xen/arm: use NR_MEM_BANKS to override default NR_NODE_MEMBLKS Wei Chen
2021-09-24  1:34   ` Stefano Stabellini
2021-09-26 13:13     ` Wei Chen
2021-09-27  3:25       ` Stefano Stabellini
2021-09-27  4:18         ` Wei Chen
2021-09-27  4:59           ` Stefano Stabellini
2021-09-27  6:25             ` Julien Grall
2021-09-27  6:46             ` Wei Chen
2021-09-27  6:53               ` Wei Chen
2021-09-27  7:35                 ` Julien Grall
2021-09-27 10:21                   ` Wei Chen
2021-09-27 10:39                     ` Julien Grall
2021-09-27 16:58                       ` Stefano Stabellini
2021-09-28  2:57                         ` Wei Chen
2021-09-23 12:02 ` [PATCH 23/37] xen/arm: implement node distance helpers for Arm Wei Chen
2021-09-24  1:46   ` Stefano Stabellini
2021-09-24  4:41     ` Wei Chen
2021-09-24 19:36       ` Stefano Stabellini
2021-09-26 10:15         ` Wei Chen
2021-09-23 12:02 ` [PATCH 24/37] xen/arm: implement two arch helpers to get memory map info Wei Chen
2021-09-24  2:06   ` Stefano Stabellini
2021-09-24  4:42     ` Wei Chen
2021-09-23 12:02 ` [PATCH 25/37] xen/arm: implement bad_srat for Arm NUMA initialization Wei Chen
2021-09-24  2:09   ` Stefano Stabellini
2021-09-24  4:45     ` Wei Chen
2021-09-24  8:07     ` Jan Beulich
2021-09-24 19:33       ` Stefano Stabellini
2021-09-23 12:02 ` [PATCH 26/37] xen/arm: build NUMA cpu_to_node map in dt_smp_init_cpus Wei Chen
2021-09-24  2:26   ` Stefano Stabellini
2021-09-24  4:25     ` Wei Chen
2021-09-23 12:02 ` [PATCH 27/37] xen/arm: Add boot and secondary CPU to NUMA system Wei Chen
2021-09-23 12:02 ` [PATCH 28/37] xen/arm: stub memory hotplug access helpers for Arm Wei Chen
2021-09-24  2:33   ` Stefano Stabellini
2021-09-24  4:26     ` Wei Chen
2021-09-23 12:02 ` [PATCH 29/37] xen/arm: introduce a helper to parse device tree processor node Wei Chen
2021-09-24  2:44   ` Stefano Stabellini
2021-09-24  4:46     ` Wei Chen
2021-09-23 12:02 ` [PATCH 30/37] xen/arm: introduce a helper to parse device tree memory node Wei Chen
2021-09-24  3:05   ` Stefano Stabellini
2021-09-24  7:54     ` Wei Chen
2021-09-23 12:02 ` [PATCH 31/37] xen/arm: introduce a helper to parse device tree NUMA distance map Wei Chen
2021-09-24  3:05   ` Stefano Stabellini
2021-09-24  5:23     ` Wei Chen
2021-09-23 12:02 ` [PATCH 32/37] xen/arm: unified entry to parse all NUMA data from device tree Wei Chen
2021-09-24  3:16   ` Stefano Stabellini
2021-09-24  7:58     ` Wei Chen
2021-09-24 19:42       ` Stefano Stabellini
2021-09-23 12:02 ` [PATCH 33/37] xen/arm: keep guest still be NUMA unware Wei Chen
2021-09-24  3:19   ` Stefano Stabellini
2021-09-24 10:23     ` Wei Chen
2021-09-23 12:02 ` [PATCH 34/37] xen/arm: enable device tree based NUMA in system init Wei Chen
2021-09-24  3:28   ` Stefano Stabellini
2021-09-24  9:52     ` Wei Chen
2021-09-23 12:02 ` [PATCH 35/37] xen/arm: use CONFIG_NUMA to gate node_online_map in smpboot Wei Chen
2021-09-23 12:02 ` [PATCH 36/37] xen/arm: Provide Kconfig options for Arm to enable NUMA Wei Chen
2021-09-24  3:31   ` Stefano Stabellini
2021-09-24 10:13     ` Wei Chen
2021-09-24 19:39       ` Stefano Stabellini
2021-09-27  8:33         ` Jan Beulich
2021-09-27  8:45           ` Julien Grall
2021-09-27  9:17             ` Jan Beulich
2021-09-27 17:17               ` Stefano Stabellini
2021-09-28  2:59                 ` Wei Chen
2021-09-28  3:30                   ` Stefano Stabellini
2021-09-24 10:25   ` Jan Beulich
2021-09-24 10:37     ` Wei Chen
2021-09-23 12:02 ` [PATCH 37/37] docs: update numa command line to support Arm Wei Chen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DB9PR08MB68572DE787D203438F15DE269EA49@DB9PR08MB6857.eurprd08.prod.outlook.com \
    --to=wei.chen@arm.com \
    --cc=Bertrand.Marquis@arm.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=jbeulich@suse.com \
    --cc=julien@xen.org \
    --cc=roger.pau@citrix.com \
    --cc=sstabellini@kernel.org \
    --cc=wl@xen.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).