Re: AMD KVM Pci Passthrough reports device busy

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

 



On Tue, 05 Jun 2012 18:55:42 +0200
Andreas Hartmann <andihartmann@xxxxxxxxxxxxxxx> wrote:

> Alex Williamson wrote:
> [...]
> > Yep, I think the previous suggestion about reloading vfio_iommu_type1
> > with allow_unsafe_interrupts=1 will solve it.
> 
> Yes! Works now. Success!!!!!
> 
> Works means: Device is seen in VM. I couldn't test it up to now, because
> I don't have any driver in the VM for this device.

Meanwhile, I enabled the drivers in the VM for the device I passed
through. Unfortunately, it doesn't work :-(. I'm getting this entry in
messages at the moment, the module rt2800pci is used by hostapd:

Jun  6 09:25:02 host kernel: [  201.895812] irq 21: nobody cared (try booting with the "irqpoll" option)
Jun  6 09:25:02 host kernel: [  201.895819] Pid: 0, comm: swapper/1 Not tainted 3.4.0-next-20120529-16.1-desktop #6
Jun  6 09:25:02 host kernel: [  201.895822] Call Trace:
Jun  6 09:25:02 host kernel: [  201.895836]  <IRQ>  [<ffffffff810d37a8>] __report_bad_irq+0x38/0xe0
Jun  6 09:25:02 host kernel: [  201.895842]  [<ffffffff810d3a6d>] note_interrupt+0x16d/0x220
Jun  6 09:25:02 host kernel: [  201.895849]  [<ffffffff810d12d6>] handle_irq_event_percpu+0xc6/0x270
Jun  6 09:25:02 host kernel: [  201.895855]  [<ffffffff810d14c9>] handle_irq_event+0x49/0x70
Jun  6 09:25:02 host kernel: [  201.895860]  [<ffffffff810d45d2>] handle_fasteoi_irq+0x82/0x130
Jun  6 09:25:02 host kernel: [  201.895865]  [<ffffffff81004460>] handle_irq+0x20/0x30
Jun  6 09:25:02 host kernel: [  201.895869]  [<ffffffff81004098>] do_IRQ+0x58/0xe0
Jun  6 09:25:02 host kernel: [  201.895876]  [<ffffffff815f112a>] common_interrupt+0x6a/0x6a
Jun  6 09:25:02 host kernel: [  201.895907]  <EOI>  [<ffffffffa0029077>] ? arch_local_irq_enable+0x8/0xd [processor]
Jun  6 09:25:02 host kernel: [  201.895915]  [<ffffffff8107a37a>] ? sched_clock_idle_wakeup_event+0x1a/0x20
Jun  6 09:25:02 host kernel: [  201.895929]  [<ffffffffa002a046>] acpi_idle_enter_simple+0xd0/0x111 [processor]
Jun  6 09:25:02 host kernel: [  201.895939]  [<ffffffff814915f9>] cpuidle_enter+0x19/0x20
Jun  6 09:25:02 host kernel: [  201.895943]  [<ffffffff81491d81>] cpuidle_idle_call+0xc1/0x1e0
Jun  6 09:25:02 host kernel: [  201.895949]  [<ffffffff8100bd45>] cpu_idle+0x85/0xd0
Jun  6 09:25:02 host kernel: [  201.895955]  [<ffffffff815e63d5>] start_secondary+0x8a/0x8c
Jun  6 09:25:02 host kernel: [  201.895958] handlers:
Jun  6 09:25:02 host kernel: [  201.895967] [<ffffffffa0488230>] vfio_intx_handler [vfio_pci] threaded [<ffffffffa04884e0>] vfio_intx_thread [vfio_pci]
Jun  6 09:25:02 host kernel: [  201.895969] Disabling IRQ #21

I tried with irqpoll, but this didn't help. BTW: IRQ 21 isn't a shared
interrupt! Did I miss an option during kernel configuration?


Just to remember:
The passed through device is a WLAN-device and it's driven by rt2800pci:
06:07.0 Network controller: Ralink corp. RT2800 802.11n PCI

I unbound all the devices in the same group:

