* [Qemu-devel] [PATCHv3 for-1.5] virtio-pci: fix level interrupts
@ 2013-05-07 12:49 Michael S. Tsirkin
2013-05-08 18:29 ` Michael S. Tsirkin
2013-05-13 21:25 ` Anthony Liguori
0 siblings, 2 replies; 3+ messages in thread
From: Michael S. Tsirkin @ 2013-05-07 12:49 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Paolo Bonzini, Anthony Liguori, Michael S. Tsirkin,
KONRAD Frederic
mask notifiers are never called without msix,
so devices with backend masking like vhost don't work.
Call mask notifiers explicitly at
startup/cleanup to make it work.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Alexander Graf <agraf@suse.de>
---
changes from v2:
fix bug spotted by Konrad
changes from v1:
rebased to master
I'm guessing this missed 1.5. Added for-1.5 just in
case - probably should go into 1.5.1.
hw/virtio/virtio-pci.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
index d8708c1..195ee04 100644
--- a/hw/virtio/virtio-pci.c
+++ b/hw/virtio/virtio-pci.c
@@ -744,6 +744,7 @@ static int virtio_pci_set_guest_notifier(DeviceState *d, int n, bool assign,
bool with_irqfd)
{
VirtIOPCIProxy *proxy = to_virtio_pci_proxy(d);
+ VirtioDeviceClass *vdc = VIRTIO_DEVICE_GET_CLASS(proxy->vdev);
VirtQueue *vq = virtio_get_queue(proxy->vdev, n);
EventNotifier *notifier = virtio_queue_get_guest_notifier(vq);
@@ -758,6 +759,10 @@ static int virtio_pci_set_guest_notifier(DeviceState *d, int n, bool assign,
event_notifier_cleanup(notifier);
}
+ if (!msix_enabled(&proxy->pci_dev) && vdc->guest_notifier_mask) {
+ vdc->guest_notifier_mask(proxy->vdev, n, !assign);
+ }
+
return 0;
}
--
MST
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCHv3 for-1.5] virtio-pci: fix level interrupts
2013-05-07 12:49 [Qemu-devel] [PATCHv3 for-1.5] virtio-pci: fix level interrupts Michael S. Tsirkin
@ 2013-05-08 18:29 ` Michael S. Tsirkin
2013-05-13 21:25 ` Anthony Liguori
1 sibling, 0 replies; 3+ messages in thread
From: Michael S. Tsirkin @ 2013-05-08 18:29 UTC (permalink / raw)
To: qemu-devel; +Cc: Peter Maydell, Paolo Bonzini, Anthony Liguori, KONRAD Frederic
On Tue, May 07, 2013 at 03:49:58PM +0300, Michael S. Tsirkin wrote:
> mask notifiers are never called without msix,
> so devices with backend masking like vhost don't work.
> Call mask notifiers explicitly at
> startup/cleanup to make it work.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> Tested-by: Alexander Graf <agraf@suse.de>
> ---
>
> changes from v2:
> fix bug spotted by Konrad
> changes from v1:
> rebased to master
>
> I'm guessing this missed 1.5. Added for-1.5 just in
> case - probably should go into 1.5.1.
Not sure I made this clear.
If we can put it in 1.5 great, if not it must go into
stable branch.
> hw/virtio/virtio-pci.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
> index d8708c1..195ee04 100644
> --- a/hw/virtio/virtio-pci.c
> +++ b/hw/virtio/virtio-pci.c
> @@ -744,6 +744,7 @@ static int virtio_pci_set_guest_notifier(DeviceState *d, int n, bool assign,
> bool with_irqfd)
> {
> VirtIOPCIProxy *proxy = to_virtio_pci_proxy(d);
> + VirtioDeviceClass *vdc = VIRTIO_DEVICE_GET_CLASS(proxy->vdev);
> VirtQueue *vq = virtio_get_queue(proxy->vdev, n);
> EventNotifier *notifier = virtio_queue_get_guest_notifier(vq);
>
> @@ -758,6 +759,10 @@ static int virtio_pci_set_guest_notifier(DeviceState *d, int n, bool assign,
> event_notifier_cleanup(notifier);
> }
>
> + if (!msix_enabled(&proxy->pci_dev) && vdc->guest_notifier_mask) {
> + vdc->guest_notifier_mask(proxy->vdev, n, !assign);
> + }
> +
> return 0;
> }
>
> --
> MST
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCHv3 for-1.5] virtio-pci: fix level interrupts
2013-05-07 12:49 [Qemu-devel] [PATCHv3 for-1.5] virtio-pci: fix level interrupts Michael S. Tsirkin
2013-05-08 18:29 ` Michael S. Tsirkin
@ 2013-05-13 21:25 ` Anthony Liguori
1 sibling, 0 replies; 3+ messages in thread
From: Anthony Liguori @ 2013-05-13 21:25 UTC (permalink / raw)
To: Michael S. Tsirkin, qemu-devel
Cc: Peter Maydell, Paolo Bonzini, KONRAD Frederic
"Michael S. Tsirkin" <mst@redhat.com> writes:
> mask notifiers are never called without msix,
> so devices with backend masking like vhost don't work.
> Call mask notifiers explicitly at
> startup/cleanup to make it work.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> Tested-by: Alexander Graf <agraf@suse.de>
Applied, thanks. There was no notification email because I applied it
by hand because the subject is not well formed.
Regards,
Anthony Liguori
> ---
>
> changes from v2:
> fix bug spotted by Konrad
> changes from v1:
> rebased to master
>
> I'm guessing this missed 1.5. Added for-1.5 just in
> case - probably should go into 1.5.1.
>
> hw/virtio/virtio-pci.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
> index d8708c1..195ee04 100644
> --- a/hw/virtio/virtio-pci.c
> +++ b/hw/virtio/virtio-pci.c
> @@ -744,6 +744,7 @@ static int virtio_pci_set_guest_notifier(DeviceState *d, int n, bool assign,
> bool with_irqfd)
> {
> VirtIOPCIProxy *proxy = to_virtio_pci_proxy(d);
> + VirtioDeviceClass *vdc = VIRTIO_DEVICE_GET_CLASS(proxy->vdev);
> VirtQueue *vq = virtio_get_queue(proxy->vdev, n);
> EventNotifier *notifier = virtio_queue_get_guest_notifier(vq);
>
> @@ -758,6 +759,10 @@ static int virtio_pci_set_guest_notifier(DeviceState *d, int n, bool assign,
> event_notifier_cleanup(notifier);
> }
>
> + if (!msix_enabled(&proxy->pci_dev) && vdc->guest_notifier_mask) {
> + vdc->guest_notifier_mask(proxy->vdev, n, !assign);
> + }
> +
> return 0;
> }
>
> --
> MST
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2013-05-13 21:26 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-07 12:49 [Qemu-devel] [PATCHv3 for-1.5] virtio-pci: fix level interrupts Michael S. Tsirkin
2013-05-08 18:29 ` Michael S. Tsirkin
2013-05-13 21:25 ` Anthony Liguori
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).