I’m using virt-install to spin up VMs.  At times I have a need to spin up VMs which have 100s of interfaces.  I ran into the PCI issue mentioned in this previous thread based on how virt-install assigns PCI addresses to interfaces:

 

https://www.redhat.com/archives/libvirt-users/2018-December/msg00064.html

 

Using the info mention there I was able to part hand / part sw re-write an XML where I would remove PCI bus references above the value of 8 and re-address the per interface PCI info to use the function field (I don’t need hot pluggable).    

 

But the process I’ve built is brittle.


Wondering what options i might have to better deal with this PCI issue.

 

Is there a way to tell virt-install, when building the info it passes to qemu, to use the function field during the PCI assignment process so as to support many more interfaces before hitting the PCI bus == 8 issue?

 

If not, is there a way with one of the virt command line tools to create the XML (with the PCI addresses specified) so that I can process that XML and re-write the PCI addressing values?  Right now the only way I’ve been able to get that detailed XML file is to 1) virt-install and let the VM begin the boot process and then do a 2) virsh dumpxml and then 3) virsh destroy/undefine that VM, 4) modify the XML and then 5) virsh create ./modified.xml.  Is there a cleaner way to do this?


Thanks