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

Li Zhang zhlcindy at gmail.com
Thu Apr 10 07:16:01 UTC 2014


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 at linux.vnet.ibm.com>
>>>>
>>>> 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 at linux.vnet.ibm.com>
>>>> ---
>>>> 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




More information about the libvir-list mailing list