[v3,17/17] qemu: domcaps: Report disk <enum name="model">

Message ID 43aadab6ff1bab8c5fd35d98a74fb4c1cc7065ec.1549663397.git.crobinso@redhat.com
State New
Headers show
Series
  • qemu: virtio-{non-}transitional support
Related show

Commit Message

Cole Robinson Feb. 8, 2019, 10:12 p.m.
This generates new XML like:

    <disk>
      <enum name='model'>
        <value>virtio</value>
        <value>virtio-transitional</value>
        <value>virtio-non-transitional</value>
      </enum>
    </disk>

Signed-off-by: Cole Robinson <crobinso@redhat.com>

---
 src/conf/domain_capabilities.c                |   1 +
 src/conf/domain_capabilities.h                |   1 +
 src/qemu/qemu_capabilities.c                  |  10 ++
 .../bhyve_basic.x86_64.xml                    |   1 +
 .../bhyve_fbuf.x86_64.xml                     |   1 +
 .../bhyve_uefi.x86_64.xml                     |   1 +
 tests/domaincapsschemadata/full.xml           |   6 +
 .../domaincapsschemadata/libxl-xenfv-usb.xml  |   1 +
 .../domaincapsschemadata/libxl-xenpv-usb.xml  |   1 +
 .../qemu_1.7.0.x86_64.xml                     |   3 +
 .../qemu_2.12.0-virt.aarch64.xml              |   5 +
 .../qemu_2.12.0.ppc64.xml                     |   5 +
 .../qemu_2.12.0.s390x.xml                     |   5 +
 .../qemu_2.12.0.x86_64.xml                    |   5 +
 .../qemu_2.6.0-virt.aarch64.xml               |   5 +
 .../qemu_2.6.0.aarch64.xml                    |   5 +
 .../domaincapsschemadata/qemu_2.6.0.ppc64.xml |   5 +
 .../qemu_2.6.0.x86_64.xml                     |   5 +
 .../domaincapsschemadata/qemu_2.7.0.s390x.xml |   5 +
 .../qemu_2.8.0-tcg.x86_64.xml                 |   5 +
 .../domaincapsschemadata/qemu_2.8.0.s390x.xml |   5 +
 .../qemu_2.8.0.x86_64.xml                     |   5 +
 .../qemu_2.9.0-q35.x86_64.xml                 |   5 +
 .../qemu_2.9.0-tcg.x86_64.xml                 |   5 +
 .../qemu_2.9.0.x86_64.xml                     |   5 +
 .../domaincapsschemadata/qemu_3.0.0.s390x.xml |   5 +
 .../qemu_4.0.0.x86_64.xml                     | 153 ++++++++++++++++++
 tests/domaincapstest.c                        |   4 +
 28 files changed, 263 insertions(+)
 create mode 100644 tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml

-- 
2.20.1

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Comments

Andrea Bolognani Feb. 12, 2019, 5:19 p.m. | #1
On Fri, 2019-02-08 at 17:12 -0500, Cole Robinson wrote:
> This generates new XML like:

> 

>     <disk>

>       <enum name='model'>

>         <value>virtio</value>

>         <value>virtio-transitional</value>

>         <value>virtio-non-transitional</value>

>       </enum>

>     </disk>

> 

> Signed-off-by: Cole Robinson <crobinso@redhat.com>

> ---

>  src/conf/domain_capabilities.c                |   1 +

>  src/conf/domain_capabilities.h                |   1 +

>  src/qemu/qemu_capabilities.c                  |  10 ++

>  .../bhyve_basic.x86_64.xml                    |   1 +

>  .../bhyve_fbuf.x86_64.xml                     |   1 +

>  .../bhyve_uefi.x86_64.xml                     |   1 +

>  tests/domaincapsschemadata/full.xml           |   6 +

>  .../domaincapsschemadata/libxl-xenfv-usb.xml  |   1 +

>  .../domaincapsschemadata/libxl-xenpv-usb.xml  |   1 +

>  .../qemu_1.7.0.x86_64.xml                     |   3 +

>  .../qemu_2.12.0-virt.aarch64.xml              |   5 +

>  .../qemu_2.12.0.ppc64.xml                     |   5 +

>  .../qemu_2.12.0.s390x.xml                     |   5 +

>  .../qemu_2.12.0.x86_64.xml                    |   5 +

>  .../qemu_2.6.0-virt.aarch64.xml               |   5 +

>  .../qemu_2.6.0.aarch64.xml                    |   5 +

