Re: [PATCH 1/1] Enable QEMU_CAPS_PCI_MULTIBUS capability for QEMU2.0 forward.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2014年04月10日 13:50, Michal Privoznik wrote:
On 10.04.2014 07:26, Li Zhang wrote:
On 2014年04月09日 17:25, Michal Privoznik wrote:
On 09.04.2014 04:03, Li Zhang wrote:
From: Li Zhang <zhlcindy@xxxxxxxxxxxxxxxxxx>

For QEMU2.0 forward version, it supports PCI multiBUS.
Currently, libvirt still disables it which causes an error
"Bus 'pci' not found".

Signed-off-by: Li Zhang <zhlcindy@xxxxxxxxxxxxxxxxxx>
---
src/qemu/qemu_capabilities.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 2c8ec10..b49398f 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -3019,6 +3019,9 @@ virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps,
if (qemuCaps->version >= 1006000)
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DEVICE_VIDEO_PRIMARY);

+ if (qemuCaps->version >= 2000000)
+ virQEMUCapsSet(qemuCaps, QEMU_CAPS_PCI_MULTIBUS);
+
if (virQEMUCapsProbeQMPCommands(qemuCaps, mon) < 0)
goto cleanup;
if (virQEMUCapsProbeQMPEvents(qemuCaps, mon) < 0)


Libvirt is setting this capability unconditionally for all x86_64 and
i686 (see virQEMUCapsInitArchQMPBasic). What is the actual scenario
you're seeing this error in?

For pseries machine, before QEMU2.0, the PCI bus default name is always
"pci".
QEMU2.0 changed the name as "pci.0" to support MULTBUS a couple days ago.

If libvirt still parses the name as "pci" with QEMU_CAPS_PCI_MULTIBUS
disabled,
it will report the error "Bus 'pci' not found".

I may need to add a PPC64 condition if X86 always enables MULTIBUS.

Yeah, I see. But then again, I think we need a different patch after all:

It still needs QEMU version check to be compatible with older QEMU. :)
I will change it  according to your suggestion.

Thanks. :)


diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 381b3ec..a14161d 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -2940,10 +2940,13 @@ 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 ||
+    if (qemuCaps->arch == VIR_ARCH_PPC64) {
+        virQEMUCapsSet(qemuCaps, QEMU_CAPS_PCI_MULTIBUS);
+    } else if (qemuCaps->arch == VIR_ARCH_X86_64 ||
         qemuCaps->arch == VIR_ARCH_I686) {
         virQEMUCapsSet(qemuCaps, QEMU_CAPS_PCI_MULTIBUS);
         virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_ACPI);


Michal

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list





[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]