qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Zhao Liu <zhao1.liu@linux.intel.com>
To: "Michael S . Tsirkin" <mst@redhat.com>,
	Igor Mammedov <imammedo@redhat.com>,
	Ani Sinha <anisinha@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	Yanan Wang <wangyanan55@huawei.com>
Cc: "Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	qemu-devel@nongnu.org, "Michael Tokarev" <mjt@tls.msk.ru>,
	"Zhenyu Wang" <zhenyu.z.wang@intel.com>,
	"Yongwei Ma" <yongwei.ma@intel.com>,
	"Zhao Liu" <zhao1.liu@intel.com>
Subject: [PATCH v2 03/16] tests: bios-tables-test: Add test for smbios type4 count
Date: Thu, 28 Sep 2023 20:59:30 +0800	[thread overview]
Message-ID: <20230928125943.1816922-4-zhao1.liu@linux.intel.com> (raw)
In-Reply-To: <20230928125943.1816922-1-zhao1.liu@linux.intel.com>

From: Zhao Liu <zhao1.liu@intel.com>

This tests the commit d79a284a44bb7 ("hw/smbios: Fix smbios_smp_sockets
calculation").

In smbios_get_tables() (hw/smbios/smbios.c), smbios type4 table is built
for each socket, so the count of type4 tables should be equal to the
number of sockets.

Thus for the topology in this case, there're the following considerations:
1. The topology should include multiple sockets to ensure smbios could
   create type4 tables for each socket.
2. In addition to sockets, for the more general topology, we should also
   configure as many topology levels as possible (multiple dies, no
   module since x86 hasn't supported it), to ensure that smbios is able
   to exclude the effect of other topology levels to create the type4
   tables only for sockets.
3. The original miscalculation bug also misused "smp.cpus", so it's
   necessary to configure "cpus" (presented threads for machine) and
   "maxcpus" (total threads for machine) as well to make sure that
   configuring unpluged CPUs in smp (cpus < maxcpus) does not affect
   the correctness of the count of type4 tables.

Based on these considerations, select the topology as the follow:

-smp cpus=100,maxcpus=120,sockets=5,dies=2,cores=4,threads=3

The expected count of type4 tables = sockets (5).

Suggested-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
Changes since v1:
 * Added description of the consideration for topology selection of this
   case in commit message. (Igor)
---
 tests/qtest/bios-tables-test.c | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index d1b80149f294..e14ca136e8ed 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -97,6 +97,7 @@ typedef struct {
     uint16_t smbios_core_count2;
     uint8_t *required_struct_types;
     int required_struct_types_len;
+    int type4_count;
     QTestState *qts;
 } test_data;
 
@@ -673,12 +674,21 @@ static void smbios_cpu_test(test_data *data, uint32_t addr,
     }
 }
 
+static void smbios_type4_count_test(test_data *data, int type4_count)
+{
+    int expected_type4_count = data->type4_count;
+
+    if (expected_type4_count) {
+        g_assert_cmpuint(type4_count, ==, expected_type4_count);
+    }
+}
+
 static void test_smbios_structs(test_data *data, SmbiosEntryPointType ep_type)
 {
     DECLARE_BITMAP(struct_bitmap, SMBIOS_MAX_TYPE+1) = { 0 };
 
     SmbiosEntryPoint *ep_table = &data->smbios_ep_table;
-    int i = 0, len, max_len = 0;
+    int i = 0, len, max_len = 0, type4_count = 0;
     uint8_t type, prv, crt;
     uint64_t addr;
 
@@ -704,6 +714,7 @@ static void test_smbios_structs(test_data *data, SmbiosEntryPointType ep_type)
 
         if (type == 4) {
             smbios_cpu_test(data, addr, ep_type);
+            type4_count++;
         }
 
         /* seek to end of unformatted string area of this struct ("\0\0") */
@@ -747,6 +758,8 @@ static void test_smbios_structs(test_data *data, SmbiosEntryPointType ep_type)
     for (i = 0; i < data->required_struct_types_len; i++) {
         g_assert(test_bit(data->required_struct_types[i], struct_bitmap));
     }
+
+    smbios_type4_count_test(data, type4_count);
 }
 
 static void test_acpi_load_tables(test_data *data)
@@ -970,6 +983,22 @@ static void test_acpi_q35_tcg(void)
     free_test_data(&data);
 }
 
