virtio-win / kvm-guest-drivers-windows

Windows paravirtualized drivers for QEMU\KVM
https://www.linux-kvm.org/page/WindowsGuestDrivers
BSD 3-Clause "New" or "Revised" License
2.01k stars 386 forks source link

Ivshmem: qemu crash when installing virtio-win ivshmem drivers #190

Closed 20lives closed 6 years ago

20lives commented 6 years ago

qemu-system-x86_64: /builddir/build/BUILD/qemu-2.9.1/kvm-all.c:1064: kvm_irqchip_commit_routes: Assertion `ret == 0' failed.

YanVugenfirer commented 6 years ago

On top of what I wrote also add windows version

Sent from my iPhone

On Nov 8, 2017, at 12:10, 20lives notifications@github.com wrote:

qemu-system-x86_64: /builddir/build/BUILD/qemu-2.9.1/kvm-all.c:1064: kvm_irqchip_commit_routes: Assertionret == 0' failed.`

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

20lives commented 6 years ago

Fedora 26 4.13.9-200.fc26.x86_64 Windows 10 1703 x64 QEMU emulator version 2.10.50 (v2.10.0-1760-gb33afc4156) Ivshmem driverVer= 11.11.31.459

20lives commented 6 years ago

qemu command line: qemu-system-x86_64 -drive file=images/HLK-Client1-W10x64-1703.qcow2,serial=110011 -netdev tap,id=hostnet0,script=./hck_ctrl_bridge_ifup_0011.sh,downscript=no,ifname=cc1_0011 -device e1000,netdev=hostnet0,mac=56:cc:cc:01:cc:cc,bus=pci.0,id=cc1_0011 -netdev tap,id=hostnet2,vhost=on,script=./hck_test_bridge_ifup_0011.sh,downscript=no,ifname=t1c1_0011,queues=1 -device virtio-net-pci,netdev=hostnet2,mac=56:cc:cc:01:01:cc,bus=pci.0,id=t1c1_0011 -uuid CDEF127c-8795-4e67-95da-8dd0a8891001 -machine pc -nodefaults -nodefconfig -m 3G -smp 2,cores=2 -enable-kvm -cpu qemu64,+x2apic,+fsgsbase,model=13 -usbdevice tablet -boot order=cd,menu=on -rtc-td-hack -global kvm-pit.lost_tick_policy=discard -rtc base=localtime,clock=host,driftfix=slew -global PIIX4_PM.disable_s3=0 -global PIIX4_PM.disable_s4=0 -name HCK-Client1_0011bark/home/lior/ivshmem -vga cirrus -vnc :32 -monitor telnet::10032,server,nowait -monitor vc -chardev socket,path=/tmp/ivshmem_socket,id=ivshmemid -device ivshmem-doorbell,chardev=ivshmemid

ladipro commented 6 years ago

This might be the same issue that @gnif found while implementing the driver:

https://lists.gnu.org/archive/html/qemu-devel/2017-10/msg04376.html:

Please note that this work has exposed a bug in the qemu ivshmem virtual device itself, it seems that if the MSI interrupts are enabled and the driver is unloaded twice an assertion is thrown due to what looks to be a double free, crashing out qemu.

I am getting this assertion on the second driver unload:

qemu-system-x86_64: /home/lprosek/qemu/hw/pci/msix.c:614: msix_unset_vector_notifiers: Assertiondev->msix_vector_use_notifier && dev->msix_vector_release_notifier' failed.`

ladipro commented 6 years ago

@20lives, what's on the other side of /tmp/ivshmem_socket and how many vectors does it support?

kvm_irqchip_commit_routes: Assertion 'ret == 0' failed.

is caused by configuring the device with more vectors than what the server supports.

For example,

ivshmem-server -n 0

and your command line where vectors defaults to 1 leads to that assertion.

The other issue is also related to interrupt vectors but the device must be re-initialized in order to hit this. You need a driver load-unload-load cycle to hit

msix_unset_vector_notifiers: Assertion 'dev->msix_vector_use_notifier && dev->msix_vector_release_notifier' failed.

ladipro commented 6 years ago

QEMU patches have been posted: https://lists.gnu.org/archive/html/qemu-devel/2017-11/msg01984.html