Skip to contentSkip to conversation

main-loop: Suppress "I/O thread spun" warnings for qtest

PATCH In review Peter Maydell 3 participants 5 messages Mar 13, 2014 – Mar 14, 2014

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 main-loop: Suppress "I/O thread spun" warnings for qtest

When running under qtest we don't actually have any vcpu threads to be starved, so the warning about the I/O thread spinning isn't relevant, and the way qtest manipulates the simulated clock means the warning is produced a lot as a false positive. Suppress it if qtest_enabled(), so 'make check' output is less noisy.

---
 main-loop.c         |  3 ++-
 stubs/Makefile.objs |  1 +
 stubs/qtest.c       | 14 ++++++++++++++
 3 files changed, 17 insertions(+), 1 deletion(-)
 create mode 100644 stubs/qtest.c
main-loop.c +2 -1
index c3c9c28..8a85493 100644
@@ -25,6 +25,7 @@
 #include "qemu-common.h"
 #include "qemu/timer.h"
 #include "qemu/sockets.h"	// struct in_addr needed for libslirp.h
+#include "sysemu/qtest.h"
 #include "slirp/libslirp.h"
 #include "qemu/main-loop.h"
 #include "block/aio.h"
@@ -208,7 +209,7 @@ static int os_host_main_loop_wait(int64_t timeout)
     if (!timeout && (spin_counter > MAX_MAIN_LOOP_SPIN)) {
         static bool notified;
 
-        if (!notified) {
+        if (!notified && !qtest_enabled()) {
             fprintf(stderr,
                     "main-loop: WARNING: I/O thread spun for %d iterations\n",
                     MAX_MAIN_LOOP_SPIN);
stubs/Makefile.objs +1 -0
index df3aa7a..6f06fca 100644
@@ -28,3 +28,4 @@ stub-obj-y += vmstate.o
 stub-obj-$(CONFIG_WIN32) += fd-register.o
 stub-obj-y += cpus.o
 stub-obj-y += kvm.o
+stub-obj-y += qtest.o
stubs/qtest.c new file +14 -0
new file mode 100644
index 0000000..e671ed8
@@ -0,0 +1,14 @@
+/*
+ * qtest stubs
+ *
+ * Copyright (c) 2014 Linaro Limited
+ * Written by Peter Maydell
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#include "qemu-common.h"
+
+/* Needed for qtest_allowed() */
+bool qtest_allowed;
Signature · 1 line
1.9.0
Reviewed-by on v1 1/1
#1 lore raw

Am 13.03.2014 15:17, schrieb Peter Maydell:

Quoted 6 lines

When running under qtest we don't actually have any vcpu threads to be starved, so the warning about the I/O thread spinning isn't relevant, and the way qtest manipulates the simulated clock means the warning is produced a lot as a false positive. Suppress it if qtest_enabled(), so 'make check' output is less noisy.

Quoted 7 lines
---
 main-loop.c         |  3 ++-
 stubs/Makefile.objs |  1 +
 stubs/qtest.c       | 14 ++++++++++++++
 3 files changed, 17 insertions(+), 1 deletion(-)
 create mode 100644 stubs/qtest.c

Looks OK to me, a bit unfortunate that we need a stub, but

Thanks,
Andreas

Signature · 2 lines
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
Reviewed-by on v1 1/1
#2 lore raw
In reply to Peter Maydell
Quoted 6 lines · Peter Maydell

When running under qtest we don't actually have any vcpu threads to be starved, so the warning about the I/O thread spinning isn't relevant, and the way qtest manipulates the simulated clock means the warning is produced a lot as a false positive. Suppress it if qtest_enabled(), so 'make check' output is less noisy.

Quoted 7 lines
---
 main-loop.c         |  3 ++-
 stubs/Makefile.objs |  1 +
 stubs/qtest.c       | 14 ++++++++++++++
 3 files changed, 17 insertions(+), 1 deletion(-)
 create mode 100644 stubs/qtest.c
#3 lore raw
In reply to Peter Maydell

Am 13.03.2014 15:17, schrieb Peter Maydell:

Quoted 7 lines

When running under qtest we don't actually have any vcpu threads to be starved, so the warning about the I/O thread spinning isn't relevant, and the way qtest manipulates the simulated clock means the warning is produced a lot as a false positive. Suppress it if qtest_enabled(), so 'make check' output is less noisy.

[...]

stubs/Makefile.objs stub-obj-y += vmstate.o · line 31

Quoted 9 lines
stubs/Makefile.objs +1 -0
index df3aa7a..6f06fca 100644
@@ -28,3 +28,4 @@ stub-obj-y += vmstate.o
 stub-obj-$(CONFIG_WIN32) += fd-register.o
 stub-obj-y += cpus.o
 stub-obj-y += kvm.o
+stub-obj-y += qtest.o

[snip]

Please note that the stubs are supposed to be sorted alphabetically.

I'm still seeing two instances of the warning for i386 and x86_64 each. But it's a clear improvement.

Thanks, applying to qom-next (with Makefile tweaked):
https://github.com/afaerber/qemu-cpu/commits/qom-next

Andreas

Signature · 2 lines
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
#4 lore raw
Quoted 20 lines · Andreas Färber

Am 13.03.2014 15:17, schrieb Peter Maydell:

Quoted 7 lines

When running under qtest we don't actually have any vcpu threads to be starved, so the warning about the I/O thread spinning isn't relevant, and the way qtest manipulates the simulated clock means the warning is produced a lot as a false positive. Suppress it if qtest_enabled(), so 'make check' output is less noisy.

[...]

Quoted 9 lines
stubs/Makefile.objs +1 -0
index df3aa7a..6f06fca 100644
@@ -28,3 +28,4 @@ stub-obj-y += vmstate.o
 stub-obj-$(CONFIG_WIN32) += fd-register.o
 stub-obj-y += cpus.o
 stub-obj-y += kvm.o
+stub-obj-y += qtest.o

[snip]

Quoted 1 line

Please note that the stubs are supposed to be sorted alphabetically.

OK. I looked at the tail end of the file (which as you can see is not in order) and thought we weren't trying to maintain an order here. I guess that's just previous commits also adding at the end of the file, though...

thanks
-- PMM