From: Igor Mammedov <imammedo@redhat.com>
To: Julia Suvorova <jusual@redhat.com>
Cc: qemu-devel@nongnu.org, "Michael S. Tsirkin" <mst@redhat.com>,
Ani Sinha <ani@anisinha.ca>
Subject: Re: [PATCH v3 4/5] bios-tables-test: add test for number of cores > 255
Date: Fri, 14 Oct 2022 16:22:31 +0200 [thread overview]
Message-ID: <20221014162231.15ac01e5@redhat.com> (raw)
In-Reply-To: <20221011111731.101412-5-jusual@redhat.com>
On Tue, 11 Oct 2022 13:17:30 +0200
Julia Suvorova <jusual@redhat.com> wrote:
> The new test is run with a large number of cpus and checks if the
> core_count field in smbios_cpu_test (structure type 4) is correct.
>
> Choose q35 as it allows to run with -smp > 255.
>
> Signed-off-by: Julia Suvorova <jusual@redhat.com>
> Message-Id: <20220731162141.178443-5-jusual@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> ---
> tests/qtest/bios-tables-test.c | 58 ++++++++++++++++++++++++++--------
> 1 file changed, 45 insertions(+), 13 deletions(-)
>
> diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> index f5fffdc348..4a76befc93 100644
> --- a/tests/qtest/bios-tables-test.c
> +++ b/tests/qtest/bios-tables-test.c
> @@ -92,6 +92,8 @@ typedef struct {
> SmbiosEntryPoint smbios_ep_table;
> uint16_t smbios_cpu_max_speed;
> uint16_t smbios_cpu_curr_speed;
> + uint8_t smbios_core_count;
> + uint16_t smbios_core_count2;
> uint8_t *required_struct_types;
> int required_struct_types_len;
> QTestState *qts;
> @@ -631,29 +633,42 @@ static inline bool smbios_single_instance(uint8_t type)
> }
> }
>
> -static bool smbios_cpu_test(test_data *data, uint32_t addr)
> +static void smbios_cpu_test(test_data *data, uint32_t addr,
> + SmbiosEntryPointType ep_type)
> {
> - uint16_t expect_speed[2];
> - uint16_t real;
> + uint8_t core_count, expected_core_count = data->smbios_core_count;
> + uint16_t speed, expected_speed[2];
> + uint16_t core_count2, expected_core_count2 = data->smbios_core_count2;
> int offset[2];
> int i;
>
> /* Check CPU speed for backward compatibility */
> offset[0] = offsetof(struct smbios_type_4, max_speed);
> offset[1] = offsetof(struct smbios_type_4, current_speed);
> - expect_speed[0] = data->smbios_cpu_max_speed ? : 2000;
> - expect_speed[1] = data->smbios_cpu_curr_speed ? : 2000;
> + expected_speed[0] = data->smbios_cpu_max_speed ? : 2000;
> + expected_speed[1] = data->smbios_cpu_curr_speed ? : 2000;
>
> for (i = 0; i < 2; i++) {
> - real = qtest_readw(data->qts, addr + offset[i]);
> - if (real != expect_speed[i]) {
> - fprintf(stderr, "Unexpected SMBIOS CPU speed: real %u expect %u\n",
> - real, expect_speed[i]);
> - return false;
> - }
> + speed = qtest_readw(data->qts, addr + offset[i]);
> + g_assert_cmpuint(speed, ==, expected_speed[i]);
> }
>
> - return true;
> + core_count = qtest_readb(data->qts,
> + addr + offsetof(struct smbios_type_4, core_count));
> +
> + if (expected_core_count) {
> + g_assert_cmpuint(core_count, ==, expected_core_count);
> + }
> +
> + if (ep_type == SMBIOS_ENTRY_POINT_TYPE_64) {
> + core_count2 = qtest_readw(data->qts,
> + addr + offsetof(struct smbios_type_4, core_count2));
> +
> + /* Core Count has reached its limit, checking Core Count 2 */
> + if (expected_core_count == 0xFF && expected_core_count2) {
> + g_assert_cmpuint(core_count2, ==, expected_core_count2);
> + }
> + }
> }
>
> static void test_smbios_structs(test_data *data, SmbiosEntryPointType ep_type)
> @@ -686,7 +701,7 @@ static void test_smbios_structs(test_data *data, SmbiosEntryPointType ep_type)
> set_bit(type, struct_bitmap);
>
> if (type == 4) {
> - g_assert(smbios_cpu_test(data, addr));
> + smbios_cpu_test(data, addr, ep_type);
> }
>
> /* seek to end of unformatted string area of this struct ("\0\0") */
> @@ -908,6 +923,21 @@ static void test_acpi_q35_tcg(void)
> free_test_data(&data);
> }
>
> +static void test_acpi_q35_tcg_core_count2(void)
> +{
> + test_data data = {
> + .machine = MACHINE_Q35,
> + .variant = ".core-count2",
> + .required_struct_types = base_required_struct_types,
> + .required_struct_types_len = ARRAY_SIZE(base_required_struct_types),
> + .smbios_core_count = 0xFF,
> + .smbios_core_count2 = 275,
> + };
> +
> + test_acpi_one("-machine smbios-entry-point-type=64 -smp 275", &data);
> + free_test_data(&data);
> +}
> +
> static void test_acpi_q35_tcg_bridge(void)
> {
> test_data data;
> @@ -1859,6 +1889,8 @@ int main(int argc, char *argv[])
> qtest_add_func("acpi/q35/tpm12-tis",
> test_acpi_q35_tcg_tpm12_tis);
> }
> + qtest_add_func("acpi/q35/core-count2",
> + test_acpi_q35_tcg_core_count2);
> qtest_add_func("acpi/q35/bridge", test_acpi_q35_tcg_bridge);
> qtest_add_func("acpi/q35/multif-bridge",
> test_acpi_q35_multif_bridge);
next prev parent reply other threads:[~2022-10-14 14:23 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-11 11:17 [PATCH v3 0/5] hw/smbios: add core_count2 to smbios table type 4 Julia Suvorova
2022-10-11 11:17 ` [PATCH v3 1/5] " Julia Suvorova
2022-10-11 11:17 ` [PATCH v3 2/5] bios-tables-test: teach test to use smbios 3.0 tables Julia Suvorova
2022-10-11 11:17 ` [PATCH v3 3/5] tests/acpi: allow changes for core_count2 test Julia Suvorova
2022-10-14 14:22 ` Igor Mammedov
2022-10-11 11:17 ` [PATCH v3 4/5] bios-tables-test: add test for number of cores > 255 Julia Suvorova
2022-10-14 14:22 ` Igor Mammedov [this message]
2022-10-11 11:17 ` [PATCH v3 5/5] tests/acpi: update tables for new core count test Julia Suvorova
2022-10-27 6:11 ` Michael S. Tsirkin
2022-10-27 14:11 ` Igor Mammedov
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=20221014162231.15ac01e5@redhat.com \
--to=imammedo@redhat.com \
--cc=ani@anisinha.ca \
--cc=jusual@redhat.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
/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).