diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2019-06-06 12:52:31 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2019-06-06 12:52:31 +0100 |
commit | 347a6f44e90bf0ffff1e23b8fb919c780abb80b8 (patch) | |
tree | e2cce03f2cdb87dc9abc84be08245b17ed11668f /tests | |
parent | 7ad5f33b7d612a12d5ee927b64046ef21e4b5bae (diff) | |
parent | 7f36f0930ffec11a551844c0452dbce33f80a525 (diff) | |
download | qemu-347a6f44e90bf0ffff1e23b8fb919c780abb80b8.zip qemu-347a6f44e90bf0ffff1e23b8fb919c780abb80b8.tar.gz qemu-347a6f44e90bf0ffff1e23b8fb919c780abb80b8.tar.bz2 |
Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging
virtio, pci, pc: cleanups, features
stricter rules for acpi tables: we now fail
on any difference that isn't whitelisted.
vhost-scsi migration.
some cleanups all over the place
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
# gpg: Signature made Wed 05 Jun 2019 20:55:04 BST
# gpg: using RSA key 281F0DB8D28D5469
# gpg: Good signature from "Michael S. Tsirkin <mst@kernel.org>" [full]
# gpg: aka "Michael S. Tsirkin <mst@redhat.com>" [full]
# Primary key fingerprint: 0270 606B 6F3C DF3D 0B17 0970 C350 3912 AFBE 8E67
# Subkey fingerprint: 5D09 FD08 71C8 F85B 94CA 8A0D 281F 0DB8 D28D 5469
* remotes/mst/tags/for_upstream:
bios-tables-test: ignore identical binaries
tests: acpi: add simple arm/virt testcase
tests: add expected ACPI tables for arm/virt board
bios-tables-test: list all tables that differ
vhost-scsi: Allow user to enable migration
vhost-scsi: Add VMState descriptor
vhost-scsi: The vhost backend should be stopped when the VM is not running
bios-tables-test: add diff allowed list
vhost: fix memory leak in vhost_user_scsi_realize
vhost: fix incorrect print type
vhost: remove the dead code
docs: smbios: remove family=x from type2 entry description
pci: Fold pci_get_bus_devfn() into its sole caller
pci: Make is_bridge a bool
pcie: Simplify pci_adjust_config_limit()
acpi: pci: use build_append_foo() API to construct MCFG
hw/acpi: Consolidate build_mcfg to pci.c
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.include | 4 | ||||
-rw-r--r-- | tests/bios-tables-test-allowed-diff.h | 1 | ||||
-rw-r--r-- | tests/bios-tables-test.c | 53 | ||||
-rwxr-xr-x | tests/data/acpi/rebuild-expected-aml.sh | 2 | ||||
-rw-r--r-- | tests/data/acpi/virt/APIC | bin | 0 -> 168 bytes | |||
-rw-r--r-- | tests/data/acpi/virt/DSDT | bin | 0 -> 18476 bytes | |||
-rw-r--r-- | tests/data/acpi/virt/FACP | bin | 0 -> 268 bytes | |||
-rw-r--r-- | tests/data/acpi/virt/GTDT | bin | 0 -> 96 bytes | |||
-rw-r--r-- | tests/data/acpi/virt/MCFG | bin | 0 -> 60 bytes | |||
-rw-r--r-- | tests/data/acpi/virt/SPCR | bin | 0 -> 80 bytes |
10 files changed, 57 insertions, 3 deletions
diff --git a/tests/Makefile.include b/tests/Makefile.include index 46a36c2..a15b95e 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -264,6 +264,10 @@ check-qtest-arm-y += tests/hexloader-test$(EXESUF) check-qtest-aarch64-y = tests/numa-test$(EXESUF) check-qtest-aarch64-y += tests/boot-serial-test$(EXESUF) check-qtest-aarch64-y += tests/migration-test$(EXESUF) +# TODO: once aarch64 TCG is fixed on ARM 32 bit host, make test unconditional +ifneq ($(ARCH),arm) +check-qtest-aarch64-y += tests/bios-tables-test$(EXESUF) +endif check-qtest-microblazeel-y += $(check-qtest-microblaze-y) diff --git a/tests/bios-tables-test-allowed-diff.h b/tests/bios-tables-test-allowed-diff.h new file mode 100644 index 0000000..dfb8523 --- /dev/null +++ b/tests/bios-tables-test-allowed-diff.h @@ -0,0 +1 @@ +/* List of comma-separated changed AML files to ignore */ diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c index 11e07be..0ce5518 100644 --- a/tests/bios-tables-test.c +++ b/tests/bios-tables-test.c @@ -342,13 +342,29 @@ try_again: return exp_tables; } +static bool test_acpi_find_diff_allowed(AcpiSdtTable *sdt) +{ + const gchar *allowed_diff_file[] = { +#include "bios-tables-test-allowed-diff.h" + NULL + }; + const gchar **f; + + for (f = allowed_diff_file; *f; ++f) { + if (!g_strcmp0(sdt->aml_file, *f)) { + return true; + } + } + return false; +} + /* test the list of tables in @data->tables against reference tables */ static void test_acpi_asl(test_data *data) { int i; AcpiSdtTable *sdt, *exp_sdt; test_data exp_data; - gboolean exp_err, err; + gboolean exp_err, err, all_tables_match = true; memset(&exp_data, 0, sizeof(exp_data)); exp_data.tables = load_expected_aml(data); @@ -359,6 +375,20 @@ static void test_acpi_asl(test_data *data) sdt = &g_array_index(data->tables, AcpiSdtTable, i); exp_sdt = &g_array_index(exp_data.tables, AcpiSdtTable, i); + if (sdt->aml_len == exp_sdt->aml_len && + !memcmp(sdt->aml, exp_sdt->aml, sdt->aml_len)) { + /* Identical table binaries: no need to disassemble. */ + continue; + } + + fprintf(stderr, + "acpi-test: Warning! %.4s binary file mismatch. " + "Actual [aml:%s], Expected [aml:%s].\n", + exp_sdt->aml, sdt->aml_file, exp_sdt->aml_file); + + all_tables_match = all_tables_match && + test_acpi_find_diff_allowed(exp_sdt); + err = load_asl(data->tables, sdt); asl = normalize_asl(sdt->asl); @@ -396,11 +426,12 @@ static void test_acpi_asl(test_data *data) "see ASL difference."); } } - } + } } g_string_free(asl, true); g_string_free(exp_asl, true); } + g_assert(all_tables_match); free_test_data(&exp_data); } @@ -813,6 +844,22 @@ static void test_acpi_piix4_tcg_dimm_pxm(void) test_acpi_tcg_dimm_pxm(MACHINE_PC); } +static void test_acpi_virt_tcg(void) +{ + test_data data = { + .machine = "virt", + .accel = "tcg", + .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, + }; + + test_acpi_one("-cpu cortex-a57", &data); + free_test_data(&data); +} + int main(int argc, char *argv[]) { const char *arch = qtest_get_arch(); @@ -841,6 +888,8 @@ int main(int argc, char *argv[]) qtest_add_func("acpi/q35/numamem", test_acpi_q35_tcg_numamem); qtest_add_func("acpi/piix4/dimmpxm", test_acpi_piix4_tcg_dimm_pxm); qtest_add_func("acpi/q35/dimmpxm", test_acpi_q35_tcg_dimm_pxm); + } else if (strcmp(arch, "aarch64") == 0) { + qtest_add_func("acpi/virt", test_acpi_virt_tcg); } ret = g_test_run(); boot_sector_cleanup(disk); diff --git a/tests/data/acpi/rebuild-expected-aml.sh b/tests/data/acpi/rebuild-expected-aml.sh index ff7e622..d285321 100755 --- a/tests/data/acpi/rebuild-expected-aml.sh +++ b/tests/data/acpi/rebuild-expected-aml.sh @@ -12,7 +12,7 @@ # This work is licensed under the terms of the GNU GPLv2. # See the COPYING.LIB file in the top-level directory. -qemu_bins="x86_64-softmmu/qemu-system-x86_64" +qemu_bins="x86_64-softmmu/qemu-system-x86_64 aarch64-softmmu/qemu-system-aarch64" if [ ! -e "tests/bios-tables-test" ]; then echo "Test: bios-tables-test is required! Run make check before this script." diff --git a/tests/data/acpi/virt/APIC b/tests/data/acpi/virt/APIC Binary files differnew file mode 100644 index 0000000..797dfde --- /dev/null +++ b/tests/data/acpi/virt/APIC diff --git a/tests/data/acpi/virt/DSDT b/tests/data/acpi/virt/DSDT Binary files differnew file mode 100644 index 0000000..20e85c7 --- /dev/null +++ b/tests/data/acpi/virt/DSDT diff --git a/tests/data/acpi/virt/FACP b/tests/data/acpi/virt/FACP Binary files differnew file mode 100644 index 0000000..27de99f --- /dev/null +++ b/tests/data/acpi/virt/FACP diff --git a/tests/data/acpi/virt/GTDT b/tests/data/acpi/virt/GTDT Binary files differnew file mode 100644 index 0000000..10107a6 --- /dev/null +++ b/tests/data/acpi/virt/GTDT diff --git a/tests/data/acpi/virt/MCFG b/tests/data/acpi/virt/MCFG Binary files differnew file mode 100644 index 0000000..e8987e1 --- /dev/null +++ b/tests/data/acpi/virt/MCFG diff --git a/tests/data/acpi/virt/SPCR b/tests/data/acpi/virt/SPCR Binary files differnew file mode 100644 index 0000000..377271a --- /dev/null +++ b/tests/data/acpi/virt/SPCR |