[libvirt] [PATCH V2 2/6] qemu: Introduce vgamem attribute for video model

Michal Privoznik mprivozn at redhat.com
Thu Jul 24 09:40:28 UTC 2014


On 14.07.2014 13:20, Wang Rui wrote:
> From: Zeng Junliang <zengjunliang at huawei.com>
>
> This patch introduces vgamem attribute for video model, and sets
> its default value as qemu used. Parse it in two ways accroding to
> qemu startup parameters supported: -device or -vga.
>
> Signed-off-by: Zeng Junliang <zengjunliang at huawei.com>
> Signed-off-by: Wang Rui <moon.wangrui at huawei.com>
> ---
>   src/conf/domain_conf.c   | 48 ++++++++++++++++++++++++++++++-
>   src/conf/domain_conf.h   |  3 +-
>   src/libvirt_private.syms |  1 +
>   src/qemu/qemu_command.c  | 75 ++++++++++++++++++++++++++++++++----------------
>   4 files changed, 101 insertions(+), 26 deletions(-)

missing docs and RNG schema adjustment. And I'd introduce a new XML to 
test too.

>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 63d97ec..d5a65c3 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -9328,6 +9328,20 @@ virDomainVideoDefaultRAM(const virDomainDef *def,
>       }
>   }
>
> +int
> +virDomainVideoDefaultVgamem(int type)
> +{
> +    switch (type) {
> +    case VIR_DOMAIN_VIDEO_TYPE_VGA:
> +    case VIR_DOMAIN_VIDEO_TYPE_VMVGA:
> +    case VIR_DOMAIN_VIDEO_TYPE_QXL:
> +        /* QEMU use 16M as default value for vga/vmvga/qxl device*/
> +        return 16 * 1024;
> +
> +    default:
> +        return 0;
> +    }
> +}
>
>   int
>   virDomainVideoDefaultType(const virDomainDef *def)
> @@ -9413,6 +9427,7 @@ virDomainVideoDefParseXML(xmlNodePtr node,
>       char *type = NULL;
>       char *heads = NULL;
>       char *vram = NULL;
> +    char *vgamem = NULL;
>       char *ram = NULL;
>       char *primary = NULL;
>
> @@ -9422,11 +9437,12 @@ virDomainVideoDefParseXML(xmlNodePtr node,
>       cur = node->children;
>       while (cur != NULL) {
>           if (cur->type == XML_ELEMENT_NODE) {
> -            if (!type && !vram && !ram && !heads &&
> +            if (!type && !vram && !ram && !heads && !vgamem &&
>                   xmlStrEqual(cur->name, BAD_CAST "model")) {
>                   type = virXMLPropString(cur, "type");
>                   ram = virXMLPropString(cur, "ram");
>                   vram = virXMLPropString(cur, "vram");
> +                vgamem = virXMLPropString(cur, "vgamem");
>                   heads = virXMLPropString(cur, "heads");
>
>                   if ((primary = virXMLPropString(cur, "primary")) != NULL) {
> @@ -9490,6 +9506,24 @@ virDomainVideoDefParseXML(xmlNodePtr node,
>           def->vram = virDomainVideoDefaultRAM(dom, def->type);
>       }
>
> +    if (vgamem) {
> +        if (def->type != VIR_DOMAIN_VIDEO_TYPE_VGA &&
> +            def->type != VIR_DOMAIN_VIDEO_TYPE_VMVGA &&
> +            def->type != VIR_DOMAIN_VIDEO_TYPE_QXL) {
> +            virReportError(VIR_ERR_XML_ERROR, "%s",
> +                           _("vgamem attribute only supported "
> +                             "for type of vga, vmvga and qxl"));
> +            goto error;
> +        }

Spaces at EOL

> +        if (virStrToLong_ui(vgamem, NULL, 10, &def->vgamem) < 0) {
> +            virReportError(VIR_ERR_XML_ERROR,
> +                           _("cannot parse video vgamem '%s'"), vgamem);
> +            goto error;
> +        }
> +    } else {
> +        def->vgamem = virDomainVideoDefaultVgamem(def->type);
> +    }
> +

And again.


But I'm wondering how's vgamem different to vram. If it covers the same 
attribute but for different models, I'd vote for keeping already 
existing attribute name.

Michal




More information about the libvir-list mailing list