qemu-patch-raspberry4/tests
Paolo Bonzini acfb23ad3d AioContext: do not rely on aio_poll(ctx, true) result to end a loop
Currently, whenever aio_poll(ctx, true) has completed all pending
work it returns true *and* the next call to aio_poll(ctx, true)
will not block.

This invariant has its roots in qemu_aio_flush()'s implementation
as "while (qemu_aio_wait()) {}".  However, qemu_aio_flush() does
not exist anymore and bdrv_drain_all() is implemented differently;
and this invariant is complicated to maintain and subtly different
from the return value of GMainLoop's g_main_context_iteration.

All calls to aio_poll(ctx, true) except one are guarded by a
while() loop checking for a request to be incomplete, or a
BlockDriverState to be idle.  The one remaining call (in
iothread.c) uses this to delay the aio_context_release/acquire
pair until the AioContext is quiescent, however:

- we can do the same just by using non-blocking aio_poll,
  similar to how vl.c invokes main_loop_wait

- it is buggy, because it does not ensure that the AioContext
  is released between an aio_notify and the next time the
  iothread goes to sleep.  This leads to hangs when stopping
  the dataplane thread.

In the end, these semantics are a bad match for the current
users of AioContext.  So modify that one exception in iothread.c,
which also fixes the hangs, as well as the testcase so that
it use the same idiom as the actual QEMU code.

