diff mbox

current qemu-kvm doesn't work with vhost

Message ID 4DF1B5C0.2070301@web.de (mailing list archive)
State New, archived
Headers show

Commit Message

Jan Kiszka June 10, 2011, 6:12 a.m. UTC
On 2011-06-10 05:08, Amos Kong wrote:
> host kernel: 2.6.39-rc2+
> qemu-kvm : 05f1737582ab6c075476bde931c5eafbc62a9349
> 
> (gdb) r -monitor stdio -m 800 ~/RHEL-Server-6.0-64-virtio.qcow2 -snapshot -device virtio-net-pci,netdev=he -netdev tap,vhost=on,id=he
> 
> (qemu) [New Thread 0x7fffbe7dd700 (LWP 10410)]
> [New Thread 0x7fffbdfdc700 (LWP 10411)]
> qemu-kvm: /project/rh/qemu-kvm/hw/msix.c:616: msix_unset_mask_notifier: Assertion `dev->msix_mask_notifier' failed.
> 
> Program received signal SIGABRT, Aborted.
> [Switching to Thread 0x7ffff3233700 (LWP 10405)]
> 0x00007ffff6593ba5 in raise () from /lib/libc.so.6
> (gdb) bt
> #0  0x00007ffff6593ba5 in raise () from /lib/libc.so.6
> #1  0x00007ffff65976b0 in abort () from /lib/libc.so.6
> #2  0x00007ffff658ca71 in __assert_fail () from /lib/libc.so.6
> #3  0x00000000005754eb in msix_unset_mask_notifier (dev=0x1e56c50) at /project/rh/qemu-kvm/hw/msix.c:616
> #4  0x0000000000571ea4 in virtio_pci_set_guest_notifiers (opaque=0x1e56c50, assign=true) at /project/rh/qemu-kvm/hw/virtio-pci.c:674
> #5  0x000000000042c279 in vhost_dev_start (hdev=0x11c0420, vdev=0x1c40f10) at /project/rh/qemu-kvm/hw/vhost.c:710
> #6  0x0000000000429fe9 in vhost_net_start (net=0x11c0420, dev=0x1c40f10) at /project/rh/qemu-kvm/hw/vhost_net.c:142
> #7  0x0000000000425644 in virtio_net_vhost_status (n=0x1c40f10, status=7 '\a') at /project/rh/qemu-kvm/hw/virtio-net.c:127
> #8  0x00000000004256ec in virtio_net_set_status (vdev=0x1c40f10, status=7 '\a') at /project/rh/qemu-kvm/hw/virtio-net.c:144
> #9  0x00000000005709e6 in virtio_set_status (vdev=0x1c40f10, val=7 '\a') at /project/rh/qemu-kvm/hw/virtio.h:136
> #10 0x000000000057136f in virtio_ioport_write (opaque=0x1e56c50, addr=18, val=7) at /project/rh/qemu-kvm/hw/virtio-pci.c:338
> #11 0x00000000005717db in virtio_pci_config_writeb (opaque=0x1e56c50, addr=18, val=7) at /project/rh/qemu-kvm/hw/virtio-pci.c:462
> #12 0x000000000048409d in ioport_write (index=0, address=49202, data=7) at ioport.c:81
> #13 0x0000000000484756 in cpu_outb (addr=49202, val=7 '\a') at ioport.c:266
> #14 0x0000000000432dd2 in kvm_handle_io (port=49202, data=0x7ffff7ff3000, direction=1, size=1, count=1) at /project/rh/qemu-kvm/kvm-all.c:864
> #15 0x0000000000433266 in kvm_cpu_exec (env=0x188e5b0) at /project/rh/qemu-kvm/kvm-all.c:1008
> #16 0x00000000004091ef in qemu_kvm_cpu_thread_fn (arg=0x188e5b0) at /project/rh/qemu-kvm/cpus.c:808
> #17 0x00007ffff79be971 in start_thread () from /lib/libpthread.so.0
> #18 0x00007ffff664692d in clone () from /lib/libc.so.6
> #19 0x0000000000000000 in ?? ()

I already came across that symptom in a different context. Fixed by the
patch below. 

However, the real issue is related to an upstream cleanup of the
virtio-pci build. That reveals some unneeded build dependencies in
qemu-kvm. Will post a fix.

Jan

-----8<-----

From: Jan Kiszka <jan.kiszka@siemens.com>
qemu-kvm: Fix error path of virtio_pci_set_guest_notifiers

The mask notifier is never installed on error, so this deinstallation
will just trigger an assert in msix_unset_mask_notifier.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 hw/virtio-pci.c |    4 ----
 1 files changed, 0 insertions(+), 4 deletions(-)

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Georg Hopp June 17, 2011, 7:10 a.m. UTC | #1
Jan Kiszka <jan.kiszka <at> web.de> writes:
> 
> On 2011-06-10 05:08, Amos Kong wrote:
> > host kernel: 2.6.39-rc2+
> > qemu-kvm : 05f1737582ab6c075476bde931c5eafbc62a9349
> > 
> > (gdb) r -monitor stdio -m 800 ~/RHEL-Server-6.0-64-virtio.qcow2 -snapshot
-device
> virtio-net-pci,netdev=he -netdev tap,vhost=on,id=he
> > 
> 
> I already came across that symptom in a different context. Fixed by the
> patch below. 
> 
> However, the real issue is related to an upstream cleanup of the
> virtio-pci build. That reveals some unneeded build dependencies in
> qemu-kvm. Will post a fix.
> 
> Jan

FYI

I encountered the same problem and applied the patch.

Well this results in the following error while starting the guest:

 qemu-system-x86_64: unable to start vhost net: 38: 
  falling back on userspace virtio

and i have no network at all. I will disable vhost=on for now.

Greetz Georg

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jan Kiszka June 17, 2011, 7:29 a.m. UTC | #2
On 2011-06-17 09:10, Georg Hopp wrote:
> Jan Kiszka <jan.kiszka <at> web.de> writes:
>>
>> On 2011-06-10 05:08, Amos Kong wrote:
>>> host kernel: 2.6.39-rc2+
>>> qemu-kvm : 05f1737582ab6c075476bde931c5eafbc62a9349
>>>
>>> (gdb) r -monitor stdio -m 800 ~/RHEL-Server-6.0-64-virtio.qcow2 -snapshot
> -device
>> virtio-net-pci,netdev=he -netdev tap,vhost=on,id=he
>>>
>>
>> I already came across that symptom in a different context. Fixed by the
>> patch below. 
>>
>> However, the real issue is related to an upstream cleanup of the
>> virtio-pci build. That reveals some unneeded build dependencies in
>> qemu-kvm. Will post a fix.
>>
>> Jan
> 
> FYI
> 
> I encountered the same problem and applied the patch.
> 
> Well this results in the following error while starting the guest:
> 
>  qemu-system-x86_64: unable to start vhost net: 38: 
>   falling back on userspace virtio
> 
> and i have no network at all. I will disable vhost=on for now.

Hmm, works fine for me. The vhost-net module is loaded (though I got a
different message when I forgot to load it)?

Jan
Avi Kivity June 19, 2011, 8:56 a.m. UTC | #3
On 06/10/2011 09:12 AM, Jan Kiszka wrote:
> From: Jan Kiszka<jan.kiszka@siemens.com>
> qemu-kvm: Fix error path of virtio_pci_set_guest_notifiers
>
> The mask notifier is never installed on error, so this deinstallation
> will just trigger an assert in msix_unset_mask_notifier.

Applied, thanks.
diff mbox

Patch

diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
index c4735c5..311c47b 100644
--- a/hw/virtio-pci.c
+++ b/hw/virtio-pci.c
@@ -688,10 +688,6 @@  static int virtio_pci_set_guest_notifiers(void *opaque, bool assign)
 
 assign_error:
     /* We get here on assignment failure. Recover by undoing for VQs 0 .. n. */
-    if (assign) {
-        msix_unset_mask_notifier(&proxy->pci_dev);
-    }
-
     while (--n >= 0) {
         virtio_pci_set_guest_notifier(opaque, n, !assign);
     }