From: "Michael S. Tsirkin" <mst@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"Cornelia Huck" <cornelia.huck@de.ibm.com>,
"Peter Lieven" <pl@kamp.de>, "Jason Wang" <jasowang@redhat.com>,
"Marc-André Lureau" <marcandre.lureau@gmail.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>
Subject: [Qemu-devel] [PULL v2 09/30] virtio: revert host notifiers to old semantics
Date: Tue, 5 Jul 2016 18:46:34 +0300 [thread overview]
Message-ID: <20160705184634-mutt-send-email-mst@redhat.com> (raw)
In-Reply-To: <1467733400-17206-1-git-send-email-mst@redhat.com>
From: Cornelia Huck <cornelia.huck@de.ibm.com>
The host notifier rework tried both to unify host notifiers across
transports and plug a possible hole during host notifier
re-assignment. Unfortunately, this meant a change in semantics that
breaks vhost and iSCSI+dataplane.
As the minimal fix, keep the common host notifier code but revert
to the old semantics so that we have time to figure out the proper
fix.
Fixes: 6798e245a3 ("virtio-bus: common ioeventfd infrastructure")
Reported-by: Peter Lieven <pl@kamp.de>
Reported-by: Jason Wang <jasowang@redhat.com>
Reported-by: Marc-André Lureau <marcandre.lureau@gmail.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Jason Wang <jasowang@redhat.com>
Tested-by: Jason Wang <jasowang@redhat.com>
Tested-by: Peter Lieven <pl@kamp.de>
---
hw/virtio/virtio-bus.c | 26 ++++++++++----------------
1 file changed, 10 insertions(+), 16 deletions(-)
diff --git a/hw/virtio/virtio-bus.c b/hw/virtio/virtio-bus.c
index 1313760..a85b7c8 100644
--- a/hw/virtio/virtio-bus.c
+++ b/hw/virtio/virtio-bus.c
@@ -176,8 +176,8 @@ static int set_host_notifier_internal(DeviceState *proxy, VirtioBusState *bus,
return r;
}
} else {
- virtio_queue_set_host_notifier_fd_handler(vq, false, false);
k->ioeventfd_assign(proxy, notifier, n, assign);
+ virtio_queue_set_host_notifier_fd_handler(vq, false, false);
event_notifier_cleanup(notifier);
}
return r;
@@ -251,31 +251,25 @@ int virtio_bus_set_host_notifier(VirtioBusState *bus, int n, bool assign)
{
VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(bus);
DeviceState *proxy = DEVICE(BUS(bus)->parent);
- VirtIODevice *vdev = virtio_bus_get_device(bus);
- VirtQueue *vq = virtio_get_queue(vdev, n);
if (!k->ioeventfd_started) {
return -ENOSYS;
}
+ k->ioeventfd_set_disabled(proxy, assign);
if (assign) {
/*
* Stop using the generic ioeventfd, we are doing eventfd handling
* ourselves below
+ *
+ * FIXME: We should just switch the handler and not deassign the
+ * ioeventfd.
+ * Otherwise, there's a window where we don't have an
+ * ioeventfd and we may end up with a notification where
+ * we don't expect one.
*/
- k->ioeventfd_set_disabled(proxy, true);
- }
- /*
- * Just switch the handler, don't deassign the ioeventfd.
- * Otherwise, there's a window where we don't have an
- * ioeventfd and we may end up with a notification where
- * we don't expect one.
- */
- virtio_queue_set_host_notifier_fd_handler(vq, assign, !assign);
- if (!assign) {
- /* Use generic ioeventfd handler again. */
- k->ioeventfd_set_disabled(proxy, false);
+ virtio_bus_stop_ioeventfd(bus);
}
- return 0;
+ return set_host_notifier_internal(proxy, bus, n, assign, false);
}
static char *virtio_bus_get_dev_path(DeviceState *dev)
--
MST
next prev parent reply other threads:[~2016-07-05 15:46 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1467733400-17206-1-git-send-email-mst@redhat.com>
2016-07-05 15:46 ` [Qemu-devel] [PULL v2 01/30] xen: fix ram init regression Michael S. Tsirkin
2016-07-05 15:46 ` [Qemu-devel] [PULL v2 02/30] hw/ppc: realize the PCI root bus as part of mac99 init Michael S. Tsirkin
2016-07-05 15:46 ` [Qemu-devel] [PULL v2 03/30] hw/pci: delay bus_master_enable_region initialization Michael S. Tsirkin
2016-07-05 15:46 ` [Qemu-devel] [PULL v2 04/30] q35: allow dynamic sysbus Michael S. Tsirkin
2016-07-05 15:46 ` [Qemu-devel] [PULL v2 05/30] hw/iommu: enable iommu with -device Michael S. Tsirkin
2016-07-05 15:46 ` [Qemu-devel] [PULL v2 06/30] machine: remove iommu property Michael S. Tsirkin
2016-07-05 15:46 ` [Qemu-devel] [PULL v2 07/30] piix: Set I440FXState member pci_info.w32 in one place Michael S. Tsirkin
2016-07-05 15:46 ` [Qemu-devel] [PULL v2 08/30] pc: Eliminate PcPciInfo Michael S. Tsirkin
2016-07-05 15:46 ` Michael S. Tsirkin [this message]
2016-07-05 15:46 ` [Qemu-devel] [PULL v2 10/30] virtio: set low features early on load Michael S. Tsirkin
2016-07-05 15:46 ` [Qemu-devel] [PULL v2 11/30] Revert "virtio-net: unbreak self announcement and guest offloads after migration" Michael S. Tsirkin
2016-07-05 15:46 ` [Qemu-devel] [PULL v2 12/30] pci_register_bar: cleanup Michael S. Tsirkin
2016-07-05 15:46 ` [Qemu-devel] [PULL v2 13/30] log: Clean up misuse of Range for -dfilter Michael S. Tsirkin
2016-07-05 15:46 ` [Qemu-devel] [PULL v2 14/30] range: Eliminate direct Range member access Michael S. Tsirkin
2016-07-05 15:46 ` [Qemu-devel] [PULL v2 15/30] range: Replace internal representation of Range Michael S. Tsirkin
2016-07-05 15:47 ` [Qemu-devel] [PULL v2 16/30] log: Permit -dfilter 0..0xffffffffffffffff Michael S. Tsirkin
2016-07-05 15:47 ` [Qemu-devel] [PULL v2 17/30] tests: acpi: add CPU hotplug testcase Michael S. Tsirkin
2016-07-05 15:47 ` [Qemu-devel] [PULL v2 18/30] tests: add APIC.cphp and DSDT.cphp blobs Michael S. Tsirkin
2016-07-05 15:47 ` [Qemu-devel] [PULL v2 19/30] change pvscsi_init_msi() type to void Michael S. Tsirkin
2016-07-05 15:47 ` [Qemu-devel] [PULL v2 20/30] usb xhci: change msi/msix property type Michael S. Tsirkin
2016-07-05 15:47 ` [Qemu-devel] [PULL v2 21/30] intel-hda: change msi " Michael S. Tsirkin
2016-07-05 15:47 ` [Qemu-devel] [PULL v2 22/30] mptsas: " Michael S. Tsirkin
2016-07-05 15:47 ` [Qemu-devel] [PULL v2 23/30] megasas: change msi/msix " Michael S. Tsirkin
2016-07-05 15:47 ` [Qemu-devel] [PULL v2 24/30] pci bridge dev: change msi " Michael S. Tsirkin
2016-07-05 15:47 ` [Qemu-devel] [PULL v2 25/30] pci: Convert msi_init() to Error and fix callers to check it Michael S. Tsirkin
2016-07-05 15:47 ` [Qemu-devel] [PULL v2 26/30] megasas: remove unnecessary megasas_use_msi() Michael S. Tsirkin
2016-07-05 15:47 ` [Qemu-devel] [PULL v2 27/30] mptsas: remove unnecessary internal msi state flag Michael S. Tsirkin
2016-07-26 5:01 ` Amit Shah
2016-07-26 7:29 ` Cao jin
2016-07-26 11:18 ` Amit Shah
2016-07-26 13:10 ` Michael S. Tsirkin
2016-07-05 15:47 ` [Qemu-devel] [PULL v2 28/30] vmxnet3: " Michael S. Tsirkin
2016-07-05 15:47 ` [Qemu-devel] [PULL v2 29/30] e1000e: " Michael S. Tsirkin
2016-07-05 15:47 ` [Qemu-devel] [PULL v2 30/30] vmw_pvscsi: " Michael S. Tsirkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160705184634-mutt-send-email-mst@redhat.com \
--to=mst@redhat.com \
--cc=cornelia.huck@de.ibm.com \
--cc=jasowang@redhat.com \
--cc=marcandre.lureau@gmail.com \
--cc=marcandre.lureau@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=pl@kamp.de \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).