On Tue, 05 Jun 2012 18:55:42 +0200
Andreas Hartmann <[email protected]> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html