Hi On Tue, Nov 14, 2023 at 6:12 AM Joelle van Dyne <j...@getutm.app> wrote: > > Signed-off-by: Joelle van Dyne <j...@getutm.app> > Reviewed-by: Stefan Berger <stef...@linux.ibm.com>
nit: you also added tests for x86, could be a different patch? For arm, the test fails until next patch with: # starting QEMU: exec ./qemu-system-aarch64 -qtest unix:/tmp/qtest-991279.sock -qtest-log /dev/null -chardev socket,path=/tmp/qtest-991279.qmp,id=char0 -mon chardev=char0,mode=control -display none -audio none -machine virt -accel tcg -nodefaults -nographic -drive if=pflash,format=raw,file=pc-bios/edk2-aarch64-code.fd,readonly=on -drive if=pflash,format=raw,file=pc-bios/edk2-arm-vars.fd,snapshot=on -cdrom tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.qcow2 -cpu cortex-a57 -chardev socket,id=chr,path=/tmp/qemu-test_acpi_virt_tcg_crb-device.KZ3GE2/sock -tpmdev emulator,id=dev,chardev=chr -device tpm-crb-device,tpmdev=dev -accel qtest Warning! zero length expected file 'tests/data/acpi/virt/TPM2.crb-device.tpm2' Warning! zero length expected file 'tests/data/acpi/virt/DSDT.crb-device.tpm2' acpi-test: Warning! binary file mismatch. Actual [aml:/tmp/aml-GO4ME2], Expected [aml:tests/data/acpi/virt/TPM2.crb-device.tpm2]. See source file tests/qtest/bios-tables-test.c for instructions on how to update expected files. acpi-test: Warning! binary file mismatch. Actual [aml:/tmp/aml-6N4ME2], Expected [aml:tests/data/acpi/virt/DSDT.crb-device.tpm2]. See source file tests/qtest/bios-tables-test.c for instructions on how to update expected files. to see ASL diff between mismatched files install IASL, rebuild QEMU from scratch and re-run tests with V=1 environment variable set** ERROR:../tests/qtest/bios-tables-test.c:538:test_acpi_asl: assertion failed: (all_tables_match) not ok /aarch64/acpi/virt/tpm2-crb - ERROR:../tests/qtest/bios-tables-test.c:538:test_acpi_asl: assertion failed: (all_tables_match) Bail out! qemu-system-aarch64: tpm-emulator: Could not cleanly shutdown the TPM: Resource temporarily unavailable Unexpected error in qio_channel_socket_writev() at ../io/channel-socket.c:622: /home/elmarco/src/qemu/buildall/tests/qtest/bios-tables-test: Unable to write to socket: Bad file descriptor > --- > tests/qtest/bios-tables-test.c | 43 ++++++++++++++++++++++++++++++++-- > 1 file changed, 41 insertions(+), 2 deletions(-) > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c > index 71af5cf69f..bb4ebf00c1 100644 > --- a/tests/qtest/bios-tables-test.c > +++ b/tests/qtest/bios-tables-test.c > @@ -1447,6 +1447,28 @@ static void test_acpi_piix4_tcg_numamem(void) > > uint64_t tpm_tis_base_addr; > > +static test_data tcg_tpm_test_data(const char *machine) > +{ > + if (g_strcmp0(machine, "virt") == 0) { > + test_data data = { > + .machine = "virt", > + .tcg_only = true, > + .uefi_fl1 = "pc-bios/edk2-aarch64-code.fd", > + .uefi_fl2 = "pc-bios/edk2-arm-vars.fd", > + .cd = > + > "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.qcow2", > + .ram_start = 0x40000000ULL, > + .scan_len = 128ULL * 1024 * 1024, > + }; > + return data; > + } else { > + test_data data = { > + .machine = machine, > + }; > + return data; > + } > +} > + > static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if, > uint64_t base, enum TPMVersion tpm_version) > { > @@ -1454,7 +1476,7 @@ static void test_acpi_tcg_tpm(const char *machine, > const char *tpm_if, > machine, tpm_if); > char *tmp_path = g_dir_make_tmp(tmp_dir_name, NULL); > TPMTestState test; > - test_data data = {}; > + test_data data = tcg_tpm_test_data(machine); > GThread *thread; > const char *suffix = tpm_version == TPM_VERSION_2_0 ? "tpm2" : "tpm12"; > char *args, *variant = g_strdup_printf(".%s.%s", tpm_if, suffix); > @@ -1474,13 +1496,14 @@ static void test_acpi_tcg_tpm(const char *machine, > const char *tpm_if, > thread = g_thread_new(NULL, tpm_emu_ctrl_thread, &test); > tpm_emu_test_wait_cond(&test); > > - data.machine = machine; > data.variant = variant; > > args = g_strdup_printf( > + " %s" > " -chardev socket,id=chr,path=%s" > " -tpmdev emulator,id=dev,chardev=chr" > " -device tpm-%s,tpmdev=dev", > + g_strcmp0(machine, "virt") == 0 ? "-cpu cortex-a57" : "", > test.addr->u.q_unix.path, tpm_if); > > test_acpi_one(args, &data); > @@ -1506,6 +1529,16 @@ static void test_acpi_q35_tcg_tpm12_tis(void) > test_acpi_tcg_tpm("q35", "tis", 0xFED40000, TPM_VERSION_1_2); > } > > +static void test_acpi_q35_tcg_tpm2_crb(void) > +{ > + test_acpi_tcg_tpm("q35", "crb", 0xFED40000, TPM_VERSION_2_0); > +} > + > +static void test_acpi_virt_tcg_tpm2_crb(void) > +{ > + test_acpi_tcg_tpm("virt", "crb-device", 0xFED40000, TPM_VERSION_2_0); > +} > + > static void test_acpi_tcg_dimm_pxm(const char *machine) > { > test_data data = {}; > @@ -2212,6 +2245,9 @@ int main(int argc, char *argv[]) > qtest_add_func("acpi/q35/tpm12-tis", > test_acpi_q35_tcg_tpm12_tis); > } > + if (tpm_model_is_available("-machine q35", "tpm-crb")) { > + qtest_add_func("acpi/q35/tpm2-crb", > test_acpi_q35_tcg_tpm2_crb); > + } > qtest_add_func("acpi/q35/bridge", test_acpi_q35_tcg_bridge); > qtest_add_func("acpi/q35/no-acpi-hotplug", > test_acpi_q35_tcg_no_acpi_hotplug); > @@ -2301,6 +2337,9 @@ int main(int argc, char *argv[]) > qtest_add_func("acpi/virt/viot", test_acpi_virt_viot); > } > } > + if (tpm_model_is_available("-machine virt", "tpm-crb")) { > + qtest_add_func("acpi/virt/tpm2-crb", > test_acpi_virt_tcg_tpm2_crb); > + } > } > ret = g_test_run(); > boot_sector_cleanup(disk); > -- > 2.41.0 > > -- Marc-André Lureau