All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Gonglei <arei.gonglei@huawei.com>
Subject: [Qemu-devel] [PULL 22/47] virtio-crypto: set capacity of algorithms supported
Date: Sun, 30 Oct 2016 23:24:20 +0200	[thread overview]
Message-ID: <1477850917-1214-23-git-send-email-mst@redhat.com> (raw)
In-Reply-To: <1477850917-1214-1-git-send-email-mst@redhat.com>

From: Gonglei <arei.gonglei@huawei.com>

Expose the capacity of algorithms supported by
virtio crypto device to the frontend driver using
pci configuration space.

Signed-off-by: Gonglei <arei.gonglei@huawei.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/hw/virtio/virtio-crypto.h | 18 ++++++++++++++++
 hw/virtio/virtio-crypto.c         | 43 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 61 insertions(+)

diff --git a/include/hw/virtio/virtio-crypto.h b/include/hw/virtio/virtio-crypto.h
index 4652c21..783ea23 100644
--- a/include/hw/virtio/virtio-crypto.h
+++ b/include/hw/virtio/virtio-crypto.h
@@ -39,6 +39,24 @@ do { \
 
 typedef struct VirtIOCryptoConf {
     CryptoDevBackend *cryptodev;
+
+    /* Supported service mask */
+    uint32_t crypto_services;
+
+    /* Detailed algorithms mask */
+    uint32_t cipher_algo_l;
+    uint32_t cipher_algo_h;
+    uint32_t hash_algo;
+    uint32_t mac_algo_l;
+    uint32_t mac_algo_h;
+    uint32_t aead_algo;
+
+    /* Maximum length of cipher key */
+    uint32_t max_cipher_key_len;
+    /* Maximum length of authenticated key */
+    uint32_t max_auth_key_len;
+    /* Maximum size of each crypto request's content */
+    uint64_t max_size;
 } VirtIOCryptoConf;
 
 struct VirtIOCrypto;
diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c
index 109a504..4ded704 100644
--- a/hw/virtio/virtio-crypto.c
+++ b/hw/virtio/virtio-crypto.c
@@ -42,6 +42,27 @@ static void virtio_crypto_reset(VirtIODevice *vdev)
     }
 }
 
+static void virtio_crypto_init_config(VirtIODevice *vdev)
+{
+    VirtIOCrypto *vcrypto = VIRTIO_CRYPTO(vdev);
+
+    vcrypto->conf.crypto_services =
+                     vcrypto->conf.cryptodev->conf.crypto_services;
+    vcrypto->conf.cipher_algo_l =
+                     vcrypto->conf.cryptodev->conf.cipher_algo_l;
+    vcrypto->conf.cipher_algo_h =
+                     vcrypto->conf.cryptodev->conf.cipher_algo_h;
+    vcrypto->conf.hash_algo = vcrypto->conf.cryptodev->conf.hash_algo;
+    vcrypto->conf.mac_algo_l = vcrypto->conf.cryptodev->conf.mac_algo_l;
+    vcrypto->conf.mac_algo_h = vcrypto->conf.cryptodev->conf.mac_algo_h;
+    vcrypto->conf.aead_algo = vcrypto->conf.cryptodev->conf.aead_algo;
+    vcrypto->conf.max_cipher_key_len =
+                  vcrypto->conf.cryptodev->conf.max_cipher_key_len;
+    vcrypto->conf.max_auth_key_len =
+                  vcrypto->conf.cryptodev->conf.max_auth_key_len;
+    vcrypto->conf.max_size = vcrypto->conf.cryptodev->conf.max_size;
+}
+
 static void virtio_crypto_device_realize(DeviceState *dev, Error **errp)
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
@@ -75,6 +96,8 @@ static void virtio_crypto_device_realize(DeviceState *dev, Error **errp)
     } else {
         vcrypto->status |= VIRTIO_CRYPTO_S_HW_READY;
     }
+
+    virtio_crypto_init_config(vdev);
 }
 
 static void virtio_crypto_device_unrealize(DeviceState *dev, Error **errp)
