qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 1/3] virtio-mmio: introduce set_host_notifier


From: Cornelia Huck
Subject: Re: [Qemu-devel] [PATCH v2 1/3] virtio-mmio: introduce set_host_notifier()
Date: Thu, 7 May 2015 15:37:38 +0200

On Thu, 07 May 2015 13:48:20 +0300
Pavel Fedin <address@hidden> wrote:

> set_host_notifier() is introduced into virtio-mmio now. Most of codes came
> from virtio-pci.
> 
> Signed-off-by: Ying-Shiuan Pan <address@hidden>

Meta-comment #1:

This is almost certainly not the correct email address of the original
author :) I'd recommend to check another archive (e.g. marc.info) that
does not mangle the email addresses in the patch body. The original
author also should go into the author field in git.

> Signed-off-by: Pavel Fedin <address@hidden>
> ---
>  hw/virtio/virtio-mmio.c | 72
> +++++++++++++++++++++++++++++++++++++++++++++++++

Meta-comment #2:

Your patches are word-wrapped, which not only makes them harder to read
but impossible to feed to git am.

>  1 file changed, 72 insertions(+)
> 
(...)

> +static void virtio_mmio_stop_ioeventfd(VirtIOMMIOProxy *proxy)
> +{
> +    int r;
> +    int n;
> +    VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus);
> +
> +    if (!proxy->ioeventfd_started) {
> +        return;
> +    }
> +
> +    for (n = 0; n < VIRTIO_PCI_QUEUE_MAX; n++) {
> +        if (!virtio_queue_get_num(vdev, n)) {
> +            continue;
> +        }
> +
> +        r = virtio_mmio_set_host_notifier_internal(proxy, n, false, false);
> +        assert(r >= 0);
> +    }
> +    proxy->ioeventfd_started = false;
> +}
> +
>  static uint64_t virtio_mmio_read(void *opaque, hwaddr offset, unsigned
> size)
>  {
>      VirtIOMMIOProxy *proxy = (VirtIOMMIOProxy *)opaque;
> @@ -342,6 +394,25 @@ static void virtio_mmio_reset(DeviceState *d)
>      proxy->guest_page_shift = 0;
>  }
> 
> +static int virtio_mmio_set_host_notifier(DeviceState *opaque, int n,
> +                                         bool assign)
> +{
> +    VirtIOMMIOProxy *proxy = VIRTIO_MMIO(opaque);
> +
> +    /* Stop using ioeventfd for virtqueue kick if the device starts using
> host
> +     * notifiers.  This makes it easy to avoid stepping on each others'
> toes.
> +     */
> +    proxy->ioeventfd_disabled = assign;
> +    if (assign) {
> +        virtio_mmio_stop_ioeventfd(proxy);
> +    }
> +    /* We don't need to start here: it's not needed because backend
> +     * currently only stops on status change away from ok,
> +     * reset, vmstop and such. If we do add code to start here,
> +     * need to check vmstate, device state etc. */
> +    return virtio_mmio_set_host_notifier_internal(proxy, n, assign, false);
> +}
> +

Much of this looks basically the same across any transport supporting
ioeventfds (pci, ccw and now mmio) - only actually setting up the
notifiers is transport-specific. A case for common helper functions?




reply via email to

[Prev in Thread] Current Thread [Next in Thread]