From nobody Sun Feb 8 14:31:39 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 1549663947984600.8190896091279;
Fri, 8 Feb 2019 14:12:27 -0800 (PST)
Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com
[10.5.11.16])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mx1.redhat.com (Postfix) with ESMTPS id D8F9C85A03;
Fri, 8 Feb 2019 22:12:25 +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 323D95C6A5;
Fri, 8 Feb 2019 22:12:25 +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 894A93F7D5;
Fri, 8 Feb 2019 22:12:23 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com
[10.5.11.16])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id x18MCKeq008396 for ;
Fri, 8 Feb 2019 17:12:20 -0500
Received: by smtp.corp.redhat.com (Postfix)
id DB93F5C6A5; Fri, 8 Feb 2019 22:12:20 +0000 (UTC)
Received: from worklaptop.redhat.com (ovpn-123-115.rdu2.redhat.com
[10.10.123.115])
by smtp.corp.redhat.com (Postfix) with ESMTP id 54D675C557;
Fri, 8 Feb 2019 22:12:20 +0000 (UTC)
From: Cole Robinson
To: libvirt-list@redhat.com
Date: Fri, 8 Feb 2019 17:11:54 -0500
Message-Id:
<1c1384ef9b7c80c9e9c254d555e9dfd049d965c3.1549663396.git.crobinso@redhat.com>
In-Reply-To:
References:
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16
X-loop: libvir-list@redhat.com
Subject: [libvirt] [PATCH v3 03/17] 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.16
X-Greylist: Sender IP whitelisted,
not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]);
Fri, 08 Feb 2019 22:12:26 +0000 (UTC)
Content-Type: text/plain; charset="utf-8"
devices lack the model=3D attribute which is used by
most other device types. bus=3D mostly acts as one, but it
serves other purposes too like determing what target=3D
prefix to use, and for matching against controller type=3D
values.
Extending bus=3D to handle additional virtio transitional
devices will complicate apps lives, and it isn't a clean
mapping anyways. So let's bite the bullet and add a new
attribute, and wire up common handling
for virtio and virtio-{non-}transitional
Signed-off-by: Cole Robinson
Reviewed-by: Andrea Bolognani
---
docs/formatdomain.html.in | 45 +++++++++++++++++++
docs/schemas/domaincommon.rng | 9 ++++
src/conf/domain_conf.c | 40 +++++++++++++++++
src/conf/domain_conf.h | 11 +++++
src/libvirt_private.syms | 2 +
.../virtio-non-transitional.x86_64-3.1.0.args | 34 ++++++++++++++
...virtio-non-transitional.x86_64-latest.args | 34 ++++++++++++++
.../virtio-non-transitional.xml | 17 +++++++
.../virtio-transitional.x86_64-3.1.0.args | 34 ++++++++++++++
.../virtio-transitional.x86_64-latest.args | 34 ++++++++++++++
.../qemuxml2argvdata/virtio-transitional.xml | 17 +++++++
tests/qemuxml2argvtest.c | 6 +++
.../virtio-non-transitional.xml | 42 +++++++++++++++++
.../virtio-transitional.xml | 42 +++++++++++++++++
tests/qemuxml2xmltest.c | 11 +++++
15 files changed, 378 insertions(+)
create mode 100644 tests/qemuxml2argvdata/virtio-non-transitional.x86_64-3=
.1.0.args
create mode 100644 tests/qemuxml2argvdata/virtio-non-transitional.x86_64-l=
atest.args
create mode 100644 tests/qemuxml2argvdata/virtio-non-transitional.xml
create mode 100644 tests/qemuxml2argvdata/virtio-transitional.x86_64-3.1.0=
.args
create mode 100644 tests/qemuxml2argvdata/virtio-transitional.x86_64-lates=
t.args
create mode 100644 tests/qemuxml2argvdata/virtio-transitional.xml
create mode 100644 tests/qemuxml2xmloutdata/virtio-non-transitional.xml
create mode 100644 tests/qemuxml2xmloutdata/virtio-transitional.xml
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index 2ae5006849..85bc6a9d0b 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -2922,6 +2922,17 @@
Since 0.1.4
+
model
+
+ Indicates the emulated device model of the disk. Typically
+ this is indicated solely by the bus property but
+ for bus "virtio" the model can be specified furth=
er
+ with "virtio-transitional", "virtio-non-transitional", or
+ "virtio", see
+ Virtio transitional de=
vices
+ for more details.
+ Since 5.1.0
+
rawio
Indicates whether the disk needs rawio capability. Valid
@@ -4074,6 +4085,40 @@
Since 3.5.0
=20
+
+ Since 5.1.0, some of QEMU's virtio devi=
ces,
+ when used with PCI/PCIe machine types, accept the following
+ model values:
+
+
+
+
virtio-transitional
+
This instructs libvirt to always place the device in a conventio=
nal
+ PCI slot. The device can work with a virtio 0.9 or virtio 1.0
+ guest driver.
+
+
virtio-non-transitional
+
+ The device can only work with a virtio 1.0 guest driver.
+
+
virtio
+
If the device is plugged into a PCIe slot, it acts as a
+ virtio-non-transitional device. If plugged into a conventional PCI s=
lot,
+ it will function as a virtio-transitional device. This logic only
+ applies to devices that support the transitional models; for other
+ devices, virtio behavior will be different.
+