@@ -100,7 +123,27 @@ static Property virtio_crypto_properties[] = {
 
 static void virtio_crypto_get_config(VirtIODevice *vdev, uint8_t *config)
 {
+    VirtIOCrypto *c = VIRTIO_CRYPTO(vdev);
+    struct virtio_crypto_config crypto_cfg;
 
+    /*
+     * Virtio-crypto device conforms to VIRTIO 1.0 which is always LE,
+     * so we can use LE accessors directly.
+     */
+    stl_le_p(&crypto_cfg.status, c->status);
+    stl_le_p(&crypto_cfg.max_dataqueues, c->max_queues);
+    stl_le_p(&crypto_cfg.crypto_services, c->conf.crypto_services);
+    stl_le_p(&crypto_cfg.cipher_algo_l, c->conf.cipher_algo_l);
+    stl_le_p(&crypto_cfg.cipher_algo_h, c->conf.cipher_algo_h);
+    stl_le_p(&crypto_cfg.hash_algo, c->conf.hash_algo);
+    stl_le_p(&crypto_cfg.mac_algo_l, c->conf.mac_algo_l);
+    stl_le_p(&crypto_cfg.mac_algo_h, c->conf.mac_algo_h);
+    stl_le_p(&crypto_cfg.aead_algo, c->conf.aead_algo);
+    stl_le_p(&crypto_cfg.max_cipher_key_len, c->conf.max_cipher_key_len);
+    stl_le_p(&crypto_cfg.max_auth_key_len, c->conf.max_auth_key_len);
+    stq_le_p(&crypto_cfg.max_size, c->conf.max_size);
+
+    memcpy(config, &crypto_cfg, c->config_size);
 }
 
 static void virtio_crypto_class_init(ObjectClass *klass, void *data)
-- 
MST

  parent reply	other threads:[~2016-10-30 21:24 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-30 21:23 [Qemu-devel] [PULL 00/47] virtio, pc: fixes and features Michael S. Tsirkin
2016-10-30 21:23 ` [Qemu-devel] [PULL 01/47] virtio/migration: Add VMStateDescription to VirtioDeviceClass Michael S. Tsirkin
2016-10-30 21:23 ` [Qemu-devel] [PULL 02/47] virtio/migration: Migrate balloon to VMState Michael S. Tsirkin
2016-10-30 21:23 ` [Qemu-devel] [PULL 03/47] virtio: disable ioeventfd as early as possible Michael S. Tsirkin
2016-10-30 21:23 ` [Qemu-devel] [PULL 04/47] virtio: move ioeventfd_disabled flag to VirtioBusState Michael S. Tsirkin
2016-10-30 21:23 ` [Qemu-devel] [PULL 05/47] virtio: move ioeventfd_started " Michael S. Tsirkin
2016-10-30 21:23 ` [Qemu-devel] [PULL 06/47] virtio: add start_ioeventfd and stop_ioeventfd to VirtioDeviceClass Michael S. Tsirkin
2016-10-30 21:23 ` [Qemu-devel] [PULL 07/47] virtio: introduce virtio_device_ioeventfd_enabled Michael S. Tsirkin
2016-10-30 21:23 ` [Qemu-devel] [PULL 08/47] virtio-blk: always use dataplane path if ioeventfd is active Michael S. Tsirkin
2016-10-30 21:23 ` [Qemu-devel] [PULL 09/47] virtio-scsi: " Michael S. Tsirkin
2016-10-30 21:23 ` [Qemu-devel] [PULL 10/47] Revert "virtio: Introduce virtio_add_queue_aio" Michael S. Tsirkin
2016-10-30 21:23 ` [Qemu-devel] [PULL 11/47] virtio: remove set_handler argument from set_host_notifier_internal Michael S. Tsirkin
2016-10-30 21:23 ` [Qemu-devel] [PULL 12/47] virtio: remove ioeventfd_disabled altogether Michael S. Tsirkin
2016-11-10 14:35   ` Christian Borntraeger
2016-11-10 14:38     ` Paolo Bonzini
2016-11-10 14:48       ` Christian Borntraeger
2016-11-15  8:27         ` Christian Borntraeger
2016-11-15 10:00           ` Paolo Bonzini
2016-10-30 21:23 ` [Qemu-devel] [PULL 13/47] virtio: use virtio_bus_set_host_notifier to start/stop ioeventfd Michael S. Tsirkin
2016-10-30 21:23 ` [Qemu-devel] [PULL 14/47] virtio: inline virtio_queue_set_host_notifier_fd_handler Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 15/47] virtio: inline set_host_notifier_internal Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 16/47] cryptodev: introduce cryptodev backend interface Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 17/47] cryptodev: add symmetric algorithm operation stuff Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 18/47] virtio-crypto: introduce virtio_crypto.h Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 19/47] cryptodev: introduce a new cryptodev backend Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 20/47] virtio-crypto: add virtio crypto device emulation Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 21/47] virtio-crypto-pci: add virtio crypto pci support Michael S. Tsirkin
2016-10-30 21:24 ` Michael S. Tsirkin [this message]
2016-10-30 21:24 ` [Qemu-devel] [PULL 23/47] virtio-crypto: add control queue handler Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 24/47] virtio-crypto: add data queue processing handler Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 25/47] cryptodev: introduce an unified wrapper for crypto operation Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 26/47] virtio-crypto: using bh to handle dataq's requests Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 27/47] virtio-crypto: add myself as virtio-crypto and cryptodev backends maintainer Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 28/47] acpi nvdimm: fix wrong buffer size returned by DSM method Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 29/47] acpi nvdimm: fix OperationRegion definition Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 30/47] acpi nvdimm: fix device physical address base Michael S. Tsirkin
2016-10-31  9:20   ` Igor Mammedov
2016-10-31  9:23     ` Xiao Guangrong
2016-10-31 10:56       ` Igor Mammedov
2016-10-31 11:09         ` Xiao Guangrong
2016-10-31 13:30           ` Igor Mammedov
2016-10-30 21:24 ` [Qemu-devel] [PULL 31/47] acpi nvdimm: fix ARG3 conflict Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 32/47] acpi nvdimm: fix Arg6 usage Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 33/47] nvdimm acpi: compile nvdimm acpi code arch-independently Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 34/47] acpi nvdimm: rename result_size to dsm_out_buf_siz Michael S. Tsirkin
2016-10-30 21:24 ` [Qemu-devel] [PULL 35/47] nvdimm acpi: use common macros instead of magic names Michael S. Tsirkin
2016-10-30 21:25 ` [Qemu-devel] [PULL 36/47] nvdimm acpi: prebuild nvdimm devices for available slots Michael S. Tsirkin
2016-10-30 21:25 ` [Qemu-devel] [PULL 37/47] nvdimm acpi: introduce fit buffer Michael S. Tsirkin
2016-10-31  9:45   ` Igor Mammedov
2016-10-31  9:52     ` Xiao Guangrong
2016-10-31 11:09       ` Igor Mammedov
2016-11-01  3:30         ` Xiao Guangrong
2016-11-01 10:35           ` Igor Mammedov
2016-11-01 13:40             ` Xiao Guangrong
2016-11-01 13:58               ` Igor Mammedov
2016-11-01 15:57                 ` Xiao Guangrong
2016-11-01 16:26                   ` Igor Mammedov
2016-10-30 21:25 ` [Qemu-devel] [PULL 38/47] nvdimm acpi: introduce _FIT Michael S. Tsirkin
2016-10-30 21:25 ` [Qemu-devel] [PULL 39/47] pc: memhp: enable nvdimm device hotplug Michael S. Tsirkin
2016-11-02 11:19   ` Igor Mammedov
2016-11-02 16:00     ` Xiao Guangrong
2016-11-03  9:41       ` Igor Mammedov
2016-10-30 21:25 ` [Qemu-devel] [PULL 40/47] ipmi: Remove hotplug from IPMI BMCs Michael S. Tsirkin
2016-10-30 21:25 ` [Qemu-devel] [PULL 41/47] ipmi_bmc_sim: Remove an unnecessary mutex Michael S. Tsirkin
2016-10-30 21:25 ` [Qemu-devel] [PULL 42/47] ipmi: chassis poweroff should use qemu_system_shutdown_request() Michael S. Tsirkin
2016-10-30 21:25 ` [Qemu-devel] [PULL 43/47] ipmi: Implement shutdown via ACPI overtemp Michael S. Tsirkin
2016-10-30 21:25 ` [Qemu-devel] [PULL 44/47] ipmi: fix build config variable name for ipmi_bmc_extern.o Michael S. Tsirkin
2016-10-30 21:25 ` [Qemu-devel] [PULL 45/47] ipmi: Add graceful shutdown handling to the external BMC Michael S. Tsirkin
2016-10-30 21:25 ` [Qemu-devel] [PULL 46/47] acpi/ipmi: Initialize the fwinfo before fetching it Michael S. Tsirkin
2016-10-30 21:25 ` [Qemu-devel] [PULL 47/47] acpi: fix assert failure caused by commit 35c5a52d Michael S. Tsirkin
2016-10-31  9:50 ` [Qemu-devel] [PULL 00/47] virtio, pc: fixes and features Igor Mammedov
2016-10-31 22:48   ` Michael S. Tsirkin
2016-11-01 12:47     ` Peter Maydell
2016-11-01 13:21     ` Igor Mammedov
2016-11-01 13:45       ` Xiao Guangrong
2016-11-01 13:55       ` Michael S. Tsirkin
2016-11-01 14:14         ` Igor Mammedov
2016-11-01 14:29           ` Peter Maydell
2016-11-01 16:03           ` Xiao Guangrong
2016-11-01 15:22 ` Peter Maydell
2016-11-01 17:25   ` Michael S. Tsirkin
2016-11-01 17:27     ` Peter Maydell
2016-11-02  1:13     ` Gonglei (Arei)
2016-11-02  4:35   ` Michael S. Tsirkin
2016-11-02 13:14     ` Peter Maydell
2016-11-03  3:35       ` Michael S. Tsirkin
2016-11-03 16:59 ` Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1477850917-1214-23-git-send-email-mst@redhat.com \
    --to=mst@redhat.com \
    --cc=arei.gonglei@huawei.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.