On 18/11/2015 21:49, Michael S. Tsirkin wrote: > On Wed, Nov 18, 2015 at 10:02:58AM +0100, marcandre.lur...@redhat.com wrote: >> From: Marc-André Lureau <marcandre.lur...@redhat.com> >> >> vhost-user-test prints a warning. A test should not need to run on >> hugetlbfs, let's silence the warning under qtest. The >> condition can't check on qtest_enabled() since vhost-user-test actually >> doesn't use qtest accel. However, qtest_driver() can be used, if >> qtest_init() is called early enough. For that reason, move chardev and >> qtest initialization early. >> >> Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> > > Seems ok, and let us bring back the 2.4 test that was > dropped in 2.5, but I'd like an ack on this from someone else.
I wonder if we need the warning at all, but this patch is okay. Anyhow: - if (qemu_opts_foreach(qemu_find_opts("object"), - object_create, - object_create_initial, NULL)) { + if (qemu_opts_foreach(qemu_find_opts("chardev"), + chardev_init_func, NULL, NULL)) { exit(1); } - if (qemu_opts_foreach(qemu_find_opts("chardev"), - chardev_init_func, NULL, NULL)) { + if (qtest_chrdev) { + Error *local_err = NULL; + qtest_init(qtest_chrdev, qtest_log, &local_err); + if (local_err) { + error_report_err(local_err); + exit(1); + } + } + + if (qemu_opts_foreach(qemu_find_opts("object"), + object_create, + object_create_initial, NULL)) { exit(1); } Before: object-initial, chardev, qtest, object-late (not in the patch) After: chardev, qtest, object-initial, object-late (not in the patch) Objects must be initialized before chardev (except rng-egd) since in the future chardev will need to use objects, in particular secret objects. Was the swap intentional? Paolo @@ -4325,15 +4334,6 @@ int main(int argc, char **argv, char **envp) configure_accelerator(current_machine); - if (qtest_chrdev) { - Error *local_err = NULL; - qtest_init(qtest_chrdev, qtest_log, &local_err); - if (local_err) { - error_report_err(local_err); - exit(1); - } - } > Anyone? > >> --- >> exec.c | 5 ++++- >> vl.c | 28 ++++++++++++++-------------- >> 2 files changed, 18 insertions(+), 15 deletions(-) >> >> diff --git a/exec.c b/exec.c >> index b09f18b..acbd4a2 100644 >> --- a/exec.c >> +++ b/exec.c >> @@ -51,6 +51,7 @@ >> #include "qemu/main-loop.h" >> #include "translate-all.h" >> #include "sysemu/replay.h" >> +#include "sysemu/qtest.h" >> >> #include "exec/memory-internal.h" >> #include "exec/ram_addr.h" >> @@ -1196,8 +1197,10 @@ static long gethugepagesize(const char *path, Error >> **errp) >> return 0; >> } >> >> - if (fs.f_type != HUGETLBFS_MAGIC) >> + if (!qtest_driver() && >> + fs.f_type != HUGETLBFS_MAGIC) { >> fprintf(stderr, "Warning: path not on HugeTLBFS: %s\n", path); >> + } >> >> return fs.f_bsize; >> } >> diff --git a/vl.c b/vl.c >> index 7d993a5..f9c661a 100644 >> --- a/vl.c >> +++ b/vl.c >> @@ -4288,14 +4288,23 @@ int main(int argc, char **argv, char **envp) >> page_size_init(); >> socket_init(); >> >> - if (qemu_opts_foreach(qemu_find_opts("object"), >> - object_create, >> - object_create_initial, NULL)) { >> + if (qemu_opts_foreach(qemu_find_opts("chardev"), >> + chardev_init_func, NULL, NULL)) { >> exit(1); >> } >> >> - if (qemu_opts_foreach(qemu_find_opts("chardev"), >> - chardev_init_func, NULL, NULL)) { >> + if (qtest_chrdev) { >> + Error *local_err = NULL; >> + qtest_init(qtest_chrdev, qtest_log, &local_err); >> + if (local_err) { >> + error_report_err(local_err); >> + exit(1); >> + } >> + } >> + >> + if (qemu_opts_foreach(qemu_find_opts("object"), >> + object_create, >> + object_create_initial, NULL)) { >> exit(1); >> } >> >> @@ -4325,15 +4334,6 @@ int main(int argc, char **argv, char **envp) >> >> configure_accelerator(current_machine); >> >> - if (qtest_chrdev) { >> - Error *local_err = NULL; >> - qtest_init(qtest_chrdev, qtest_log, &local_err); >> - if (local_err) { >> - error_report_err(local_err); >> - exit(1); >> - } >> - } >> - >> machine_opts = qemu_get_machine_opts(); >> kernel_filename = qemu_opt_get(machine_opts, "kernel"); >> initrd_filename = qemu_opt_get(machine_opts, "initrd"); >> -- >> 2.5.0