[libvirt] [PATCH v2 1/1] Enable QEMU_CAPS_PCI_MULTIBUS capability for QEMU2.0 forward on PPC64.

Li Zhang zhlcindy at gmail.com
Thu Apr 10 08:59:51 UTC 2014


From: Li Zhang <zhlcindy at 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 at 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




More information about the libvir-list mailing list