From: Li Zhang <zhlcindy(a)linux.vnet.ibm.com>
For QEMU2.0 forward version on PPC64, it supports PCI multibus.
Currently, libvirt still disables it which causes an error
"Bus 'pci' not found".
Signed-off-by: Li Zhang <zhlcindy(a)linux.vnet.ibm.com>
---
src/qemu/qemu_capabilities.c | 26 ++++++++++++++++----------
1 file changed, 16 insertions(+), 10 deletions(-)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 381b3ec..812bbe0 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -2813,13 +2813,16 @@ virQEMUCapsInitHelp(virQEMUCapsPtr qemuCaps, uid_t runUid, gid_t
runGid)
false) < 0)
goto cleanup;
- /* Currently only x86_64 and i686 support PCI-multibus. */
- if (qemuCaps->arch == VIR_ARCH_X86_64 ||
- qemuCaps->arch == VIR_ARCH_I686) {
+ /* Currently only x86_64, i686 and PPC64 support PCI-multibus. */
+ if ((qemuCaps->arch == VIR_ARCH_PPC64 &&
+ qemuCaps->version >= 2000000) ||
+ ARCH_IS_X86(qemuCaps->arch)) {
virQEMUCapsSet(qemuCaps, QEMU_CAPS_PCI_MULTIBUS);
- } else {
- /* -no-acpi is not supported on other archs
- * even if qemu reports it in -help */
+ }
+
+ /* -no-acpi is not supported on non-X86 archs
+ * even if qemu reports it in -help */
+ if (!ARCH_IS_X86(qemuCaps->arch)) {
virQEMUCapsClear(qemuCaps, QEMU_CAPS_NO_ACPI);
}
@@ -2940,11 +2943,14 @@ virQEMUCapsInitArchQMPBasic(virQEMUCapsPtr qemuCaps,
}
/*
- * Currently only x86_64 and i686 support PCI-multibus,
- * -no-acpi and -no-kvm-pit-reinjection.
+ * Currently only x86_64, i686 and PPC64 support PCI-multibus,
+ * Moreover, the first two arches support -no-acpi and
+ * -no-kvm-pit-reinjection.
*/
- if (qemuCaps->arch == VIR_ARCH_X86_64 ||
- qemuCaps->arch == VIR_ARCH_I686) {
+ if (qemuCaps->arch == VIR_ARCH_PPC64 &&
+ qemuCaps->version >= 2000000) {
+ virQEMUCapsSet(qemuCaps, QEMU_CAPS_PCI_MULTIBUS);
+ } else if (ARCH_IS_X86(qemuCaps->arch)) {
virQEMUCapsSet(qemuCaps, QEMU_CAPS_PCI_MULTIBUS);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_ACPI);
virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_KVM_PIT);
--
1.8.2.1