I’ve been fiddling with PCIE passthrough for a few years now. One issue that I have run into over and over again is PCIE slot IDs wandering. What do I mean by this?
When I boot up my computer, one of my devices may show up as 03:00.3. However, if I plugin another PCIE device that PCIE Bus:Slot.Func identifier may change. This is also true when changing BIOS settings and enabling/disabling USB/SATA/Ethernet controllers. This week, this issue has been unfathomably annoying when trying to perform PCIE passthrough on one of my on-board USB controllers. Anytime I want to add/remove a device, I then have to re-assess which PCIE device goes to which virtual machine.
We have predictable naming for ethernet cards, is there an equivalent for PCIE device enumerations?
I took a stab at this with a script https://github.com/DotBowder/PassthroughManager to make it easier on myself. The script (ptm.sh) will look for the configuration file (ptm.conf). The configuration file lists PCIE devices by the name identified by (lspci -nn) and maps them to Proxmox virtual machine IDs. I have been thinking about restructuring this and baking it into a startup script, but, I would much rather use something that already exists and not re-invent the wheel.
How do you manage wandering PCIE XX:YY.ZZ when you perform configuration changes?