>  .../domaincapsschemadata/qemu_2.6.0.ppc64.xml |   5 +

>  .../qemu_2.6.0.x86_64.xml                     |   5 +

>  .../domaincapsschemadata/qemu_2.7.0.s390x.xml |   5 +

>  .../qemu_2.8.0-tcg.x86_64.xml                 |   5 +

>  .../domaincapsschemadata/qemu_2.8.0.s390x.xml |   5 +

>  .../qemu_2.8.0.x86_64.xml                     |   5 +

>  .../qemu_2.9.0-q35.x86_64.xml                 |   5 +

>  .../qemu_2.9.0-tcg.x86_64.xml                 |   5 +

>  .../qemu_2.9.0.x86_64.xml                     |   5 +

>  .../domaincapsschemadata/qemu_3.0.0.s390x.xml |   5 +

>  .../qemu_4.0.0.x86_64.xml                     | 153 ++++++++++++++++++

>  tests/domaincapstest.c                        |   4 +

>  28 files changed, 263 insertions(+)

>  create mode 100644 tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml


This did not apply correctly for me on top of 1620bb0a3050373d059b0,
but after regenerating output files the resulting diff looks sane
enough so I'll assume everything is fine and you'll take care of it
before pushing anyway.

[...]
> +++ b/src/conf/domain_capabilities.h

> @@ -65,6 +65,7 @@ struct _virDomainCapsDeviceDisk {

>      bool supported;

>      virDomainCapsEnum diskDevice;   /* Info about virDomainDiskDevice enum values */

>      virDomainCapsEnum bus;          /* Info about virDomainDiskBus enum values */

> +    virDomainCapsEnum model;   /* Info about virDomainDiskModel enum values */

>      /* add new fields here */

>  };


Might as well keep those comments aligned...

[...]
> +++ b/tests/domaincapstest.c

> @@ -94,6 +94,7 @@ fillAllCaps(virDomainCapsPtr domCaps)

>      disk->supported = true;

>      SET_ALL_BITS(disk->diskDevice);

>      SET_ALL_BITS(disk->bus);

> +    SET_ALL_BITS(disk->model);

>  

>      graphics->supported = true;

>      SET_ALL_BITS(graphics->type);

> @@ -502,6 +503,9 @@ mymain(void)

>                   "/usr/bin/qemu-system-s390x", NULL,

>                   "s390x", VIR_DOMAIN_VIRT_KVM);

>  

> +    DO_TEST_QEMU("4.0.0", "caps_4.0.0",

> +                 "/usr/bin/qemu-system-x86_64", NULL,

> +                 "x86_64", VIR_DOMAIN_VIRT_KVM);


As mentioned during the previous rounf of reviews, this hunk (and
the resulting output file) belong in a separate patch. Please make
ure you split these unrelated changes off before pushing.

With that addressed,

  Reviewed-by: Andrea Bolognani <abologna@redhat.com>


-- 
Andrea Bolognani / Red Hat / Virtualization

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Patch

diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c
index 6352eda343..a6104920ab 100644
--- a/src/conf/domain_capabilities.c
+++ b/src/conf/domain_capabilities.c
@@ -482,6 +482,7 @@  virDomainCapsDeviceDiskFormat(virBufferPtr buf,
 
     ENUM_PROCESS(disk, diskDevice, virDomainDiskDeviceTypeToString);
     ENUM_PROCESS(disk, bus, virDomainDiskBusTypeToString);
+    ENUM_PROCESS(disk, model, virDomainDiskModelTypeToString);
 
     FORMAT_EPILOGUE(disk);
 }
diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h
index 15e065359b..4a9a717539 100644
--- a/src/conf/domain_capabilities.h
+++ b/src/conf/domain_capabilities.h
@@ -65,6 +65,7 @@  struct _virDomainCapsDeviceDisk {
     bool supported;
     virDomainCapsEnum diskDevice;   /* Info about virDomainDiskDevice enum values */
     virDomainCapsEnum bus;          /* Info about virDomainDiskBus enum values */
+    virDomainCapsEnum model;   /* Info about virDomainDiskModel enum values */
     /* add new fields here */
 };
 
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 8e42c1c51c..f69de29b81 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -5278,6 +5278,16 @@  virQEMUCapsFillDomainDeviceDiskCaps(virQEMUCapsPtr qemuCaps,
     if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_ICH9_AHCI))
         VIR_DOMAIN_CAPS_ENUM_SET(disk->bus, VIR_DOMAIN_DISK_BUS_SATA);
 
