[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 07/13] tests/unit/test-smp-parse: Make test cases aware of the
From: |
Zhao Liu |
Subject: |
[PATCH v2 07/13] tests/unit/test-smp-parse: Make test cases aware of the book/drawer |
Date: |
Sat, 9 Mar 2024 00:01:42 +0800 |
From: Zhao Liu <zhao1.liu@intel.com>
Currently, -smp supports 2 more new levels: book and drawer.
It is necessary to consider the effects of book and drawer in the test
cases to ensure that the calculations are correct. This is also the
preparation to add new book and drawer test cases.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
Tested-by: Xiaoling Song <xiaoling.song@intel.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
tests/unit/test-smp-parse.c | 25 ++++++++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/tests/unit/test-smp-parse.c b/tests/unit/test-smp-parse.c
index 2eb9533bc505..f656bbb6da27 100644
--- a/tests/unit/test-smp-parse.c
+++ b/tests/unit/test-smp-parse.c
@@ -384,6 +384,8 @@ static char *smp_config_to_string(const SMPConfiguration
*config)
return g_strdup_printf(
"(SMPConfiguration) {\n"
" .has_cpus = %5s, cpus = %" PRId64 ",\n"
+ " .has_drawers = %5s, drawers = %" PRId64 ",\n"
+ " .has_books = %5s, books = %" PRId64 ",\n"
" .has_sockets = %5s, sockets = %" PRId64 ",\n"
" .has_dies = %5s, dies = %" PRId64 ",\n"
" .has_clusters = %5s, clusters = %" PRId64 ",\n"
@@ -392,6 +394,8 @@ static char *smp_config_to_string(const SMPConfiguration
*config)
" .has_maxcpus = %5s, maxcpus = %" PRId64 ",\n"
"}",
config->has_cpus ? "true" : "false", config->cpus,
+ config->has_drawers ? "true" : "false", config->drawers,
+ config->has_books ? "true" : "false", config->books,
config->has_sockets ? "true" : "false", config->sockets,
config->has_dies ? "true" : "false", config->dies,
config->has_clusters ? "true" : "false", config->clusters,
@@ -404,10 +408,10 @@ static char *smp_config_to_string(const SMPConfiguration
*config)
static unsigned int cpu_topology_get_threads_per_socket(const CpuTopology
*topo)
{
/* Check the divisor to avoid invalid topology examples causing SIGFPE. */
- if (!topo->sockets) {
+ if (!topo->drawers || !topo->books || !topo->sockets) {
return 0;
} else {
- return topo->max_cpus / topo->sockets;
+ return topo->max_cpus / topo->drawers / topo->books / topo->sockets;
}
}
@@ -429,6 +433,8 @@ static char *cpu_topology_to_string(const CpuTopology *topo,
return g_strdup_printf(
"(CpuTopology) {\n"
" .cpus = %u,\n"
+ " .drawers = %u,\n"
+ " .books = %u,\n"
" .sockets = %u,\n"
" .dies = %u,\n"
" .clusters = %u,\n"
@@ -438,7 +444,8 @@ static char *cpu_topology_to_string(const CpuTopology *topo,
" .threads_per_socket = %u,\n"
" .cores_per_socket = %u,\n"
"}",
- topo->cpus, topo->sockets, topo->dies, topo->clusters,
+ topo->cpus, topo->drawers, topo->books,
+ topo->sockets, topo->dies, topo->clusters,
topo->cores, topo->threads, topo->max_cpus,
threads_per_socket, cores_per_socket);
}
@@ -473,6 +480,8 @@ static void check_parse(MachineState *ms, const
SMPConfiguration *config,
if (is_valid) {
if ((err == NULL) &&
(ms->smp.cpus == expect_topo->cpus) &&
+ (ms->smp.drawers == expect_topo->drawers) &&
+ (ms->smp.books == expect_topo->books) &&
(ms->smp.sockets == expect_topo->sockets) &&
(ms->smp.dies == expect_topo->dies) &&
(ms->smp.clusters == expect_topo->clusters) &&
@@ -564,6 +573,16 @@ static void unsupported_params_init(const MachineClass
*mc, SMPTestData *data)
data->expect_prefer_sockets.clusters = 1;
data->expect_prefer_cores.clusters = 1;
}
+
+ if (!mc->smp_props.books_supported) {
+ data->expect_prefer_sockets.books = 1;
+ data->expect_prefer_cores.books = 1;
+ }
+
+ if (!mc->smp_props.drawers_supported) {
+ data->expect_prefer_sockets.drawers = 1;
+ data->expect_prefer_cores.drawers = 1;
+ }
}
static void machine_base_class_init(ObjectClass *oc, void *data)
--
2.34.1
- [PATCH v2 00/13] Cleanup on SMP and its test, Zhao Liu, 2024/03/08
- [PATCH v2 01/13] hw/core/machine-smp: Remove deprecated "parameter=0" SMP configurations, Zhao Liu, 2024/03/08
- [PATCH v2 02/13] hw/core/machine-smp: Deprecate unsupported "parameter=1" SMP configurations, Zhao Liu, 2024/03/08
- [PATCH v2 03/13] hw/core/machine-smp: Calculate total CPUs once in machine_parse_smp_config(), Zhao Liu, 2024/03/08
- [PATCH v2 04/13] tests/unit/test-smp-parse: Drop the unsupported "dies=1" case, Zhao Liu, 2024/03/08
- [PATCH v2 05/13] tests/unit/test-smp-parse: Use CPU number macros in invalid topology case, Zhao Liu, 2024/03/08
- [PATCH v2 06/13] tests/unit/test-smp-parse: Bump max_cpus to 4096, Zhao Liu, 2024/03/08
- [PATCH v2 07/13] tests/unit/test-smp-parse: Make test cases aware of the book/drawer,
Zhao Liu <=
- [PATCH v2 08/13] tests/unit/test-smp-parse: Test "books" parameter in -smp, Zhao Liu, 2024/03/08
- [PATCH v2 09/13] tests/unit/test-smp-parse: Test "drawers" parameter in -smp, Zhao Liu, 2024/03/08
- [PATCH v2 10/13] tests/unit/test-smp-parse: Test "drawers" and "books" combination case, Zhao Liu, 2024/03/08
- [PATCH v2 11/13] tests/unit/test-smp-parse: Test the full 7-levels topology hierarchy, Zhao Liu, 2024/03/08
- [PATCH v2 12/13] tests/unit/test-smp-parse: Test smp_props.has_clusters, Zhao Liu, 2024/03/08
- [PATCH v2 13/13] tests/unit/test-smp-parse: Test "parameter=0" SMP configurations, Zhao Liu, 2024/03/08
- Re: [PATCH v2 00/13] Cleanup on SMP and its test, Philippe Mathieu-Daudé, 2024/03/08