[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 16/41] cryptodev: wrap the ready flag
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL 16/41] cryptodev: wrap the ready flag |
Date: |
Tue, 10 Jan 2017 07:40:01 +0200 |
From: Gonglei <address@hidden>
The ready flag should be set by the children of
cryptodev backend interface. Warp the setter/getter
functions for it.
Signed-off-by: Gonglei <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
include/sysemu/cryptodev.h | 19 +++++++++++++++++++
backends/cryptodev-builtin.c | 4 ++++
backends/cryptodev.c | 15 +++++++++++----
hw/virtio/virtio-crypto.c | 4 ++--
4 files changed, 36 insertions(+), 6 deletions(-)
diff --git a/include/sysemu/cryptodev.h b/include/sysemu/cryptodev.h
index 461389d..a9d0d1e 100644
--- a/include/sysemu/cryptodev.h
+++ b/include/sysemu/cryptodev.h
@@ -317,5 +317,24 @@ void cryptodev_backend_set_used(CryptoDevBackend *backend,
bool used);
*/
bool cryptodev_backend_is_used(CryptoDevBackend *backend);
+/**
+ * cryptodev_backend_set_ready:
+ * @backend: the cryptodev backend object
+ * @ready: ture or false
+ *
+ * Set the cryptodev backend is ready or not, which is called
+ * by the children of the cryptodev banckend interface.
+ */
+void cryptodev_backend_set_ready(CryptoDevBackend *backend, bool ready);
+
+/**
+ * cryptodev_backend_is_ready:
+ * @backend: the cryptodev backend object
+ *
+ * Return the status that the cryptodev backend is ready or not
+ *
+ * Returns: true on ready, or false on not ready
+ */
+bool cryptodev_backend_is_ready(CryptoDevBackend *backend);
#endif /* CRYPTODEV_H */
diff --git a/backends/cryptodev-builtin.c b/backends/cryptodev-builtin.c
index 486b4a6..82a068e 100644
--- a/backends/cryptodev-builtin.c
+++ b/backends/cryptodev-builtin.c
@@ -94,6 +94,8 @@ static void cryptodev_builtin_init(
backend->conf.max_size = LONG_MAX - sizeof(CryptoDevBackendSymOpInfo);
backend->conf.max_cipher_key_len = CRYPTODEV_BUITLIN_MAX_CIPHER_KEY_LEN;
backend->conf.max_auth_key_len = CRYPTODEV_BUITLIN_MAX_AUTH_KEY_LEN;
+
+ cryptodev_backend_set_ready(backend, true);
}
static int
@@ -366,6 +368,8 @@ static void cryptodev_builtin_cleanup(
backend->conf.peers.ccs[i] = NULL;
}
}
+
+ cryptodev_backend_set_ready(backend, false);
}
static void
diff --git a/backends/cryptodev.c b/backends/cryptodev.c
index 6a66c27..832f056 100644
--- a/backends/cryptodev.c
+++ b/backends/cryptodev.c
@@ -73,8 +73,6 @@ void cryptodev_backend_cleanup(
if (bc->cleanup) {
bc->cleanup(backend, errp);
}
-
- backend->ready = false;
}
int64_t cryptodev_backend_sym_create_session(
@@ -189,11 +187,10 @@ cryptodev_backend_complete(UserCreatable *uc, Error
**errp)
goto out;
}
}
- backend->ready = true;
+
return;
out:
- backend->ready = false;
error_propagate(errp, local_err);
}
@@ -207,6 +204,16 @@ bool cryptodev_backend_is_used(CryptoDevBackend *backend)
return backend->is_used;
}
+void cryptodev_backend_set_ready(CryptoDevBackend *backend, bool ready)
+{
+ backend->ready = ready;
+}
+
+bool cryptodev_backend_is_ready(CryptoDevBackend *backend)
+{
+ return backend->ready;
+}
+
static bool
cryptodev_backend_can_be_deleted(UserCreatable *uc, Error **errp)
{
diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c
index 6318fcf..9213258 100644
--- a/hw/virtio/virtio-crypto.c
+++ b/hw/virtio/virtio-crypto.c
@@ -732,7 +732,7 @@ static void virtio_crypto_reset(VirtIODevice *vdev)
VirtIOCrypto *vcrypto = VIRTIO_CRYPTO(vdev);
/* multiqueue is disabled by default */
vcrypto->curr_queues = 1;
- if (!vcrypto->cryptodev->ready) {
+ if (!cryptodev_backend_is_ready(vcrypto->cryptodev)) {
vcrypto->status &= ~VIRTIO_CRYPTO_S_HW_READY;
} else {
vcrypto->status |= VIRTIO_CRYPTO_S_HW_READY;
@@ -792,7 +792,7 @@ static void virtio_crypto_device_realize(DeviceState *dev,
Error **errp)
}
vcrypto->ctrl_vq = virtio_add_queue(vdev, 64, virtio_crypto_handle_ctrl);
- if (!vcrypto->cryptodev->ready) {
+ if (!cryptodev_backend_is_ready(vcrypto->cryptodev)) {
vcrypto->status &= ~VIRTIO_CRYPTO_S_HW_READY;
} else {
vcrypto->status |= VIRTIO_CRYPTO_S_HW_READY;
--
MST
- Re: [Qemu-devel] [PULL 08/41] intel_iommu: support device iotlb descriptor, (continued)
[Qemu-devel] [PULL 09/41] virtio-pci: address space translation service (ATS) support, Michael S. Tsirkin, 2017/01/10
[Qemu-devel] [PULL 10/41] acpi: add ATSR for q35, Michael S. Tsirkin, 2017/01/10
[Qemu-devel] [PULL 11/41] memory: handle alias for iommu notifier, Michael S. Tsirkin, 2017/01/10
[Qemu-devel] [PULL 12/41] memory: handle alias in memory_region_is_iommu(), Michael S. Tsirkin, 2017/01/10
[Qemu-devel] [PULL 13/41] doc/pcie: correct command line examples, Michael S. Tsirkin, 2017/01/10
[Qemu-devel] [PULL 14/41] virtio-crypto: use the correct length for cipher operation, Michael S. Tsirkin, 2017/01/10
[Qemu-devel] [PULL 15/41] cryptodev: introduce a new is_used property, Michael S. Tsirkin, 2017/01/10
[Qemu-devel] [PULL 16/41] cryptodev: wrap the ready flag,
Michael S. Tsirkin <=
[Qemu-devel] [PULL 17/41] virtio-crypto-pci: add check for cryptodev object, Michael S. Tsirkin, 2017/01/10
[Qemu-devel] [PULL 18/41] virtio-crypto: avoid one cryptodev device is used by multiple virtio crypto devices, Michael S. Tsirkin, 2017/01/10
[Qemu-devel] [PULL 19/41] virtio-crypto-pci: tag virtio-crypto device hot pluggable, Michael S. Tsirkin, 2017/01/10
[Qemu-devel] [PULL 20/41] virtio-crypto: zeroize the key material before free, Michael S. Tsirkin, 2017/01/10
[Qemu-devel] [PULL 21/41] pcie_aer: Convert pcie_aer_init to Error, Michael S. Tsirkin, 2017/01/10
[Qemu-devel] [PULL 23/41] virtio: fix vq->inuse recalc after migr, Michael S. Tsirkin, 2017/01/10
[Qemu-devel] [PULL 22/41] pcie_aer: support configurable AER capa version, Michael S. Tsirkin, 2017/01/10
[Qemu-devel] [PULL 24/41] balloon: Don't balloon roms, Michael S. Tsirkin, 2017/01/10
[Qemu-devel] [PULL 25/41] net: Add virtio queue interface to update used index from vring state, Michael S. Tsirkin, 2017/01/10
[Qemu-devel] [PULL 27/41] virtio: Introduce virtqueue_drop_all procedure, Michael S. Tsirkin, 2017/01/10