[PATCH v3 00/12] Refactor cryptodev

zhenwei pi posted 12 patches 1 year, 3 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230119071419.3585771-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>, Markus Armbruster <armbru@redhat.com>, Eric Blake <eblake@redhat.com>, Michael Roth <michael.roth@amd.com>, Paolo Bonzini <pbonzini@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Eduardo Habkost <eduardo@habkost.net>
There is a newer version of this series
MAINTAINERS                     |   2 +
backends/cryptodev-builtin.c    |  42 ++--
backends/cryptodev-lkcf.c       |  19 +-
backends/cryptodev-vhost-user.c |  13 +-
backends/cryptodev-vhost.c      |   4 +-
backends/cryptodev.c            | 419 ++++++++++++++++++++++++++++++--
hmp-commands-info.hx            |  14 ++
hw/virtio/virtio-crypto.c       |  48 +++-
include/monitor/hmp.h           |   1 +
include/sysemu/cryptodev.h      |  95 ++++----
monitor/hmp-cmds.c              |  41 ++++
monitor/qmp-cmds.c              |   2 +
qapi/cryptodev.json             | 143 +++++++++++
qapi/meson.build                |   1 +
qapi/qapi-schema.json           |   1 +
qapi/qom.json                   |   8 +-
qapi/stats.json                 |  10 +-
17 files changed, 743 insertions(+), 120 deletions(-)
create mode 100644 qapi/cryptodev.json
[PATCH v3 00/12] Refactor cryptodev
Posted by zhenwei pi 1 year, 3 months ago
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-lkcf.c       |  19 +-
 backends/cryptodev-vhost-user.c |  13 +-
 backends/cryptodev-vhost.c      |   4 +-
 backends/cryptodev.c            | 419 ++++++++++++++++++++++++++++++--
 hmp-commands-info.hx            |  14 ++
 hw/virtio/virtio-crypto.c       |  48 +++-
 include/monitor/hmp.h           |   1 +
 include/sysemu/cryptodev.h      |  95 ++++----
 monitor/hmp-cmds.c              |  41 ++++
 monitor/qmp-cmds.c              |   2 +
 qapi/cryptodev.json             | 143 +++++++++++
 qapi/meson.build                |   1 +
 qapi/qapi-schema.json           |   1 +
 qapi/qom.json                   |   8 +-
 qapi/stats.json                 |  10 +-
 17 files changed, 743 insertions(+), 120 deletions(-)
 create mode 100644 qapi/cryptodev.json

-- 
2.34.1
Re: [PATCH v3 00/12] Refactor cryptodev
Posted by Michael S. Tsirkin 1 year, 3 months ago
On Thu, Jan 19, 2023 at 03:14:07PM +0800, zhenwei pi wrote:
> 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)

Fails on 32 bit

../qemu/monitor/hmp-cmds.c: In function 'hmp_info_cryptodev':
../qemu/monitor/hmp-cmds.c:2317:46: error: format '%ld' expects argument of type 'long int', but argument 3 has type 'int64_t' {aka 'long long int'} [-Werror=format=]
 2317 |             monitor_printf(mon, "    queue %ld: type=%s\n", client->queue,
      |                                            ~~^              ~~~~~~~~~~~~~
      |                                              |                    |
      |                                              long int             int64_t {aka long long int}
      |                                            %lld
cc1: all warnings being treated as errors


> 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-lkcf.c       |  19 +-
>  backends/cryptodev-vhost-user.c |  13 +-
>  backends/cryptodev-vhost.c      |   4 +-
>  backends/cryptodev.c            | 419 ++++++++++++++++++++++++++++++--
>  hmp-commands-info.hx            |  14 ++
>  hw/virtio/virtio-crypto.c       |  48 +++-
>  include/monitor/hmp.h           |   1 +
>  include/sysemu/cryptodev.h      |  95 ++++----
>  monitor/hmp-cmds.c              |  41 ++++
>  monitor/qmp-cmds.c              |   2 +
>  qapi/cryptodev.json             | 143 +++++++++++
>  qapi/meson.build                |   1 +
>  qapi/qapi-schema.json           |   1 +
>  qapi/qom.json                   |   8 +-
>  qapi/stats.json                 |  10 +-
>  17 files changed, 743 insertions(+), 120 deletions(-)
>  create mode 100644 qapi/cryptodev.json
> 
> -- 
> 2.34.1