From nobody Mon Feb 9 00:20:38 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1570505970; cv=none; d=zoho.com; s=zohoarc; b=jekmAPxRwq276EQ/7AXdOxvDk2oRVzg/mK+phhEZcxUACd5we78gyMjsJYj4GrwGSw/NNRqpsjHEokbgUlRvnF87On6BewJtMt5KBXjUiGHv3rBqkKspVZU/d7S5ogjGPUgQvvJN/dY2uK8+5jhcU+YBVtwVopU25cqnRUT/bog= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570505970; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=R+frRCE5jPOnWgIpbHZsiRJlHGvj1AGrpsXf7TnjnHA=; b=QoDPfXSJE9ohvYy8XUSO+kA9wAE7obWU6Qm/eUiG36bRMZVSRwXSNXhfqRWS5eDljIQ2IFjE7F6pwE3ldSL0rnJxbwjYA3JtbH8x7wHclV+pFdRHErHh4IbWfh9nvtp47bGqwbYh3ZVxKAlnWDG6sqlxBy7mlIVXz3XLRdB8r+A= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1570505970878853.3876068645425; Mon, 7 Oct 2019 20:39:30 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C414F63704; Tue, 8 Oct 2019 03:39:28 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 710CB19C68; Tue, 8 Oct 2019 03:39:28 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id E028C180B761; Tue, 8 Oct 2019 03:39:27 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x983btHT030816 for ; Mon, 7 Oct 2019 23:37:55 -0400 Received: by smtp.corp.redhat.com (Postfix) id 09F3519C69; Tue, 8 Oct 2019 03:37:55 +0000 (UTC) Received: from mx1.redhat.com (ext-mx01.extmail.prod.ext.phx2.redhat.com [10.5.110.25]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0485119C68 for ; Tue, 8 Oct 2019 03:37:52 +0000 (UTC) Received: from mail-qt1-f194.google.com (mail-qt1-f194.google.com [209.85.160.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CEFFC81F31 for ; Tue, 8 Oct 2019 03:37:51 +0000 (UTC) Received: by mail-qt1-f194.google.com with SMTP id m15so22960159qtq.2 for ; Mon, 07 Oct 2019 20:37:51 -0700 (PDT) Received: from localhost.localdomain ([2804:431:c7cb:2ffa:6543:6636:1395:624c]) by smtp.gmail.com with ESMTPSA id n192sm8186314qke.9.2019.10.07.20.37.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Oct 2019 20:37:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ID2iIsyiAJwKzmNrGMVHLvJu//+tB6KudUc33nr9VWE=; b=pyDzfN8rAanKVCpYP5aBTWQ7YREGlA3W/cTEy+FX3t3u2pocH356Mhd5PLcDNQmDWv BTfmeLqNFbh4kpseraYDtgILf3pZfRuWY2pKgpRqjoDFd4fpptfwfREH/rtqPpz7lZV0 B0H1dq+ef0MB2pbLFLFM5VbOLRZAPJiGFydw7J/faXBOLyocU8KBRkQFbtb7WbqLRit8 G35yxBE3L9MbyU+Fg8dqar7637G+oQB2DE1VL0xOgjgYHQKgGTEQT07US1egfD+my6wB ZvLNdPWvDBjerS9TGw2cpqeC0KGYzS7vrkvUQIm4FaDlDP0tlbnOiSDH0Sich9K7FRYV 91hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ID2iIsyiAJwKzmNrGMVHLvJu//+tB6KudUc33nr9VWE=; b=akTpvA/k2HnLWrD7FSXwqXcFP8OkSAEUgfn2IEIvndRQSTtI4xFlW/ORkeg7vCCusg d0csNaxHtLZwTVc7n1Bnsbs33k6Y4zbHwdhysrShjNoN7cbkNXx+QpY+DH5HSYNguHmM H7jx3pRLI7tIMN2BUNqs25f3KlEAIo4Cj4HxjCAIQAzFw3HObNryiMVGPUDrXHmsNqKC gqSui8slXF1lmlNJPsRBxya1vtGAt96OgzYcnchq7Qr/vaFKEZA8iTjkLuQVhEOovCfe 3ZhmY/HIVOSorEeXdqjmhp8MvjvfOHA9rH7gcu1Uf3Fyul+vQ6VW6RYE3Gbe93COCndz NE6w== X-Gm-Message-State: APjAAAWlUssrCffAh97DWWholgW8mPqHQN+tgkw/ILwNAG7m52L7Iepy GlWwSbBaEmkiTgSBzy7yFNEzyeA4 X-Google-Smtp-Source: APXvYqzlDJqCBtu0g8ZrmS9a4lHze5+SXluhj5etUeRn190oCMtEebC5pU7gYnZhud2lMler8Zuq0w== X-Received: by 2002:a0c:fec3:: with SMTP id z3mr29307678qvs.122.1570505870590; Mon, 07 Oct 2019 20:37:50 -0700 (PDT) From: jcfaracco@gmail.com To: libvir-list@redhat.com Date: Tue, 8 Oct 2019 00:35:58 -0300 Message-Id: <20191008033558.24751-4-jcfaracco@gmail.com> In-Reply-To: <20191008033558.24751-1-jcfaracco@gmail.com> References: <20191008033558.24751-1-jcfaracco@gmail.com> MIME-Version: 1.0 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 08 Oct 2019 03:37:52 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 08 Oct 2019 03:37:52 +0000 (UTC) for IP:'209.85.160.194' DOMAIN:'mail-qt1-f194.google.com' HELO:'mail-qt1-f194.google.com' FROM:'jcfaracco@gmail.com' RCPT:'' X-RedHat-Spam-Score: -0.097 (DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS) 209.85.160.194 mail-qt1-f194.google.com 209.85.160.194 mail-qt1-f194.google.com X-Scanned-By: MIMEDefang 2.83 on 10.5.110.25 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-loop: libvir-list@redhat.com Cc: Julio Faracco Subject: [libvirt] [PATCH v3 3/4] conf: Add XML resolution support for video models X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Tue, 08 Oct 2019 03:39:29 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Julio Faracco XML need to support both properties together. This commit adds XML support for video model if they are set. Domain configuration is able to parse this properties as 'x' and 'y'. Code is not using same label as QEMU: 'xres' and 'yres'. Signed-off-by: Julio Faracco --- src/conf/domain_conf.c | 74 ++++++++++++++++++++++++++++++++++++++++- src/conf/domain_conf.h | 5 +++ src/conf/virconftypes.h | 3 ++ 3 files changed, 81 insertions(+), 1 deletion(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index a53cd6a725..950c4522f9 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -15403,6 +15403,52 @@ virDomainVideoAccelDefParseXML(xmlNodePtr node) return def; } =20 +static virDomainVideoResolutionDefPtr +virDomainVideoResolutionDefParseXML(xmlNodePtr node) +{ + xmlNodePtr cur; + virDomainVideoResolutionDefPtr def; + VIR_AUTOFREE(char *) x =3D NULL; + VIR_AUTOFREE(char *) y =3D NULL; + + cur =3D node->children; + while (cur !=3D NULL) { + if (cur->type =3D=3D XML_ELEMENT_NODE) { + if (!x && !y && + virXMLNodeNameEqual(cur, "resolution")) { + x =3D virXMLPropString(cur, "x"); + y =3D virXMLPropString(cur, "y"); + } + } + cur =3D cur->next; + } + + if (!x || !y) + return NULL; + + if (VIR_ALLOC(def) < 0) + goto cleanup; + + if (x) { + if (virStrToLong_uip(x, NULL, 10, &def->x) < 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("cannot parse video x-resolution '%s'"), x); + goto cleanup; + } + } + + if (y) { + if (virStrToLong_uip(y, NULL, 10, &def->y) < 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("cannot parse video y-resolution '%s'"), y); + goto cleanup; + } + } + + cleanup: + return def; +} + static virDomainVideoDriverDefPtr virDomainVideoDriverDefParseXML(xmlNodePtr node) { @@ -15482,6 +15528,7 @@ virDomainVideoDefParseXML(virDomainXMLOptionPtr xml= opt, } =20 def->accel =3D virDomainVideoAccelDefParseXML(cur); + def->res =3D virDomainVideoResolutionDefParseXML(cur); } if (virXMLNodeNameEqual(cur, "driver")) { if (virDomainVirtioOptionsParseXML(cur, &def->virtio) < 0) @@ -15569,6 +15616,17 @@ virDomainVideoDefParseXML(virDomainXMLOptionPtr xm= lopt, } } =20 + if (def->res) { + if (def->type !=3D VIR_DOMAIN_VIDEO_TYPE_VGA && + def->type !=3D VIR_DOMAIN_VIDEO_TYPE_QXL && + def->type !=3D VIR_DOMAIN_VIDEO_TYPE_VIRTIO && + def->type !=3D VIR_DOMAIN_VIDEO_TYPE_BOCHS) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("model resolution is not supported")); + goto error; + } + } + if (virDomainDeviceInfoParseXML(xmlopt, node, &def->info, flags) < 0) goto error; =20 @@ -26574,6 +26632,18 @@ virDomainVideoAccelDefFormat(virBufferPtr buf, virBufferAddLit(buf, "/>\n"); } =20 +static void +virDomainVideoResolutionDefFormat(virBufferPtr buf, + virDomainVideoResolutionDefPtr def) +{ + virBufferAddLit(buf, "x && def->y) { + virBufferAsprintf(buf, " x=3D'%u' y=3D'%u'", + def->x, def->y); + } + virBufferAddLit(buf, "/>\n"); +} + static int virDomainVideoDefFormat(virBufferPtr buf, virDomainVideoDefPtr def, @@ -26621,11 +26691,13 @@ virDomainVideoDefFormat(virBufferPtr buf, virBufferAsprintf(buf, " heads=3D'%u'", def->heads); if (def->primary) virBufferAddLit(buf, " primary=3D'yes'"); - if (def->accel) { + if (def->accel || def->res) { virBufferAddLit(buf, ">\n"); virBufferAdjustIndent(buf, 2); if (def->accel) virDomainVideoAccelDefFormat(buf, def->accel); + if (def->res) + virDomainVideoResolutionDefFormat(buf, def->res); virBufferAdjustIndent(buf, -2); virBufferAddLit(buf, "\n"); } else { diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 2884af49d8..ce5da4ddf4 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1420,6 +1420,10 @@ struct _virDomainVideoAccelDef { char *rendernode; }; =20 +struct _virDomainVideoResolutionDef { + unsigned int x; + unsigned int y; +}; =20 struct _virDomainVideoDriverDef { virDomainVideoVGAConf vgaconf; @@ -1437,6 +1441,7 @@ struct _virDomainVideoDef { unsigned int heads; bool primary; virDomainVideoAccelDefPtr accel; + virDomainVideoResolutionDefPtr res; virDomainVideoDriverDefPtr driver; virDomainDeviceInfo info; virDomainVirtioOptionsPtr virtio; diff --git a/src/conf/virconftypes.h b/src/conf/virconftypes.h index a15cfb5f9e..462842f324 100644 --- a/src/conf/virconftypes.h +++ b/src/conf/virconftypes.h @@ -324,6 +324,9 @@ typedef virDomainVcpuDef *virDomainVcpuDefPtr; typedef struct _virDomainVideoAccelDef virDomainVideoAccelDef; typedef virDomainVideoAccelDef *virDomainVideoAccelDefPtr; =20 +typedef struct _virDomainVideoResolutionDef virDomainVideoResolutionDef; +typedef virDomainVideoResolutionDef *virDomainVideoResolutionDefPtr; + typedef struct _virDomainVideoDef virDomainVideoDef; typedef virDomainVideoDef *virDomainVideoDefPtr; =20 --=20 2.20.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list