[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 3/3] xen/sched: Make cpu_nr_siblings() architecture-specific


  • To: xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Hirokazu Takahashi <taka@xxxxxxxxxxxxx>
  • Date: Wed, 10 Jun 2026 20:13:20 +0900
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=FULNXB41nFxLdVdMIO10H4z2ozWVoFFKD0Vvei/1HYg=; b=IDwr+lp8LxHG+6ElHPR/zTchd9Wv+U8a8Ui9B/CALiMl3zwA/tjIIMyhTaR6vw+Pfyn/QX/wxE3XVHw4oAD1aUAyocb6p8o9JbXFfMly/kFJXPu0UURaCTA83J3FeDFBntsL8/tV1WMvKjaDQqCyB8ZOkZqd0bgpcl3GdVcaKd1Ybc9ZtsRSc3IXnA+mj6qgAxUTKdIGvS38FSDXuV9ez1Yj3rUSHsVmfI9qE2AsliJD2biupBHf6eH/XmBba2dNUNalg0/kvZUoKqwwBFTc8JdnKNOFzdOPNcOzeDCOvNHgTjYfGyk+qV2G/tZl47zOZRGlf4j90OF25Tka+FkThw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vOVSRPQ30nPYvnHW7krgjG2/WV0y+S0dUUlSJIN2h7ZxYjtKFUGNkldxafBzBRvr40mEKWVRLml2E4Kx0+CkAWz6iQP2N0IzWouWSGlK3utGcklztXRo78aBZ9rl9iqhzUB0pgyogZ3HADm3/UGcyk0qyUg9YcvKLuGc9EltGZyixeMo70/Uw2aJA0vIw6xFqVinbpEcXPnq4qrNztu8U6FlLvqtVIBj/pFgVmsJB61MTEXEsBKMS+4SyIwACKfmG14JA0Y6kWjKfMCh/n60rmltb5YqxTiuIpvCRAJygfwrCKdlfxbDNKqfOFZYs8987YW9JqRrrqwiWDzJ9irfww==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp;
  • Cc: Mykyta_Poturai@xxxxxxxx, Hirokazu Takahashi <taka@xxxxxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Teddy Astie <teddy.astie@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Julien Grall <julien@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Dario Faggioli <dfaggioli@xxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>, George Dunlap <gwd@xxxxxxxxxxxxxx>
  • Delivery-date: Wed, 10 Jun 2026 11:13:48 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Make cpu_nr_siblings() an architecture-specific function.
This patch provides the implementation for x86 and a common
version for Device Tree-based architectures.

Signed-off-by: Hirokazu Takahashi <taka@xxxxxxxxxxxxx>
---
 xen/arch/x86/include/asm/processor.h |  1 +
 xen/common/sched/credit2.c           | 23 +++++------------------
 xen/include/xen/cpu-topology.h       |  2 ++
 3 files changed, 8 insertions(+), 18 deletions(-)

diff --git a/xen/arch/x86/include/asm/processor.h 
b/xen/arch/x86/include/asm/processor.h
index 8ca6799a81..9758060129 100644
--- a/xen/arch/x86/include/asm/processor.h
+++ b/xen/arch/x86/include/asm/processor.h
@@ -106,6 +106,7 @@ extern void intel_init_arat(void);
 
 #define cpu_to_core(_cpu)   (cpu_data[_cpu].cpu_core_id)
 #define cpu_to_socket(_cpu) (cpu_data[_cpu].phys_proc_id)
+#define cpu_nr_siblings(_cpu) (cpu_data[_cpu].x86_num_siblings)
 
 unsigned int apicid_to_socket(unsigned int apicid);
 
diff --git a/xen/common/sched/credit2.c b/xen/common/sched/credit2.c
index dcce1e361f..2d93944824 100644
--- a/xen/common/sched/credit2.c
+++ b/xen/common/sched/credit2.c
@@ -29,22 +29,6 @@
 /* #define d2printk printk */
 #define d2printk(x...)
 
-/*
- * TODO: Abstract this properly, and figure out what Credit2 wants to do with
- *       the fact that x86_num_siblings doesn't even have the same meaning
- *       between x86 vendors.
- */
-static unsigned int cpu_nr_siblings(unsigned int cpu)
-{
-#ifdef CONFIG_X86
-    return cpu_data[cpu].x86_num_siblings;
-#elif CONFIG_DT_CPU_TOPOLOGY
-    return cpu_topology[cpu].num_siblings;
-#else
-    return 1;
-#endif
-}
-
 /*
  * Credit2 tracing events ("only" 512 available!). Check
  * include/public/trace.h for more details.
@@ -884,8 +868,11 @@ cpu_runqueue_match(const struct csched2_runqueue_data 
*rqd, unsigned int cpu)
  * Additional checks, to avoid separating siblings in different runqueues.
  * This deals with both Intel's HTs and AMD's CUs. An arch that does not have
  * any similar concept will just have cpu_nr_siblings() always return 1, and
- * setup the cpu_sibling_mask-s acordingly (as currently does ARM), and things
- * will just work as well.
+ * setup the cpu_sibling_mask-s acordingly, and things will just work as well.
+ *
+ * TODO: Abstract cpu_nr_siblings properly, and figure out what Credit2 wants
+ *       to do with the fact that x86_num_siblings doesn't even have the same
+ *       meaning between x86 vendors.
  */
 static bool
 cpu_runqueue_siblings_match(const struct csched2_runqueue_data *rqd,
diff --git a/xen/include/xen/cpu-topology.h b/xen/include/xen/cpu-topology.h
index f268069449..ea5518bb16 100644
--- a/xen/include/xen/cpu-topology.h
+++ b/xen/include/xen/cpu-topology.h
@@ -25,6 +25,7 @@ void dt_init_cpu_topology(void);
 
 #define cpu_to_core(_cpu)   (cpu_topology[_cpu].phys_core_id)
 #define cpu_to_socket(_cpu)   (cpu_topology[_cpu].phys_socket_id)
+#define cpu_nr_siblings(_cpu) (cpu_topology[_cpu].num_siblings)
 
 #elif CONFIG_DEVICE_TREE_PARSE
 
@@ -33,6 +34,7 @@ static inline void dt_init_cpu_topology(void) {}
 
 #define cpu_to_core(_cpu)   (0)
 #define cpu_to_socket(_cpu) (0)
+#define cpu_nr_siblings(_cpu) (1)
 
 #endif /* CONFIG_DEVICE_TREE_PARSE */
 
-- 
2.43.0




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.