[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