[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PULL 11/61] virtio-pci: use ioeventfd even when KVM is
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-block] [PULL 11/61] virtio-pci: use ioeventfd even when KVM is disabled |
Date: |
Wed, 28 Jun 2017 12:22:13 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Am 28.06.2017 um 12:11 hat QingFeng Hao geschrieben:
> 在 2017/6/24 0:21, Kevin Wolf 写道:
> >From: Stefan Hajnoczi <address@hidden>
> >
> >Old kvm.ko versions only supported a tiny number of ioeventfds so
> >virtio-pci avoids ioeventfds when kvm_has_many_ioeventfds() returns 0.
> >
> >Do not check kvm_has_many_ioeventfds() when KVM is disabled since it
> >always returns 0. Since commit 8c56c1a592b5092d91da8d8943c17777d6462a6f
> >("memory: emulate ioeventfd") it has been possible to use ioeventfds in
> >qtest or TCG mode.
> >
> >This patch makes -device virtio-blk-pci,iothread=iothread0 work even
> >when KVM is disabled.
> >
> >I have tested that virtio-blk-pci works under TCG both with and without
> >iothread.
> >
> >Cc: Michael S. Tsirkin <address@hidden>
> >Signed-off-by: Stefan Hajnoczi <address@hidden>
> >Reviewed-by: Michael S. Tsirkin <address@hidden>
> >Signed-off-by: Kevin Wolf <address@hidden>
> >---
> > hw/virtio/virtio-pci.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> >diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
> >index 20d6a08..301920e 100644
> >--- a/hw/virtio/virtio-pci.c
> >+++ b/hw/virtio/virtio-pci.c
> >@@ -1740,7 +1740,7 @@ static void virtio_pci_realize(PCIDevice *pci_dev,
> >Error **errp)
> > bool pcie_port = pci_bus_is_express(pci_dev->bus) &&
> > !pci_bus_is_root(pci_dev->bus);
> >
> >- if (!kvm_has_many_ioeventfds()) {
> >+ if (kvm_enabled() && !kvm_has_many_ioeventfds()) {
> > proxy->flags &= ~VIRTIO_PCI_FLAG_USE_IOEVENTFD;
> > }
> This response is actually for mail thread "Re: [Qemu-devel] [PATCH
> 1/5] virtio-pci: use ioeventfd even when KVM is disabled"
> which I didn't receive, sorry.
> I also saw the failed case of 068 as Fam due to the same cause on
> s390x and x86.
> With this patch applied, no failure found. Further investigation
> shows that the error is in
> virtio_scsi_dataplane_setup:
> if (!virtio_device_ioeventfd_enabled(vdev)) {
> error_setg(errp, "ioeventfd is required for iothread");
> return;
> }
> call flow is:
> virtio_device_ioeventfd_enabled-->virtio_bus_ioeventfd_enabled
> -->k->ioeventfd_enabled-->virtio_pci_ioeventfd_enabled
> virtio_pci_ioeventfd_enabled checks flag
> VIRTIO_PCI_FLAG_USE_IOEVENTFD which was
> cleared in virtio_pci_realize if this patch isn't applied.
Yes, we know all of this. However, this patch is not correct and causes
'make check' failures on some platforms. The open question is where that
failure comes from. Before this is solved, the patch can't be applied.
Kevin
- [Qemu-block] [PULL 06/61] migration: avoid recursive AioContext locking in save_vmstate(), (continued)
- [Qemu-block] [PULL 06/61] migration: avoid recursive AioContext locking in save_vmstate(), Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 07/61] migration: use bdrv_drain_all_begin/end() instead bdrv_drain_all(), Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 10/61] throttle: Update throttle-groups.c documentation, Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 09/61] doc: Document driver-specific -blockdev options, Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 08/61] doc: Document generic -blockdev options, Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 12/61] migration: hold AioContext lock for loadvm qemu_fclose(), Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 13/61] qemu-iotests: 068: extract _qemu() function, Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 14/61] qemu-iotests: 068: use -drive/-device instead of -hda, Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 11/61] virtio-pci: use ioeventfd even when KVM is disabled, Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 15/61] qemu-iotests: 068: test iothread mode, Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 17/61] qcow2: Remove unused Error variable in do_perform_cow(), Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 18/61] qcow2: Use unsigned int for both members of Qcow2COWRegion, Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 20/61] qcow2: Split do_perform_cow() into _read(), _encrypt() and _write(), Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 16/61] nvme: Add support for Read Data and Write Data in CMBs., Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 19/61] qcow2: Make perform_cow() call do_perform_cow() twice, Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 21/61] qcow2: Allow reading both COW regions with only one request, Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 22/61] qcow2: Pass a QEMUIOVector to do_perform_cow_{read, write}(), Kevin Wolf, 2017/06/23
- [Qemu-block] [PULL 26/61] qed: Make qed_read_table() synchronous, Kevin Wolf, 2017/06/23