Re: splitting a bt wifi combo between two vms

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

 



On 8/26/24 10:37, daggs via Users wrote:
> Greetings,
> 
> I have the following combo device:
> dagg@NCC-5001D ~ $ lsusb -d8087:0029
> Bus 001 Device 002: ID 8087:0029 Intel Corp. AX200 Bluetooth
> dagg@NCC-5001D ~ $ lspci -vv -s 03:00.0
> 03:00.0 Network controller: Intel Corporation Wi-Fi 6 AX200 (rev 1a)
>         Subsystem: Intel Corporation Wi-Fi 6 AX200NGW
>         Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>         Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>         Interrupt: pin A routed to IRQ 34
>         IOMMU group: 13
>         Region 0: Memory at fc600000 (64-bit, non-prefetchable) [size=16K]
>         Capabilities: <access denied>
>         Kernel modules: iwlwifi
> 
> I want to pass each of them to a different vm.
> should I expect problems?

If you assign a PCI device to a VM then the host has to release it.
You're not showing the full PCI device config (I assume bluetooth is
another PCI function), but I'd assume it's all or nothing. I don't think
I've seen a PCI device that allows detaching a single PCI function
(apart from SRIO-V, which are specifically designed to do this). IOW, if
you assign the 03:00.0 PCI device to a VM then the other function
(bluetooth) has to be detached too at which point it can not be assigned
to another VM.

This can be verified via virsh:

virsh nodedev-dumpxml pci_0000_03_00_0

in the printed XML you'll find <iommuGroup/> element, e.g.:

    <iommuGroup number='14'>
      <address domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
    </iommuGroup>

If there's just one <address/> child element, then the device is in its
own iommu group and can be detached alone. If there are multiple child
elements, e.g.:

    <iommuGroup number='16'>
      <address domain='0x0000' bus='0x07' slot='0x01' function='0x0'/>
      <address domain='0x0000' bus='0x07' slot='0x04' function='0x0'/>
      <address domain='0x0000' bus='0x08' slot='0x00' function='0x0'/>
      <address domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>
      <address domain='0x0000' bus='0x06' slot='0x00' function='0x0'/>
      <address domain='0x0000' bus='0x04' slot='0x01' function='0x0'/>
    </iommuGroup>

then all devices within the iommu group have to be detached from the
host before giving any device to a VM.

Michal



[Index of Archives]     [Virt Tools]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]

  Powered by Linux