All of lore.kernel.org
 help / color / mirror / Atom feed
From: Henry Wang <Henry.Wang@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Wei Chen <wei.chen@arm.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Henry Wang <Henry.Wang@arm.com>
Subject: [PATCH v6 06/17] xen/arm: Add boot and secondary CPU to NUMA system
Date: Mon, 20 Nov 2023 10:54:20 +0800	[thread overview]
Message-ID: <20231120025431.14845-7-Henry.Wang@arm.com> (raw)
In-Reply-To: <20231120025431.14845-1-Henry.Wang@arm.com>

From: Wei Chen <wei.chen@arm.com>

In this patch, we make NUMA node online and add cpu to
its NUMA node. This will make NUMA-aware components
have NUMA affinity data to support their work.

To keep the mostly the same behavior of x86, we use
numa_detect_cpu_node to online node. The difference is that,
we have prepared cpu_to_node in dt_smp_init_cpus, so we don't
need to setup cpu_to_node in numa_detect_cpu_node.

Signed-off-by: Wei Chen <wei.chen@arm.com>
Signed-off-by: Henry Wang <Henry.Wang@arm.com>
---
v2 -> v6:
- Rebase on top of staging without code changes.
v1 -> v2:
- Use unsigned int instead of int for cpu id.
- Use static inline for stub to do type check.
---
 xen/arch/arm/include/asm/numa.h |  9 +++++++++
 xen/arch/arm/numa.c             | 10 ++++++++++
 xen/arch/arm/setup.c            |  5 +++++
 3 files changed, 24 insertions(+)

diff --git a/xen/arch/arm/include/asm/numa.h b/xen/arch/arm/include/asm/numa.h
index 97d4a67dea..b04ace26db 100644
--- a/xen/arch/arm/include/asm/numa.h
+++ b/xen/arch/arm/include/asm/numa.h
@@ -35,6 +35,7 @@ typedef u8 nodeid_t;
 extern bool numa_disabled(void);
 extern void numa_set_distance(nodeid_t from, nodeid_t to,
                               unsigned int distance);
+extern void numa_detect_cpu_node(unsigned int cpu);
 
 #else
 
@@ -72,6 +73,14 @@ static inline void numa_set_node(unsigned int cpu, nodeid_t node)
 {
 }
 
+static inline void numa_add_cpu(unsigned int cpu)
+{
+}
+
+static inline void numa_detect_cpu_node(unsigned int cpu)
+{
+}
+
 #endif
 
 #define arch_want_default_dmazone() (false)
diff --git a/xen/arch/arm/numa.c b/xen/arch/arm/numa.c
index e9b2ec93bc..b5a87531f7 100644
--- a/xen/arch/arm/numa.c
+++ b/xen/arch/arm/numa.c
@@ -76,6 +76,16 @@ void __init numa_set_distance(nodeid_t from, nodeid_t to,
     node_distance_map[from][to] = distance;
 }
 
+void numa_detect_cpu_node(unsigned int cpu)
+{
+    nodeid_t node = cpu_to_node[cpu];
+
+    if ( node == NUMA_NO_NODE )
+        node = 0;
+
+    node_set_online(node);
+}
+
 unsigned char __node_distance(nodeid_t from, nodeid_t to)
 {
     if ( from == to )
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 3f3a45719c..02bc887725 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -1208,6 +1208,11 @@ void __init start_xen(unsigned long boot_phys_offset,
 
     for_each_present_cpu ( i )
     {
+        /* Detect and online node based on cpu_to_node[]. */
+        numa_detect_cpu_node(i);
+        /* Set up node_to_cpumask based on cpu_to_node[]. */
+        numa_add_cpu(i);
+
         if ( (num_online_cpus() < nr_cpu_ids) && !cpu_online(i) )
         {
             int ret = cpu_up(i);
-- 
2.25.1



  parent reply	other threads:[~2023-11-20  2:55 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-20  2:54 [PATCH v6 00/17] Device tree based NUMA support for Arm Henry Wang
2023-11-20  2:54 ` [PATCH v6 01/17] xen/arm: use NR_MEM_BANKS to override default NR_NODE_MEMBLKS Henry Wang
2023-11-20  2:54 ` [PATCH v6 02/17] xen/arm: implement helpers to get and update NUMA status Henry Wang
2024-01-03 15:10   ` Julien Grall
2023-11-20  2:54 ` [PATCH v6 03/17] xen/arm: implement node distance helpers for Arm Henry Wang
2023-11-20  2:54 ` [PATCH v6 04/17] xen/arm: use arch_get_ram_range to get memory ranges from bootinfo Henry Wang
2023-11-20  2:54 ` [PATCH v6 05/17] xen/arm: build NUMA cpu_to_node map in dt_smp_init_cpus Henry Wang
2023-11-20  2:54 ` Henry Wang [this message]
2023-11-20  2:54 ` [PATCH v6 07/17] xen/arm: introduce a helper to parse device tree processor node Henry Wang
2023-11-20  2:54 ` [PATCH v6 08/17] xen/arm: introduce a helper to parse device tree memory node Henry Wang
2023-11-20  2:54 ` [PATCH v6 09/17] xen/arm: introduce a helper to parse device tree NUMA distance map Henry Wang
2023-11-20  2:54 ` [PATCH v6 10/17] xen/arm: unified entry to parse all NUMA data from device tree Henry Wang
2023-11-20  2:54 ` [PATCH v6 11/17] xen/arm: keep guest still be NUMA unware Henry Wang
2023-11-20  2:54 ` [PATCH v6 12/17] xen/arm: enable device tree based NUMA in system init Henry Wang
2023-11-20  2:54 ` [PATCH v6 13/17] xen/arm: implement numa_node_to_arch_nid for device tree NUMA Henry Wang
2023-11-20  2:54 ` [PATCH v6 14/17] xen/arm: use CONFIG_NUMA to gate node_online_map in smpboot Henry Wang
2023-11-20  2:54 ` [PATCH v6 15/17] xen/arm: Set correct per-cpu cpu_core_mask Henry Wang
2023-11-20  2:54 ` [PATCH v6 16/17] xen/arm: Provide Kconfig options for Arm to enable NUMA Henry Wang
2023-11-20  2:54 ` [PATCH v6 17/17] docs: update numa command line to support Arm Henry Wang
2023-11-20  8:55   ` Jan Beulich
2023-11-20  8:57     ` Henry Wang
2023-11-30  1:06 ` [PATCH v6 00/17] Device tree based NUMA support for Arm Stefano Stabellini
2023-11-30  2:11   ` Henry Wang
2024-01-03 15:14 ` Julien Grall

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=20231120025431.14845-7-Henry.Wang@arm.com \
    --to=henry.wang@arm.com \
    --cc=Volodymyr_Babchuk@epam.com \
    --cc=bertrand.marquis@arm.com \
    --cc=julien@xen.org \
    --cc=michal.orzel@amd.com \
    --cc=sstabellini@kernel.org \
    --cc=wei.chen@arm.com \
    --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 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.