[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 05/10] i386/topology: Introduce helpers for various topology i
From: |
Xiaoyao Li |
Subject: |
[PATCH v2 05/10] i386/topology: Introduce helpers for various topology info of different level |
Date: |
Thu, 19 Dec 2024 06:01:20 -0500 |
Introduce various helpers for getting the topology info of different
semantics. Using the helper is more self-explanatory.
Besides, the semantic of the helper will stay unchanged even when new
topology is added in the future. At that time, updating the
implementation of the helper without affecting the callers.
Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
---
include/hw/i386/topology.h | 25 +++++++++++++++++++++++++
target/i386/cpu.c | 11 ++++-------
2 files changed, 29 insertions(+), 7 deletions(-)
diff --git a/include/hw/i386/topology.h b/include/hw/i386/topology.h
index 21b65219a5ca..f6380f1ed756 100644
--- a/include/hw/i386/topology.h
+++ b/include/hw/i386/topology.h
@@ -203,4 +203,29 @@ static inline bool x86_has_extended_topo(unsigned long
*topo_bitmap)
test_bit(CPU_TOPOLOGY_LEVEL_DIE, topo_bitmap);
}
+static inline unsigned x86_module_per_pkg(X86CPUTopoInfo *topo_info)
+{
+ return topo_info->modules_per_die * topo_info->dies_per_pkg;
+}
+
+static inline unsigned x86_cores_per_pkg(X86CPUTopoInfo *topo_info)
+{
+ return topo_info->cores_per_module * x86_module_per_pkg(topo_info);
+}
+
+static inline unsigned x86_threads_per_pkg(X86CPUTopoInfo *topo_info)
+{
+ return topo_info->threads_per_core * x86_cores_per_pkg(topo_info);
+}
+
+static inline unsigned x86_threads_per_module(X86CPUTopoInfo *topo_info)
+{
+ return topo_info->threads_per_core * topo_info->cores_per_module;
+}
+
+static inline unsigned x86_threads_per_die(X86CPUTopoInfo *topo_info)
+{
+ return x86_threads_per_module(topo_info) * topo_info->modules_per_die;
+}
+
#endif /* HW_I386_TOPOLOGY_H */
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index ad6889abdf5e..f11b5d401a77 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -311,13 +311,11 @@ static uint32_t num_threads_by_topo_level(X86CPUTopoInfo
*topo_info,
case CPU_TOPOLOGY_LEVEL_CORE:
return topo_info->threads_per_core;
case CPU_TOPOLOGY_LEVEL_MODULE:
- return topo_info->threads_per_core * topo_info->cores_per_module;
+ return x86_threads_per_module(topo_info);
case CPU_TOPOLOGY_LEVEL_DIE:
- return topo_info->threads_per_core * topo_info->cores_per_module *
- topo_info->modules_per_die;
+ return x86_threads_per_die(topo_info);
case CPU_TOPOLOGY_LEVEL_SOCKET:
- return topo_info->threads_per_core * topo_info->cores_per_module *
- topo_info->modules_per_die * topo_info->dies_per_pkg;
+ return x86_threads_per_pkg(topo_info);
default:
g_assert_not_reached();
}
@@ -6505,8 +6503,7 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index,
uint32_t count,
topo_info.cores_per_module = cs->nr_cores / env->nr_dies / env->nr_modules;
topo_info.threads_per_core = cs->nr_threads;
- threads_per_pkg = topo_info.threads_per_core * topo_info.cores_per_module *
- topo_info.modules_per_die * topo_info.dies_per_pkg;
+ threads_per_pkg = x86_threads_per_pkg(&topo_info);
/* Calculate & apply limits for different index ranges */
if (index >= 0xC0000000) {
--
2.34.1
- [PATCH v2 00/10] i386: Track X86CPUTopoInfo in CPUX86State and track features in env->features[], Xiaoyao Li, 2024/12/19
- [PATCH v2 01/10] i386/cpu: Extract a common fucntion to setup value of MSR_CORE_THREAD_COUNT, Xiaoyao Li, 2024/12/19
- [PATCH v2 04/10] i386/topology: Update the comment of x86_apicid_from_topo_ids(), Xiaoyao Li, 2024/12/19
- [PATCH v2 03/10] i386/cpu: Drop cores_per_pkg in cpu_x86_cpuid(), Xiaoyao Li, 2024/12/19
- [PATCH v2 05/10] i386/topology: Introduce helpers for various topology info of different level,
Xiaoyao Li <=
- [PATCH v2 06/10] i386/cpu: Track a X86CPUTopoInfo directly in CPUX86State, Xiaoyao Li, 2024/12/19
- [PATCH v2 02/10] i386/cpu: Drop the variable smp_cores and smp_threads in x86_cpu_pre_plug(), Xiaoyao Li, 2024/12/19
- [PATCH v2 07/10] i386/cpu: Hoist check of CPUID_EXT3_TOPOEXT against threads_per_core, Xiaoyao Li, 2024/12/19
- [PATCH v2 08/10] cpu: Remove nr_cores from struct CPUState, Xiaoyao Li, 2024/12/19
- [PATCH v2 09/10] i386/cpu: Set up CPUID_HT in x86_cpu_expand_features() instead of cpu_x86_cpuid(), Xiaoyao Li, 2024/12/19
- [PATCH v2 10/10] i386/cpu: Set and track CPUID_EXT3_CMP_LEG in env->features[FEAT_8000_0001_ECX], Xiaoyao Li, 2024/12/19