[libvirt] [PATCH] qemu: Detect VGA_QXL capability correctly
Michal Privoznik
mprivozn at redhat.com
Fri Jan 4 14:10:16 UTC 2013
On 04.01.2013 15:06, Guannan Ren wrote:
> On 01/04/2013 05:00 PM, Michal Privoznik wrote:
>> Since 4c993d8a we failed to set this important capability, which
>> allows starting a domain with QXL video card. We set DEVICE_QXL
>> capability bit instead, which is not necessary wrong. Anyway, if
>> qemu supports the new '-device qxl' it supports older '-vga qxl'
>> as well. The latter is used for the primary (the first) qxl video
>> card, the former for other video cards.
>> ---
>>
>> Other approach is to set QEMU_CAPS_VGA_QXL unconditionally
>> as supported by all qemu-1.2+ in qemuCapsInitQMPBasic().
>> But I think this one is slightly nicer.
>>
>> 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 f49a31c..e16bc70 100644
>> --- a/src/qemu/qemu_capabilities.c
>> +++ b/src/qemu/qemu_capabilities.c
>> @@ -2018,6 +2018,9 @@ qemuCapsProbeQMPObjects(qemuCapsPtr caps,
>> /* Prefer -chardev spicevmc (detected earlier) over -device
>> spicevmc */
>> if (qemuCapsGet(caps, QEMU_CAPS_CHARDEV_SPICEVMC))
>> qemuCapsClear(caps, QEMU_CAPS_DEVICE_SPICEVMC);
>> + /* If qemu supports newer -device qxl it supports -vga qxl as
>> well */
>> + if (qemuCapsGet(caps, QEMU_CAPS_DEVICE_QXL))
>> + qemuCapsSet(caps, QEMU_CAPS_VGA_QXL);
>> return 0;
>> }
>
> I don't think it is necessary to add this code.
> because we have set the caps flag in qemuCapsParseHelpStr()
>
> if (strstr(p, "|qxl"))
> qemuCapsSet(caps, QEMU_CAPS_VGA_QXL);
which is not called if capabilities are initialized via QMP.
>
> The problem here is about collecting cap flags via QMP, we need to
> set QEMU_CAPS_VGA_QXL
> unconditionally but still in discussion.
>
> Patch from Doug Goldstein in [libvirt] [PATCH] The -vga CLI arg
> accepts qxl in qemu 1.2+ always
>
> The -vga command always accepts qxl in 1.2 and newer.
> ---
> src/qemu/qemu_capabilities.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
> index f49a31c..c3ab488 100644
> --- a/src/qemu/qemu_capabilities.c
> +++ b/src/qemu/qemu_capabilities.c
> @@ -2282,6 +2282,7 @@ qemuCapsInitQMPBasic(qemuCapsPtr caps)
> qemuCapsSet(caps, QEMU_CAPS_NO_USER_CONFIG);
> qemuCapsSet(caps, QEMU_CAPS_NETDEV_BRIDGE);
> qemuCapsSet(caps, QEMU_CAPS_SECCOMP_SANDBOX);
> + qemuCapsSet(caps, QEMU_CAPS_VGA_QXL);
> }
>
I don't think it should be set unconditionally neither. I know I wrote
it under commit message, but now re-thinking it again - what if somebody
builds his own qemu without QXL?
Michal
More information about the libvir-list
mailing list