From nobody Fri Apr 26 18:07:36 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652467145; cv=none; d=zohomail.com; s=zohoarc; b=JWKr1X1bcL+v5ttva1KKRwy7wXEjl72hcqAbAI8irQM1Ax+Jbqmnwi4/B6ZSWBal8T8tTA7U7mTdZp8XI+vbaya8M11kHFjJ49upn6c/1oiyI+KimvGRRrVX4XT+U4Toc6wsxp5K29bj6VH8UE0eAn1uXjGFTTCFLnuMAVYlKaE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652467145; 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; bh=qqMCuRS4oNCXq5nf+HJjdO5sKcQrNE7FDur0Erzc9xc=; b=PpGYG3qa6gweX23rwlTqFBSyvn3Jw9n0npv6u347IDB7s7fFR4pqf9JjBkKkjyf80yXf1gFcw9T9E/xJ8I7J+gVmKGj3+1ivnxCtctssaskEK5Yecpv5uHkvpaspD6Rlx4canUUFumElC7LRxzPWhOufB/38PP1yXf4NBpuz4ww= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652467145653492.07331275611216; Fri, 13 May 2022 11:39:05 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-639-mIOmq3zZOt6foSiG5ZixnA-1; Fri, 13 May 2022 14:38:55 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id D99DC2949BA7; Fri, 13 May 2022 18:38:53 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id B6C54C52D68; Fri, 13 May 2022 18:38:52 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 7CD3A193222E; Fri, 13 May 2022 18:38:52 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 183F8194975B for ; Fri, 13 May 2022 18:38:51 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id ED2282166B18; Fri, 13 May 2022 18:38:50 +0000 (UTC) Received: from localhost (unknown [10.39.192.38]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3391A2166B17; Fri, 13 May 2022 18:38:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652467144; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=qqMCuRS4oNCXq5nf+HJjdO5sKcQrNE7FDur0Erzc9xc=; b=C5pv5cusgPvkMTycUhtQqHX0haGYG5zpLnVudEbDpIwvJeSyE2VqNcEugfczCmD9Crr7Jh z3U5C7MwAI5rlCJEAJN2Nlgr1KzzmynKJHgqJQdYVdJ7NMJxf2piTaIAvvngF6lCnLptZG S1LP7RmN0QrShM9U2Aj0eyjFoFkjcR4= X-MC-Unique: mIOmq3zZOt6foSiG5ZixnA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: marcandre.lureau@redhat.com To: libvir-list@redhat.com Subject: [libvirt PATCH v4 01/11] qemu: add -display dbus capability check Date: Fri, 13 May 2022 20:38:10 +0200 Message-Id: <20220513183820.925602-2-marcandre.lureau@redhat.com> In-Reply-To: <20220513183820.925602-1-marcandre.lureau@redhat.com> References: <20220513183820.925602-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mprivozn@redhat.com, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652467147101100001 From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Michal Privoznik --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml | 1 + 4 files changed, 5 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index a59d839d85..5134f44aa2 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -675,6 +675,7 @@ VIR_ENUM_IMPL(virQEMUCaps, =20 /* 430 */ "chardev.qemu-vdagent", /* QEMU_CAPS_CHARDEV_QEMU_VDAGENT */ + "display-dbus", /* QEMU_CAPS_DISPLAY_DBUS */ ); =20 =20 @@ -1625,6 +1626,7 @@ static struct virQEMUCapsStringFlags virQEMUCapsQMPSc= hemaQueries[] =3D { { "object-add/arg-type/+sev-guest/kernel-hashes", QEMU_CAPS_SEV_GUEST_= KERNEL_HASHES }, { "calc-dirty-rate/arg-type/mode", QEMU_CAPS_DIRTYRATE_MODE }, { "chardev-add/arg-type/backend/+qemu-vdagent", QEMU_CAPS_CHARDEV_QEMU= _VDAGENT }, + { "query-display-options/ret-type/+dbus", QEMU_CAPS_DISPLAY_DBUS }, }; =20 typedef struct _virQEMUCapsObjectTypeProps virQEMUCapsObjectTypeProps; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 59c09903f3..26cd655db3 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -650,6 +650,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for = syntax-check */ =20 /* 430 */ QEMU_CAPS_CHARDEV_QEMU_VDAGENT, /* -chardev qemu-vdagent */ + QEMU_CAPS_DISPLAY_DBUS, /* -display dbus */ =20 QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_7.0.0.x86_64.xml index 7523b92e6b..05f844fd5b 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml @@ -242,6 +242,7 @@ + 7000000 0 43100243 diff --git a/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_7.1.0.x86_64.xml index f598950cc3..bdc613a54a 100644 --- a/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml @@ -242,6 +242,7 @@ + 7000050 0 43100244 --=20 2.36.1 From nobody Fri Apr 26 18:07:36 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652467159; cv=none; d=zohomail.com; s=zohoarc; b=ZMG3QOsZAUTwPyU6i+7UjF/SLqOPq6XOR5e9Go4IHBa9ECl1GjN17X7R0vOK73t/AuMtwQFMcAgdXF40Sk9P2fdcmqiRlyoAgkxQL0ZDLvlZWmzzB5cK/BhGOapO4Znti9J0Zh3WXQklry3zJWjb76qzCKipaAhoul70DhATfjs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652467159; 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; bh=cRl5LeIS+ihmDUOh4HIC9MIrnGruHpbLwGzwmI+gFQc=; b=giXi0d3YaTkQ9WlQRjOWYqq1W51EDjAvdEO7OQE59t6R1ui6wgKIjMpBi5s5mHKl0wFEJM4qyKfj/MqyPO56WIGYaCbisrm697K2AV3kR15SreeCdsSYD3a7htPjwyA4GQh/kabNIW5W5cKOe7FGeeYJIcvZ/puSWTbv6ycSptM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652467159770562.3106667177343; Fri, 13 May 2022 11:39:19 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-390-kEAO3avrOGStfDPl8lQzUA-1; Fri, 13 May 2022 14:39:16 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id F3D213803501; Fri, 13 May 2022 18:39:13 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id D89E340D2822; Fri, 13 May 2022 18:39:13 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id A9041193222E; Fri, 13 May 2022 18:39:13 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 489CF194975B for ; Fri, 13 May 2022 18:39:12 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 37E727AFA; Fri, 13 May 2022 18:39:12 +0000 (UTC) Received: from localhost (unknown [10.39.192.38]) by smtp.corp.redhat.com (Postfix) with ESMTP id EEFB67C2F; Fri, 13 May 2022 18:38:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652467158; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=cRl5LeIS+ihmDUOh4HIC9MIrnGruHpbLwGzwmI+gFQc=; b=ihiVN9zoWF7e6nmVLKPOFQYdESIQyVFbTppTl7tAYuWgMyYP41D6mAZe+wJGi+F+vj08hb l/bwsWn9YWilHJHtpDEHWQ/r2PO1YWyHsL7YoIq2C2Vg5VnsvENC4BIpFhKyNKtsr0sDy8 kf3TkAFbXylCYf/omjHr6lgAuXYw+WM= X-MC-Unique: kEAO3avrOGStfDPl8lQzUA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: marcandre.lureau@redhat.com To: libvir-list@redhat.com Subject: [libvirt PATCH v4 02/11] conf: add Date: Fri, 13 May 2022 20:38:11 +0200 Message-Id: <20220513183820.925602-3-marcandre.lureau@redhat.com> In-Reply-To: <20220513183820.925602-1-marcandre.lureau@redhat.com> References: <20220513183820.925602-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mprivozn@redhat.com, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652467161226100001 From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Michal Privoznik --- src/conf/domain_conf.c | 78 ++++++++++++++++++- src/conf/domain_conf.h | 8 ++ src/conf/domain_validate.c | 9 ++- src/conf/schemas/basictypes.rng | 7 ++ src/conf/schemas/domaincommon.rng | 33 ++++++++ src/libxl/libxl_conf.c | 1 + src/libxl/libxl_domain.c | 1 + src/libxl/libxl_driver.c | 1 + src/qemu/qemu_capabilities.c | 2 + src/qemu/qemu_command.c | 2 + src/qemu/qemu_domain.c | 1 + src/qemu/qemu_driver.c | 6 +- src/qemu/qemu_hotplug.c | 1 + src/qemu/qemu_process.c | 4 + src/qemu/qemu_validate.c | 1 + src/vmx/vmx.c | 1 + .../domaincapsdata/qemu_7.0.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_7.0.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_7.0.0.x86_64.xml | 1 + .../domaincapsdata/qemu_7.1.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_7.1.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_7.1.0.x86_64.xml | 1 + .../graphics-dbus-address.xml | 35 +++++++++ tests/qemuxml2argvdata/graphics-dbus-p2p.xml | 33 ++++++++ tests/qemuxml2argvdata/graphics-dbus.xml | 33 ++++++++ .../graphics-dbus-address.xml | 1 + .../qemuxml2xmloutdata/graphics-dbus-p2p.xml | 1 + tests/qemuxml2xmloutdata/graphics-dbus.xml | 1 + tests/qemuxml2xmltest.c | 10 +++ 29 files changed, 272 insertions(+), 4 deletions(-) create mode 100644 tests/qemuxml2argvdata/graphics-dbus-address.xml create mode 100644 tests/qemuxml2argvdata/graphics-dbus-p2p.xml create mode 100644 tests/qemuxml2argvdata/graphics-dbus.xml create mode 120000 tests/qemuxml2xmloutdata/graphics-dbus-address.xml create mode 120000 tests/qemuxml2xmloutdata/graphics-dbus-p2p.xml create mode 120000 tests/qemuxml2xmloutdata/graphics-dbus.xml diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index d9b55c80aa..eb56974fbe 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -926,6 +926,7 @@ VIR_ENUM_IMPL(virDomainGraphics, "desktop", "spice", "egl-headless", + "dbus", ); =20 VIR_ENUM_IMPL(virDomainGraphicsListen, @@ -1919,6 +1920,11 @@ void virDomainGraphicsDefFree(virDomainGraphicsDef *= def) g_free(def->data.egl_headless.rendernode); break; =20 + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: + g_free(def->data.dbus.address); + g_free(def->data.dbus.rendernode); + break; + case VIR_DOMAIN_GRAPHICS_TYPE_LAST: break; } @@ -12773,6 +12779,39 @@ virDomainGraphicsDefParseXMLEGLHeadless(virDomainG= raphicsDef *def, } =20 =20 +static int +virDomainGraphicsDefParseXMLDBus(virDomainGraphicsDef *def, + xmlNodePtr node, + xmlXPathContextPtr ctxt) +{ + VIR_XPATH_NODE_AUTORESTORE(ctxt) + xmlNodePtr cur; + virTristateBool p2p; + + if (virXMLPropTristateBool(node, "p2p", VIR_XML_PROP_NONE, + &p2p) < 0) + return -1; + def->data.dbus.p2p =3D p2p =3D=3D VIR_TRISTATE_BOOL_YES; + + def->data.dbus.address =3D virXMLPropString(node, "address"); + def->data.dbus.fromConfig =3D def->data.dbus.address !=3D NULL; + + ctxt->node =3D node; + + if ((cur =3D virXPathNode("./gl", ctxt))) { + def->data.dbus.rendernode =3D virXMLPropString(cur, + "rendernode"); + + if (virXMLPropTristateBool(cur, "enable", + VIR_XML_PROP_REQUIRED, + &def->data.dbus.gl) < 0) + return -1; + } + + return 0; +} + + virDomainGraphicsDef * virDomainGraphicsDefNew(virDomainXMLOption *xmlopt) { @@ -12845,6 +12884,10 @@ virDomainGraphicsDefParseXML(virDomainXMLOption *x= mlopt, case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: virDomainGraphicsDefParseXMLEGLHeadless(def, node, ctxt); break; + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: + if (virDomainGraphicsDefParseXMLDBus(def, node, ctxt) < 0) + goto error; + break; case VIR_DOMAIN_GRAPHICS_TYPE_LAST: break; } @@ -26594,6 +26637,27 @@ virDomainGraphicsDefFormat(virBuffer *buf, def->data.egl_headless.rendernode); virBufferAddLit(buf, "/>\n"); break; + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: + if (def->data.dbus.p2p) + virBufferAddLit(buf, " p2p=3D'yes'"); + if (def->data.dbus.address) + virBufferAsprintf(buf, " address=3D'%s'", + def->data.dbus.address); + + if (!def->data.dbus.gl) + break; + + if (!children) { + virBufferAddLit(buf, ">\n"); + virBufferAdjustIndent(buf, 2); + children =3D true; + } + + virBufferAsprintf(buf, "data.dbus.gl)); + virBufferEscapeString(buf, " rendernode=3D'%s'", def->data.dbus.re= ndernode); + virBufferAddLit(buf, "/>\n"); + break; case VIR_DOMAIN_GRAPHICS_TYPE_LAST: break; } @@ -31320,6 +31384,11 @@ virDomainGraphicsDefHasOpenGL(const virDomainDef *= def) case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: return true; =20 + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: + if (graphics->data.dbus.gl =3D=3D VIR_TRISTATE_BOOL_YES) + return true; + + continue; case VIR_DOMAIN_GRAPHICS_TYPE_LAST: break; } @@ -31335,7 +31404,8 @@ virDomainGraphicsSupportsRenderNode(const virDomain= GraphicsDef *graphics) bool ret =3D false; =20 if (graphics->type =3D=3D VIR_DOMAIN_GRAPHICS_TYPE_SPICE || - graphics->type =3D=3D VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS) + graphics->type =3D=3D VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS || + graphics->type =3D=3D VIR_DOMAIN_GRAPHICS_TYPE_DBUS) ret =3D true; =20 return ret; @@ -31354,6 +31424,9 @@ virDomainGraphicsGetRenderNode(const virDomainGraph= icsDef *graphics) case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: ret =3D graphics->data.egl_headless.rendernode; break; + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: + ret =3D graphics->data.dbus.rendernode; + break; case VIR_DOMAIN_GRAPHICS_TYPE_SDL: case VIR_DOMAIN_GRAPHICS_TYPE_VNC: case VIR_DOMAIN_GRAPHICS_TYPE_RDP: @@ -31375,6 +31448,9 @@ virDomainGraphicsNeedsAutoRenderNode(const virDomai= nGraphicsDef *graphics) if (graphics->type =3D=3D VIR_DOMAIN_GRAPHICS_TYPE_SPICE && graphics->data.spice.gl !=3D VIR_TRISTATE_BOOL_YES) return false; + if (graphics->type =3D=3D VIR_DOMAIN_GRAPHICS_TYPE_DBUS && + graphics->data.dbus.gl !=3D VIR_TRISTATE_BOOL_YES) + return false; =20 if (virDomainGraphicsGetRenderNode(graphics)) return false; diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 2e2da0c69c..025ed55169 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1777,6 +1777,7 @@ typedef enum { VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP, VIR_DOMAIN_GRAPHICS_TYPE_SPICE, VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS, + VIR_DOMAIN_GRAPHICS_TYPE_DBUS, =20 VIR_DOMAIN_GRAPHICS_TYPE_LAST } virDomainGraphicsType; @@ -1953,6 +1954,13 @@ struct _virDomainGraphicsDef { struct { char *rendernode; } egl_headless; + struct { + bool p2p; + char *address; + char *rendernode; + virTristateBool gl; + bool fromConfig; /* true if the @address is config file ori= ginated */ + } dbus; } data; /* nListens, listens, and *port are only useful if type is vnc, * rdp, or spice. They've been extracted from the union only to diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c index 18eb8d697d..ba474ee8c0 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -2424,8 +2424,15 @@ virDomainGraphicsDefValidate(const virDomainDef *def, return -1; } =20 - if (graphics->type =3D=3D VIR_DOMAIN_GRAPHICS_TYPE_VNC) + if (graphics->type =3D=3D VIR_DOMAIN_GRAPHICS_TYPE_VNC) { return virDomainEnsureAudioID(def, graphics->data.vnc.audioId); + } else if (graphics->type =3D=3D VIR_DOMAIN_GRAPHICS_TYPE_DBUS) { + if (graphics->data.dbus.p2p && graphics->data.dbus.address) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("D-Bus p2p with an address is not supported")= ); + return -1; + } + } =20 return 0; } diff --git a/src/conf/schemas/basictypes.rng b/src/conf/schemas/basictypes.= rng index a221ff6295..ae4d568222 100644 --- a/src/conf/schemas/basictypes.rng +++ b/src/conf/schemas/basictypes.rng @@ -220,6 +220,13 @@ =20 + + + + .+ + + + diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincom= mon.rng index 2544864eb4..14b5955cad 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -4037,6 +4037,39 @@ + + + dbus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rdp diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index e5fe209718..f0f7dfaa07 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -1537,6 +1537,7 @@ libxlMakeVfb(virPortAllocatorRange *graphicsports, case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: case VIR_DOMAIN_GRAPHICS_TYPE_LAST: break; } diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c index dbe44f4ffc..af938192a9 100644 --- a/src/libxl/libxl_domain.c +++ b/src/libxl/libxl_domain.c @@ -957,6 +957,7 @@ libxlDomainCleanup(libxlDriverPrivate *driver, case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: case VIR_DOMAIN_GRAPHICS_TYPE_LAST: break; } diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 9ffa20161d..d4ae875854 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -465,6 +465,7 @@ libxlReconnectDomain(virDomainObj *vm, case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: case VIR_DOMAIN_GRAPHICS_TYPE_LAST: break; } diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 5134f44aa2..ce3e7d275a 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -6226,6 +6226,8 @@ virQEMUCapsFillDomainDeviceGraphicsCaps(virQEMUCaps *= qemuCaps, VIR_DOMAIN_CAPS_ENUM_SET(dev->type, VIR_DOMAIN_GRAPHICS_TYPE_SPICE= ); if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_EGL_HEADLESS)) VIR_DOMAIN_CAPS_ENUM_SET(dev->type, VIR_DOMAIN_GRAPHICS_TYPE_EGL_H= EADLESS); + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DISPLAY_DBUS)) + VIR_DOMAIN_CAPS_ENUM_SET(dev->type, VIR_DOMAIN_GRAPHICS_TYPE_DBUS); } =20 =20 diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 8eac8edd79..7a9ea6ae41 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -8620,6 +8620,7 @@ qemuBuildGraphicsCommandLine(virQEMUDriverConfig *cfg, graphics) < 0) return -1; =20 + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: break; case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: @@ -10244,6 +10245,7 @@ qemuBuildCommandLineValidate(virQEMUDriver *driver, case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: ++egl_headless; break; + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: case VIR_DOMAIN_GRAPHICS_TYPE_LAST: diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 4d4be0683a..806de9f4b0 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -3676,6 +3676,7 @@ qemuDomainDefSuggestDefaultAudioBackend(virQEMUDriver= *driver, case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: break; case VIR_DOMAIN_GRAPHICS_TYPE_LAST: default: diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 702fd0239c..ad6faf503c 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -15714,12 +15714,13 @@ qemuDomainOpenGraphics(virDomainPtr dom, case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: protocol =3D "spice"; break; + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: case VIR_DOMAIN_GRAPHICS_TYPE_SDL: case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("Can only open VNC or SPICE graphics backends, no= t %s"), + _("Can only open VNC, SPICE or D-Bus p2p graphics b= ackends, not %s"), virDomainGraphicsTypeToString(vm->def->graphics[idx= ]->type)); goto endjob; case VIR_DOMAIN_GRAPHICS_TYPE_LAST: @@ -15782,12 +15783,13 @@ qemuDomainOpenGraphicsFD(virDomainPtr dom, case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: protocol =3D "spice"; break; + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: case VIR_DOMAIN_GRAPHICS_TYPE_SDL: case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("Can only open VNC or SPICE graphics backends, no= t %s"), + _("Can only open VNC, SPICE or D-Bus p2p graphics b= ackends, not %s"), virDomainGraphicsTypeToString(vm->def->graphics[idx= ]->type)); goto cleanup; case VIR_DOMAIN_GRAPHICS_TYPE_LAST: diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 274f47c25d..791d4e446a 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -4420,6 +4420,7 @@ qemuDomainChangeGraphics(virQEMUDriver *driver, case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: virReportError(VIR_ERR_INTERNAL_ERROR, _("unable to change config on '%s' graphics type"),= type); break; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index fd4db43a42..4924f8ea0b 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -4708,6 +4708,7 @@ qemuProcessGraphicsReservePorts(virDomainGraphicsDef = *graphics, case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: case VIR_DOMAIN_GRAPHICS_TYPE_LAST: break; } @@ -4747,6 +4748,7 @@ qemuProcessGraphicsAllocatePorts(virQEMUDriver *drive= r, case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: case VIR_DOMAIN_GRAPHICS_TYPE_LAST: break; } @@ -4903,6 +4905,7 @@ qemuProcessGraphicsSetupListen(virQEMUDriver *driver, case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: case VIR_DOMAIN_GRAPHICS_TYPE_LAST: break; } @@ -5195,6 +5198,7 @@ qemuProcessStartValidateGraphics(virDomainObj *vm) case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: case VIR_DOMAIN_GRAPHICS_TYPE_LAST: break; } diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 6ff61d91fa..5a437562c2 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -4254,6 +4254,7 @@ qemuValidateDomainDeviceDefGraphics(const virDomainGr= aphicsDef *graphics, case VIR_DOMAIN_GRAPHICS_TYPE_SDL: case VIR_DOMAIN_GRAPHICS_TYPE_RDP: case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: case VIR_DOMAIN_GRAPHICS_TYPE_LAST: break; } diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 8150bbfaa9..c391caa910 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -3435,6 +3435,7 @@ virVMXFormatConfig(virVMXContext *ctx, virDomainXMLOp= tion *xmlopt, virDomainDef case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: + case VIR_DOMAIN_GRAPHICS_TYPE_DBUS: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported graphics type '%s'"), virDomainGraphicsTypeToString(def->graphics[i]-= >type)); diff --git a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_7.0.0-q35.x86_64.xml index 1f56616587..4e6ff06125 100644 --- a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml @@ -155,6 +155,7 @@ vnc spice egl-headless + dbus