[vfio-users] Passing though an USB card problems

Ede Wolf listac at nebelschwaden.de
Sat Nov 23 14:34:21 UTC 2019


Hello,

I am trying to pass through a PCIe USB card to a guest, instead of just 
the ports, due to very sensitive USB devices.
Despite the unbind being reported as successful, the booting of the 
guest fails with an error:

qemu-system-x86_64: -device vfio-pci,host=09:04.0,x-vga=off: vfio 
0000:09:04.0: Failed to set up TRIGGER eventfd signaling for interrupt 
INTX-0: VFIO_DEVICE_SET_IRQS failure: Device or resource busy

While I have not been able to find much about this error, I do have one 
additional device in the same iommu group, that I suspect to be the 
reason for the failure. However, somehow this device lacks a "driver" 
folder and therefor the "unbind" file, so I cannot unbind it.

I am not sure wether this additional device may be a bridge on the card 
itself or a sensitive part of the mainboard, however blindly executing an

echo 12d8 e111 > /sys/bus/pci/drivers/vfio-pci/new_id'

does not change the behaviour.

Any ideas on what I may be missing or how to possibly resolve this? Any 
information that I may have been missing to provide?

Thanks

Ede

Here the information about the other device in the same iommu group:

# lspci -n -s 0000:08:00.0 -v
08:00.0 0604: 12d8:e111 (rev 02) (prog-if 00 [Normal decode])
         Flags: bus master, fast devsel, latency 0, IRQ 16, NUMA node 0
         Bus: primary=08, secondary=09, subordinate=09, sec-latency=32
         I/O behind bridge: 00008000-00008fff [size=4K]
         Memory behind bridge: bf600000-bf6fffff [size=1M]
         Prefetchable memory behind bridge: None
         Capabilities: [80] PCI-X bridge device
         Capabilities: [90] Power Management version 3
         Capabilities: [a8] Subsystem: 0000:0000
         Capabilities: [b0] Express PCI-Express to PCI/PCI-X Bridge, MSI 00
         Capabilities: [f0] MSI: Enable- Count=1/1 Maskable- 64bit+
         Capabilities: [100] Advanced Error Reporting
         Capabilities: [150] Virtual Channel


The first three folders are the ids of the USB card in question:

# ls -l /sys/bus/pci/devices/0000\:08\:00.0/

drwxr-xr-x 4 root root    0 23. Nov 15:16 0000:09:04.0
drwxr-xr-x 4 root root    0 23. Nov 15:16 0000:09:04.1
drwxr-xr-x 4 root root    0 23. Nov 15:16 0000:09:04.2
-r--r--r-- 1 root root 4096 23. Nov 15:16 aer_dev_correctable
-r--r--r-- 1 root root 4096 23. Nov 15:16 aer_dev_fatal
-r--r--r-- 1 root root 4096 23. Nov 15:16 aer_dev_nonfatal
-r--r--r-- 1 root root 4096 23. Nov 15:16 ari_enabled
-rw-r--r-- 1 root root 4096 23. Nov 15:16 broken_parity_status
-r--r--r-- 1 root root 4096 23. Nov 15:16 class
-rw-r--r-- 1 root root 4096 23. Nov 15:16 config
-r--r--r-- 1 root root 4096 23. Nov 15:16 consistent_dma_mask_bits
-r--r--r-- 1 root root 4096 23. Nov 15:16 current_link_speed
-r--r--r-- 1 root root 4096 23. Nov 15:16 current_link_width
-rw-r--r-- 1 root root 4096 23. Nov 15:16 d3cold_allowed
-r--r--r-- 1 root root 4096 23. Nov 15:16 device
-r--r--r-- 1 root root 4096 23. Nov 15:16 devspec
-r--r--r-- 1 root root 4096 23. Nov 15:16 dma_mask_bits
-rw-r--r-- 1 root root 4096 23. Nov 15:16 driver_override
-rw-r--r-- 1 root root 4096 23. Nov 15:16 enable

And the succesfull unbind, also verifyable by lsub, that lacks 3 devices 
after unbind:


# systemctl status kvm_virtio_prepare.service
● kvm_virtio_prepare.service - Preparation for PCI Passthru
    Loaded: loaded (/etc/systemd/system/kvm_virtio_prepare.service; 
static; vendor preset: disabled)
   Process: 963 ExecStart=/usr/bin/sh -c echo "0000:09:04.0" > 
/sys/bus/pci/devices/0000:09:04.0/driver/unbind (code=exited, 
status=0/SUCCESS)
   Process: 964 ExecStart=/usr/bin/sh -c echo "0000:09:04.1" > 
/sys/bus/pci/devices/0000:09:04.1/driver/unbind (code=exited, 
status=0/SUCCESS)
   Process: 965 ExecStart=/usr/bin/sh -c echo "0000:09:04.2" > 
/sys/bus/pci/devices/0000:09:04.2/driver/unbind (code=exited, 
status=0/SUCCESS)
   Process: 966 ExecStart=/usr/bin/sh -c echo 12d8 e111 > 
/sys/bus/pci/drivers/vfio-pci/new_id (code=exited, status=0/SUCCESS)
   Process: 967 ExecStart=/usr/bin/sh -c echo 1106 3038 > 
/sys/bus/pci/drivers/vfio-pci/new_id (code=exited, status=0/SUCCESS)
   Process: 968 ExecStart=/usr/bin/sh -c echo 1106 3104 > 
/sys/bus/pci/drivers/vfio-pci/new_id (code=exited, status=0/SUCCESS)
   Process: 969 ExecStart=/usr/bin/sh -c chgrp kvm /dev/vfio/25 
(code=exited, status=0/SUCCESS)
   Process: 970 ExecStart=/usr/bin/sh -c chmod 0660 /dev/vfio/25 
(code=exited, status=0/SUCCESS)
  Main PID: 970 (code=exited, status=0/SUCCESS)





More information about the vfio-users mailing list