tests/libqos/virtio.h | 8 ++++++- hw/virtio/virtio-pci.c | 2 +- tests/libqos/virtio.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/virtio-blk-test.c | 27 ++++++++++++++-------- tests/virtio-net-test.c | 6 ++--- tests/virtio-scsi-test.c | 2 +- 6 files changed, 89 insertions(+), 16 deletions(-)
This patch series fixes qemu-iotests 068. Since commit ea4f3cebc4e0224605ab9dd9724aa4e7768fe372 ("qemu-iotests: 068: test iothread mode") the test case has attempted to use dataplane without -M accel=kvm. Although QEMU is capable of running TCG or qtest with emulated ioeventfd/irqfd we haven't enabled it yet. Unfortunately the virtio test cases fail when ioeventfd is enabled in qtest mode. This is because they make assumptions about virtqueue ISR signalling. They assume that a request is completed when ISR becomes 1. However, the ISR can be set to 1 even though no new request has completed since commit 83d768b5640946b7da55ce8335509df297e2c7cd "virtio: set ISR on dataplane notifications". This issue is solved by introducing a proper qvirtqueue_get_buf() API (similar to the Linux guest drivers) instead of making assumptions about the ISR. Most of the patches update the test cases to use the new API. Stefan Hajnoczi (6): libqos: fix typo in virtio.h QVirtQueue->used comment libqos: add virtio used ring support tests: fix virtio-scsi-test ISR dependence tests: fix virtio-blk-test ISR dependence tests: fix virtio-net-test ISR dependence virtio-pci: use ioeventfd even when KVM is disabled tests/libqos/virtio.h | 8 ++++++- hw/virtio/virtio-pci.c | 2 +- tests/libqos/virtio.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/virtio-blk-test.c | 27 ++++++++++++++-------- tests/virtio-net-test.c | 6 ++--- tests/virtio-scsi-test.c | 2 +- 6 files changed, 89 insertions(+), 16 deletions(-) -- 2.9.4
On 06/28/2017 01:47 PM, Stefan Hajnoczi wrote: > This patch series fixes qemu-iotests 068. Since commit > ea4f3cebc4e0224605ab9dd9724aa4e7768fe372 ("qemu-iotests: 068: test iothread > mode") the test case has attempted to use dataplane without -M accel=kvm. > Although QEMU is capable of running TCG or qtest with emulated ioeventfd/irqfd > we haven't enabled it yet. > > Unfortunately the virtio test cases fail when ioeventfd is enabled in qtest > mode. This is because they make assumptions about virtqueue ISR signalling. > They assume that a request is completed when ISR becomes 1. However, the ISR > can be set to 1 even though no new request has completed since commit > 83d768b5640946b7da55ce8335509df297e2c7cd "virtio: set ISR on dataplane > notifications". > > This issue is solved by introducing a proper qvirtqueue_get_buf() API (similar > to the Linux guest drivers) instead of making assumptions about the ISR. Most > of the patches update the test cases to use the new API. > > Stefan Hajnoczi (6): > libqos: fix typo in virtio.h QVirtQueue->used comment > libqos: add virtio used ring support > tests: fix virtio-scsi-test ISR dependence > tests: fix virtio-blk-test ISR dependence > tests: fix virtio-net-test ISR dependence > virtio-pci: use ioeventfd even when KVM is disabled I'm less familiar with the code in question, so I'll let others review, but it did fix the failure of 068 for me. Tested-by: Eric Blake <eblake@redhat.com> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
Am 28.06.2017 um 21:38 hat Eric Blake geschrieben: > On 06/28/2017 01:47 PM, Stefan Hajnoczi wrote: > > This patch series fixes qemu-iotests 068. Since commit > > ea4f3cebc4e0224605ab9dd9724aa4e7768fe372 ("qemu-iotests: 068: test iothread > > mode") the test case has attempted to use dataplane without -M accel=kvm. > > Although QEMU is capable of running TCG or qtest with emulated ioeventfd/irqfd > > we haven't enabled it yet. > > > > Unfortunately the virtio test cases fail when ioeventfd is enabled in qtest > > mode. This is because they make assumptions about virtqueue ISR signalling. > > They assume that a request is completed when ISR becomes 1. However, the ISR > > can be set to 1 even though no new request has completed since commit > > 83d768b5640946b7da55ce8335509df297e2c7cd "virtio: set ISR on dataplane > > notifications". > > > > This issue is solved by introducing a proper qvirtqueue_get_buf() API (similar > > to the Linux guest drivers) instead of making assumptions about the ISR. Most > > of the patches update the test cases to use the new API. > > > > Stefan Hajnoczi (6): > > libqos: fix typo in virtio.h QVirtQueue->used comment > > libqos: add virtio used ring support > > tests: fix virtio-scsi-test ISR dependence > > tests: fix virtio-blk-test ISR dependence > > tests: fix virtio-net-test ISR dependence > > virtio-pci: use ioeventfd even when KVM is disabled > > I'm less familiar with the code in question, so I'll let others review, > but it did fix the failure of 068 for me. > > Tested-by: Eric Blake <eblake@redhat.com> Also passes the virtio-scsi qtest under valgrind for me now. Tested-by: Kevin Wolf <kwolf@redhat.com>
On Wed, Jun 28, 2017 at 07:47:18PM +0100, Stefan Hajnoczi wrote: > This patch series fixes qemu-iotests 068. Since commit > ea4f3cebc4e0224605ab9dd9724aa4e7768fe372 ("qemu-iotests: 068: test iothread > mode") the test case has attempted to use dataplane without -M accel=kvm. > Although QEMU is capable of running TCG or qtest with emulated ioeventfd/irqfd > we haven't enabled it yet. > > Unfortunately the virtio test cases fail when ioeventfd is enabled in qtest > mode. This is because they make assumptions about virtqueue ISR signalling. > They assume that a request is completed when ISR becomes 1. However, the ISR > can be set to 1 even though no new request has completed since commit > 83d768b5640946b7da55ce8335509df297e2c7cd "virtio: set ISR on dataplane > notifications". > > This issue is solved by introducing a proper qvirtqueue_get_buf() API (similar > to the Linux guest drivers) instead of making assumptions about the ISR. Most > of the patches update the test cases to use the new API. > > Stefan Hajnoczi (6): > libqos: fix typo in virtio.h QVirtQueue->used comment > libqos: add virtio used ring support > tests: fix virtio-scsi-test ISR dependence > tests: fix virtio-blk-test ISR dependence > tests: fix virtio-net-test ISR dependence > virtio-pci: use ioeventfd even when KVM is disabled > > tests/libqos/virtio.h | 8 ++++++- > hw/virtio/virtio-pci.c | 2 +- > tests/libqos/virtio.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ > tests/virtio-blk-test.c | 27 ++++++++++++++-------- > tests/virtio-net-test.c | 6 ++--- > tests/virtio-scsi-test.c | 2 +- > 6 files changed, 89 insertions(+), 16 deletions(-) > > -- > 2.9.4 > Thanks, applied to my block tree: https://github.com/stefanha/qemu/commits/block Stefan
On Wed, Jun 28, 2017 at 07:47:18PM +0100, Stefan Hajnoczi wrote: > This patch series fixes qemu-iotests 068. Since commit > ea4f3cebc4e0224605ab9dd9724aa4e7768fe372 ("qemu-iotests: 068: test iothread > mode") the test case has attempted to use dataplane without -M accel=kvm. > Although QEMU is capable of running TCG or qtest with emulated ioeventfd/irqfd > we haven't enabled it yet. > > Unfortunately the virtio test cases fail when ioeventfd is enabled in qtest > mode. This is because they make assumptions about virtqueue ISR signalling. > They assume that a request is completed when ISR becomes 1. However, the ISR > can be set to 1 even though no new request has completed since commit > 83d768b5640946b7da55ce8335509df297e2c7cd "virtio: set ISR on dataplane > notifications". > > This issue is solved by introducing a proper qvirtqueue_get_buf() API (similar > to the Linux guest drivers) instead of making assumptions about the ISR. Most > of the patches update the test cases to use the new API. > > Stefan Hajnoczi (6): > libqos: fix typo in virtio.h QVirtQueue->used comment > libqos: add virtio used ring support > tests: fix virtio-scsi-test ISR dependence > tests: fix virtio-blk-test ISR dependence > tests: fix virtio-net-test ISR dependence > virtio-pci: use ioeventfd even when KVM is disabled Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Feel free to merge. > tests/libqos/virtio.h | 8 ++++++- > hw/virtio/virtio-pci.c | 2 +- > tests/libqos/virtio.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ > tests/virtio-blk-test.c | 27 ++++++++++++++-------- > tests/virtio-net-test.c | 6 ++--- > tests/virtio-scsi-test.c | 2 +- > 6 files changed, 89 insertions(+), 16 deletions(-) > > -- > 2.9.4
© 2016 - 2024 Red Hat, Inc.