+    /* disk->model values */
+    VIR_DOMAIN_CAPS_ENUM_SET(disk->model, VIR_DOMAIN_DISK_MODEL_VIRTIO);
+    if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY) ||
+        virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_PCI_NON_TRANSITIONAL)) {
+        VIR_DOMAIN_CAPS_ENUM_SET(disk->model,
+                                 VIR_DOMAIN_DISK_MODEL_VIRTIO_TRANSITIONAL);
+        VIR_DOMAIN_CAPS_ENUM_SET(disk->model,
+                                 VIR_DOMAIN_DISK_MODEL_VIRTIO_NON_TRANSITIONAL);
+    }
+
     return 0;
 }
 
diff --git a/tests/domaincapsschemadata/bhyve_basic.x86_64.xml b/tests/domaincapsschemadata/bhyve_basic.x86_64.xml
index d6ecf061d0..bdf2c4eee8 100644
--- a/tests/domaincapsschemadata/bhyve_basic.x86_64.xml
+++ b/tests/domaincapsschemadata/bhyve_basic.x86_64.xml
@@ -21,6 +21,7 @@ 
         <value>virtio</value>
         <value>sata</value>
       </enum>
+      <enum name='model'/>
     </disk>
     <graphics supported='no'/>
     <video supported='no'/>
diff --git a/tests/domaincapsschemadata/bhyve_fbuf.x86_64.xml b/tests/domaincapsschemadata/bhyve_fbuf.x86_64.xml
index 1a5aad7bce..f998c457c1 100644
--- a/tests/domaincapsschemadata/bhyve_fbuf.x86_64.xml
+++ b/tests/domaincapsschemadata/bhyve_fbuf.x86_64.xml
@@ -30,6 +30,7 @@ 
         <value>virtio</value>
         <value>sata</value>
       </enum>
+      <enum name='model'/>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/bhyve_uefi.x86_64.xml b/tests/domaincapsschemadata/bhyve_uefi.x86_64.xml
index b624fd0799..18f90023d5 100644
--- a/tests/domaincapsschemadata/bhyve_uefi.x86_64.xml
+++ b/tests/domaincapsschemadata/bhyve_uefi.x86_64.xml
@@ -30,6 +30,7 @@ 
         <value>virtio</value>
         <value>sata</value>
       </enum>
+      <enum name='model'/>
     </disk>
     <graphics supported='no'/>
     <video supported='no'/>
diff --git a/tests/domaincapsschemadata/full.xml b/tests/domaincapsschemadata/full.xml
index eafba1ae5b..28263466a4 100644
--- a/tests/domaincapsschemadata/full.xml
+++ b/tests/domaincapsschemadata/full.xml
@@ -51,6 +51,12 @@ 
         <value>sata</value>
         <value>sd</value>
       </enum>
+      <enum name='model'>
+        <value>default</value>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/libxl-xenfv-usb.xml b/tests/domaincapsschemadata/libxl-xenfv-usb.xml
index 29fe1f9aa3..4efc137c97 100644
--- a/tests/domaincapsschemadata/libxl-xenfv-usb.xml
+++ b/tests/domaincapsschemadata/libxl-xenfv-usb.xml
@@ -34,6 +34,7 @@ 
         <value>scsi</value>
         <value>xen</value>
       </enum>
+      <enum name='model'/>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/libxl-xenpv-usb.xml b/tests/domaincapsschemadata/libxl-xenpv-usb.xml
index b9f3ca736b..70e598fe9e 100644
--- a/tests/domaincapsschemadata/libxl-xenpv-usb.xml
+++ b/tests/domaincapsschemadata/libxl-xenpv-usb.xml
@@ -24,6 +24,7 @@ 
         <value>scsi</value>
         <value>xen</value>
       </enum>
+      <enum name='model'/>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_1.7.0.x86_64.xml b/tests/domaincapsschemadata/qemu_1.7.0.x86_64.xml
index 3d73133919..497363bbe9 100644
--- a/tests/domaincapsschemadata/qemu_1.7.0.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_1.7.0.x86_64.xml
@@ -68,6 +68,9 @@ 
         <value>usb</value>
         <value>sata</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_2.12.0-virt.aarch64.xml b/tests/domaincapsschemadata/qemu_2.12.0-virt.aarch64.xml
