qemu/tests/libqos
Stefan Hajnoczi e77abbe98b libqos: add virtio used ring support
Existing tests do not touch the virtqueue used ring.  Instead they poll
the virtqueue ISR register and peek into their request's device-specific
status field.

It turns out that the virtqueue ISR register can be set to 1 more than
once for a single notification (see commit
83d768b564 "virtio: set ISR on dataplane
notifications").  This causes problems for tests that assume a 1:1
correspondence between the ISR being 1 and request completion.

Peeking at device-specific status fields is also problematic if the
device has no field that can be abused for EINPROGRESS polling
semantics.  This is the case if all the field's values may be set by the
device; there's no magic constant left for polling.

It's time to process the used ring for completed requests, just like a
real virtio guest driver.  This patch adds the necessary APIs.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Tested-by: Eric Blake <eblake@redhat.com>
Tested-by: Kevin Wolf <kwolf@redhat.com>
Message-id: 20170628184724.21378-3-stefanha@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2017-06-30 11:03:45 +01:00
..
ahci.c libqos/ahci: Add get_sense and test_ready 2016-11-14 11:15:55 -05:00
ahci.h libqos/ahci: Add get_sense and test_ready 2016-11-14 11:15:55 -05:00
fw_cfg.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
fw_cfg.h all: Clean up includes 2016-02-23 12:43:05 +00:00
i2c-imx.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
i2c-omap.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
i2c.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
i2c.h all: Clean up includes 2016-02-23 12:43:05 +00:00
libqos-pc.c libqos: use generic qtest_shutdown() 2016-10-06 16:15:53 +11:00
libqos-pc.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
libqos-spapr.c libqos: use generic qtest_shutdown() 2016-10-06 16:15:53 +11:00
libqos-spapr.h libqos: define SPAPR libqos functions 2016-09-23 10:29:40 +10:00
libqos.c tests: don't check if qtest_spapr_boot() returns NULL 2016-10-28 09:36:58 +11:00
libqos.h libqos: use generic qtest_shutdown() 2016-10-06 16:15:53 +11:00
malloc-generic.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
malloc-generic.h libqos: Add malloc generic 2015-03-10 14:02:20 +01:00
malloc-pc.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
malloc-pc.h
malloc-spapr.c libqos: define SPAPR libqos functions 2016-09-23 10:29:40 +10:00
malloc-spapr.h libqos: define SPAPR libqos functions 2016-09-23 10:29:40 +10:00
malloc.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
malloc.h all: Clean up includes 2016-02-23 12:43:05 +00:00
pci-pc.c libqos: Add 64-bit PCI IO accessors 2016-10-28 09:38:27 +11:00
pci-pc.h libqos: add PCI management in qtest_vboot()/qtest_shutdown() 2016-10-06 16:15:53 +11:00
pci-spapr.c libqos: fix spapr qpci_map() 2017-01-31 10:10:13 +11:00
pci-spapr.h libqos: add PPC64 PCI support 2016-10-06 16:15:40 +11:00
pci.c libqos: Change PCI accessors to take opaque BAR handle 2016-10-28 09:38:27 +11:00
pci.h libqos: Change PCI accessors to take opaque BAR handle 2016-10-28 09:38:27 +11:00
rtas.c libqos: add PPC64 PCI support 2016-10-06 16:15:40 +11:00
rtas.h libqos: add PPC64 PCI support 2016-10-06 16:15:40 +11:00
usb.c tests: fix usb-test leaks 2017-03-01 11:51:29 +04:00
usb.h tests: fix usb-test leaks 2017-03-01 11:51:29 +04:00
virtio-mmio.c libqos: Give qvirtio_config_read*() consistent semantics 2016-10-28 09:38:27 +11:00
virtio-mmio.h libqos: Add virtio MMIO support 2015-03-10 14:02:20 +01:00
virtio-pci.c tests: fix virtio-blk-test leaks 2017-03-01 11:58:57 +04:00
virtio-pci.h tests: add specialized device_find function 2017-03-01 11:57:04 +04:00
virtio.c libqos: add virtio used ring support 2017-06-30 11:03:45 +01:00
virtio.h libqos: add virtio used ring support 2017-06-30 11:03:45 +01:00