[libvirt] [PATCH] Add support for qxl.revision in domain XML
Martin Kletzander
mkletzan at redhat.com
Fri Feb 22 17:01:20 UTC 2013
On 02/21/2013 04:32 PM, Christophe Fergeau wrote:
> Hey Martin,
>
> Sorry, took me a while to get back to this patch,
>
No problem, I had the same issue :)
> On Thu, Feb 14, 2013 at 05:54:02PM +0100, Martin Kletzander wrote:
>> On 02/04/2013 04:16 PM, Christophe Fergeau wrote:
>>> ---
>>> docs/formatdomain.html.in | 5 ++++-
>>> docs/schemas/domaincommon.rng | 5 +++++
>>> src/conf/domain_conf.c | 17 +++++++++++++++++
>>> src/conf/domain_conf.h | 1 +
>>> src/qemu/qemu_command.c | 8 ++++++++
>>> .../qemuxml2argv-graphics-spice-compression.args | 3 ++-
>>> .../qemuxml2argv-graphics-spice-compression.xml | 4 ++--
>>> .../qemuxml2argv-graphics-spice-qxl-vga.args | 3 ++-
>>> .../qemuxml2argv-graphics-spice-qxl-vga.xml | 4 ++--
>>> tests/qemuxml2argvdata/qemuxml2argv-graphics-spice.args | 3 ++-
>>> tests/qemuxml2argvdata/qemuxml2argv-graphics-spice.xml | 4 ++--
>>> 11 files changed, 47 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
>>> index 7ad8aea..4b269c8 100644
>>> --- a/docs/formatdomain.html.in
>>> +++ b/docs/formatdomain.html.in
>>> @@ -3569,7 +3569,10 @@ qemu-kvm -net nic,model=? /dev/null
>>> attribute <code>ram</code> (<span class="since">since
>>> 1.0.2</span>) is allowed for "qxl" type only and specifies
>>> the size of the primary bar, while <code>vram</code> specifies the
>>> - secondary bar size. If "ram" is not supplied a default value is used.
>>> + secondary bar size. If "ram" or "vram" are not supplied a default
>>
>> Good fix, but it should in a be separate patch.
>
> Yes, split, I'll push this doc change under the trivial rule (unless
> there's a freeze going on).
>
>>
>>> + value is used. The optional attribute <code>revision</code> (<span
>>> + class="since">since 1.0.3</span>) specifies the revision of
>>> + the QXL device, newer revisions provides more functionality.
>>
>> s/provides/provide/ if I'm not mistaken
>
> Yes, I agree, changed.
>
>>
>>> </dd>
>>>
>>> <dt><code>model</code></dt>
>>> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
>>> index 049f232..fc78e2d 100644
>>> --- a/docs/schemas/domaincommon.rng
>>> +++ b/docs/schemas/domaincommon.rng
>>> @@ -2280,6 +2280,11 @@
>>> <ref name="unsignedInt"/>
>>> </attribute>
>>> </optional>
>>> + <optional>
>>> + <attribute name="revision">
>>> + <ref name="unsignedInt"/>
>>
>> This should be > 0 according to my experiments with qemu, but I believe
>> we don't deal with such nuances in the RNG scheme.
>
> I indeed don't know how to do that, and I couldn't find attributes doing it
> so it's going to stay as is for now ;)
>
>>
>>> + </attribute>
>>> + </optional>
>>> </group>
>>> </choice>
>>> <optional>
>>> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
>>> index 5782abb..83be711 100644
>>> --- a/src/conf/domain_conf.c
>>> +++ b/src/conf/domain_conf.c
>>> @@ -7391,6 +7391,7 @@ virDomainVideoDefParseXML(const xmlNodePtr node,
>>> char *vram = NULL;
>>> char *ram = NULL;
>>> char *primary = NULL;
>>> + char *revision = NULL;
>>>
>>> if (VIR_ALLOC(def) < 0) {
>>> virReportOOMError();
>>> @@ -7406,6 +7407,7 @@ virDomainVideoDefParseXML(const xmlNodePtr node,
>>> ram = virXMLPropString(cur, "ram");
>>> vram = virXMLPropString(cur, "vram");
>>> heads = virXMLPropString(cur, "heads");
>>> + revision = virXMLPropString(cur, "revision");
>>
>> You're leaking the revision string in here.
>
> Oops, thanks! Bad news is that there are already other leaks there in error
> paths, I'll send patches.
>
>>> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
>>> index 9a9e0b1..81925b1 100644
>>> --- a/src/conf/domain_conf.h
>>> +++ b/src/conf/domain_conf.h
>>> @@ -1160,6 +1160,7 @@ struct _virDomainVideoDef {
>>> unsigned int ram; /* kibibytes (multiples of 1024) */
>>> unsigned int vram; /* kibibytes (multiples of 1024) */
>>> unsigned int heads;
>>> + unsigned int revision;
>>> bool primary;
>>> virDomainVideoAccelDefPtr accel;
>>> virDomainDeviceInfo info;
>>> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
>>> index f6273c1..e45c808 100644
>>> --- a/src/qemu/qemu_command.c
>>> +++ b/src/qemu/qemu_command.c
>>> @@ -3598,6 +3598,9 @@ qemuBuildDeviceVideoStr(virDomainVideoDefPtr video,
>>>
>>> /* QEMU accepts bytes for vram_size. */
>>> virBufferAsprintf(&buf, ",vram_size=%u", video->vram * 1024);
>>> +
>>> + if (video->revision != 0)
>>
>> you can drop the '!= 0' in here, but that's unimportant.
>
> I prefer the more explicit version (with != 0), I've kept it this way as
> there are other similar if () in the same file.
>
I haven't noticed the other if()s and we have no consistent style for
this, so this doesn't matter, keep it this way.
> I'm a bit lost by your conversation with Alon, do you expect more work to
> be done to get the supported revisions out of QEMU, or will a v2 fixing
> what you pointed out in this email be enough for now?
>
I was just thinking out loud how to deal with this, but it's related to
the devices. There is a way how to detect those revisions etc., but
those are more cumbersome than helpful, so don't mind me talking about
that :) If somebody will have something against it, they will say so in
the v2 (I'll be mostly out for a few days from now).
Have a nice weekend,
Martin
More information about the libvir-list
mailing list