Hi Martin,
On 2017/1/9 16:44, Martin Kletzander wrote:
On Mon, Jan 09, 2017 at 10:15:25AM +0800, Longpeng(Mike) wrote:
> As virtio-crypto has been supported in QEMU 2.9 and
> the frontend driver has been merged in linux 4.10,
> so it's necessary to support virtio-crypto in domain
> XML.
>
> This patch parse the domain XML with virtio-crypto
> support, the virtio-crypto XML looks like this:
>
> <crypto model='virtio'>
> <backend type='builtin' queues='2'/>
> </crypto>
>
> Signed-off-by: Longpeng(Mike) <longpeng2(a)huawei.com>
> ---
> src/conf/domain_conf.c | 212 +++++++++++++++++++++++++++++++++++++++++
> src/conf/domain_conf.h | 32 +++++++
> src/qemu/qemu_alias.c | 20 ++++
> src/qemu/qemu_alias.h | 4 +
> src/qemu/qemu_capabilities.c | 4 +
> src/qemu/qemu_capabilities.h | 2 +
> src/qemu/qemu_command.c | 129 +++++++++++++++++++++++++
> src/qemu/qemu_command.h | 4 +
> src/qemu/qemu_domain_address.c | 17 ++++
> src/qemu/qemu_driver.c | 6 ++
> src/qemu/qemu_hotplug.c | 1 +
> 11 files changed, 431 insertions(+)
>
No tests, no documentation, no schema => no acks.
The patch should be split into at least two parts (conf, schema,
qemuxml2xmltest and docs in one; then hypervisor functionality and tests
in the second one).
OK, I will split the patch and add some testcases in V2.
Also I see no hunk adding anything to
qemuDomainAssignDevicePCISlots()
or similar.
I added in fact :)
@@ -1236,6 +1242,17 @@ qemuDomainAssignDevicePCISlots(virDomainDefPtr def,
goto error;
}
+ /* VirtIO CRYPTO */
+ for (i = 0; i < def->ncryptos; i++) {
+ if (def->cryptos[i]->model != VIR_DOMAIN_CRYPTO_MODEL_VIRTIO ||
+ !virDeviceInfoPCIAddressWanted(&def->cryptos[i]->info))
+ continue;
+
+ if (virDomainPCIAddressReserveNextSlot(addrs,
+ &def->cryptos[i]->info, flags)
< 0)
+ goto error;
+ }
+
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 9f7b906..fcfccd5 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -237,6 +237,7 @@ VIR_ENUM_IMPL(virDomainDevice, VIR_DOMAIN_DEVICE_LAST,
> "memballoon",
> "nvram",
> "rng",
> + "crypto",
Why are you adding this in a random place rather than at the end? That
could be fixed in most of the hunks.
OK, I will fix it in V2.
> @@ -21590,6 +21749,51 @@ virDomainRNGDefFree(virDomainRNGDefPtr
def)
>
>
> static int
> +virDomainCryptoDefFormat(virBufferPtr buf,
> + virDomainCryptoDefPtr def,
> + unsigned int flags)
> +{
> + const char *model = virDomainCryptoModelTypeToString(def->model);
> + const char *backend = virDomainCryptoBackendTypeToString(def->backend);
> +
> + virBufferAsprintf(buf, "<crypto model='%s'>\n", model);
> + virBufferAdjustIndent(buf, 2);
> + virBufferAsprintf(buf, "<backend type='%s'", backend);
> +
> + switch ((virDomainCryptoBackend) def->backend) {
> + case VIR_DOMAIN_CRYPTO_BACKEND_BUILTIN:
> + if (def->queues)
> + virBufferAsprintf(buf, " queues='%u'",
def->queues);
> +
> + virBufferAddLit(buf, "/>\n");
> + break;
> +
> + case VIR_DOMAIN_CRYPTO_BACKEND_LAST:
> + break;
> + }
> +
> + if (virDomainDeviceInfoNeedsFormat(&def->info, flags)) {
It should always have an address, this is not an old device with
back-compat problems.
All right, thanks
> diff --git a/src/qemu/qemu_capabilities.c
b/src/qemu/qemu_capabilities.c
> index 2c0b29d..b1b718b 100644
> --- a/src/qemu/qemu_capabilities.c
> +++ b/src/qemu/qemu_capabilities.c
> @@ -337,6 +337,8 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
> "drive-detect-zeroes",
>
> "tls-creds-x509", /* 230 */
> + "cryptodev-backend-builtin",
> + "virtio-crypto",
> );
>
>
> diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
> index affb639..98cb817 100644
> --- a/src/qemu/qemu_capabilities.h
> +++ b/src/qemu/qemu_capabilities.h
> @@ -370,6 +370,8 @@ typedef enum {
>
> /* 230 */
> QEMU_CAPS_OBJECT_TLS_CREDS_X509, /* -object tls-creds-x509 */
> + QEMU_CAPS_OBJECT_CRYPTO_BUILTIN,
> + QEMU_CAPS_DEVICE_VIRTIO_CRYPTO,
>
Base your patch on master, not on some old, private, branch. Also see
how every capability has a nice comment even if it's very trivial. It
can help sometimes.
I got it, thanks :)
I haven't tested it or read it thoroughly, but the rest looks
reasonable.
I had tested this patch and 'make syntax-check' before sent it. I will rework
this patch according to your suggestion and send V2 in these days :)
Martin
--
Regards,
Longpeng(Mike)