+static void test_acpi_q35_tcg_type4_count(void)
+{
+    test_data data = {
+        .machine = MACHINE_Q35,
+        .variant = ".type4-count",
+        .required_struct_types = base_required_struct_types,
+        .required_struct_types_len = ARRAY_SIZE(base_required_struct_types),
+        .type4_count = 5,
+    };
+
+    test_acpi_one("-machine smbios-entry-point-type=64 "
+                  "-smp cpus=100,maxcpus=120,sockets=5,"
+                  "dies=2,cores=4,threads=3", &data);
+    free_test_data(&data);
+}
+
 static void test_acpi_q35_tcg_core_count2(void)
 {
     test_data data = {
@@ -2135,6 +2164,8 @@ int main(int argc, char *argv[])
             if (has_kvm) {
                 qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
                 qtest_add_func("acpi/q35/kvm/dmar", test_acpi_q35_kvm_dmar);
+                qtest_add_func("acpi/q35/type4-count",
+                               test_acpi_q35_tcg_type4_count);
                 qtest_add_func("acpi/q35/core-count2",
                                test_acpi_q35_tcg_core_count2);
             }
-- 
2.34.1



  parent reply	other threads:[~2023-09-28 12:50 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-28 12:59 [PATCH v2 00/16] tests: Add CPU topology related smbios test cases Zhao Liu
2023-09-28 12:59 ` [PATCH v2 01/16] tests: test-smp-parse: Add the test for cores/threads per socket helpers Zhao Liu
2023-09-28 12:59 ` [PATCH v2 02/16] tests: bios-tables-test: Prepare the ACPI table change for smbios type4 count test Zhao Liu
2023-09-28 12:59 ` Zhao Liu [this message]
2023-09-28 12:59 ` [PATCH v2 04/16] tests: bios-tables-test: Add ACPI table binaries " Zhao Liu
2023-09-28 12:59 ` [PATCH v2 05/16] tests: bios-tables-test: Prepare the ACPI table change for smbios type4 core " Zhao Liu
2023-09-28 12:59 ` [PATCH v2 06/16] tests: bios-tables-test: Add test for smbios type4 core count Zhao Liu
2023-09-28 12:59 ` [PATCH v2 07/16] tests: bios-tables-test: Add ACPI table binaries for smbios type4 core count test Zhao Liu
2023-09-28 12:59 ` [PATCH v2 08/16] tests: bios-tables-test: Prepare the ACPI table change for smbios type4 core count2 test Zhao Liu
2023-09-28 12:59 ` [PATCH v2 09/16] tests: bios-tables-test: Extend smbios core count2 test to cover general topology Zhao Liu
2023-09-28 12:59 ` [PATCH v2 10/16] tests: bios-tables-test: Update ACPI table binaries for smbios core count2 test Zhao Liu
2023-09-28 12:59 ` [PATCH v2 11/16] tests: bios-tables-test: Prepare the ACPI table change for smbios type4 thread count test Zhao Liu
2023-09-28 12:59 ` [PATCH v2 12/16] tests: bios-tables-test: Add test for smbios type4 thread count Zhao Liu
2023-09-28 12:59 ` [PATCH v2 13/16] tests: bios-tables-test: Add ACPI table binaries for smbios type4 thread count test Zhao Liu
2023-09-28 12:59 ` [PATCH v2 14/16] tests: bios-tables-test: Prepare the ACPI table change for smbios type4 thread count2 test Zhao Liu
2023-09-28 12:59 ` [PATCH v2 15/16] tests: bios-tables-test: Add test for smbios type4 thread count2 Zhao Liu
2023-10-22  9:17   ` Michael S. Tsirkin
2023-10-23  2:36     ` Zhao Liu
2023-09-28 12:59 ` [PATCH v2 16/16] tests: bios-tables-test: Add ACPI table binaries for smbios type4 thread count2 test Zhao Liu
2023-10-22  9:19 ` [PATCH v2 00/16] tests: Add CPU topology related smbios test cases Michael S. Tsirkin
2023-10-23  2:38   ` Zhao Liu

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=20230928125943.1816922-4-zhao1.liu@linux.intel.com \
    --to=zhao1.liu@linux.intel.com \
    --cc=anisinha@redhat.com \
    --cc=eduardo@habkost.net \
    --cc=imammedo@redhat.com \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=mjt@tls.msk.ru \
    --cc=mst@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=wangyanan55@huawei.com \
    --cc=yongwei.ma@intel.com \
    --cc=zhao1.liu@intel.com \
    --cc=zhenyu.z.wang@intel.com \
    /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).