On Wed, 12 Apr 2023 09:18:25 -0300 Fabiano Rosas <faro...@suse.de> wrote:
> It is possible to have a build with both TCG and KVM disabled due to > Xen requiring the i386 and x86_64 binaries to be present in an aarch64 > host. > > If we build with --disable-tcg on the aarch64 host, we will end-up > with a QEMU binary (x86) that does not support TCG nor KVM. > > Skip tests that crash or hang in the above scenario. Do not include > any test cases if TCG and KVM are missing. > > Make sure that calls to qtest_has_accel are placed after g_test_init > in similar fashion to commit ae4b01b349 ("tests: Ensure TAP version is > printed before other messages") to avoid TAP parsing errors. > > Signed-off-by: Fabiano Rosas <faro...@suse.de> > Reviewed-by: Juan Quintela <quint...@redhat.com> > --- > tests/qtest/bios-tables-test.c | 11 +++++++++-- > tests/qtest/boot-serial-test.c | 5 +++++ > tests/qtest/migration-test.c | 9 ++++++++- > tests/qtest/pxe-test.c | 8 +++++++- > tests/qtest/vmgenid-test.c | 9 +++++++-- > 5 files changed, 36 insertions(+), 6 deletions(-) > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c > index 8733589437..9c3642717d 100644 > --- a/tests/qtest/bios-tables-test.c > +++ b/tests/qtest/bios-tables-test.c > @@ -2082,8 +2082,7 @@ static void test_acpi_virt_oem_fields(void) > int main(int argc, char *argv[]) > { > const char *arch = qtest_get_arch(); > - const bool has_kvm = qtest_has_accel("kvm"); > - const bool has_tcg = qtest_has_accel("tcg"); > + bool has_kvm, has_tcg; > char *v_env = getenv("V"); > int ret; > > @@ -2093,6 +2092,14 @@ int main(int argc, char *argv[]) > > g_test_init(&argc, &argv, NULL); > > + has_kvm = qtest_has_accel("kvm"); > + has_tcg = qtest_has_accel("tcg"); > + > + if (!has_tcg && !has_kvm) { > + g_test_skip("No accelerator available"); perhaps 'No KVM or TCG ...' would be a bit better > + return 0; > + } > + > if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) { > ret = boot_sector_init(disk); > if (ret) { > diff --git a/tests/qtest/boot-serial-test.c b/tests/qtest/boot-serial-test.c > index 3aef3a97a9..28bab3d5e4 100644 > --- a/tests/qtest/boot-serial-test.c > +++ b/tests/qtest/boot-serial-test.c > @@ -287,6 +287,11 @@ int main(int argc, char *argv[]) > > g_test_init(&argc, &argv, NULL); > > + if (!qtest_has_accel("tcg") && !qtest_has_accel("kvm")) { > + g_test_skip("No accelerator available"); > + return 0; > + } > + > for (i = 0; tests[i].arch != NULL; i++) { > if (g_str_equal(arch, tests[i].arch) && > qtest_has_machine(tests[i].machine)) { > diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c > index 3b615b0da9..24deb2d432 100644 > --- a/tests/qtest/migration-test.c > +++ b/tests/qtest/migration-test.c > @@ -2462,7 +2462,7 @@ static bool kvm_dirty_ring_supported(void) > > int main(int argc, char **argv) > { > - bool has_kvm; > + bool has_kvm, has_tcg; > bool has_uffd; > const char *arch; > g_autoptr(GError) err = NULL; > @@ -2471,6 +2471,13 @@ int main(int argc, char **argv) > g_test_init(&argc, &argv, NULL); > > has_kvm = qtest_has_accel("kvm"); > + has_tcg = qtest_has_accel("tcg"); > + > + if (!has_tcg && !has_kvm) { > + g_test_skip("No accelerator available"); > + return 0; > + } > + > has_uffd = ufd_version_check(); > arch = qtest_get_arch(); > > diff --git a/tests/qtest/pxe-test.c b/tests/qtest/pxe-test.c > index 62b6eef464..5813adcf56 100644 > --- a/tests/qtest/pxe-test.c > +++ b/tests/qtest/pxe-test.c > @@ -131,11 +131,17 @@ int main(int argc, char *argv[]) > int ret; > const char *arch = qtest_get_arch(); > > + g_test_init(&argc, &argv, NULL); > + > + if (!qtest_has_accel("tcg") && !qtest_has_accel("kvm")) { > + g_test_skip("No accelerator available"); > + return 0; > + } > + > ret = boot_sector_init(disk); > if(ret) > return ret; > > - g_test_init(&argc, &argv, NULL); > > if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) { > test_batch(x86_tests, false); > diff --git a/tests/qtest/vmgenid-test.c b/tests/qtest/vmgenid-test.c > index efba76e716..a597cde707 100644 > --- a/tests/qtest/vmgenid-test.c > +++ b/tests/qtest/vmgenid-test.c > @@ -165,13 +165,18 @@ int main(int argc, char **argv) > { > int ret; > > + g_test_init(&argc, &argv, NULL); > + > + if (!qtest_has_accel("tcg") && !qtest_has_accel("kvm")) { > + g_test_skip("No accelerator available"); > + return 0; > + } > + > ret = boot_sector_init(disk); > if (ret) { > return ret; > } > > - g_test_init(&argc, &argv, NULL); > - > qtest_add_func("/vmgenid/vmgenid/set-guid", > vmgenid_set_guid_test); > qtest_add_func("/vmgenid/vmgenid/set-guid-auto",