On Wed, Feb 22, 2023 at 02:40:32AM -0800, Andrea
Bolognani wrote:
I don't think this is going to work.
The problem is that, while PCI buses are indeed named with increasing
numbers in integer format (pci.9, pci.10 and so on), PCI slots are
addressed using hexadecimal format (0x9, 0xa and so on). libvirt uses
this naming convention because it matches QEMU's.
Actually, I think we're ok. PCI slots are addressed in hex by
convention, but AFAICT if you *just* give a slot number, it will
accept either decimal or hex (so addr=10 and addr=0xa are equivalent).
That's *not* true if you use SS.F format to include the function
number - then it expects hex only. But we're not doing that, so so
always using decimal should be ok here.
Source: set_pci_devfn() in the qemu source
Obviously that's a pretty fragile hack, but that's 'qrap' for you.
Yeah, even if that happens to work I'd rather not rely on it,
especially since a proper solution doesn't look like it would be a
lot of additional effort.
I've managed to reproduce the original issue in the context of
KubeVirt. I'll hopefully have a patch ready soon.
--
Andrea Bolognani / Red Hat / Virtualization