Message ID | 726a3292-9e27-6748-9669-a7c21cbf3b6e@redhat.com |
---|---|
State | New |
Headers | show |
On Wed, 22 Feb 2017 10:03:56 +0100 Paolo Bonzini <pbonzini@redhat.com> wrote: > On 21/02/2017 18:54, Laszlo Ersek wrote: > > Actually, QEMU segfaults. From the dmesg: > > > > [Tue Feb 21 18:47:28 2017] CPU 0/KVM[8298]: segfault at 48 ip > > 00007fcb5dd02105 sp 00007fcb49efc270 error 4 in > > qemu-system-x86_64[7fcb5dae3000+905000] > > > > Complete backtrace below. (Thread 11 seems to be the one > > segfaulting.) > > Indeed. It's the virtio-blk device that is segfaulting, please try > this one liner (haven't reproduced it, but it seems obvious with the > backtrace and some sleep). I hit this as well, the patch below resolves it. Tested-by: Alex Williamson <alex.williamson@redhat.com> > commit c1aa478c7181c543606ca81404c59e126d66213d > Author: Paolo Bonzini <pbonzini@redhat.com> > Date: Wed Feb 22 10:02:37 2017 +0100 > > virtio: check for vring setup in virtio_queue_empty > > If the vring has not been set up, there is nothing in the virtqueue. > virtio_queue_host_notifier_aio_poll calls virtio_queue_empty even in > this case; we have to filter it out just like virtio_queue_notify_aio_vq. > > Reported-by: Gerd Hoffmann <kraxel@redhat.com> > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > > diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c > index 23483c7..e487e36 100644 > --- a/hw/virtio/virtio.c > +++ b/hw/virtio/virtio.c > @@ -2291,7 +2291,7 @@ static bool virtio_queue_host_notifier_aio_poll(void *opaque) > VirtQueue *vq = container_of(n, VirtQueue, host_notifier); > bool progress; > > - if (virtio_queue_empty(vq)) { > + if (!vq->vring.desc || virtio_queue_empty(vq)) { > return false; > } > >
Hello, On 02/23/2017 01:32 AM, Alex Williamson wrote: > On Wed, 22 Feb 2017 10:03:56 +0100 > Paolo Bonzini <pbonzini@redhat.com> wrote: > >> On 21/02/2017 18:54, Laszlo Ersek wrote: >>> Actually, QEMU segfaults. From the dmesg: >>> >>> [Tue Feb 21 18:47:28 2017] CPU 0/KVM[8298]: segfault at 48 ip >>> 00007fcb5dd02105 sp 00007fcb49efc270 error 4 in >>> qemu-system-x86_64[7fcb5dae3000+905000] >>> >>> Complete backtrace below. (Thread 11 seems to be the one >>> segfaulting.) >> >> Indeed. It's the virtio-blk device that is segfaulting, please try >> this one liner (haven't reproduced it, but it seems obvious with the >> backtrace and some sleep). > > I hit this as well, the patch below resolves it. I still have migration issues with this patch on ppc, which fails on the target guest with : qemu-system-ppc64: VQ 0 size 0x80 < last_avail_idx 0xe1e - used_idx 0x0 qemu-system-ppc64: Failed to load virtio-blk:virtio qemu-system-ppc64: error while loading state for instance 0x0 of device 'pci@800000020000000:01.0/virtio-blk' qemu-system-ppc64: load of migration failed: Operation not permitted Thanks, C. > Tested-by: Alex Williamson <alex.williamson@redhat.com> > >> commit c1aa478c7181c543606ca81404c59e126d66213d >> Author: Paolo Bonzini <pbonzini@redhat.com> >> Date: Wed Feb 22 10:02:37 2017 +0100 >> >> virtio: check for vring setup in virtio_queue_empty >> >> If the vring has not been set up, there is nothing in the virtqueue. >> virtio_queue_host_notifier_aio_poll calls virtio_queue_empty even in >> this case; we have to filter it out just like virtio_queue_notify_aio_vq. >> >> Reported-by: Gerd Hoffmann <kraxel@redhat.com> >> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> >> >> diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c >> index 23483c7..e487e36 100644 >> --- a/hw/virtio/virtio.c >> +++ b/hw/virtio/virtio.c >> @@ -2291,7 +2291,7 @@ static bool virtio_queue_host_notifier_aio_poll(void *opaque) >> VirtQueue *vq = container_of(n, VirtQueue, host_notifier); >> bool progress; >> >> - if (virtio_queue_empty(vq)) { >> + if (!vq->vring.desc || virtio_queue_empty(vq)) { >> return false; >> } >> >> > >
On 23/02/2017 10:33, Cédric Le Goater wrote: > I still have migration issues with this patch on ppc, which fails > on the target guest with : > > qemu-system-ppc64: VQ 0 size 0x80 < last_avail_idx 0xe1e - used_idx 0x0 > qemu-system-ppc64: Failed to load virtio-blk:virtio > qemu-system-ppc64: error while loading state for instance 0x0 of device 'pci@800000020000000:01.0/virtio-blk' > qemu-system-ppc64: load of migration failed: Operation not permitted Stefan sent patches for that. As a workaround, perhaps you can try disabling virtio-modern. Paolo
On 02/23/2017 10:47 AM, Paolo Bonzini wrote: > > > On 23/02/2017 10:33, Cédric Le Goater wrote: >> I still have migration issues with this patch on ppc, which fails >> on the target guest with : >> >> qemu-system-ppc64: VQ 0 size 0x80 < last_avail_idx 0xe1e - used_idx 0x0 >> qemu-system-ppc64: Failed to load virtio-blk:virtio >> qemu-system-ppc64: error while loading state for instance 0x0 of device 'pci@800000020000000:01.0/virtio-blk' >> qemu-system-ppc64: load of migration failed: Operation not permitted > > Stefan sent patches for that. As a workaround, perhaps you can try > disabling virtio-modern. I just took the patches. All good now. Thanks, C.
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 23483c7..e487e36 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -2291,7 +2291,7 @@ static bool virtio_queue_host_notifier_aio_poll(void *opaque) VirtQueue *vq = container_of(n, VirtQueue, host_notifier); bool progress; - if (virtio_queue_empty(vq)) { + if (!vq->vring.desc || virtio_queue_empty(vq)) { return false; }