echo "1002 4385" > /sys/bus/pci/drivers/pci-stub/new_id
echo 0000:00:14.0 > /sys/bus/pci/devices/0000:00:14.0/driver/unbind
echo 0000:00:14.0 > /sys/bus/pci/drivers/pci-stub/bind

echo "1002 439c " > /sys/bus/pci/drivers/pci-stub/new_id
echo 0000:00:14.1 > /sys/bus/pci/devices/0000:00:14.1/driver/unbind
echo 0000:00:14.1 > /sys/bus/pci/drivers/pci-stub/bind

echo "1002 4383" > /sys/bus/pci/drivers/pci-stub/new_id
echo 0000:00:14.2 > /sys/bus/pci/devices/0000:00:14.2/driver/unbind
echo 0000:00:14.2 > /sys/bus/pci/drivers/pci-stub/bind

echo "1002 439d" > /sys/bus/pci/drivers/pci-stub/new_id
echo 0000:00:14.3 > /sys/bus/pci/devices/0000:00:14.3/driver/unbind
echo 0000:00:14.3 > /sys/bus/pci/drivers/pci-stub/bind

echo "1002 4384" > /sys/bus/pci/drivers/pci-stub/new_id
echo 0000:00:14.4 > /sys/bus/pci/devices/0000:00:14.4/driver/unbind
echo 0000:00:14.4 > /sys/bus/pci/drivers/pci-stub/bind

echo "1002 4399" > /sys/bus/pci/drivers/pci-stub/new_id
echo 0000:00:14.5 > /sys/bus/pci/devices/0000:00:14.5/driver/unbind
echo 0000:00:14.5 > /sys/bus/pci/drivers/pci-stub/bind

modprobe vfio-pci
echo "1814 0601" > /sys/bus/pci/drivers/vfio-pci/new_id
echo 0000:06:07.0 > /sys/bus/pci/devices/0000:06:07.0/driver/unbind
echo 0000:06:07.0 > /sys/bus/pci/drivers/vfio-pci/bind


The corresponding entries in messages are:

Jun  6 09:23:01 host kernel: [   81.777453] pci-stub 0000:00:14.0: claimed by stub
Jun  6 09:23:01 host kernel: [   81.777788] pci-stub 0000:00:14.0: claimed by stub
Jun  6 09:23:02 host kernel: [   81.782465] pci-stub 0000:00:14.1: claimed by stub
Jun  6 09:23:02 host kernel: [   81.801572] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:14.0 domain=0x0000 address=0x000000fdf9103300 flags=0x0600]
Jun  6 09:23:02 host kernel: [   81.950388] pci-stub 0000:00:14.2: claimed by stub
Jun  6 09:23:02 host kernel: [   81.950505] pci-stub 0000:00:14.3: claimed by stub
Jun  6 09:23:02 host kernel: [   81.950723] pci-stub 0000:00:14.3: claimed by stub
Jun  6 09:23:02 host kernel: [   81.950828] pci-stub 0000:00:14.4: claimed by stub
Jun  6 09:23:02 host kernel: [   81.951031] pci-stub 0000:00:14.4: claimed by stub
Jun  6 09:23:02 host kernel: [   81.951280] ohci_hcd 0000:00:14.5: remove, state 4
Jun  6 09:23:02 host kernel: [   81.951293] usb usb6: USB disconnect, device number 1
Jun  6 09:23:02 host kernel: [   81.951840] ohci_hcd 0000:00:14.5: USB bus 6 deregistered
Jun  6 09:23:02 host kernel: [   81.951993] pci-stub 0000:00:14.5: claimed by stub
Jun  6 09:23:02 host kernel: [   81.957543] VFIO - User Level meta-driver version: 0.3
Jun  6 09:23:02 host kernel: [   81.960441] vfio_iommu_group_notifier: Device 0000:06:07.0, group 9 bound to driver vfio-pci
Jun  6 09:23:02 host kernel: [   81.960617] vfio_iommu_group_notifier: Device 0000:06:07.0, group 9 unbinding from driver vfio-pci
Jun  6 09:23:02 host kernel: [   81.961002] vfio_iommu_group_notifier: Device 0000:06:07.0, group 9 bound to driver vfio-pci

