Assigning device to a qube leads to another device nonassignable

First of all, it is not related to the other issue I have, That device isn’t assignable by itself.

Namely, when I assign a device to a qube (HVM, of course), the other device becomes nonassignable, which is checked executing
$ sudo xl pci-assignable-list

Devices aren’t in the same iommu_group, so that is not the cause. Actually, the device that is assigned (that way causing the other one to become nonassignable) isn’t even found in IOMMU_group, but it works flawlessly in Qubes, assigned or not???

Obviously, they share something that makes the other one nonassignable when the other is assigned. What that could be? IRQ, or something else, and if so…

... any point to a resource to read and learn would me more than enough and appreciated.

I couldn’t find any info on this, so thanks for even reading this.


Make sure that devices are effectively using only one function.
If I’m unclear, think about the example of a GPU device, which has 2 functions : video + audio.
I think you cannot PT one function w/o the other.

Well. I must admit that reading this doesn’t help to resolve the confusion, especially knowing that we are already provided with the possibility of separated sys-audio and sys-gui.

Well, while trying to be private as possible not to disclose which devices are in the matter but to get the help, I can only tell that they don’t have anything in common, and have absolutely different functions, like vga and usb-wifi for example, so assigning wifi to sys-usb makes vga nonassignable.

I may be wrong, but I guess this possibility is reserved to desktop users, who for the most part have a separate audio card on the MoBo, in addition to the audio of the GPU. I admit I never tried to PT one w/o the other.

I don’t know what you mean by that. All devices should be in a IOMMU group afaik.

Then, not easy to help w/o information … Just provide it redacted. Change brands, drivers, PCI ids, etc.
Kernel driver/module used ? Are you sure the PCI ids are correct in the kernel hide command line ? Are you effectively hiding them all ? Is the syntax correct ?
Maybe your platform isn’t well supported ? Needs PCI quirks, no-strict-reset, permissive mode, etc ? BIOS update ? What do logs say ? Do you try the “-v” switch when using xl commands ?
So many things could go wrong ^^

But I’d also like to know how the qubes handling/commands are different from Xen ones.
I guess it’s done so, so they can eventually move away from Xen w/o rewriting everything, but imo it just adds confusion (at least for ppl like me coming from vanilla Xen).
For instance, what happens when you select a device in the Devices tab of the qubes manager, and then you delete the corresponding Qube ? How is the device handled then ?

I found a bit of information there : qubes.devices – Devices — core-admin v4.1.26-0-gd5106198-dirty documentation, but it’s meant for devs, not sysadmins ^^
When qubes.xml is mentionned, it’s /var/lib/qubes/qubes.xml, it has all information about the domUs, libvirt style. Try to find some information from the blocks of each domU.
Also, I’ve found in man qvm-pci that there is a “persistent” option when attaching.