Message ID | 20230412121829.14452-8-farosas@suse.de |
---|---|
State | New |
Headers | show |
Series | target/arm: Allow CONFIG_TCG=n builds | expand |
On Wed, 12 Apr 2023 09:18:25 -0300 Fabiano Rosas <farosas@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 <farosas@suse.de> > Reviewed-by: Juan Quintela <quintela@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",
On 12/04/2023 14.18, Fabiano Rosas 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 <farosas@suse.de> > Reviewed-by: Juan Quintela <quintela@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(-) Reviewed-by: Thomas Huth <thuth@redhat.com>
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"); + 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",