diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 2388f145af..2c46a15b0f 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -5370,6 +5370,34 @@ virQEMUCapsFillDomainDeviceHostdevCaps(virQEMUCapsPtr qemuCaps,
}
+static int
+virQEMUCapsFillDomainDeviceRNGCaps(virQEMUCapsPtr qemuCaps,
+ virDomainCapsDeviceRNGPtr rng)
+{
+ rng->supported = VIR_TRISTATE_BOOL_YES;
+ rng->model.report = true;
+ rng->backendModel.report = true;
+
+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_RNG)) {
+ VIR_DOMAIN_CAPS_ENUM_SET(rng->model, VIR_DOMAIN_RNG_MODEL_VIRTIO);
+
+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_PCI_TRANSITIONAL) ||
+ virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY)) {
+ VIR_DOMAIN_CAPS_ENUM_SET(rng->model,
+ VIR_DOMAIN_RNG_MODEL_VIRTIO_TRANSITIONAL,
+ VIR_DOMAIN_RNG_MODEL_VIRTIO_NON_TRANSITIONAL);
+ }
+ }
+
+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_RNG_EGD))
+ VIR_DOMAIN_CAPS_ENUM_SET(rng->backendModel, VIR_DOMAIN_RNG_BACKEND_EGD);
+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_RNG_RANDOM))
+ VIR_DOMAIN_CAPS_ENUM_SET(rng->backendModel, VIR_DOMAIN_RNG_BACKEND_RANDOM);
+
+ return 0;
+}
+
+
/**
* virQEMUCapsSupportsGICVersion:
* @qemuCaps: QEMU capabilities
@@ -5512,6 +5540,7 @@ virQEMUCapsFillDomainCaps(virCapsPtr caps,
virDomainCapsDeviceHostdevPtr hostdev = &domCaps->hostdev;
virDomainCapsDeviceGraphicsPtr graphics = &domCaps->graphics;
virDomainCapsDeviceVideoPtr video = &domCaps->video;
+ virDomainCapsDeviceRNGPtr rng = &domCaps->rng;
domCaps->maxvcpus = virQEMUCapsGetMachineMaxCpus(qemuCaps,
domCaps->machine);
@@ -5542,6 +5571,7 @@ virQEMUCapsFillDomainCaps(virCapsPtr caps,
virQEMUCapsFillDomainDeviceGraphicsCaps(qemuCaps, graphics) < 0 ||
virQEMUCapsFillDomainDeviceVideoCaps(qemuCaps, video) < 0 ||
virQEMUCapsFillDomainDeviceHostdevCaps(qemuCaps, hostdev) < 0 ||
+ virQEMUCapsFillDomainDeviceRNGCaps(qemuCaps, rng) < 0 ||
virQEMUCapsFillDomainFeatureGICCaps(qemuCaps, domCaps) < 0 ||
virQEMUCapsFillDomainFeatureSEVCaps(qemuCaps, domCaps) < 0)
return -1;
diff --git a/tests/domaincapsschemadata/qemu_1.7.0.x86_64.xml b/tests/domaincapsschemadata/qemu_1.7.0.x86_64.xml
index 06908cc61e..f14f245007 100644
--- a/tests/domaincapsschemadata/qemu_1.7.0.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_1.7.0.x86_64.xml
@@ -116,6 +116,15 @@
vfio
+
+
+ virtio
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_2.12.0-virt.aarch64.xml b/tests/domaincapsschemadata/qemu_2.12.0-virt.aarch64.xml
index 5983a60887..cc65977f03 100644
--- a/tests/domaincapsschemadata/qemu_2.12.0-virt.aarch64.xml
+++ b/tests/domaincapsschemadata/qemu_2.12.0-virt.aarch64.xml
@@ -120,6 +120,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_2.12.0.ppc64.xml b/tests/domaincapsschemadata/qemu_2.12.0.ppc64.xml
index 42c67623f4..8c490fa4d1 100644
--- a/tests/domaincapsschemadata/qemu_2.12.0.ppc64.xml
+++ b/tests/domaincapsschemadata/qemu_2.12.0.ppc64.xml
@@ -84,6 +84,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_2.12.0.s390x.xml b/tests/domaincapsschemadata/qemu_2.12.0.s390x.xml
index 4804c13329..18171f0db4 100644
--- a/tests/domaincapsschemadata/qemu_2.12.0.s390x.xml
+++ b/tests/domaincapsschemadata/qemu_2.12.0.s390x.xml
@@ -176,6 +176,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_2.12.0.x86_64.xml b/tests/domaincapsschemadata/qemu_2.12.0.x86_64.xml
index f5f54cb484..146041a6c1 100644
--- a/tests/domaincapsschemadata/qemu_2.12.0.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_2.12.0.x86_64.xml
@@ -149,6 +149,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_2.6.0-virt.aarch64.xml b/tests/domaincapsschemadata/qemu_2.6.0-virt.aarch64.xml
index 99ee16e4bb..778e27582f 100644
--- a/tests/domaincapsschemadata/qemu_2.6.0-virt.aarch64.xml
+++ b/tests/domaincapsschemadata/qemu_2.6.0-virt.aarch64.xml
@@ -117,6 +117,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_2.6.0.aarch64.xml b/tests/domaincapsschemadata/qemu_2.6.0.aarch64.xml
index 61fdae009a..a01f5ef72f 100644
--- a/tests/domaincapsschemadata/qemu_2.6.0.aarch64.xml
+++ b/tests/domaincapsschemadata/qemu_2.6.0.aarch64.xml
@@ -115,6 +115,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_2.6.0.ppc64.xml b/tests/domaincapsschemadata/qemu_2.6.0.ppc64.xml
index a33960a2af..a74cece8b6 100644
--- a/tests/domaincapsschemadata/qemu_2.6.0.ppc64.xml
+++ b/tests/domaincapsschemadata/qemu_2.6.0.ppc64.xml
@@ -88,6 +88,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_2.6.0.x86_64.xml b/tests/domaincapsschemadata/qemu_2.6.0.x86_64.xml
index 94fe08bc92..949c5f8723 100644
--- a/tests/domaincapsschemadata/qemu_2.6.0.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_2.6.0.x86_64.xml
@@ -123,6 +123,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_2.7.0.s390x.xml b/tests/domaincapsschemadata/qemu_2.7.0.s390x.xml
index 1057573681..8c66d6582a 100644
--- a/tests/domaincapsschemadata/qemu_2.7.0.s390x.xml
+++ b/tests/domaincapsschemadata/qemu_2.7.0.s390x.xml
@@ -81,6 +81,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
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 39f3bd6d9f..6fa74e29b0 100644
--- a/tests/domaincapsschemadata/qemu_2.8.0-tcg.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_2.8.0-tcg.x86_64.xml
@@ -124,6 +124,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_2.8.0.s390x.xml b/tests/domaincapsschemadata/qemu_2.8.0.s390x.xml
index 9ae9a1a8bc..d27977242a 100644
--- a/tests/domaincapsschemadata/qemu_2.8.0.s390x.xml
+++ b/tests/domaincapsschemadata/qemu_2.8.0.s390x.xml
@@ -162,6 +162,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_2.8.0.x86_64.xml b/tests/domaincapsschemadata/qemu_2.8.0.x86_64.xml
index 1770c81fdb..b39aecb52b 100644
--- a/tests/domaincapsschemadata/qemu_2.8.0.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_2.8.0.x86_64.xml
@@ -124,6 +124,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
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 e2ec30fda7..66b4a84c3f 100644
--- a/tests/domaincapsschemadata/qemu_2.9.0-q35.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_2.9.0-q35.x86_64.xml
@@ -133,6 +133,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
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 65226ee284..e41571e11a 100644
--- a/tests/domaincapsschemadata/qemu_2.9.0-tcg.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_2.9.0-tcg.x86_64.xml
@@ -156,6 +156,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_2.9.0.x86_64.xml b/tests/domaincapsschemadata/qemu_2.9.0.x86_64.xml
index 0093877a0b..f9a8c490aa 100644
--- a/tests/domaincapsschemadata/qemu_2.9.0.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_2.9.0.x86_64.xml
@@ -133,6 +133,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_3.0.0.s390x.xml b/tests/domaincapsschemadata/qemu_3.0.0.s390x.xml
index c8efefc5ba..6dd5da07a5 100644
--- a/tests/domaincapsschemadata/qemu_3.0.0.s390x.xml
+++ b/tests/domaincapsschemadata/qemu_3.0.0.s390x.xml
@@ -182,6 +182,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml b/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml
index ca3baab88c..1958eb9beb 100644
--- a/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml
@@ -151,6 +151,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_4.0.0.s390x.xml b/tests/domaincapsschemadata/qemu_4.0.0.s390x.xml
index edade48ad0..30062a2b23 100644
--- a/tests/domaincapsschemadata/qemu_4.0.0.s390x.xml
+++ b/tests/domaincapsschemadata/qemu_4.0.0.s390x.xml
@@ -188,6 +188,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml b/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml
index cba841d844..8c6a622afe 100644
--- a/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml
@@ -151,6 +151,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+
diff --git a/tests/domaincapsschemadata/qemu_4.1.0.x86_64.xml b/tests/domaincapsschemadata/qemu_4.1.0.x86_64.xml
index c2c840657c..80ce931fbf 100644
--- a/tests/domaincapsschemadata/qemu_4.1.0.x86_64.xml
+++ b/tests/domaincapsschemadata/qemu_4.1.0.x86_64.xml
@@ -155,6 +155,17 @@
vfio
+
+
+ virtio
+ virtio-transitional
+ virtio-non-transitional
+
+
+ random
+ egd
+
+