]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: capabilities: fill in domcaps <rng>
authorCole Robinson <crobinso@redhat.com>
Sun, 31 Mar 2019 21:19:40 +0000 (17:19 -0400)
committerCole Robinson <crobinso@redhat.com>
Tue, 6 Aug 2019 23:45:49 +0000 (19:45 -0400)
The model logic is taken from qemuDomainRNGDefValidate

Reviewed-by: Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
22 files changed:
src/qemu/qemu_capabilities.c
tests/domaincapsschemadata/qemu_1.7.0.x86_64.xml
tests/domaincapsschemadata/qemu_2.12.0-virt.aarch64.xml
tests/domaincapsschemadata/qemu_2.12.0.ppc64.xml
tests/domaincapsschemadata/qemu_2.12.0.s390x.xml
tests/domaincapsschemadata/qemu_2.12.0.x86_64.xml
tests/domaincapsschemadata/qemu_2.6.0-virt.aarch64.xml
tests/domaincapsschemadata/qemu_2.6.0.aarch64.xml
tests/domaincapsschemadata/qemu_2.6.0.ppc64.xml
tests/domaincapsschemadata/qemu_2.6.0.x86_64.xml
tests/domaincapsschemadata/qemu_2.7.0.s390x.xml
tests/domaincapsschemadata/qemu_2.8.0-tcg.x86_64.xml
tests/domaincapsschemadata/qemu_2.8.0.s390x.xml
tests/domaincapsschemadata/qemu_2.8.0.x86_64.xml
tests/domaincapsschemadata/qemu_2.9.0-q35.x86_64.xml
tests/domaincapsschemadata/qemu_2.9.0-tcg.x86_64.xml
tests/domaincapsschemadata/qemu_2.9.0.x86_64.xml
tests/domaincapsschemadata/qemu_3.0.0.s390x.xml
tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml
tests/domaincapsschemadata/qemu_4.0.0.s390x.xml
tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml
tests/domaincapsschemadata/qemu_4.1.0.x86_64.xml

index 2388f145af86037dd902526e9f1055fd709ca56d..2c46a15b0f30f80846348b80ed49bdc21d883add 100644 (file)
@@ -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;
index 06908cc61e28d387f45966c25a13d82790e09480..f14f24500720735e02f1a0630556ae57cee0a888 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index 5983a60887579be85c95613b0b5853dff1228e61..cc65977f036ebaf43dca85bb5c1e1a7e2609888a 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='yes'>
index 42c67623f45e8ba22b0a1ff14fd7a02b2133e0fa..8c490fa4d1be47d3464192320287156048a889c6 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index 4804c1332918c3a82eec7200c1fb9ef32e314dc0..18171f0db468718360f127ccb853a1865e28242b 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index f5f54cb4841c08c0f0019c5cb1f1dbdc05b20dee..146041a6c1ea6e6fbde8ef8349a481e8e7ca49cc 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index 99ee16e4bba1d86bbdb84dddea79bdc8df757030..778e27582f1faba1c654bb37d28d75453886a194 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='yes'>
index 61fdae009a1cb802fc756628d758b545078598b6..a01f5ef72fd7563edc7fc2970b57276ce2abb1f5 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index a33960a2af2ccdfe1e21d76029829721b4cd8b9b..a74cece8b60afcf31596669513c239d91d040021 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index 94fe08bc92193ed358f9cf91b1179bf0de894a43..949c5f8723addb796a4ec3f64ce1a8d9e2c2466a 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index 1057573681fb7815057a240730a32850f0e2e94f..8c66d6582a85fdfa07604f167ac6377904c226fb 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index 39f3bd6d9f1090ebffe3638cfe3b98f29a0ffffb..6fa74e29b0ad41358577b21b9f3a0524ce875e6f 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index 9ae9a1a8bc01ae150b564765777535fb21bd0d19..d27977242a068cd9e54d937b9159479f79a5b8da 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index 1770c81fdbbf295027be9f5aa891bfae7b6a0568..b39aecb52b1e88e9e7fc9ea6a5ea32879361665f 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index e2ec30fda7e2f04fcdd29b6d551a76d614634c2d..66b4a84c3fb0eb76fbfb39fa3b407de6ffc29712 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index 65226ee284150c8582ce3e4141d2fdc358d32132..e41571e11a2dc54dc0a3faa4d3710c4ee036460e 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index 0093877a0b006064b8bac2493ca2f4a22e8a9649..f9a8c490aa5b27d8ea3e9bd5f52af478554829e7 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index c8efefc5ba073b2a0de1c42f7b0fd3a4ae1f21ce..6dd5da07a51b2ff70e069dc43095608e7f55d8f8 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index ca3baab88c607da471b092c8b2bb61d463731ef4..1958eb9beb74895921d00864ff9ca911a308795e 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index edade48ad028c8a6f5c6cf742020373848d57535..30062a2b23eaae0a99eb16cd41ae5b0103412504 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index cba841d84414c10e1c8a3ba806ac53e9fab34757..8c6a622afea4a69c777fce9a325a362bf50f6ee4 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>
index c2c840657c7e95c092565e4c19ee8860169b7482..80ce931fbfdd9886ec2d5251718e3fe74dc6f3b3 100644 (file)
         <value>vfio</value>
       </enum>
     </hostdev>
+    <rng supported='yes'>
+      <enum name='model'>
+        <value>virtio</value>
+        <value>virtio-transitional</value>
+        <value>virtio-non-transitional</value>
+      </enum>
+      <enum name='backendModel'>
+        <value>random</value>
+        <value>egd</value>
+      </enum>
+    </rng>
   </devices>
   <features>
     <gic supported='no'/>