Reported-by: Christian Borntraeger <borntraeger@de.ibm.com>
Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2014-07-14 12:03:20 +02:00
..
acpi-test-data acpi-test: update expected tables 2014-06-19 16:41:53 +03:00
libqos qtest: fix qpci_config_writel 2014-06-02 16:28:59 +02:00
multiboot tests: Multiboot mmap test case 2013-10-28 17:34:42 +01:00
qapi-schema qapi script: clean up in scripts 2014-06-27 09:27:56 -04:00
qemu-iotests block/backup: Fix hang for unaligned image size 2014-07-09 15:50:11 +02:00
tcg Xtensa fixes queue 2014-05-26: 2014-05-28 14:47:35 +01:00
vmstate-static-checker-data tests: vmstate static checker: add size mismatch inside substructure 2014-06-23 19:14:52 +02:00
.gitignore tests/.gitignore: Ignore test-rfifolock 2014-04-27 13:04:18 +04:00
ac97-test.c tests: Add ac97 qtest 2014-05-05 20:58:33 +02:00
bios-tables-test.c tests: add smbios testing 2014-05-27 23:42:16 +03:00
blockdev-test.c blockdev-test: add test case for drive_add duplicate IDs 2013-11-07 13:58:58 +01:00
boot-order-test.c qtest: Use -display none by default 2013-11-19 10:28:14 +01:00
check-block.sh Add 'make check-block' 2012-03-12 15:14:07 +01:00
check-qdict.c check-qdict: Add test for qdict_join() 2014-05-19 11:36:48 +02:00
check-qfloat.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
check-qint.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
check-qjson.c json-lexer: fix escaped backslash in single-quoted string 2014-06-23 11:01:24 -04:00
check-qlist.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
check-qom-interface.c tests: Test QOM interface casting 2013-12-24 17:27:17 +01:00
check-qstring.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
display-vga-test.c add secondary-vga to display-vga test 2014-04-28 11:03:39 +02:00
e1000-test.c e1000: remove broken support for 82573L 2014-06-09 15:38:58 +02:00
eepro100-test.c tests: Add eepro100 qtest 2014-02-14 16:22:33 +01:00
endianness-test.c qtest: Include system headers before user headers 2014-02-17 23:10:02 +01:00
es1370-test.c tests: Add es1370 qtest 2014-05-05 20:58:33 +02:00
fdc-test.c libqtest: escape strings in QMP commands, fix leak 2014-07-01 10:20:41 +02:00
fw_cfg-test.c qtest: Include system headers before user headers 2014-02-17 23:10:02 +01:00
hd-geo-test.c qtest: Use -display none by default 2013-11-19 10:28:14 +01:00
i440fx-test.c QOM infrastructure fixes and device conversions 2014-02-20 13:05:48 +00:00
i82801b11-test.c tests: Add i82801b11 qtest 2014-03-31 22:36:17 +02:00
ide-test.c qtest: Fix the bug about disable vnc causes "make check" fail 2014-01-22 12:07:16 +01:00
intel-hda-test.c tests: Add intel-hda qtests 2014-05-05 20:58:33 +02:00
ioh3420-test.c tests: Add ioh3420 qtest 2014-05-05 20:58:33 +02:00
ipoctal232-test.c tests: Add ipoctal232 qtest 2014-02-14 21:07:13 +01:00
libqtest.c libqtest: escape strings in QMP commands, fix leak 2014-07-01 10:20:41 +02:00
libqtest.h qtest: Factor out qtest_qmp_receive() 2014-03-31 22:36:16 +02:00
m48t59-test.c qtest: Include system headers before user headers 2014-02-17 23:10:02 +01:00
Makefile qtest: enable vhost-user-test 2014-07-06 09:13:53 +03:00
ne2000-test.c tests: Add ne2000 qtest 2014-02-14 20:50:19 +01:00
nvme-test.c tests: Add nvme qtest 2014-03-31 22:35:03 +02:00
pcnet-test.c tests: Add pcnet qtest 2014-02-14 16:22:33 +01:00
pvpanic-test.c pvpanic-test: Assert pause event 2014-03-31 22:36:17 +02:00
qdev-monitor-test.c qdev-monitor-test: Don't test human-readable error message 2014-03-12 20:13:02 +01:00
qemu-iotests-quick.sh iotests: Simplify qemu-iotests-quick.sh 2014-07-01 10:15:33 +02:00
qom-test.c libqtest: escape strings in QMP commands, fix leak 2014-07-01 10:20:41 +02:00
rtc-test.c qtest: Include system headers before user headers 2014-02-17 23:10:02 +01:00
rtl8139-test.c tests: Add rtl8139 qtest 2014-02-14 16:22:33 +01:00
spapr-phb-test.c tests: Add spapr-pci-host-bridge qtest 2014-03-13 01:21:57 +01:00
test-aio.c AioContext: do not rely on aio_poll(ctx, true) result to end a loop 2014-07-14 12:03:20 +02:00
test-bitops.c tests: fix 64-bit int literals for 32-bit hosts 2013-11-05 19:59:43 -08:00
test-coroutine.c Test coroutine execution order 2013-11-28 10:30:52 +01:00
test-cutils.c cutils: unsigned int parsing functions 2013-02-04 14:38:33 -06:00
test-hbitmap.c hbitmap: add assertion on hbitmap_iter_init 2013-01-25 18:18:35 +01:00
test-int128.c tests/test-int128: Don't use __noclone__ attribute on clang 2014-03-02 17:20:37 +04:00
test-iov.c test-iov: add iov_discard_front/back() testcases 2013-01-02 15:58:09 +01:00
test-mul64.c tests: Add unit tests for mulu64 and muls64 2013-02-17 14:28:58 +00:00
test-opts-visitor.c tests: fix 64-bit int literals for 32-bit hosts 2013-11-05 19:59:43 -08:00
test-qdev-global-props.c qdev: Add test of qdev_prop_check_global 2014-06-05 19:20:38 +03:00
test-qemu-opts.c QemuOpt: add unit tests 2014-05-28 14:27:42 +02:00
test-qmp-commands.c tests: test-qmp-commands: Fix double free 2014-03-11 09:07:42 -04:00
test-qmp-event.c tests/test-qmp-event: fix for GLib < 2.31 2014-06-30 15:06:11 +02:00
test-qmp-input-strict.c qapi: Replace uncommon use of the error API by the common one 2014-05-15 14:00:46 -04:00
test-qmp-input-visitor.c qapi: Replace uncommon use of the error API by the common one 2014-05-15 14:00:46 -04:00
test-qmp-output-visitor.c tests: Check empty QMP output visitor 2014-05-28 17:36:09 +02:00
test-rfifolock.c rfifolock: add recursive FIFO lock 2014-03-13 14:42:21 +01:00
test-string-input-visitor.c tests: simplify code 2014-06-19 18:44:22 +03:00
test-string-output-visitor.c tests: add human format test for string output visitor 2014-06-29 19:39:43 +03:00
test-thread-pool.c block: drop aio functions that operate on the main AioContext 2014-07-09 15:50:11 +02:00
test-throttle.c throttle: add detach/attach test case 2014-06-04 09:56:12 +02:00
test-visitor-serialization.c qapi: Replace uncommon use of the error API by the common one 2014-05-15 14:00:46 -04:00
test-vmstate.c vmstate: Refactor & increase tests for primitive types 2014-06-23 19:14:52 +02:00
test-x86-cpuid.c target-i386: Topology & APIC ID utility functions 2013-01-27 14:34:27 +01:00
test-xbzrle.c Add XBZRLE testing 2013-02-01 08:32:20 +01:00
tmp105-test.c libqtest: escape strings in QMP commands, fix leak 2014-07-01 10:20:41 +02:00
tpci200-test.c tests: Add tpci200 qtest 2014-02-14 21:02:27 +01:00
usb-hcd-ehci-test.c usb: improve ehci/uhci test 2014-06-02 16:28:59 +02:00
vhost-user-test.c qtest: fix vhost-user-test unbalanced mutex locks 2014-06-23 17:37:59 +03:00
virtio-9p-test.c tests: Add virtio-9p qtest 2014-03-31 22:35:50 +02:00
virtio-balloon-test.c tests: Add virtio-balloon qtest 2014-03-13 01:21:56 +01:00
virtio-blk-test.c tests: Add virtio-blk qtest 2014-03-13 01:21:56 +01:00
virtio-console-test.c virtio-console-test: Test virtserialport as well 2014-03-13 21:12:07 +01:00
virtio-net-test.c tests: Add virtio-net qtest 2014-02-14 21:01:03 +01:00
virtio-rng-test.c tests: Add virtio-rng qtest 2014-03-13 01:21:56 +01:00
virtio-scsi-test.c tests: Add virtio-scsi qtest 2014-03-13 01:21:56 +01:00
virtio-serial-test.c tests: Add virtio-serial qtest 2014-03-13 01:21:57 +01:00
vmxnet3-test.c tests: Add vmxnet3 qtest 2014-02-14 16:22:33 +01:00