Hide Forgot
Description of problem: didn't add '-enable-kvm' while booting with '-no-kvm' to do vfio-pci with PF assigned, qemu will core dumped. Version-Release number of selected component (if applicable): host info: 3.10.0-57.el7.x86_64 qemu-kvm-1.5.3-20.el7.x86_64 seabios-1.7.2.2-4.el7.x86_64 guest info: 3.10.0-57.el7.x86_64 How reproducible: 100% Steps to Reproduce: 1.1.Load vfio-pci, vfio, vfio_iommu_type1 modules. # lsmod | grep vfio vfio_pci 36474 0 vfio_iommu_type1 17636 0 vfio 20777 2 vfio_iommu_type1,vfio_pci 2.Check what other devices are in the same group as PF, unbind all of them and bind to vfio-pci. # lspci | grep -i BCM57810 08:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM57810 10 Gigabit Ethernet (rev 10) 08:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM57810 10 Gigabit Ethernet (rev 10) # readlink /sys/bus/pci/devices/0000:08:00.0/iommu_group ../../../../kernel/iommu_groups/14 # readlink /sys/bus/pci/devices/0000:08:00.1/iommu_group ../../../../kernel/iommu_groups/14 # lspci -n -s 0000:08:00.0 | awk '{ print $3 }' 14e4:168e # echo "14e4 168e" > /sys/bus/pci/drivers/vfio-pci/new_id # echo 0000:08:00.0 > /sys/bus/pci/devices/0000\:08\:00.0/driver/unbind # echo 0000:08:00.0 > /sys/bus/pci/drivers/vfio-pci/bind # lspci -n -s 0000:08:00.1 | awk '{ print $3 }' 14e4:168e # echo "14e4 168e" >> /sys/bus/pci/drivers/vfio-pci/new_id # echo 0000:08:00.1 >> /sys/bus/pci/devices/0000\:08\:00.1/driver/unbind # echo 0000:08:00.1 >> /sys/bus/pci/drivers/vfio-pci/bind 3.do vfio-pci with PF to guest and specified *-no-kvm*. e.g:# /usr/libexec/qemu-kvm -M pc -cpu Opteron_G5 *-no-kvm* -m 2048 -smp 2,sockets=2,cores=1,threads=1 -no-kvm-pit-reinjection...-device vfio-pci,host=08:00.0,id=sluo_guest_nic_pf0 Actual results: after step 3, qemu core dumped, I will paste the core dumped bt log later. QEMU 1.5.3 monitor - type 'help' for more information (qemu) Segmentation fault (core dumped) Expected results: it should no any core dump and guest failed to boot up due to:'vfio-pci: error: requires KVM support'. Additional info: # /usr/libexec/qemu-kvm -M pc -cpu Opteron_G5 -no-kvm -m 2048 -smp 2,sockets=2,cores=1,threads=1 -no-kvm-pit-reinjection -usb -device usb-tablet,id=input0 -name sluo -uuid 990ea161-6b67-47b2-b803-19fb01d30d30 -rtc base=localtime,clock=host,driftfix=slew -device virtio-serial-pci,id=virtio-serial0,max_ports=16,vectors=0,bus=pci.0,addr=0x3 -chardev socket,id=channel1,path=/tmp/helloworld1,server,nowait -device virtserialport,chardev=channel1,name=com.redhat.rhevm.vdsm,bus=virtio-serial0.0,id=port1 -chardev socket,id=channel2,path=/tmp/helloworld2,server,nowait -device virtserialport,chardev=channel2,name=com.redhat.rhevm.vdsm,bus=virtio-serial0.0,id=port2 -drive file=/home/RHEL-7.0-20131127.1_Server_x86_64.qcow2,if=none,id=drive-disk,cache=none,format=qcow2,aio=native,werror=stop,rerror=stop -device virtio-blk-pci,vectors=0,bus=pci.0,addr=0x4,scsi=off,drive=drive-disk,id=system-disk,bootindex=1 -net none -global PIIX4_PM.disable_s3=0 -global PIIX4_PM.disable_s4=0 -k en-us -boot menu=on -qmp tcp:0:4444,server,nowait -serial unix:/tmp/ttyS0,server,nowait -vnc :1 -spice disable-ticketing,port=5931 -monitor stdio -device vfio-pci,host=08:00.0,id=sluo_guest_nic_pf0
Core was generated by `/usr/libexec/qemu-kvm -M pc -cpu Opteron_G5 -no-kvm -m 2048 -smp 2,sockets=2,co'. Program terminated with signal 11, Segmentation fault. #0 0x00007fe522ebbb7e in qemu_set_irq (irq=0x702d6f6974726976, level=0) at hw/core/irq.c:38 38 irq->handler(irq->opaque, irq->n, level); (gdb) bt #0 0x00007fe522ebbb7e in qemu_set_irq (irq=0x702d6f6974726976, level=0) at hw/core/irq.c:38 #1 0x00007fe522ff6580 in vfio_disable_intx (vdev=0x7fe524633010) at /usr/src/debug/qemu-1.5.3/hw/misc/vfio.c:564 #2 vfio_disable_interrupts (vdev=0x7fe524633010) at /usr/src/debug/qemu-1.5.3/hw/misc/vfio.c:2190 #3 0x00007fe522ff8bfd in vfio_pci_pre_reset (vdev=vdev@entry=0x7fe524633010) at /usr/src/debug/qemu-1.5.3/hw/misc/vfio.c:2777 #4 0x00007fe522ff92dd in vfio_pci_reset (dev=0x7fe524633010) at /usr/src/debug/qemu-1.5.3/hw/misc/vfio.c:3721 #5 0x00007fe522ec3a19 in qdev_reset_one (dev=dev@entry=0x7fe524633010, opaque=opaque@entry=0x0) at hw/core/qdev.c:227 #6 0x00007fe522ec3110 in qdev_walk_children (dev=dev@entry=0x7fe524633010, devfn=devfn@entry=0x7fe522ec3a00 <qdev_reset_one>, busfn=busfn@entry=0x7fe522ec1a00 <qbus_reset_one>, opaque=opaque@entry=0x0) at hw/core/qdev.c:376 #7 0x00007fe522ec31ad in qdev_reset_all (dev=dev@entry=0x7fe524633010) at hw/core/qdev.c:243 #8 0x00007fe522f047ed in pci_device_reset (dev=0x7fe524633010) at hw/pci/pci.c:180 #9 0x00007fe522f049a2 in pci_bus_reset (bus=0x7fe52459b710) at hw/pci/pci.c:226 #10 0x00007fe522f049e9 in pcibus_reset (qbus=<optimized out>) at hw/pci/pci.c:233 #11 0x00007fe522ec31f0 in qbus_walk_children (bus=bus@entry=0x7fe52459b710, devfn=devfn@entry=0x7fe522ec3a00 <qdev_reset_one>, busfn=busfn@entry=0x7fe522ec1a00 <qbus_reset_one>, opaque=opaque@entry=0x0) at hw/core/qdev.c:353 #12 0x00007fe522ec313a in qdev_walk_children (dev=<optimized out>, devfn=devfn@entry=0x7fe522ec3a00 <qdev_reset_one>, busfn=busfn@entry=0x7fe522ec1a00 <qbus_reset_one>, opaque=opaque@entry=0x0) at hw/core/qdev.c:383 #13 0x00007fe522ec321a in qbus_walk_children (bus=<optimized out>, devfn=0x7fe522ec3a00 <qdev_reset_one>, busfn=0x7fe522ec1a00 <qbus_reset_one>, opaque=0x0) at hw/core/qdev.c:360 #14 0x00007fe522fb28fd in qemu_devices_reset () at vl.c:1809 #15 qemu_system_reset (report=report@entry=false) at vl.c:1818 #16 0x00007fe522e4b37b in main (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>) at vl.c:4321 (gdb) bt full #0 0x00007fe522ebbb7e in qemu_set_irq (irq=0x702d6f6974726976, level=0) at hw/core/irq.c:38 No locals. #1 0x00007fe522ff6580 in vfio_disable_intx (vdev=0x7fe524633010) at /usr/src/debug/qemu-1.5.3/hw/misc/vfio.c:564 fd = <optimized out> #2 vfio_disable_interrupts (vdev=0x7fe524633010) at /usr/src/debug/qemu-1.5.3/hw/misc/vfio.c:2190 No locals. #3 0x00007fe522ff8bfd in vfio_pci_pre_reset (vdev=vdev@entry=0x7fe524633010) at /usr/src/debug/qemu-1.5.3/hw/misc/vfio.c:2777 pdev = 0x7fe524633010 cmd = <optimized out> #4 0x00007fe522ff92dd in vfio_pci_reset (dev=0x7fe524633010) at /usr/src/debug/qemu-1.5.3/hw/misc/vfio.c:3721 pdev = 0x7fe524633010 vdev = 0x7fe524633010 #5 0x00007fe522ec3a19 in qdev_reset_one (dev=dev@entry=0x7fe524633010, opaque=opaque@entry=0x0) at hw/core/qdev.c:227 No locals. #6 0x00007fe522ec3110 in qdev_walk_children (dev=dev@entry=0x7fe524633010, devfn=devfn@entry=0x7fe522ec3a00 <qdev_reset_one>, busfn=busfn@entry=0x7fe522ec1a00 <qbus_reset_one>, opaque=opaque@entry=0x0) at hw/core/qdev.c:376 bus = <optimized out> err = <optimized out> #7 0x00007fe522ec31ad in qdev_reset_all (dev=dev@entry=0x7fe524633010) at hw/core/qdev.c:243 No locals. #8 0x00007fe522f047ed in pci_device_reset (dev=0x7fe524633010) at hw/pci/pci.c:180 r = <optimized out> #9 0x00007fe522f049a2 in pci_bus_reset (bus=0x7fe52459b710) at hw/pci/pci.c:226 i = <optimized out> #10 0x00007fe522f049e9 in pcibus_reset (qbus=<optimized out>) at hw/pci/pci.c:233 No locals. #11 0x00007fe522ec31f0 in qbus_walk_children (bus=bus@entry=0x7fe52459b710, devfn=devfn@entry=0x7fe522ec3a00 <qdev_reset_one>, busfn=busfn@entry=0x7fe522ec1a00 <qbus_reset_one>, opaque=opaque@entry=0x0) at hw/core/qdev.c:353 kid = <optimized out> err = <optimized out> #12 0x00007fe522ec313a in qdev_walk_children (dev=<optimized out>, devfn=devfn@entry=0x7fe522ec3a00 <qdev_reset_one>, busfn=busfn@entry=0x7fe522ec1a00 <qbus_reset_one>, opaque=opaque@entry=0x0) at hw/core/qdev.c:383 bus = 0x7fe52459b710 err = <optimized out> #13 0x00007fe522ec321a in qbus_walk_children (bus=<optimized out>, devfn=0x7fe522ec3a00 <qdev_reset_one>, busfn=0x7fe522ec1a00 <qbus_reset_one>, opaque=0x0) at hw/core/qdev.c:360 kid = 0x7fe52459b650 err = <optimized out> #14 0x00007fe522fb28fd in qemu_devices_reset () at vl.c:1809 re = <optimized out> nre = 0x0 #15 qemu_system_reset (report=report@entry=false) at vl.c:1818 No locals. #16 0x00007fe522e4b37b in main (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>) at vl.c:4321 i = <optimized out> snapshot = 0 linux_boot = 0 icount_option = 0x0 initrd_filename = 0x0 kernel_filename = 0x0 kernel_cmdline = 0x7fe5231343e0 "" boot_order = 0x7fe5230ef426 "cad" ds = <optimized out> cyls = 0 heads = 0 secs = 0 translation = 0 hda_opts = <optimized out> opts = 0x7fe5243f58e0 machine_opts = <optimized out> olist = <optimized out> optind = 56 optarg = 0x7fff384cd7d4 "vfio-pci,host=08:00.0,id=sluo_guest_nic_pf0" loadvm = 0x0 machine = 0x7fe5234b9200 <pc_machine_rhel700> cpu_model = 0x7fff384cd38a "Opteron_G5" vga_model = 0x7fe523117c7f "cirrus" pid_file = 0x0 incoming = 0x0 show_vnc_port = 0 defconfig = <optimized out> userconfig = 138 log_mask = <optimized out> log_file = 0x0 mem_trace = {malloc = 0x7fe522fb08d0 <malloc_and_trace>, realloc = 0x7fe522fb0890 <realloc_and_trace>, free = 0x7fe522fb0850 <free_and_trace>, calloc = 0x0, try_malloc = 0x0, try_realloc = 0x0} trace_events = 0x0 trace_file = 0x0 __PRETTY_FUNCTION__ = "main" args = {machine = 0x7fe5234b9200 <pc_machine_rhel700>, ram_size = 2147483648, boot_device = 0x7fe5230ef426 "cad", kernel_filename = 0x0, kernel_cmdline = 0x7fe5231343e0 "", initrd_filename = 0x0, cpu_model = 0x7fff384cd38a "Opteron_G5"} (gdb)
Got the same problem with 82576 nic. Host: qemu-kvm-rhev-1.5.3-21.el7.x86_64 kernel-3.10.0-61.el7.x86_64 CLI: gdb --args /usr/libexec/qemu-kvm \ -M pc \ -cpu Opteron_G1 \ -m 4G \ -smp 4,sockets=2,cores=2,threads=1,maxcpus=16 \ -no-kvm \ -name rhel7-64 \ -uuid 990ea161-6b67-47b2-b803-19fb01d30d12 \ -smbios type=1,manufacturer='Red Hat',product='RHEV Hypervisor',version=el6,serial=koTUXQrb,uuid=feebc8fd-f8b0-4e75-abc3-e63fcdb67170 \ -k en-us \ -rtc base=localtime,clock=host,driftfix=slew \ -nodefaults \ -monitor stdio \ -qmp tcp:0:6666,server,nowait \ -boot menu=on \ -bios /usr/share/seabios/bios.bin \ -vga std \ -vnc :0 \ -drive file=/home/rhel7-64.raw,if=none,id=drive-virtio-disk0,format=raw,cache=none,werror=stop,rerror=stop,aio=threads \ -device virtio-blk-pci,scsi=off,bus=pci.0,drive=drive-virtio-disk0,id=virtio-disk0 \ -chardev socket,id=seabioslog,path=/tmp/seabios,server,nowait \ -device isa-debugcon,chardev=seabioslog,iobase=0x402 \ -device vfio-pci,id=pf,host=01:10.1 \ Result: Qemu-kvm crash.
Created attachment 841083 [details] qemu-kvm crash log(82576)
*** Bug 1037947 has been marked as a duplicate of this bug. ***
This is very likely a side effect of a inoperable card due to the rom behavior as mentioned in bug 1037956. A fix for it is being reviewed upstream. *** This bug has been marked as a duplicate of bug 1037956 ***