diff mbox series

[12/16] tests: bios-tables-test: Add test for smbios type4 thread count

Message ID 20230825033619.2075837-13-zhao1.liu@linux.intel.com (mailing list archive)
State New, archived
Headers show
Series tests: Add CPU topology related smbios test cases | expand

Commit Message

Zhao Liu Aug. 25, 2023, 3:36 a.m. UTC
From: Zhao Liu <zhao1.liu@intel.com>

This tests the commit 7298fd7de5551 ("hw/smbios: Fix thread count in
type4").

Add this test to cover 2 cases:
1. Test thread count field with multiple sockets and multiple dies to
   confirm this field could correctly calculate threads per sockets.

2. Confirm that field calculation could correctly recognize the
   difference between "-smp maxcpus" and "-smp cpus".

Suggested-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
 tests/qtest/bios-tables-test.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

Comments

Igor Mammedov Sept. 15, 2023, 1:19 p.m. UTC | #1
On Fri, 25 Aug 2023 11:36:15 +0800
Zhao Liu <zhao1.liu@linux.intel.com> wrote:

> From: Zhao Liu <zhao1.liu@intel.com>
> 
> This tests the commit 7298fd7de5551 ("hw/smbios: Fix thread count in
> type4").
> 
> Add this test to cover 2 cases:
> 1. Test thread count field with multiple sockets and multiple dies to
>    confirm this field could correctly calculate threads per sockets.
> 
> 2. Confirm that field calculation could correctly recognize the
>    difference between "-smp maxcpus" and "-smp cpus".
> 
> Suggested-by: Igor Mammedov <imammedo@redhat.com>
> Signed-off-by: Zhao Liu <zhao1.liu@intel.com>

Acked-by: Igor Mammedov <imammedo@redhat.com>

PS:
add to commit message an explanation how -smp maps into
smbios_thread_count

> ---
>  tests/qtest/bios-tables-test.c | 27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
> 
> diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> index 8cba1d8126f2..26474d376633 100644
> --- a/tests/qtest/bios-tables-test.c
> +++ b/tests/qtest/bios-tables-test.c
> @@ -95,6 +95,7 @@ typedef struct {
>      uint16_t smbios_cpu_curr_speed;
>      uint8_t smbios_core_count;
>      uint16_t smbios_core_count2;
> +    uint8_t smbios_thread_count;
>      uint8_t *required_struct_types;
>      int required_struct_types_len;
>      int type4_count;
> @@ -640,6 +641,7 @@ static void smbios_cpu_test(test_data *data, uint32_t addr,
>                              SmbiosEntryPointType ep_type)
>  {
>      uint8_t core_count, expected_core_count = data->smbios_core_count;
> +    uint8_t thread_count, expected_thread_count = data->smbios_thread_count;
>      uint16_t speed, expected_speed[2];
>      uint16_t core_count2, expected_core_count2 = data->smbios_core_count2;
>      int offset[2];
> @@ -663,6 +665,13 @@ static void smbios_cpu_test(test_data *data, uint32_t addr,
>          g_assert_cmpuint(core_count, ==, expected_core_count);
>      }
>  
> +    thread_count = qtest_readb(data->qts,
> +                       addr + offsetof(struct smbios_type_4, thread_count));
> +
> +    if (expected_thread_count) {
> +        g_assert_cmpuint(thread_count, ==, expected_thread_count);
> +    }
> +
>      if (ep_type == SMBIOS_ENTRY_POINT_TYPE_64) {
>          core_count2 = qtest_readw(data->qts,
>                            addr + offsetof(struct smbios_type_4, core_count2));
> @@ -1033,6 +1042,22 @@ static void test_acpi_q35_tcg_core_count2(void)
>      free_test_data(&data);
>  }
>  
> +static void test_acpi_q35_tcg_thread_count(void)
> +{
> +    test_data data = {
> +        .machine = MACHINE_Q35,
> +        .variant = ".thread-count",
> +        .required_struct_types = base_required_struct_types,
> +        .required_struct_types_len = ARRAY_SIZE(base_required_struct_types),
> +        .smbios_thread_count = 27,
> +    };
> +
> +    test_acpi_one("-machine smbios-entry-point-type=64 "
> +                  "-smp cpus=15,maxcpus=54,sockets=2,dies=3,cores=3,threads=3",
> +                  &data);
> +    free_test_data(&data);
> +}
> +
>  static void test_acpi_q35_tcg_bridge(void)
>  {
>      test_data data = {};
> @@ -2189,6 +2214,8 @@ int main(int argc, char *argv[])
>                                 test_acpi_q35_tcg_core_count);
>                  qtest_add_func("acpi/q35/core-count2",
>                                 test_acpi_q35_tcg_core_count2);
> +                qtest_add_func("acpi/q35/thread-count",
> +                               test_acpi_q35_tcg_thread_count);
>              }
>              qtest_add_func("acpi/q35/viot", test_acpi_q35_viot);
>  #ifdef CONFIG_POSIX
Zhao Liu Sept. 19, 2023, 7:13 a.m. UTC | #2
On Fri, Sep 15, 2023 at 03:19:02PM +0200, Igor Mammedov wrote:
> Date: Fri, 15 Sep 2023 15:19:02 +0200
> From: Igor Mammedov <imammedo@redhat.com>
> Subject: Re: [PATCH 12/16] tests: bios-tables-test: Add test for smbios
>  type4 thread count
> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; x86_64-redhat-linux-gnu)
> 
> On Fri, 25 Aug 2023 11:36:15 +0800
> Zhao Liu <zhao1.liu@linux.intel.com> wrote:
> 
> > From: Zhao Liu <zhao1.liu@intel.com>
> > 
> > This tests the commit 7298fd7de5551 ("hw/smbios: Fix thread count in
> > type4").
> > 
> > Add this test to cover 2 cases:
> > 1. Test thread count field with multiple sockets and multiple dies to
> >    confirm this field could correctly calculate threads per sockets.
> > 
> > 2. Confirm that field calculation could correctly recognize the
> >    difference between "-smp maxcpus" and "-smp cpus".
> > 
> > Suggested-by: Igor Mammedov <imammedo@redhat.com>
> > Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
> 
> Acked-by: Igor Mammedov <imammedo@redhat.com>

Thanks!

> 
> PS:
> add to commit message an explanation how -smp maps into
> smbios_thread_count

Ok.

-Zhao

> 
> > ---
> >  tests/qtest/bios-tables-test.c | 27 +++++++++++++++++++++++++++
> >  1 file changed, 27 insertions(+)
> > 
> > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > index 8cba1d8126f2..26474d376633 100644
> > --- a/tests/qtest/bios-tables-test.c
> > +++ b/tests/qtest/bios-tables-test.c
> > @@ -95,6 +95,7 @@ typedef struct {
> >      uint16_t smbios_cpu_curr_speed;
> >      uint8_t smbios_core_count;
> >      uint16_t smbios_core_count2;
> > +    uint8_t smbios_thread_count;
> >      uint8_t *required_struct_types;
> >      int required_struct_types_len;
> >      int type4_count;
> > @@ -640,6 +641,7 @@ static void smbios_cpu_test(test_data *data, uint32_t addr,
> >                              SmbiosEntryPointType ep_type)
> >  {
> >      uint8_t core_count, expected_core_count = data->smbios_core_count;
> > +    uint8_t thread_count, expected_thread_count = data->smbios_thread_count;
> >      uint16_t speed, expected_speed[2];
> >      uint16_t core_count2, expected_core_count2 = data->smbios_core_count2;
> >      int offset[2];
> > @@ -663,6 +665,13 @@ static void smbios_cpu_test(test_data *data, uint32_t addr,
> >          g_assert_cmpuint(core_count, ==, expected_core_count);
> >      }
> >  
> > +    thread_count = qtest_readb(data->qts,
> > +                       addr + offsetof(struct smbios_type_4, thread_count));
> > +
> > +    if (expected_thread_count) {
> > +        g_assert_cmpuint(thread_count, ==, expected_thread_count);
> > +    }
> > +
> >      if (ep_type == SMBIOS_ENTRY_POINT_TYPE_64) {
> >          core_count2 = qtest_readw(data->qts,
> >                            addr + offsetof(struct smbios_type_4, core_count2));
> > @@ -1033,6 +1042,22 @@ static void test_acpi_q35_tcg_core_count2(void)
> >      free_test_data(&data);
> >  }
> >  
> > +static void test_acpi_q35_tcg_thread_count(void)
> > +{
> > +    test_data data = {
> > +        .machine = MACHINE_Q35,
> > +        .variant = ".thread-count",
> > +        .required_struct_types = base_required_struct_types,
> > +        .required_struct_types_len = ARRAY_SIZE(base_required_struct_types),
> > +        .smbios_thread_count = 27,
> > +    };
> > +
> > +    test_acpi_one("-machine smbios-entry-point-type=64 "
> > +                  "-smp cpus=15,maxcpus=54,sockets=2,dies=3,cores=3,threads=3",
> > +                  &data);
> > +    free_test_data(&data);
> > +}
> > +
> >  static void test_acpi_q35_tcg_bridge(void)
> >  {
> >      test_data data = {};
> > @@ -2189,6 +2214,8 @@ int main(int argc, char *argv[])
> >                                 test_acpi_q35_tcg_core_count);
> >                  qtest_add_func("acpi/q35/core-count2",
> >                                 test_acpi_q35_tcg_core_count2);
> > +                qtest_add_func("acpi/q35/thread-count",
> > +                               test_acpi_q35_tcg_thread_count);
> >              }
> >              qtest_add_func("acpi/q35/viot", test_acpi_q35_viot);
> >  #ifdef CONFIG_POSIX
>
diff mbox series

Patch

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 8cba1d8126f2..26474d376633 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -95,6 +95,7 @@  typedef struct {
     uint16_t smbios_cpu_curr_speed;
     uint8_t smbios_core_count;
     uint16_t smbios_core_count2;
+    uint8_t smbios_thread_count;
     uint8_t *required_struct_types;
     int required_struct_types_len;
     int type4_count;
@@ -640,6 +641,7 @@  static void smbios_cpu_test(test_data *data, uint32_t addr,
                             SmbiosEntryPointType ep_type)
 {
     uint8_t core_count, expected_core_count = data->smbios_core_count;
+    uint8_t thread_count, expected_thread_count = data->smbios_thread_count;
     uint16_t speed, expected_speed[2];
     uint16_t core_count2, expected_core_count2 = data->smbios_core_count2;
     int offset[2];
@@ -663,6 +665,13 @@  static void smbios_cpu_test(test_data *data, uint32_t addr,
         g_assert_cmpuint(core_count, ==, expected_core_count);
     }
 
+    thread_count = qtest_readb(data->qts,
+                       addr + offsetof(struct smbios_type_4, thread_count));
+
+    if (expected_thread_count) {
+        g_assert_cmpuint(thread_count, ==, expected_thread_count);
+    }
+
     if (ep_type == SMBIOS_ENTRY_POINT_TYPE_64) {
         core_count2 = qtest_readw(data->qts,
                           addr + offsetof(struct smbios_type_4, core_count2));
@@ -1033,6 +1042,22 @@  static void test_acpi_q35_tcg_core_count2(void)
     free_test_data(&data);
 }
 
+static void test_acpi_q35_tcg_thread_count(void)
+{
+    test_data data = {
+        .machine = MACHINE_Q35,
+        .variant = ".thread-count",
+        .required_struct_types = base_required_struct_types,
+        .required_struct_types_len = ARRAY_SIZE(base_required_struct_types),
+        .smbios_thread_count = 27,
+    };
+
+    test_acpi_one("-machine smbios-entry-point-type=64 "
+                  "-smp cpus=15,maxcpus=54,sockets=2,dies=3,cores=3,threads=3",
+                  &data);
+    free_test_data(&data);
+}
+
 static void test_acpi_q35_tcg_bridge(void)
 {
     test_data data = {};
@@ -2189,6 +2214,8 @@  int main(int argc, char *argv[])
                                test_acpi_q35_tcg_core_count);
                 qtest_add_func("acpi/q35/core-count2",
                                test_acpi_q35_tcg_core_count2);
+                qtest_add_func("acpi/q35/thread-count",
+                               test_acpi_q35_tcg_thread_count);
             }
             qtest_add_func("acpi/q35/viot", test_acpi_q35_viot);
 #ifdef CONFIG_POSIX