On 01/11/2013 10:00 AM, Peter Krempa wrote:
This patch implements support for the virtio-rng-pci device and the
rng-random backend in qemu.
Two capabilities bits are added to track support for those:
QEMU_CAPS_DEVICE_VIRTIO_RNG - for the device support and
QEMU_CAPS_OBJECT_RNG_RANDOM - for the backend support.
Is there any version of qemu where one but not the other feature is
available? Or are we always guaranteed that if one is present, the
other is as well, in which case we really only need one bit,
QEMU_CAPS_VIRTIO_RNG?
---
src/qemu/qemu_capabilities.c | 5 +-
src/qemu/qemu_capabilities.h | 3 ++
src/qemu/qemu_command.c | 108 +++++++++++++++++++++++++++++++++++++++++++
3 files changed, 115 insertions(+), 1 deletion(-)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index b166dd6..4947a3a 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -203,7 +203,8 @@ VIR_ENUM_IMPL(qemuCaps, QEMU_CAPS_LAST,
"usb-serial", /* 125 */
"usb-net",
-
+ "virtio-rng",
+ "rng-random",
There may be trivial merge conflicts to resolve, but not a big deal.
+ case VIR_DOMAIN_RNG_SOURCE_RANDOM:
+ if (qemuCapsGet(caps, QEMU_CAPS_OBJECT_RNG_RANDOM)) {
+ virBufferAsprintf(&buf, "rng-random,id=%s",
dev->info.alias);
+ if (dev->address)
+ virBufferAsprintf(&buf, ",filename=%s", dev->address);
+ } else {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("this qemu doesn't support the rng-random "
+ " backend"));
Two spaces in the error message line wrap; should only be one.
+char *
+qemuBuildRNGDevStr(virDomainRNGDefPtr dev,
+ qemuCapsPtr caps)
+{
+ virBuffer buf = VIR_BUFFER_INITIALIZER;
+
+ if (dev->model != VIR_DOMAIN_RNG_MODEL_VIRTIO ||
+ !qemuCapsGet(caps, QEMU_CAPS_DEVICE_VIRTIO_RNG)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("RNG device type '%s' is not supported "
+ "by this of qemu"),
Missing the word 'version'.
@@ -6978,6 +7064,28 @@ qemuBuildCommandLine(virConnectPtr conn,
}
}
+ if (def->rng &&
+ def->rng->model != VIR_DOMAIN_RNG_MODEL_NONE) {
+ char *optstr;
I'm still not convinced we need def->rng->model of NONE; if def->rng
exists, it should point to a valid model.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org