From nobody Sun Feb 8 21:41:59 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; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1548279266458789.7653335302064; Wed, 23 Jan 2019 13:34:26 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3A586C0C7CAE; Wed, 23 Jan 2019 21:34:24 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C8E276C95F; Wed, 23 Jan 2019 21:34:23 +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 521943F60F; Wed, 23 Jan 2019 21:34:23 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x0NLYDmq032649 for ; Wed, 23 Jan 2019 16:34:13 -0500 Received: by smtp.corp.redhat.com (Postfix) id 07A7F67150; Wed, 23 Jan 2019 21:34:13 +0000 (UTC) Received: from worklaptop.redhat.com (ovpn-120-34.rdu2.redhat.com [10.10.120.34]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5B1B0BA8B; Wed, 23 Jan 2019 21:34:12 +0000 (UTC) From: Cole Robinson To: libvirt-list@redhat.com Date: Wed, 23 Jan 2019 16:32:49 -0500 Message-Id: <7c3e9140c0f0b08167d6614be8b942b8b6712de7.1548278586.git.crobinso@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 21/25] conf: Add 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.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Wed, 23 Jan 2019 21:34:25 +0000 (UTC) Content-Type: text/plain; charset="utf-8" devices lack the model=3D attribute which is used by most other device types. To eventually support virtio-input-host-pci-{non-}traditional in qemu, let's add a standard model=3D attribute. This just adds the domain_conf wiring Signed-off-by: Cole Robinson Reviewed-by: Andrea Bolognani --- docs/formatdomain.html.in | 4 +++ docs/schemas/domaincommon.rng | 9 +++++ src/conf/domain_conf.c | 35 +++++++++++++++++++ src/conf/domain_conf.h | 11 ++++++ .../virtio-non-transitional.x86_64-3.1.0.args | 5 ++- ...virtio-non-transitional.x86_64-latest.args | 5 ++- .../virtio-non-transitional.xml | 3 ++ .../virtio-transitional.x86_64-3.1.0.args | 3 ++ .../virtio-transitional.x86_64-latest.args | 3 ++ .../qemuxml2argvdata/virtio-transitional.xml | 3 ++ .../virtio-non-transitional.xml | 11 +++++- .../virtio-transitional.xml | 9 +++++ tests/qemuxml2xmltest.c | 6 ++-- 13 files changed, 102 insertions(+), 5 deletions(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index eed35ef545..6838774c74 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -6431,6 +6431,10 @@ qemu-kvm -net nic,model=3D? /dev/null For type passthrough, the mandatory sub-element s= ource must have an evdev attribute containing the absolute pa= th to the event device passed through to guests. (KVM only) + + Since 5.1.0, the input ele= ment + accepts a model attribute which has the values 'virtio', + 'virtio-transitional' and 'virtio-non-transitional'.

=20

diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 1e26d5efca..ccc94a2fba 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -4406,6 +4406,15 @@ + + + + virtio + virtio-transitional + virtio-non-transitional + + + diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 55ee8da179..8169428051 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -614,6 +614,13 @@ VIR_ENUM_IMPL(virDomainInputBus, VIR_DOMAIN_INPUT_BUS_= LAST, "parallels", "virtio") =20 +VIR_ENUM_IMPL(virDomainInputModel, VIR_DOMAIN_INPUT_MODEL_LAST, + "default", + "virtio", + "virtio-transitional", + "virtio-non-transitional", +); + VIR_ENUM_IMPL(virDomainGraphics, VIR_DOMAIN_GRAPHICS_TYPE_LAST, "sdl", "vnc", @@ -13082,6 +13089,7 @@ virDomainInputDefParseXML(virDomainXMLOptionPtr xml= opt, char *evdev =3D NULL; char *type =3D NULL; char *bus =3D NULL; + char *model =3D NULL; =20 if (VIR_ALLOC(def) < 0) return NULL; @@ -13090,6 +13098,7 @@ virDomainInputDefParseXML(virDomainXMLOptionPtr xml= opt, =20 type =3D virXMLPropString(node, "type"); bus =3D virXMLPropString(node, "bus"); + model =3D virXMLPropString(node, "model"); =20 if (!type) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -13103,6 +13112,13 @@ virDomainInputDefParseXML(virDomainXMLOptionPtr xm= lopt, goto error; } =20 + if (model && + (def->model =3D virDomainInputModelTypeFromString(model)) < 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("unknown input model '%s'"), model); + goto error; + } + if (bus) { if ((def->bus =3D virDomainInputBusTypeFromString(bus)) < 0) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, @@ -13212,6 +13228,7 @@ virDomainInputDefParseXML(virDomainXMLOptionPtr xml= opt, VIR_FREE(evdev); VIR_FREE(type); VIR_FREE(bus); + VIR_FREE(model); =20 ctxt->node =3D save; return def; @@ -22109,6 +22126,14 @@ virDomainInputDefCheckABIStability(virDomainInputD= efPtr src, return false; } =20 + if (src->model !=3D dst->model) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Target input model %s does not match source %s"), + virDomainInputBusTypeToString(dst->model), + virDomainInputBusTypeToString(src->model)); + return false; + } + if (src->virtio && dst->virtio && !virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) return false; @@ -26696,6 +26721,7 @@ virDomainInputDefFormat(virBufferPtr buf, { const char *type =3D virDomainInputTypeToString(def->type); const char *bus =3D virDomainInputBusTypeToString(def->bus); + const char *model =3D virDomainInputModelTypeToString(def->model); virBuffer childbuf =3D VIR_BUFFER_INITIALIZER; virBuffer driverBuf =3D VIR_BUFFER_INITIALIZER; int ret =3D -1; @@ -26721,6 +26747,15 @@ virDomainInputDefFormat(virBufferPtr buf, virBufferAsprintf(buf, "model) { + if (!model) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("unexpected input model %d"), def->model); + goto cleanup; + } + virBufferAsprintf(buf, " model=3D'%s'", model); + } + virBufferSetChildIndent(&childbuf, buf); virDomainVirtioOptionsFormat(&driverBuf, def->virtio); if (virBufferCheckError(&driverBuf) < 0) diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index f0d41e3153..0e87d7efef 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1376,9 +1376,19 @@ typedef enum { VIR_DOMAIN_INPUT_BUS_LAST } virDomainInputBus; =20 +typedef enum { + VIR_DOMAIN_INPUT_MODEL_DEFAULT, + VIR_DOMAIN_INPUT_MODEL_VIRTIO, + VIR_DOMAIN_INPUT_MODEL_VIRTIO_TRANSITIONAL, + VIR_DOMAIN_INPUT_MODEL_VIRTIO_NON_TRANSITIONAL, + + VIR_DOMAIN_INPUT_MODEL_LAST +} virDomainInputModel; + struct _virDomainInputDef { int type; int bus; + int model; /* virDomainInputModel */ struct { char *evdev; } source; @@ -3496,6 +3506,7 @@ VIR_ENUM_DECL(virDomainHub) VIR_ENUM_DECL(virDomainRedirdevBus) VIR_ENUM_DECL(virDomainInput) VIR_ENUM_DECL(virDomainInputBus) +VIR_ENUM_DECL(virDomainInputModel) VIR_ENUM_DECL(virDomainGraphics) VIR_ENUM_DECL(virDomainGraphicsListen) VIR_ENUM_DECL(virDomainGraphicsAuthConnected) diff --git a/tests/qemuxml2argvdata/virtio-non-transitional.x86_64-3.1.0.ar= gs b/tests/qemuxml2argvdata/virtio-non-transitional.x86_64-3.1.0.args index 97df54dd77..9130572abe 100644 --- a/tests/qemuxml2argvdata/virtio-non-transitional.x86_64-3.1.0.args +++ b/tests/qemuxml2argvdata/virtio-non-transitional.x86_64-3.1.0.args @@ -32,6 +32,7 @@ addr=3D0x1 \ -device pcie-root-port,port=3D0xd,chassis=3D6,id=3Dpci.6,bus=3Dpcie.0,addr= =3D0x1.0x5 \ -device pcie-root-port,port=3D0xe,chassis=3D7,id=3Dpci.7,bus=3Dpcie.0,addr= =3D0x1.0x6 \ -device pcie-root-port,port=3D0xf,chassis=3D8,id=3Dpci.8,bus=3Dpcie.0,addr= =3D0x1.0x7 \ +-device pcie-root-port,port=3D0x10,chassis=3D9,id=3Dpci.9,bus=3Dpcie.0,add= r=3D0x2 \ -drive file=3D/dev/HostVG/QEMUGuest1,format=3Draw,if=3Dnone,id=3Ddrive-vir= tio-disk0 \ -device virtio-blk-pci,disable-legacy=3Don,disable-modern=3Doff,scsi=3Doff= ,bus=3Dpci.3,\ addr=3D0x0,drive=3Ddrive-virtio-disk0,id=3Dvirtio-disk0,bootindex=3D1 \ @@ -41,6 +42,8 @@ fsdev=3Dfsdev-fs0,mount_tag=3Dfs1,bus=3Dpci.1,addr=3D0x0 \ -netdev user,id=3Dhostnet0 \ -device virtio-net-pci,disable-legacy=3Don,disable-modern=3Doff,netdev=3Dh= ostnet0,\ id=3Dnet0,mac=3D00:11:22:33:44:55,bus=3Dpci.2,addr=3D0x0 \ +-device virtio-input-host-pci,id=3Dinput0,evdev=3D/dev/input/event1234,bus= =3Dpci.7,\ +addr=3D0x0 \ -device vhost-scsi-pci,disable-legacy=3Don,disable-modern=3Doff,\ wwpn=3Dnaa.5123456789abcde0,vhostfd=3D3,id=3Dhostdev0,bus=3Dpci.4,addr=3D0= x0 \ -device virtio-balloon-pci,disable-legacy=3Don,disable-modern=3Doff,id=3Db= alloon0,\ @@ -51,5 +54,5 @@ id=3Drng0,bus=3Dpci.6,addr=3D0x0 \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,\ resourcecontrol=3Ddeny \ -device vhost-vsock-pci,disable-legacy=3Don,disable-modern=3Doff,id=3Dvsoc= k0,\ -guest-cid=3D4,vhostfd=3D6789,bus=3Dpci.7,addr=3D0x0 \ +guest-cid=3D4,vhostfd=3D6789,bus=3Dpci.8,addr=3D0x0 \ -msg timestamp=3Don diff --git a/tests/qemuxml2argvdata/virtio-non-transitional.x86_64-latest.a= rgs b/tests/qemuxml2argvdata/virtio-non-transitional.x86_64-latest.args index 2a73798ee2..8e0709816b 100644 --- a/tests/qemuxml2argvdata/virtio-non-transitional.x86_64-latest.args +++ b/tests/qemuxml2argvdata/virtio-non-transitional.x86_64-latest.args @@ -32,6 +32,7 @@ addr=3D0x1 \ -device pcie-root-port,port=3D0xd,chassis=3D6,id=3Dpci.6,bus=3Dpcie.0,addr= =3D0x1.0x5 \ -device pcie-root-port,port=3D0xe,chassis=3D7,id=3Dpci.7,bus=3Dpcie.0,addr= =3D0x1.0x6 \ -device pcie-root-port,port=3D0xf,chassis=3D8,id=3Dpci.8,bus=3Dpcie.0,addr= =3D0x1.0x7 \ +-device pcie-root-port,port=3D0x10,chassis=3D9,id=3Dpci.9,bus=3Dpcie.0,add= r=3D0x2 \ -drive file=3D/dev/HostVG/QEMUGuest1,format=3Draw,if=3Dnone,id=3Ddrive-vir= tio-disk0 \ -device virtio-blk-pci-non-transitional,scsi=3Doff,bus=3Dpci.3,addr=3D0x0,\ drive=3Ddrive-virtio-disk0,id=3Dvirtio-disk0,bootindex=3D1 \ @@ -41,6 +42,8 @@ bus=3Dpci.1,addr=3D0x0 \ -netdev user,id=3Dhostnet0 \ -device virtio-net-pci-non-transitional,netdev=3Dhostnet0,id=3Dnet0,\ mac=3D00:11:22:33:44:55,bus=3Dpci.2,addr=3D0x0 \ +-device virtio-input-host-pci,id=3Dinput0,evdev=3D/dev/input/event1234,bus= =3Dpci.7,\ +addr=3D0x0 \ -device vhost-scsi-pci-non-transitional,wwpn=3Dnaa.5123456789abcde0,vhostf= d=3D3,\ id=3Dhostdev0,bus=3Dpci.4,addr=3D0x0 \ -device virtio-balloon-pci-non-transitional,id=3Dballoon0,bus=3Dpci.5,addr= =3D0x0 \ @@ -49,5 +52,5 @@ id=3Dhostdev0,bus=3Dpci.4,addr=3D0x0 \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,\ resourcecontrol=3Ddeny \ -device vhost-vsock-pci-non-transitional,id=3Dvsock0,guest-cid=3D4,vhostfd= =3D6789,\ -bus=3Dpci.7,addr=3D0x0 \ +bus=3Dpci.8,addr=3D0x0 \ -msg timestamp=3Don diff --git a/tests/qemuxml2argvdata/virtio-non-transitional.xml b/tests/qem= uxml2argvdata/virtio-non-transitional.xml index d4c07420dc..3fd32632d3 100644 --- a/tests/qemuxml2argvdata/virtio-non-transitional.xml +++ b/tests/qemuxml2argvdata/virtio-non-transitional.xml @@ -26,6 +26,9 @@ + + + diff --git a/tests/qemuxml2argvdata/virtio-transitional.x86_64-3.1.0.args b= /tests/qemuxml2argvdata/virtio-transitional.x86_64-3.1.0.args index d2429d2d2c..06fe70bb11 100644 --- a/tests/qemuxml2argvdata/virtio-transitional.x86_64-3.1.0.args +++ b/tests/qemuxml2argvdata/virtio-transitional.x86_64-3.1.0.args @@ -27,6 +27,7 @@ file=3D/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ addr=3D0x1 \ -device pcie-pci-bridge,id=3Dpci.2,bus=3Dpci.1,addr=3D0x0 \ -device pcie-root-port,port=3D0x9,chassis=3D3,id=3Dpci.3,bus=3Dpcie.0,addr= =3D0x1.0x1 \ +-device pcie-root-port,port=3D0xa,chassis=3D4,id=3Dpci.4,bus=3Dpcie.0,addr= =3D0x1.0x2 \ -drive file=3D/dev/HostVG/QEMUGuest1,format=3Draw,if=3Dnone,id=3Ddrive-vir= tio-disk0 \ -device virtio-blk-pci,scsi=3Doff,bus=3Dpci.2,addr=3D0x3,drive=3Ddrive-vir= tio-disk0,\ id=3Dvirtio-disk0,bootindex=3D1 \ @@ -35,6 +36,8 @@ id=3Dvirtio-disk0,bootindex=3D1 \ -netdev user,id=3Dhostnet0 \ -device virtio-net-pci,netdev=3Dhostnet0,id=3Dnet0,mac=3D00:11:22:33:44:55= ,bus=3Dpci.2,\ addr=3D0x2 \ +-device virtio-input-host-pci,id=3Dinput0,evdev=3D/dev/input/event1234,bus= =3Dpci.3,\ +addr=3D0x0 \ -device vhost-scsi-pci,wwpn=3Dnaa.5123456789abcde0,vhostfd=3D3,id=3Dhostde= v0,\ bus=3Dpci.2,addr=3D0x4 \ -device virtio-balloon-pci,id=3Dballoon0,bus=3Dpci.2,addr=3D0x5 \ diff --git a/tests/qemuxml2argvdata/virtio-transitional.x86_64-latest.args = b/tests/qemuxml2argvdata/virtio-transitional.x86_64-latest.args index f3a4e0804e..24b49e6009 100644 --- a/tests/qemuxml2argvdata/virtio-transitional.x86_64-latest.args +++ b/tests/qemuxml2argvdata/virtio-transitional.x86_64-latest.args @@ -27,6 +27,7 @@ file=3D/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ addr=3D0x1 \ -device pcie-pci-bridge,id=3Dpci.2,bus=3Dpci.1,addr=3D0x0 \ -device pcie-root-port,port=3D0x9,chassis=3D3,id=3Dpci.3,bus=3Dpcie.0,addr= =3D0x1.0x1 \ +-device pcie-root-port,port=3D0xa,chassis=3D4,id=3Dpci.4,bus=3Dpcie.0,addr= =3D0x1.0x2 \ -drive file=3D/dev/HostVG/QEMUGuest1,format=3Draw,if=3Dnone,id=3Ddrive-vir= tio-disk0 \ -device virtio-blk-pci-transitional,scsi=3Doff,bus=3Dpci.2,addr=3D0x3,\ drive=3Ddrive-virtio-disk0,id=3Dvirtio-disk0,bootindex=3D1 \ @@ -36,6 +37,8 @@ bus=3Dpci.2,addr=3D0x1 \ -netdev user,id=3Dhostnet0 \ -device virtio-net-pci-transitional,netdev=3Dhostnet0,id=3Dnet0,\ mac=3D00:11:22:33:44:55,bus=3Dpci.2,addr=3D0x2 \ +-device virtio-input-host-pci,id=3Dinput0,evdev=3D/dev/input/event1234,bus= =3Dpci.3,\ +addr=3D0x0 \ -device vhost-scsi-pci-transitional,wwpn=3Dnaa.5123456789abcde0,vhostfd=3D= 3,\ id=3Dhostdev0,bus=3Dpci.2,addr=3D0x4 \ -device virtio-balloon-pci-transitional,id=3Dballoon0,bus=3Dpci.2,addr=3D0= x5 \ diff --git a/tests/qemuxml2argvdata/virtio-transitional.xml b/tests/qemuxml= 2argvdata/virtio-transitional.xml index dd33071eb9..5daea19ada 100644 --- a/tests/qemuxml2argvdata/virtio-transitional.xml +++ b/tests/qemuxml2argvdata/virtio-transitional.xml @@ -26,6 +26,9 @@ + + + diff --git a/tests/qemuxml2xmloutdata/virtio-non-transitional.xml b/tests/q= emuxml2xmloutdata/virtio-non-transitional.xml index 5ba39ea30f..32c57a27f1 100644 --- a/tests/qemuxml2xmloutdata/virtio-non-transitional.xml +++ b/tests/qemuxml2xmloutdata/virtio-non-transitional.xml @@ -65,6 +65,11 @@

+ + + +
+ @@ -75,6 +80,10 @@
+ + +
+ @@ -90,7 +99,7 @@ -
+
diff --git a/tests/qemuxml2xmloutdata/virtio-transitional.xml b/tests/qemux= ml2xmloutdata/virtio-transitional.xml index 5cb6568cc8..b0da885c79 100644 --- a/tests/qemuxml2xmloutdata/virtio-transitional.xml +++ b/tests/qemuxml2xmloutdata/virtio-transitional.xml @@ -39,6 +39,11 @@
+ + + +
+ @@ -49,6 +54,10 @@
+ + +
+ diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index c5ad3ba4b6..be8ef921ee 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -1273,13 +1273,15 @@ mymain(void) QEMU_CAPS_DEVICE_PCIE_PCI_BRIDGE, QEMU_CAPS_DEVICE_PCIE_ROOT_PORT, QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY, - QEMU_CAPS_DEVICE_VHOST_VSOCK); + QEMU_CAPS_DEVICE_VHOST_VSOCK, + QEMU_CAPS_VIRTIO_INPUT_HOST); DO_TEST("virtio-non-transitional", QEMU_CAPS_DEVICE_VIDEO_PRIMARY, QEMU_CAPS_DEVICE_PCIE_PCI_BRIDGE, QEMU_CAPS_DEVICE_PCIE_ROOT_PORT, QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY, - QEMU_CAPS_DEVICE_VHOST_VSOCK); + QEMU_CAPS_DEVICE_VHOST_VSOCK, + QEMU_CAPS_VIRTIO_INPUT_HOST); =20 if (getenv("LIBVIRT_SKIP_CLEANUP") =3D=3D NULL) virFileDeleteTree(fakerootdir); --=20 2.20.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list