Trying to recreate this, I have a xhci Host controller (no extra card, but as 
part of the chipset).
  00:14.0 USB controller: Intel Corporation C610/X99 series chipset USB xHCI 
Host Controller (rev 05)

00:14.0 USB controller: Intel Corporation C610/X99 series chipset USB xHCI Host 
Controller (rev 05) (prog-if 30 [XHCI])
        Subsystem: Hewlett-Packard Company C610/X99 series chipset USB xHCI 
Host Controller
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ 
Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- 
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin D routed to IRQ 19
        NUMA node: 0
        Region 0: Memory at 39ffff00000 (64-bit, non-prefetchable) [size=64K]
        Capabilities: <access denied>
        Kernel driver in use: xhci_hcd

First check if it can be unbound:
echo 0000:00:14.0 | sudo tee /sys/bus/pci/devices/0000:00:14.0/driver/unbind

Works and I see:
[2071597.213764] xhci_hcd 0000:00:14.0: remove, state 4
[2071597.213778] usb usb5: USB disconnect, device number 1
[2071597.215019] xhci_hcd 0000:00:14.0: USB bus 5 deregistered
[2071597.215036] xhci_hcd 0000:00:14.0: remove, state 4
[2071597.215046] usb usb4: USB disconnect, device number 1
[2071597.215049] usb 4-3: USB disconnect, device number 2
[2071597.218160] xhci_hcd 0000:00:14.0: USB bus 4 deregistered

FYI: Libvirt should do the unbind/bind for you at runtime if you
configured it as managed hostdev

Check ID
$ lspci -n -s 00:14.0
00:14.0 0c03: 8086:8d31 (rev 05)

Tell vfio-pci to handle that
$ echo 8086 8d31 | sudo tee /sys/bus/pci/drivers/vfio-pci/new_id
I get a fail to bind it like:
  vfio-pci: probe of 0000:00:14.0 failed with error

But then on this system I always failed to get vfio working due to FW
issues (not a Linux issue).

You might try the above but for your device to initially rule out all of the 
modprobe/boot timing that might affect it.
After boot just try to:
1. unbind your device from xhci
2. make the ID known to vfio-pci
   (that should autoload it then)

Report back the kernel you have and the success or fail when doing so, along a 
dmesg log of the try.
That should clarify if we look at vfio-pci no more being able to load at all 
(above test fails) or just at how to prep cour config correctly so that it 
works again.

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1781891

Title:
  PCI USB card passthrough does not work any more

Status in linux package in Ubuntu:
  Incomplete

Bug description:
  System information:
  Ubuntu 18.04 LTS (server edition) with kernel 4.15.0-24-generic x86_64
  Upgraded from Ubuntu server 17.10

  Software:
  qemu-kvm:
    Installed: 1:2.11+dfsg-1ubuntu7.4
    Candidate: 1:2.11+dfsg-1ubuntu7.4
    Version table:
   *** 1:2.11+dfsg-1ubuntu7.4 500
          500 http://za.archive.ubuntu.com/ubuntu bionic-updates/main amd64 
Packages
          100 /var/lib/dpkg/status
       1:2.11+dfsg-1ubuntu7.3 500
          500 http://security.ubuntu.com/ubuntu bionic-security/main amd64 
Packages
       1:2.11+dfsg-1ubuntu7 500
          500 http://za.archive.ubuntu.com/ubuntu bionic/main amd64 Packages

  
  Hardware: 
  Motherboard: X370 Killer SLI
  CPU: AMD Ryzen 7 1800X

  PCI device: 
  27:00.0 USB controller: VIA Technologies, Inc. VL805 USB 3.0 Host Controller 
(rev 01)
  IOMMU Group 15 27:00.0 USB controller [0c03]: VIA Technologies, Inc. VL805 
USB 3.0 Host Controller [1106:3483] (rev 01)

  USB controller of PCI card:
  Bus 003 Device 002: ID 2109:3431 VIA Labs, Inc. Hub

  Loaded device drivers:

  
  Before upgrading to Ubuntu 18.04, this PCI device was added to pci-stub.ids 
which allowed the device to be passed to a Windows 10 VM. In turn, all USB 
devices connected to this card worked in the VM and drivers could successfully 
be installed.

  Since the upgrade from Ubuntu 17.10 to Ubuntu 18.04, I have tried
  several approaches to have this device not bound to the xhci driver
  but all in vain. (In every test I did, I always performed update-
  initramfs -u as well as update-grub)

  pci-stub.ids does not stop xhci from grabbing device. So passing PCI
  card to VM does not work

  Adding the device ID to /etc/modprobe.d/vfio.conf (options) does seem
  to load the connect the vfio driver to it, but xhci still binds to it
  as well, so passing PCI device to VM does not work.

  Adding "0000:27:00.0,xhci" to /etc/unbindpci also did not work.

  By adding the USB controller to the VM, USB devices connected to it
  does seem to be USB devices on the VM, but some of the drivers does
  not load correctly in Windows 10. For example, I need to install a
  device driver for a ROCKEY4 USB dongle and even though the driver
  installs (which must be done with device disconnected), the driver
  does not seem to ever bind correctly to the device because the
  software that uses the dongle does not recognise it.

  I have successfully bound a PCI graphics adapter to the VM, so in
  principle PCI passthrough works, bit in the case of the USB PCI card
  there seems to be no way to pass the device to a VM.

  Expected result:

  PCI passthrough should be available to all types of PCI devices and
  instructions should be available from qemu or kvm documentation even
  though it involves different parts of the OS (such as making use of
  /etc/modprobe/vfio.conf, /etc/unbindpci etc)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1781891/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to