index 56e403c4c7..7639df44c6 100644
--- a/tests/domaincapsschemadata/qemu_2.12.0-virt.aarch64.xml
+++ b/tests/domaincapsschemadata/qemu_2.12.0-virt.aarch64.xml
@@ -74,6 +74,11 @@ 
         <value>usb</value>
         <value>sata</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_2.12.0.ppc64.xml b/tests/domaincapsschemadata/qemu_2.12.0.ppc64.xml
index d0b9c3fdef..f10d361359 100644
--- a/tests/domaincapsschemadata/qemu_2.12.0.ppc64.xml
+++ b/tests/domaincapsschemadata/qemu_2.12.0.ppc64.xml
@@ -40,6 +40,11 @@ 
         <value>usb</value>
         <value>sata</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_2.12.0.s390x.xml b/tests/domaincapsschemadata/qemu_2.12.0.s390x.xml
index 8742dce530..41a81ff02f 100644
--- a/tests/domaincapsschemadata/qemu_2.12.0.s390x.xml
+++ b/tests/domaincapsschemadata/qemu_2.12.0.s390x.xml
@@ -133,6 +133,11 @@ 
         <value>scsi</value>
         <value>virtio</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_2.12.0.x86_64.xml b/tests/domaincapsschemadata/qemu_2.12.0.x86_64.xml
index a8d6a4d629..5913e7fc63 100644
--- a/tests/domaincapsschemadata/qemu_2.12.0.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_2.12.0.x86_64.xml
@@ -98,6 +98,11 @@ 
         <value>usb</value>
         <value>sata</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_2.6.0-virt.aarch64.xml b/tests/domaincapsschemadata/qemu_2.6.0-virt.aarch64.xml
index b3e85de1d3..9ee801092e 100644
--- a/tests/domaincapsschemadata/qemu_2.6.0-virt.aarch64.xml
+++ b/tests/domaincapsschemadata/qemu_2.6.0-virt.aarch64.xml
@@ -71,6 +71,11 @@ 
         <value>usb</value>
         <value>sata</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_2.6.0.aarch64.xml b/tests/domaincapsschemadata/qemu_2.6.0.aarch64.xml
index 0fcc715940..4dd0b52ed3 100644
--- a/tests/domaincapsschemadata/qemu_2.6.0.aarch64.xml
+++ b/tests/domaincapsschemadata/qemu_2.6.0.aarch64.xml
@@ -71,6 +71,11 @@ 
         <value>usb</value>
         <value>sata</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_2.6.0.ppc64.xml b/tests/domaincapsschemadata/qemu_2.6.0.ppc64.xml
index f2dff05ff8..aa982d237e 100644
--- a/tests/domaincapsschemadata/qemu_2.6.0.ppc64.xml
+++ b/tests/domaincapsschemadata/qemu_2.6.0.ppc64.xml
@@ -44,6 +44,11 @@ 
         <value>usb</value>
         <value>sata</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_2.6.0.x86_64.xml b/tests/domaincapsschemadata/qemu_2.6.0.x86_64.xml
index c6d9fd8b37..6aa3f52ee4 100644
--- a/tests/domaincapsschemadata/qemu_2.6.0.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_2.6.0.x86_64.xml
@@ -72,6 +72,11 @@ 
         <value>usb</value>
         <value>sata</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_2.7.0.s390x.xml b/tests/domaincapsschemadata/qemu_2.7.0.s390x.xml
index 0c48bd6c75..8daa15ab9d 100644
--- a/tests/domaincapsschemadata/qemu_2.7.0.s390x.xml
+++ b/tests/domaincapsschemadata/qemu_2.7.0.s390x.xml
@@ -38,6 +38,11 @@ 
         <value>scsi</value>
         <value>virtio</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_2.8.0-tcg.x86_64.xml b/tests/domaincapsschemadata/qemu_2.8.0-tcg.x86_64.xml
index 1cb843d5d1..081805aa4a 100644
--- a/tests/domaincapsschemadata/qemu_2.8.0-tcg.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_2.8.0-tcg.x86_64.xml
@@ -73,6 +73,11 @@ 
         <value>usb</value>
         <value>sata</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_2.8.0.s390x.xml b/tests/domaincapsschemadata/qemu_2.8.0.s390x.xml
index 7293d89ae7..62c51e4087 100644
--- a/tests/domaincapsschemadata/qemu_2.8.0.s390x.xml
+++ b/tests/domaincapsschemadata/qemu_2.8.0.s390x.xml
@@ -119,6 +119,11 @@ 
         <value>scsi</value>
         <value>virtio</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_2.8.0.x86_64.xml b/tests/domaincapsschemadata/qemu_2.8.0.x86_64.xml
