Re: [Qemu-devel] [PULL 1/1] kvm-all: Partially reverts 4fe6d78b2e to remove the cleanup call

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

 



Please note that Peter usually doesn't work on Wednesdays. The master branch
might remain broken for everyone until tomorrow... :-\

And I don't think this is the right fix anyway. See below.

On Wed, 24 Jan 2018 00:44:14 +0200
"Michael S. Tsirkin" <mst@xxxxxxxxxx> wrote:

> From: Jose Ricardo Ziviani <joserz@xxxxxxxxxxxxxxxxxx>
> 
> This commit partially reverts the commit 4fe6d78b2e because of issues
> reported in the virtio.
> 
> Examples:
> 
> $ qemu-system-ppc64 -cpu POWER8 -nographic -vga none -m 4G \
>   -M pseries,accel=kvm -netdev type=user,id=net0 \
>   -device virtio-net-pci,netdev=net0 -drive file=../disk.qcow2,if=virtio
> 
> Populating /vdevice/nvram@71000001
> Populating /vdevice/v-scsi@71000002
>        SCSI: Looking for devices
>           8200000000000000 CD-ROM   : "QEMU     QEMU CD-ROM      2.5+"
> Populating /pci@800000020000000
>                      00 0000 (D) : 1af4 1000    virtio [ net ]
> Aborted
> 
> $ qemu-system-x86_64 -m 4G -enable-kvm -drive file=util.qcow2,if=virtio
> 
> Running QEMU with GTK 2.x is deprecated, and will be removed
> in a future release. Please switch to GTK 3.x instead
> [1]    5282 abort
> 
> Reference http://lists.nongnu.org/archive/html/qemu-devel/2018-01/msg05457.html
> 
> Reported-by: Anton Blanchard <anton@xxxxxxxxx>
> Signed-off-by: Jose Ricardo Ziviani <joserz@xxxxxxxxxxxxxxxxxx>
> Reviewed-by: Daniel Henrique Barboza <danielhb@xxxxxxxxxxxxxxxxxx>
> Tested-by: Daniel Henrique Barboza <danielhb@xxxxxxxxxxxxxxxxxx>
> Reviewed-by: Michael S. Tsirkin <mst@xxxxxxxxxx>
> Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx>
> ---
>  accel/kvm/kvm-all.c | 4 ----
>  1 file changed, 4 deletions(-)
> 
> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
> index 071f4f5..f290f48 100644
> --- a/accel/kvm/kvm-all.c
> +++ b/accel/kvm/kvm-all.c
> @@ -812,10 +812,6 @@ static void kvm_mem_ioeventfd_del(MemoryListener *listener,
>      if (r < 0) {
>          abort();
>      }
> -
> -    if (e->cleanup) {
> -        e->cleanup(e);
> -    }

This looks wrong as the cleanup is expected to do things like closing fds:

static void virtio_bus_cleanup_event_notifier(EventNotifier *notifier)
{
    /* Test and clear notifier after disabling event,
     * in case poll callback didn't have time to run.
     */
    virtio_queue_host_notifier_read(notifier);
    event_notifier_cleanup(notifier);
}

void event_notifier_cleanup(EventNotifier *e)
{
    if (e->rfd != e->wfd) {
        close(e->rfd);
    }
    close(e->wfd);
    e->rfd = -1;
    e->wfd = -1;
    e->cleanup = NULL;
}

And indeed, with this patch applied, QEMU leaks eventfds on every machine
reset.

>  }
>  
>  static void kvm_io_ioeventfd_add(MemoryListener *listener,




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux