[PATCH v6 00/12] Refactor cryptodev

zhenwei pi posted 12 patches 1 year, 1 month ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230301105847.253084-1-pizhenwei@bytedance.com
Maintainers: "Gonglei (Arei)" <arei.gonglei@huawei.com>, Zhenwei Pi <pizhenwei@bytedance.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>, Eric Blake <eblake@redhat.com>, Markus Armbruster <armbru@redhat.com>, Michael Roth <michael.roth@amd.com>, Paolo Bonzini <pbonzini@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Eduardo Habkost <eduardo@habkost.net>
MAINTAINERS                     |   2 +
backends/cryptodev-builtin.c    |  42 ++--
backends/cryptodev-hmp-cmds.c   |  54 ++++
backends/cryptodev-lkcf.c       |  19 +-
backends/cryptodev-vhost-user.c |  13 +-
backends/cryptodev-vhost.c      |   4 +-
backends/cryptodev.c            | 433 ++++++++++++++++++++++++++++++--
backends/meson.build            |   1 +
hmp-commands-info.hx            |  14 ++
hw/virtio/virtio-crypto.c       |  48 +++-
include/monitor/hmp.h           |   1 +
include/sysemu/cryptodev.h      | 113 ++++++---
qapi/cryptodev.json             |  89 +++++++
qapi/meson.build                |   1 +
qapi/qapi-schema.json           |   1 +
qapi/qom.json                   |   8 +-
qapi/stats.json                 |  10 +-
stats/stats-hmp-cmds.c          |   5 +
stats/stats-qmp-cmds.c          |   2 +
19 files changed, 740 insertions(+), 120 deletions(-)
create mode 100644 backends/cryptodev-hmp-cmds.c
create mode 100644 qapi/cryptodev.json
[PATCH v6 00/12] Refactor cryptodev
Posted by zhenwei pi 1 year, 1 month ago
v6 -> v7:
- Suggested by Daniel, Drop 'QCryptodevBackendSymStat' and 'QCryptodevBackendAsymStat'
  from QAPI, declare a normal C struct directly instead.
- Other minor changes. (QCryptodevBackendSymStat -> CryptodevBackendSymStat)

v5 -> v6:
- Rebase code against the latest version: 627634031092e1514f363fd8659a579398de0f0e
- Markus has already separated HMP commands from monitor/* into subsystems, so
  rework patch '0007-hmp-add-cryptodev-info-command.patch', move cryptodev HMP
  command implements into backends/cryptodev-hmp-cmds.c.
- Suggested by Daniel, use constant strings for query-stats. Changes in
  '0011-cryptodev-Support-query-stats-QMP-command.patch'.

v4 -> v5:
- suggested by MST, use 'PRIu32' instead of '%u' to print a uint32_t value
- correct *QCryptodevBackendClient* and *QCryptodevInfo* in qapi/cryptodev.json

v3 -> v4:
- a small change in '0005-cryptodev-Introduce-query-cryptodev-QMP-command.patch':
  use 'uint32' instead of 'int' to describe CryptodevBackendClient:queue
- fix compling warning(gcc)/error(clang-11) on 32 bit platform in
  '0007-hmp-add-cryptodev-info-command.patch':
  use 'printf("%u", client->queue)' instead of 'printf("%ld", client->queue)'

v2 -> v3:
- rebase code against the lastest commist: fb7e7990342e59cf67d
- document the missing fields in qapi/cryptodev.json
- rework statistics part: use 'query-stats' command instead of
  'query-cryptodev'(cryptodev: Support query-stats QMP command)

v1 -> v2:
- fix coding style and use 'g_strjoin()' instead of 'char services[128]'
   (suggested by Dr. David Alan Gilbert)
- wrapper function 'cryptodev_backend_account' to record statistics, and
   allocate sym_stat/asym_stat in cryptodev base class. see patch:
   'cryptodev: Support statistics'.
- add more arguments into struct CryptoDevBackendOpInfo, then
   cryptodev_backend_crypto_operation() uses *op_info only.
- support cryptodev QoS settings(BPS&OPS), both QEMU command line and QMP
   command works fine.
- add myself as the maintainer for cryptodev.

v1:
- introduce cryptodev.json to describe the attributes of crypto device, then
   drop duplicated type declare, remove some virtio related dependence.
- add statistics: OPS and bandwidth.
- add QMP command: query-cryptodev
- add HMP info command: cryptodev
- misc fix: detect akcipher capability instead of exposing akcipher service
   unconditionally.

Zhenwei Pi (12):
  cryptodev: Introduce cryptodev.json
  cryptodev: Remove 'name' & 'model' fields
  cryptodev: Introduce cryptodev alg type in QAPI
  cryptodev: Introduce server type in QAPI
  cryptodev: Introduce 'query-cryptodev' QMP command
  cryptodev-builtin: Detect akcipher capability
  hmp: add cryptodev info command
  cryptodev: Use CryptoDevBackendOpInfo for operation
  cryptodev: Account statistics
  cryptodev: support QoS
  cryptodev: Support query-stats QMP command
  MAINTAINERS: add myself as the maintainer for cryptodev

 MAINTAINERS                     |   2 +
 backends/cryptodev-builtin.c    |  42 ++--
 backends/cryptodev-hmp-cmds.c   |  54 ++++
 backends/cryptodev-lkcf.c       |  19 +-
 backends/cryptodev-vhost-user.c |  13 +-
 backends/cryptodev-vhost.c      |   4 +-
 backends/cryptodev.c            | 433 ++++++++++++++++++++++++++++++--
 backends/meson.build            |   1 +
 hmp-commands-info.hx            |  14 ++
 hw/virtio/virtio-crypto.c       |  48 +++-
 include/monitor/hmp.h           |   1 +
 include/sysemu/cryptodev.h      | 113 ++++++---
 qapi/cryptodev.json             |  89 +++++++
 qapi/meson.build                |   1 +
 qapi/qapi-schema.json           |   1 +
 qapi/qom.json                   |   8 +-
 qapi/stats.json                 |  10 +-
 stats/stats-hmp-cmds.c          |   5 +
 stats/stats-qmp-cmds.c          |   2 +
 19 files changed, 740 insertions(+), 120 deletions(-)
 create mode 100644 backends/cryptodev-hmp-cmds.c
 create mode 100644 qapi/cryptodev.json

-- 
2.34.1