index 8391603a3b..1bb034aa4f 100644
--- a/tests/domaincapsschemadata/qemu_2.8.0.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_2.8.0.x86_64.xml
@@ -73,6 +73,11 @@ 
         <value>usb</value>
         <value>sata</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_2.9.0-q35.x86_64.xml b/tests/domaincapsschemadata/qemu_2.9.0-q35.x86_64.xml
index c341de3ce2..67c6d5e77e 100644
--- a/tests/domaincapsschemadata/qemu_2.9.0-q35.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_2.9.0-q35.x86_64.xml
@@ -81,6 +81,11 @@ 
         <value>usb</value>
         <value>sata</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_2.9.0-tcg.x86_64.xml b/tests/domaincapsschemadata/qemu_2.9.0-tcg.x86_64.xml
index 4336e65dc8..588ef08199 100644
--- a/tests/domaincapsschemadata/qemu_2.9.0-tcg.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_2.9.0-tcg.x86_64.xml
@@ -105,6 +105,11 @@ 
         <value>usb</value>
         <value>sata</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_2.9.0.x86_64.xml b/tests/domaincapsschemadata/qemu_2.9.0.x86_64.xml
index 8e842b89fd..598937a971 100644
--- a/tests/domaincapsschemadata/qemu_2.9.0.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_2.9.0.x86_64.xml
@@ -82,6 +82,11 @@ 
         <value>usb</value>
         <value>sata</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_3.0.0.s390x.xml b/tests/domaincapsschemadata/qemu_3.0.0.s390x.xml
index 97231e044f..1d97f1f344 100644
--- a/tests/domaincapsschemadata/qemu_3.0.0.s390x.xml
+++ b/tests/domaincapsschemadata/qemu_3.0.0.s390x.xml
@@ -139,6 +139,11 @@ 
         <value>scsi</value>
         <value>virtio</value>
       </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
     </disk>
     <graphics supported='yes'>
       <enum name='type'>
