Greetings Michal,
> Sent: Monday, August 26, 2024 at 12:42 PM
> From: "Michal Prívozník" <[email protected]>
> To: "daggs" <[email protected]>, [email protected]
> Subject: Re: splitting a bt wifi combo between two vms
>
> 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
>
>
that is the thing, from what I can see, this combo device has a pci device
which is the wifi, see:
$ tail /sys/bus/pci/devices/0000\:03\:00.0/{device,vendor}
==> /sys/bus/pci/devices/0000:03:00.0/device <==
0x2723
==> /sys/bus/pci/devices/0000:03:00.0/vendor <==
0x8086
dagg@NCC-5001D ~ $ ll /sys/bus/pci/devices/0000\:03\:00.0/iommu_group
lrwxrwxrwx 1 root root 0 Aug 26 09:44
/sys/bus/pci/devices/0000:03:00.0/iommu_group ->
../../../../../../kernel/iommu_groups/13
while the bt is a usb device, see:
$ tail /sys/bus/usb/devices/1-5/id*
==> /sys/bus/usb/devices/1-5/idProduct <==
0029
==> /sys/bus/usb/devices/1-5/idVendor <==
8087
both of them are AX200
Dagg