Greetings Michal, > Sent: Monday, August 26, 2024 at 12:42 PM > From: "Michal Prívozník" <mprivozn@xxxxxxxxxx> > To: "daggs" <daggs@xxxxxxx>, users@xxxxxxxxxxxxxxxxx > 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