bhyve PCI pass-through to Linux guest

Sergey Manucharian sm at ara-ler.com
Wed Dec 23 05:07:31 UTC 2015


Excerpts from Peter Grehan's message from Tue 22-Dec-15 13:09:
> > I pass trough a PCI device (USB controller) to a Linux guest. It works
> > properly. Then I halt the VM, make sure that bhyve destroyed it and run
> > Windows guest with the same PCI device passed-through.
> >
> > Windows device manager does show the device, however, e.g. a flash drive
> > plugged in is not presented to Windows, instead it's being processed by
> > FreeBSD.
> >
> > After that it does not work in Linux guest as well. Kernel module (vmm)
> > unloading and reloading does not help.
> 
>   The flash drive being processed by FreeBSD would indicate that it has 
> ownership of the device. Would you be able to try a 'pciconf -vl' after 
> the Linux guest exists, and after the Windows guest exits ?

First of all I found that I do not need to switch between guests. It is
100% reproducible with a single Linux VM. In freshly booted FreeBSD the USB
ports (ones passed through) do not sense any device plugged in. When I boot
Linux VM, it fully controls those ports, and I see the USB flash in Linux.
As soon as I halt Linux, the flash drive appears in the host!

Today I've checked out the latest sources and recompiled the whole system. 
Nothing has changed.

Here is the corresponding output of pciconf iand devinfo after Linux exits:

$ pciconf -vl
....
ppt0 at pci0:0:20:0:	class=0x0c0330 card=0x21f317aa chip=0x1e318086
rev=0x04 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '7 Series/C210 Series Chipset Family USB xHCI Host
Controller'
    class      = serial bus
    subclass   = USB
....

$ devinfo | grep -B15 mass
....
pcib1
  pci1
    sdhci_pci0
pcib2
  pci2
    iwn0
pcib3
  pci3
ehci1
  usbus1
    uhub1
      uhub3
        umass0
....

--
S.


More information about the freebsd-virtualization mailing list