From nobody Sun Feb 8 12:51:54 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 1547747628553708.9744369727744; Thu, 17 Jan 2019 09:53:48 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2BC107FD54; Thu, 17 Jan 2019 17:53:46 +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 F12125D77C; Thu, 17 Jan 2019 17:53:45 +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 A12B83F612; Thu, 17 Jan 2019 17:53:45 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x0HHrG7S005579 for ; Thu, 17 Jan 2019 12:53:16 -0500 Received: by smtp.corp.redhat.com (Postfix) id 51210600CC; Thu, 17 Jan 2019 17:53:16 +0000 (UTC) Received: from worklaptop.redhat.com (ovpn-122-144.rdu2.redhat.com [10.10.122.144]) by smtp.corp.redhat.com (Postfix) with ESMTP id E30C1600C6; Thu, 17 Jan 2019 17:53:15 +0000 (UTC) From: Cole Robinson To: libvirt-list@redhat.com Date: Thu, 17 Jan 2019 12:52:41 -0500 Message-Id: <9331a6fd11736d77159da8be6464c5210af8216a.1547746868.git.crobinso@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 14/18] 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.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Thu, 17 Jan 2019 17:53:46 +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-9p-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 --- docs/formatdomain.html.in | 4 +++ docs/schemas/domaincommon.rng | 9 +++++ src/conf/domain_conf.c | 34 +++++++++++++++++++ src/conf/domain_conf.h | 15 ++++++-- .../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, 103 insertions(+), 7 deletions(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 5c342cfcfb..63bdf2c86b 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 54541b1148..58c449ca80 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -4405,6 +4405,15 @@ + + + + virtio + virtio-transitional + virtio-non-transitional + + + diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 79b2ab35c0..cbba02929c 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -612,6 +612,12 @@ 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", @@ -12982,6 +12988,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; @@ -12990,6 +12997,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, @@ -13003,6 +13011,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, @@ -13112,6 +13127,7 @@ virDomainInputDefParseXML(virDomainXMLOptionPtr xml= opt, VIR_FREE(evdev); VIR_FREE(type); VIR_FREE(bus); + VIR_FREE(model); =20 ctxt->node =3D save; return def; @@ -21988,6 +22004,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; @@ -26574,6 +26598,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; @@ -26599,6 +26624,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 5b9325a6d5..ded84f52d5 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 type; /* virDomainInputType */ + int bus; /* virDomainInputBus */ + int model; /* virDomainInputModel */ struct { char *evdev; } source; @@ -3488,6 +3498,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 100348bf1a..5952008b28 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,scsi=3Doff,bus=3Dpci.3,addr=3D0= x0,\ 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,disable-legacy=3Don,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,disable-legacy=3Don,wwpn=3Dnaa.5123456789abcde0,vho= stfd=3D3,\ id=3Dhostdev0,bus=3Dpci.4,addr=3D0x0 \ -device virtio-balloon-pci,disable-legacy=3Don,id=3Dballoon0,bus=3Dpci.5,a= ddr=3D0x0 \ @@ -50,5 +53,5 @@ addr=3D0x0 \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,\ resourcecontrol=3Ddeny \ -device vhost-vsock-pci,disable-legacy=3Don,id=3Dvsock0,guest-cid=3D4,vhos= tfd=3D6789,\ -bus=3Dpci.7,addr=3D0x0 \ +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 5795f2fdc5..596aa1015b 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 d9a0288387..90fba68d9f 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 9f05de5089..b6e762c0a7 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 0d99aa2ded..490b28368a 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 1a6eddf3b7..9fe2b8e8a2 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -1270,13 +1270,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