The result with lspci -vs14 is:

00:14.0 SMBus: Advanced Micro Devices [AMD] nee ATI SBx00 SMBus Controller (rev 42)
        Flags: 66MHz, medium devsel
        Kernel driver in use: pci-stub

00:14.1 IDE interface: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 IDE Controller (rev 40) (prog-if 8a [Master SecP PriP])
        Subsystem: Giga-byte Technology Device 5002
        Flags: 66MHz, medium devsel, IRQ 17
        I/O ports at 01f0 [size=8]
        I/O ports at 03f4 [size=1]
        I/O ports at 0170 [size=8]
        I/O ports at 0374 [size=1]
        I/O ports at fa00 [size=16]
        Kernel driver in use: pci-stub

00:14.2 Audio device: Advanced Micro Devices [AMD] nee ATI SBx00 Azalia (Intel HDA) (rev 40)
        Subsystem: Giga-byte Technology Device a132
        Flags: slow devsel, IRQ 16
        Memory at fdff4000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: [50] Power Management version 2
        Kernel driver in use: pci-stub

00:14.3 ISA bridge: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 LPC host controller (rev 40)
        Subsystem: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 LPC host controller
        Flags: bus master, 66MHz, medium devsel, latency 0
        Kernel driver in use: pci-stub

00:14.4 PCI bridge: Advanced Micro Devices [AMD] nee ATI SBx00 PCI to PCI Bridge (rev 40) (prog-if 01 [Subtractive decode])
        Flags: bus master, VGA palette snoop, 66MHz, medium devsel, latency 64
        Bus: primary=00, secondary=06, subordinate=06, sec-latency=64
        I/O behind bridge: 00009000-00009fff
        Memory behind bridge: fd800000-fd8fffff
        Prefetchable memory behind bridge: fd700000-fd7fffff
        Kernel driver in use: pci-stub

00:14.5 USB controller: Advanced Micro Devices [AMD] nee ATI SB7x0/SB8x0/SB9x0 USB OHCI2 Controller (prog-if 10 [OHCI])
        Subsystem: Giga-byte Technology Device 5004
        Flags: 66MHz, medium devsel, IRQ 18
        Memory at fdffa000 (32-bit, non-prefetchable) [size=4K]
        Kernel driver in use: pci-stub


lspci -vs7
06:07.0 Network controller: Ralink corp. RT2800 802.11n PCI
        Subsystem: Linksys Device 0067
        Flags: bus master, slow devsel, latency 32, IRQ 5
        Memory at fd8e0000 (32-bit, non-prefetchable) [size=64K]
        Capabilities: [40] Power Management version 3
        Kernel driver in use: vfio-pci


On starting the VM, the following entries came up in messages:

Jun  6 09:23:51 host kernel: [  131.397055] kvm: 8175: cpu0 unhandled rdmsr: 0xc0010001

The VM is started as root with this command:

  /usr/local/bin/qemu-system-x86_64 \
  -enable-kvm \
  -m 1024 \
  -rtc base=utc \
  -drive file=/my.hd,if=none,id=drive-virtio-disk0,format=qcow2,cache=writeback \
  -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 \
  -netdev tap,ifname=tap5,script=no,id=hostnet0 \
  -device virtio-net-pci,netdev=hostnet0,id=net0,mac=12:34:56:78:90:12,bus=pci.0,addr=0x3 \
  -device vfio-pci,host=06:07.0,id=hostdev0,bus=pci.0,addr=0x5

qemu-system-x86_64 prints out the following on startup:
Warning, device 0000:06:07.0 does not support reset (-> only the first time the VM is started)

sometimes:
qemu-system-x86_64: vfio_dma_map(0x7fb10a848170, 0x00000000000cc000, 0x4000, 0x7fb0bfacc000) = -16 (Device or resource busy)

qemu-system-x86_64: vfio_dma_map(0x7fb10a848170, 0x00000000000cc000, 0x4000, 0x7fb0bfacc000) = -16 (Device or resource busy)



Do you have any idea what's going wrong here?


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


[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