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