[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL for-2.9 9/9] virtio: avoid using guest_notifier_mask
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL for-2.9 9/9] virtio: avoid using guest_notifier_mask in vhost-user mode |
Date: |
Fri, 16 Dec 2016 23:17:53 +0200 |
From: Wei Huang <address@hidden>
Because guest mask notifier cannot be used in vhost-user mode, a boolean
flag "use_guest_notifier_mask" was added in commit 5669655aafd to disable
the use of guest mask notifier under virtio-pci. However this flag wasn't
checked in other virtio devices, such as virtio-mmio. In our tests, it
caused assertion error under "vhost-user + virtio-mmio". This patch
addresses this problem by adding a check before guest_notifier_mask is
called.
Signed-off-by: Wei Huang <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
hw/s390x/virtio-ccw.c | 4 ++--
hw/virtio/virtio-mmio.c | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
index f5c1d98..0765068 100644
--- a/hw/s390x/virtio-ccw.c
+++ b/hw/s390x/virtio-ccw.c
@@ -1098,7 +1098,7 @@ static int virtio_ccw_set_guest_notifier(VirtioCcwDevice
*dev, int n,
* We do not support individual masking for channel devices, so we
* need to manually trigger any guest masking callbacks here.
*/
- if (k->guest_notifier_mask) {
+ if (k->guest_notifier_mask && vdev->use_guest_notifier_mask) {
k->guest_notifier_mask(vdev, n, false);
}
/* get lost events and re-inject */
@@ -1107,7 +1107,7 @@ static int virtio_ccw_set_guest_notifier(VirtioCcwDevice
*dev, int n,
event_notifier_set(notifier);
}
} else {
- if (k->guest_notifier_mask) {
+ if (k->guest_notifier_mask && vdev->use_guest_notifier_mask) {
k->guest_notifier_mask(vdev, n, true);
}
if (with_irqfd) {
diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c
index 17412cb..60654dc 100644
--- a/hw/virtio/virtio-mmio.c
+++ b/hw/virtio/virtio-mmio.c
@@ -402,7 +402,7 @@ static int virtio_mmio_set_guest_notifier(DeviceState *d,
int n, bool assign,
event_notifier_cleanup(notifier);
}
- if (vdc->guest_notifier_mask) {
+ if (vdc->guest_notifier_mask && vdev->use_guest_notifier_mask) {
vdc->guest_notifier_mask(vdev, n, !assign);
}
--
MST
- [Qemu-devel] [PULL for-2.9 0/9] virtio, vhost, pc: fixes, Michael S. Tsirkin, 2016/12/16
- [Qemu-devel] [PULL for-2.9 1/9] tests/vhost-user-bridge: remove false comment, Michael S. Tsirkin, 2016/12/16
- [Qemu-devel] [PULL for-2.9 2/9] tests/vhost-user-bridge: remove unnecessary dispatcher_remove, Michael S. Tsirkin, 2016/12/16
- [Qemu-devel] [PULL for-2.9 3/9] tests/vhost-user-bridge: indicate peer disconnected, Michael S. Tsirkin, 2016/12/16
- [Qemu-devel] [PULL for-2.9 4/9] tests/vhost-user-bridge: do not accept more than one connection, Michael S. Tsirkin, 2016/12/16
- [Qemu-devel] [PULL for-2.9 5/9] contrib: add libvhost-user, Michael S. Tsirkin, 2016/12/16
- [Qemu-devel] [PULL for-2.9 6/9] tests/vhost-user-bridge: use contrib/libvhost-user, Michael S. Tsirkin, 2016/12/16
- [Qemu-devel] [PULL for-2.9 7/9] i386: amd_iommu: fix MMIO register count and access, Michael S. Tsirkin, 2016/12/16
- [Qemu-devel] [PULL for-2.9 8/9] pci: fix error message for express slots, Michael S. Tsirkin, 2016/12/16
- [Qemu-devel] [PULL for-2.9 9/9] virtio: avoid using guest_notifier_mask in vhost-user mode,
Michael S. Tsirkin <=
- Re: [Qemu-devel] [PULL for-2.9 0/9] virtio, vhost, pc: fixes, no-reply, 2016/12/16