Trying to create a MIPS guest via virt-manager and getting this error: Unable to complete install: 'XML error: No PCI buses available' Traceback (most recent call last): File "/usr/share/virt-manager/virtManager/asyncjob.py", line 88, in cb_wrapper callback(asyncjob, *args, **kwargs) File "/usr/share/virt-manager/virtManager/create.py", line 2288, in _do_async_install guest.start_install(meter=meter) File "/usr/share/virt-manager/virtinst/guest.py", line 461, in start_install doboot, transient) File "/usr/share/virt-manager/virtinst/guest.py", line 396, in _create_guest self.domain = self.conn.createXML(install_xml or final_xml, 0) File "/usr/lib64/python2.7/site-packages/libvirt.py", line 3782, in createXML if ret is None:raise libvirtError('virDomainCreateXML() failed', conn=self) libvirtError: XML error: No PCI buses available Some discussion of this issue took place a while ago. https://www.redhat.com/archives/libvir-list/2016-May/msg00197.html
Hello Iran, could you reproduce it again?
Issue still present when attempting to create MIPS guest via virt-manager, and adding additional environments with same issue (virt-install and openstack nova leveraging libvirt). Attempts were made across multiple paths still receiving same error message 'XML error: No PCI buses available' when trying to define a VM using mips64el architecture. System Information: Description: Ubuntu Focal Fossa Release: 20.04.3 LTS Linux version 5.4.0-88-generic (buildd@lgw01-amd64-008) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #99-Ubuntu SMP Thu Sep 23 17:29:00 UTC 2021 (Ubuntu 5.4.0-88.99-generic 5.4.140) Binary Information: /usr/sbin/libvirtd libvirtd (libvirt) 6.0.0 XML and Trace Errors: - virt-install attempt ### https://pastebin.com/nuPPieaw Error Message: ERROR XML error: No PCI buses available - virt-manager attempt ### https://pastebin.com/camUditW Error Message: libvirt.libvirtError: XML error: No PCI buses available - openstack attempt ### https://pastebin.com/3Tsj7Cxz ### https://pastebin.com/6VunTvpy Error Message: libvirt.libvirtError: XML error: No PCI buses available reference for original patch details: https://listman.redhat.com/archives/libvir-list/2016-May/msg00197.html reference for original ubuntu bug details: https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1561497
i am not familar with the mips emulation but just in case its useful I suspect this is related to the machine type https://www.qemu.org/docs/master/system/target-mips.html the default one i don't think support PCI devices so malta? might be required. the Loongson-3 virtual platform might also be work trying https://www.phoronix.com/scan.php?page=news_item&px=Loongson3-Linux-5.8-KVM-Virt it sound like it a realitive recent platform. https://listman.redhat.com/archives/libvir-list/2016-May/msg00197.html which you reference before was related to the malta machine type. so it seam to confirm it has a root PCIe controller so that is probably the best place to start.
All associated mailing lists relating to this bug: https://listman.redhat.com/archives/libvir-list/2016-May/msg00197.html - associated code: Signed-off-by: Aurelien Jarno <aurelien aurel32 net> --- src/qemu/qemu_domain.c | 15 ++++++++++++++- src/qemu/qemu_domain.h | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 173f82c..75b0545 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 173f82c..75b0545 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1763,6 +1763,14 @@ qemuDomainDefAddDefaultDevices(virDomainDefPtr def, addPCIeRoot = virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_GPEX); break; + case VIR_ARCH_MIPS: + case VIR_ARCH_MIPSEL: + case VIR_ARCH_MIPS64: + case VIR_ARCH_MIPS64EL: + if (qemuDomainMachineIsMalta(def)) + addPCIRoot = true; + break; + case VIR_ARCH_PPC64: case VIR_ARCH_PPC64LE: addPCIRoot = true; @@ -4654,6 +4662,11 @@ qemuDomainMachineIsVirt(const virDomainDef *def) STRPREFIX(def->os.machine, "virt-"); } +bool +qemuDomainMachineIsMalta(const virDomainDef *def) +{ + return STRPREFIX(def->os.machine, "malta"); +} static bool qemuCheckMemoryDimmConflict(const virDomainDef *def, @@ -4830,7 +4843,7 @@ bool qemuDomainMachineHasBuiltinIDE(const virDomainDef *def) { return qemuDomainMachineIsI440FX(def) || - STREQ(def->os.machine, "malta") || + qemuDomainMachineIsMalta(def) || STREQ(def->os.machine, "sun4u") || STREQ(def->os.machine, "g3beige"); } diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 95f821c..adba5fa 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -585,6 +585,7 @@ bool qemuDomainMachineIsI440FX(const virDomainDef *def); bool qemuDomainMachineNeedsFDC(const virDomainDef *def); bool qemuDomainMachineIsS390CCW(const virDomainDef *def); bool qemuDomainMachineIsVirt(const virDomainDef *def); +bool qemuDomainMachineIsMalta(const virDomainDef *def); bool qemuDomainMachineHasBuiltinIDE(const virDomainDef *def); int qemuDomainUpdateCurrentMemorySize(virQEMUDriverPtr driver, -- https://www.spinics.net/linux/fedora/libvir/msg227695.html - references general libvirt pci bus error https://www.spinics.net/linux/fedora/libvir/msg227696.html - associated code: Signed-off-by: Lubomir Rintel <lkundrak@xxxxx> --- src/util/virarch.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/util/virarch.h b/src/util/virarch.h index 528f84f8a5..81b1b27a57 100644 --- a/src/util/virarch.h +++ b/src/util/virarch.h @@ -95,6 +95,11 @@ typedef enum { #define ARCH_IS_S390(arch) ((arch) == VIR_ARCH_S390 ||\ (arch) == VIR_ARCH_S390X) +#define ARCH_IS_MIPS(arch) ((arch) == VIR_ARCH_MIPS ||\ + (arch) == VIR_ARCH_MIPSEL ||\ + (arch) == VIR_ARCH_MIPS64 ||\ + (arch) == VIR_ARCH_MIPS64EL) + #define ARCH_IS_MIPS64(arch) ((arch) == VIR_ARCH_MIPS64 ||\ (arch) == VIR_ARCH_MIPS64EL) -- https://www.spinics.net/linux/fedora/libvir/msg227697.html - associated code: Signed-off-by: Lubomir Rintel <lkundrak@xxxxx> --- src/qemu/qemu_domain.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 0bae9b9202..b7aad65048 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -3703,6 +3703,14 @@ qemuDomainDefAddDefaultDevices(virQEMUDriver *driver, addPCIRoot = true; break; + case VIR_ARCH_MIPS: + case VIR_ARCH_MIPSEL: + case VIR_ARCH_MIPS64: + case VIR_ARCH_MIPS64EL: + if (qemuDomainIsMipsMalta(def)) + addPCIRoot = true; + break; + case VIR_ARCH_ARMV7B: case VIR_ARCH_CRIS: case VIR_ARCH_ITANIUM: @@ -3710,10 +3718,6 @@ qemuDomainDefAddDefaultDevices(virQEMUDriver *driver, case VIR_ARCH_M68K: case VIR_ARCH_MICROBLAZE: case VIR_ARCH_MICROBLAZEEL: - case VIR_ARCH_MIPS: - case VIR_ARCH_MIPSEL: - case VIR_ARCH_MIPS64: - case VIR_ARCH_MIPS64EL: case VIR_ARCH_OR32: case VIR_ARCH_PARISC: case VIR_ARCH_PARISC64: --
Thank you for reporting this issue to the libvirt project. Unfortunately we have been unable to resolve this issue due to insufficient maintainer capacity and it will now be closed. This is not a reflection on the possible validity of the issue, merely the lack of resources to investigate and address it, for which we apologise. If you none the less feel the issue is still important, you may choose to report it again at the new project issue tracker https://gitlab.com/libvirt/libvirt/-/issues The project also welcomes contribution from anyone who believes they can provide a solution.