``type``
Options for the ``type`` attribute of the ``<channel/>`` element.
+Crypto device
+^^^^^^^^^^^^^^
+
+Crypto device capabilities are exposed under the ``crypto`` element. For instance:
+
+::
+
+ <domainCapabilities>
+ ...
+ <devices>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ <value>lkcf</value>
+ </enum>
+ </crypto>
+ ...
+ </devices>
+ </domainCapabilities>
+
+``model``
+ Options for the ``model`` attribute of the ``<crypto/>`` element.
+``type``
+ Options for the ``type`` attribute of the ``<crypto/>`` element.
+``backendModel``
+ Options for the ``backendModel`` attribute of the ``<crypto><backend/>`` element.
+
Features
~~~~~~~~
}
+static void
+virDomainCapsDeviceCryptoFormat(virBuffer *buf,
+ const virDomainCapsDeviceCrypto *crypto)
+{
+ FORMAT_PROLOGUE(crypto);
+
+ ENUM_PROCESS(crypto, model, virDomainCryptoModelTypeToString);
+ ENUM_PROCESS(crypto, type, virDomainCryptoTypeTypeToString);
+ ENUM_PROCESS(crypto, backendModel, virDomainCryptoBackendTypeToString);
+
+ FORMAT_EPILOGUE(crypto);
+}
+
+
/**
* virDomainCapsFeatureGICFormat:
* @buf: target buffer
virDomainCapsDeviceTPMFormat(&buf, &caps->tpm);
virDomainCapsDeviceRedirdevFormat(&buf, &caps->redirdev);
virDomainCapsDeviceChannelFormat(&buf, &caps->channel);
+ virDomainCapsDeviceCryptoFormat(&buf, &caps->crypto);
virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</devices>\n");
virSGXSection *sgxSections;
};
+STATIC_ASSERT_ENUM(VIR_DOMAIN_CRYPTO_MODEL_LAST);
+STATIC_ASSERT_ENUM(VIR_DOMAIN_CRYPTO_TYPE_LAST);
+STATIC_ASSERT_ENUM(VIR_DOMAIN_CRYPTO_BACKEND_LAST);
+typedef struct _virDomainCapsDeviceCrypto virDomainCapsDeviceCrypto;
+struct _virDomainCapsDeviceCrypto {
+ virTristateBool supported;
+ virDomainCapsEnum model; /* virDomainCryptoModel */
+ virDomainCapsEnum type; /* virDomainCryptoType */
+ virDomainCapsEnum backendModel; /* virDomainCryptoBackend */
+};
+
typedef enum {
VIR_DOMAIN_CAPS_FEATURE_IOTHREADS = 0,
VIR_DOMAIN_CAPS_FEATURE_VMCOREINFO,
virDomainCapsDeviceTPM tpm;
virDomainCapsDeviceRedirdev redirdev;
virDomainCapsDeviceChannel channel;
+ virDomainCapsDeviceCrypto crypto;
/* add new domain devices here */
virDomainCapsFeatureGIC gic;
<optional>
<ref name="channel"/>
</optional>
+ <optional>
+ <ref name="crypto"/>
+ </optional>
</element>
</define>
</element>
</define>
+ <define name="crypto">
+ <element name="crypto">
+ <ref name="supported"/>
+ <ref name="enum"/>
+ </element>
+ </define>
+
<define name="features">
<element name="features">
<optional>
/* 440 */
"machine-hpet", /* QEMU_CAPS_MACHINE_HPET */
"netdev.stream", /* QEMU_CAPS_NETDEV_STREAM */
+ "virtio-crypto", /* QEMU_CAPS_DEVICE_VIRTIO_CRYPTO */
+ "cryptodev-backend-lkcf", /* QEMU_CAPS_OBJECT_CRYPTO_LKCF */
);
{ "virtio-iommu-pci", QEMU_CAPS_DEVICE_VIRTIO_IOMMU_PCI },
{ "sgx-epc", QEMU_CAPS_SGX_EPC },
{ "thread-context", QEMU_CAPS_THREAD_CONTEXT },
+ { "virtio-crypto-pci", QEMU_CAPS_DEVICE_VIRTIO_CRYPTO },
+ { "virtio-crypto-device", QEMU_CAPS_DEVICE_VIRTIO_CRYPTO },
+ { "cryptodev-backend-lkcf", QEMU_CAPS_OBJECT_CRYPTO_LKCF },
};
}
+void
+virQEMUCapsFillDomainDeviceCryptoCaps(virQEMUCaps *qemuCaps,
+ virDomainCapsDeviceCrypto *crypto)
+{
+ crypto->supported = VIR_TRISTATE_BOOL_YES;
+ crypto->model.report = true;
+ crypto->type.report = true;
+ crypto->backendModel.report = true;
+
+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_CRYPTO))
+ VIR_DOMAIN_CAPS_ENUM_SET(crypto->model, VIR_DOMAIN_CRYPTO_MODEL_VIRTIO);
+
+ VIR_DOMAIN_CAPS_ENUM_SET(crypto->type, VIR_DOMAIN_CRYPTO_TYPE_QEMU);
+
+ VIR_DOMAIN_CAPS_ENUM_SET(crypto->backendModel, VIR_DOMAIN_CRYPTO_BACKEND_BUILTIN);
+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_CRYPTO_LKCF))
+ VIR_DOMAIN_CAPS_ENUM_SET(crypto->backendModel, VIR_DOMAIN_CRYPTO_BACKEND_LKCF);
+}
+
+
/**
* virQEMUCapsSupportsGICVersion:
* @qemuCaps: QEMU capabilities
virDomainCapsDeviceRedirdev *redirdev = &domCaps->redirdev;
virDomainCapsDeviceChannel *channel = &domCaps->channel;
virDomainCapsMemoryBacking *memoryBacking = &domCaps->memoryBacking;
+ virDomainCapsDeviceCrypto *crypto = &domCaps->crypto;
virQEMUCapsFillDomainFeaturesFromQEMUCaps(qemuCaps, domCaps);
virQEMUCapsFillDomainFeatureS390PVCaps(qemuCaps, domCaps);
virQEMUCapsFillDomainFeatureSGXCaps(qemuCaps, domCaps);
virQEMUCapsFillDomainFeatureHypervCaps(qemuCaps, domCaps);
+ virQEMUCapsFillDomainDeviceCryptoCaps(qemuCaps, crypto);
return 0;
}
/* 440 */
QEMU_CAPS_MACHINE_HPET, /* the HPET timer is configured via -machine, rather than -no-hpet */
QEMU_CAPS_NETDEV_STREAM, /* -netdev stream */
+ QEMU_CAPS_DEVICE_VIRTIO_CRYPTO, /* virtio-crypto device */
+ QEMU_CAPS_OBJECT_CRYPTO_LKCF, /* -object cryptodev-backend-lkcf */
QEMU_CAPS_LAST /* this must always be the last item */
} virQEMUCapsFlags;
void virQEMUCapsFillDomainDeviceChannelCaps(virQEMUCaps *qemuCaps,
virDomainCapsDeviceChannel *channel);
+void virQEMUCapsFillDomainDeviceCryptoCaps(virQEMUCaps *qemuCaps,
+ virDomainCapsDeviceCrypto *crypto);
+
bool virQEMUCapsGuestIsNative(virArch host,
virArch guest);
static int
qemuValidateDomainDeviceDefCrypto(virDomainCryptoDef *crypto,
const virDomainDef *def G_GNUC_UNUSED,
- virQEMUCaps *qemuCaps G_GNUC_UNUSED)
+ virQEMUCaps *qemuCaps)
{
+ virDomainCapsDeviceCrypto cryptoCaps = { 0 };
+
switch (crypto->type) {
case VIR_DOMAIN_CRYPTO_TYPE_QEMU:
+ virQEMUCapsFillDomainDeviceCryptoCaps(qemuCaps, &cryptoCaps);
break;
case VIR_DOMAIN_CRYPTO_TYPE_LAST:
return -1;
}
+ if (!VIR_DOMAIN_CAPS_ENUM_IS_SET(cryptoCaps.model, crypto->model)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("crypto model %s is not supported"),
+ virDomainCryptoModelTypeToString(crypto->model));
+ return -1;
+ }
+
+ if (!VIR_DOMAIN_CAPS_ENUM_IS_SET(cryptoCaps.type, crypto->type)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("crypto type %s is not supported"),
+ virDomainCryptoTypeTypeToString(crypto->type));
+ return -1;
+ }
+
+ if (!VIR_DOMAIN_CAPS_ENUM_IS_SET(cryptoCaps.backendModel, crypto->backend)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("crypto backend %s is not supported"),
+ virDomainCryptoBackendTypeToString(crypto->backend));
+ return -1;
+ }
+
return 0;
}
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='yes'>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='yes'>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'/>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='yes'>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='yes'>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='yes'>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='yes'>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>unix</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ <value>lkcf</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ <value>lkcf</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ <value>lkcf</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ <value>lkcf</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ <value>lkcf</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<value>spicevmc</value>
</enum>
</channel>
+ <crypto supported='yes'>
+ <enum name='model'>
+ <value>virtio</value>
+ </enum>
+ <enum name='type'>
+ <value>qemu</value>
+ </enum>
+ <enum name='backendModel'>
+ <value>builtin</value>
+ <value>lkcf</value>
+ </enum>
+ </crypto>
</devices>
<features>
<gic supported='no'/>
<flag name='input-linux'/>
<flag name='virtio-blk.queue-size'/>
<flag name='usb-host.guest-resets-all'/>
+ <flag name='virtio-crypto'/>
<version>4002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700242</microcodeVersion>
<flag name='input-linux'/>
<flag name='virtio-blk.queue-size'/>
<flag name='usb-host.guest-resets-all'/>
+ <flag name='virtio-crypto'/>
<version>4002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900242</microcodeVersion>
<flag name='input-linux'/>
<flag name='virtio-blk.queue-size'/>
<flag name='usb-host.guest-resets-all'/>
+ <flag name='virtio-crypto'/>
<version>4002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>39100242</microcodeVersion>
<flag name='input-linux'/>
<flag name='virtio-blk.queue-size'/>
<flag name='usb-host.guest-resets-all'/>
+ <flag name='virtio-crypto'/>
<version>4002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100242</microcodeVersion>
<flag name='memory-backend-file.prealloc-threads'/>
<flag name='virtio-iommu-pci'/>
<flag name='usb-host.guest-resets-all'/>
+ <flag name='virtio-crypto'/>
<version>5000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700241</microcodeVersion>
<flag name='memory-backend-file.prealloc-threads'/>
<flag name='virtio-iommu-pci'/>
<flag name='usb-host.guest-resets-all'/>
+ <flag name='virtio-crypto'/>
<version>5000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900241</microcodeVersion>
<flag name='memory-backend-file.prealloc-threads'/>
<flag name='virtio-iommu-pci'/>
<flag name='usb-host.guest-resets-all'/>
+ <flag name='virtio-crypto'/>
<version>5000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>0</microcodeVersion>
<flag name='memory-backend-file.prealloc-threads'/>
<flag name='virtio-iommu-pci'/>
<flag name='usb-host.guest-resets-all'/>
+ <flag name='virtio-crypto'/>
<version>5000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100241</microcodeVersion>
<flag name='virtio-iommu-pci'/>
<flag name='virtio-net.rss'/>
<flag name='usb-host.guest-resets-all'/>
+ <flag name='virtio-crypto'/>
<version>5001000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100242</microcodeVersion>
<flag name='virtio-iommu-pci'/>
<flag name='virtio-net.rss'/>
<flag name='usb-host.guest-resets-all'/>
+ <flag name='virtio-crypto'/>
<version>5002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700243</microcodeVersion>
<flag name='virtio-iommu-pci'/>
<flag name='virtio-net.rss'/>
<flag name='usb-host.guest-resets-all'/>
+ <flag name='virtio-crypto'/>
<version>5002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900243</microcodeVersion>
<flag name='virtio-iommu-pci'/>
<flag name='virtio-net.rss'/>
<flag name='usb-host.guest-resets-all'/>
+ <flag name='virtio-crypto'/>
<version>5002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>0</microcodeVersion>
<flag name='memory-backend-file.prealloc-threads'/>
<flag name='virtio-iommu-pci'/>
<flag name='virtio-net.rss'/>
+ <flag name='virtio-crypto'/>
<version>5002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>39100243</microcodeVersion>
<flag name='virtio-iommu-pci'/>
<flag name='virtio-net.rss'/>
<flag name='usb-host.guest-resets-all'/>
+ <flag name='virtio-crypto'/>
<version>5002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100243</microcodeVersion>
<flag name='virtio-net.rss'/>
<flag name='usb-host.guest-resets-all'/>
<flag name='migration.blocked-reasons'/>
+ <flag name='virtio-crypto'/>
<version>6000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700242</microcodeVersion>
<flag name='virtio-iommu-pci'/>
<flag name='virtio-net.rss'/>
<flag name='migration.blocked-reasons'/>
+ <flag name='virtio-crypto'/>
<version>6000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>39100242</microcodeVersion>
<flag name='virtio-net.rss'/>
<flag name='usb-host.guest-resets-all'/>
<flag name='migration.blocked-reasons'/>
+ <flag name='virtio-crypto'/>
<version>6000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100242</microcodeVersion>
<flag name='chardev.qemu-vdagent'/>
<flag name='usb-host.guest-resets-all'/>
<flag name='migration.blocked-reasons'/>
+ <flag name='virtio-crypto'/>
<version>6001000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100243</microcodeVersion>
<flag name='chardev.qemu-vdagent'/>
<flag name='usb-host.guest-resets-all'/>
<flag name='migration.blocked-reasons'/>
+ <flag name='virtio-crypto'/>
<version>6001050</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700244</microcodeVersion>
<flag name='virtio-iommu-pci'/>
<flag name='virtio-net.rss'/>
<flag name='migration.blocked-reasons'/>
+ <flag name='virtio-crypto'/>
<version>6002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900244</microcodeVersion>
<flag name='chardev.qemu-vdagent'/>
<flag name='usb-host.guest-resets-all'/>
<flag name='migration.blocked-reasons'/>
+ <flag name='virtio-crypto'/>
<version>6002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100244</microcodeVersion>
<flag name='chardev.qemu-vdagent'/>
<flag name='usb-host.guest-resets-all'/>
<flag name='migration.blocked-reasons'/>
+ <flag name='virtio-crypto'/>
<version>6002092</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700243</microcodeVersion>
<flag name='chardev.qemu-vdagent'/>
<flag name='usb-host.guest-resets-all'/>
<flag name='migration.blocked-reasons'/>
+ <flag name='virtio-crypto'/>
<version>7000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900243</microcodeVersion>
<flag name='usb-host.guest-resets-all'/>
<flag name='migration.blocked-reasons'/>
<flag name='sgx-epc'/>
+ <flag name='virtio-crypto'/>
<version>7000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100243</microcodeVersion>
<flag name='query-stats'/>
<flag name='query-stats-schemas'/>
<flag name='screenshot-format-png'/>
+ <flag name='virtio-crypto'/>
<version>7001000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900244</microcodeVersion>
<flag name='query-stats'/>
<flag name='query-stats-schemas'/>
<flag name='screenshot-format-png'/>
+ <flag name='virtio-crypto'/>
<version>7001000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100244</microcodeVersion>
<flag name='thread-context'/>
<flag name='screenshot-format-png'/>
<flag name='netdev.stream'/>
+ <flag name='virtio-crypto'/>
+ <flag name='cryptodev-backend-lkcf'/>
<version>7002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100245</microcodeVersion>
<flag name='thread-context'/>
<flag name='screenshot-format-png'/>
<flag name='netdev.stream'/>
+ <flag name='virtio-crypto'/>
<version>7002050</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>0</microcodeVersion>
<flag name='screenshot-format-png'/>
<flag name='machine-hpet'/>
<flag name='netdev.stream'/>
+ <flag name='virtio-crypto'/>
+ <flag name='cryptodev-backend-lkcf'/>
<version>7002050</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100244</microcodeVersion>