diff --git a/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml b/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml
new file mode 100644
index 0000000000..df66be9e29
--- /dev/null
+++ b/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml
@@ -0,0 +1,153 @@ 
+<domainCapabilities>
+  <path>/usr/bin/qemu-system-x86_64</path>
+  <domain>kvm</domain>
+  <machine>pc-i440fx-4.0</machine>
+  <arch>x86_64</arch>
+  <vcpu max='255'/>
+  <iothreads supported='yes'/>
+  <os supported='yes'>
+    <loader supported='yes'>
+      <value>/usr/share/AAVMF/AAVMF_CODE.fd</value>
+      <value>/usr/share/AAVMF/AAVMF32_CODE.fd</value>
+      <value>/usr/share/OVMF/OVMF_CODE.fd</value>
+      <enum name='type'>
+        <value>rom</value>
+        <value>pflash</value>
+      </enum>
+      <enum name='readonly'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
+    </loader>
+  </os>
+  <cpu>
+    <mode name='host-passthrough' supported='yes'/>
+    <mode name='host-model' supported='yes'>
+      <model fallback='forbid'>Skylake-Client-IBRS</model>
+      <vendor>Intel</vendor>
+      <feature policy='require' name='ss'/>
+      <feature policy='require' name='hypervisor'/>
+      <feature policy='require' name='tsc_adjust'/>
+      <feature policy='require' name='clflushopt'/>
+      <feature policy='require' name='umip'/>
+      <feature policy='require' name='arch-capabilities'/>
+      <feature policy='require' name='ssbd'/>
+      <feature policy='require' name='xsaves'/>
+      <feature policy='require' name='pdpe1gb'/>
+      <feature policy='require' name='invtsc'/>
+    </mode>
+    <mode name='custom' supported='yes'>
+      <model usable='yes'>qemu64</model>
+      <model usable='yes'>qemu32</model>
+      <model usable='no'>phenom</model>
+      <model usable='yes'>pentium3</model>
+      <model usable='yes'>pentium2</model>
+      <model usable='yes'>pentium</model>
+      <model usable='yes'>n270</model>
+      <model usable='yes'>kvm64</model>
+      <model usable='yes'>kvm32</model>
+      <model usable='yes'>coreduo</model>
+      <model usable='yes'>core2duo</model>
+      <model usable='no'>athlon</model>
+      <model usable='yes'>Westmere-IBRS</model>
+      <model usable='yes'>Westmere</model>
+      <model usable='no'>Skylake-Server-IBRS</model>
+      <model usable='no'>Skylake-Server</model>
+      <model usable='yes'>Skylake-Client-IBRS</model>
+      <model usable='yes'>Skylake-Client</model>
+      <model usable='yes'>SandyBridge-IBRS</model>
+      <model usable='yes'>SandyBridge</model>
+      <model usable='yes'>Penryn</model>
+      <model usable='no'>Opteron_G5</model>
+      <model usable='no'>Opteron_G4</model>
+      <model usable='no'>Opteron_G3</model>
+      <model usable='yes'>Opteron_G2</model>
+      <model usable='yes'>Opteron_G1</model>
+      <model usable='yes'>Nehalem-IBRS</model>
+      <model usable='yes'>Nehalem</model>
+      <model usable='yes'>IvyBridge-IBRS</model>
+      <model usable='yes'>IvyBridge</model>
+      <model usable='no'>Icelake-Server</model>
+      <model usable='no'>Icelake-Client</model>
+      <model usable='yes'>Haswell-noTSX-IBRS</model>
+      <model usable='yes'>Haswell-noTSX</model>
+      <model usable='yes'>Haswell-IBRS</model>
+      <model usable='yes'>Haswell</model>
+      <model usable='no'>EPYC-IBPB</model>
+      <model usable='no'>EPYC</model>
+      <model usable='yes'>Conroe</model>
+      <model usable='yes'>Broadwell-noTSX-IBRS</model>
+      <model usable='yes'>Broadwell-noTSX</model>
+      <model usable='yes'>Broadwell-IBRS</model>
+      <model usable='yes'>Broadwell</model>
+      <model usable='yes'>486</model>
+    </mode>
+  </cpu>
+  <devices>
+    <disk supported='yes'>
+      <enum name='diskDevice'>
+        <value>disk</value>
+        <value>cdrom</value>
+        <value>floppy</value>
+        <value>lun</value>
+      </enum>
+      <enum name='bus'>
+        <value>ide</value>
+        <value>fdc</value>
+        <value>scsi</value>
+        <value>virtio</value>
+        <value>usb</value>
+        <value>sata</value>
+      </enum>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+    </disk>
+    <graphics supported='yes'>
+      <enum name='type'>
+        <value>sdl</value>
+        <value>vnc</value>
+        <value>spice</value>
+      </enum>
+    </graphics>
+    <video supported='yes'>
+      <enum name='modelType'>
+        <value>vga</value>
+        <value>cirrus</value>
+        <value>vmvga</value>
+        <value>qxl</value>
+        <value>virtio</value>
+      </enum>
+    </video>
+    <hostdev supported='yes'>
+      <enum name='mode'>
+        <value>subsystem</value>
+      </enum>
+      <enum name='startupPolicy'>
+        <value>default</value>
+        <value>mandatory</value>
+        <value>requisite</value>
+        <value>optional</value>
+      </enum>
+      <enum name='subsysType'>
+        <value>usb</value>
+        <value>pci</value>
+        <value>scsi</value>
+      </enum>
+      <enum name='capsType'/>
+      <enum name='pciBackend'>
+        <value>default</value>
+        <value>kvm</value>
+        <value>vfio</value>
+      </enum>
+    </hostdev>
+  </devices>
+  <features>
+    <gic supported='no'/>
+    <vmcoreinfo supported='yes'/>
+    <genid supported='yes'/>
+    <sev supported='no'/>
+  </features>
+</domainCapabilities>
diff --git a/tests/domaincapstest.c b/tests/domaincapstest.c
index 7f52058bad..4ec2dc72b6 100644
--- a/tests/domaincapstest.c
+++ b/tests/domaincapstest.c
@@ -94,6 +94,7 @@  fillAllCaps(virDomainCapsPtr domCaps)
     disk->supported = true;
     SET_ALL_BITS(disk->diskDevice);
     SET_ALL_BITS(disk->bus);
+    SET_ALL_BITS(disk->model);
 
     graphics->supported = true;
     SET_ALL_BITS(graphics->type);
@@ -502,6 +503,9 @@  mymain(void)
                  "/usr/bin/qemu-system-s390x", NULL,
                  "s390x", VIR_DOMAIN_VIRT_KVM);
 
+    DO_TEST_QEMU("4.0.0", "caps_4.0.0",
+                 "/usr/bin/qemu-system-x86_64", NULL,
+                 "x86_64", VIR_DOMAIN_VIRT_KVM);
     virObjectUnref(cfg);
 
 #endif /* WITH_QEMU */