mbox series

[v6,0/9] crypto: caam - backlogging support

Message ID 1581530124-9135-1-git-send-email-iuliana.prodan@nxp.com (mailing list archive)
Headers show
Series crypto: caam - backlogging support | expand

Message

Iuliana Prodan Feb. 12, 2020, 5:55 p.m. UTC
Integrate crypto_engine framework into CAAM, to make use of
the engine queue.
Added support for SKCIPHER, HASH, RSA and AEAD algorithms.
This is intended to be used for CAAM backlogging support.
The requests, with backlog flag (e.g. from dm-crypt) will be
listed into crypto-engine queue and processed by CAAM when free.

While here, I've also made some refactorization.
Patches #1 - #4 include some refactorizations on caamalg, caamhash
and caampkc.
Patch #5 changes the return code of caam_jr_enqueue function
to -EINPROGRESS, in case of success, -ENOSPC in case the CAAM is
busy, -EIO if it cannot map the caller's descriptor.
Patches #6 - #9 integrate crypto_engine into CAAM, for
SKCIPHER/AEAD/RSA/HASH algorithms.

---
Changes since V5:
	- remove unnecessary initializations;
	- add local variable for share descriptor offset for skcipher and hash;
	- handle error case for ahash_update_first and ahash_update_no_ctx.

Changes since V4:
	- reorganize {skcipher,aead,rsa}_edesc struct for a proper
	  cacheline sharing.

Changes since V3:
	- update return on ahash_enqueue_req function from patch #9.

Changes since V2:
	- remove patch ("crypto: caam - refactor caam_jr_enqueue"),
	  that added some structures not needed anymore;
	- use _done_ callback function directly for skcipher and aead;
	- handle resource leak in case of transfer request to crypto-engine;
	- update commit messages.

Changes since V1:
	- remove helper function - akcipher_request_cast;
	- remove any references to crypto_async_request,
	  use specific request type;
	- remove bypass crypto-engine queue, in case is empty;
	- update some commit messages;
	- remove unrelated changes, like whitespaces;
	- squash some changes from patch #9 to patch #6;
	- added Reviewed-by.

Iuliana Prodan (9):
  crypto: caam - refactor skcipher/aead/gcm/chachapoly {en,de}crypt
    functions
  crypto: caam - refactor ahash_done callbacks
  crypto: caam - refactor ahash_edesc_alloc
  crypto: caam - refactor RSA private key _done callbacks
  crypto: caam - change return code in caam_jr_enqueue function
  crypto: caam - support crypto_engine framework for SKCIPHER algorithms
  crypto: caam - add crypto_engine support for AEAD algorithms
  crypto: caam - add crypto_engine support for RSA algorithms
  crypto: caam - add crypto_engine support for HASH algorithms

 drivers/crypto/caam/Kconfig    |   1 +
 drivers/crypto/caam/caamalg.c  | 413 ++++++++++++++++++-----------------------
 drivers/crypto/caam/caamhash.c | 338 +++++++++++++++++----------------
 drivers/crypto/caam/caampkc.c  | 185 +++++++++++-------
 drivers/crypto/caam/caampkc.h  |  10 +
 drivers/crypto/caam/caamrng.c  |   4 +-
 drivers/crypto/caam/intern.h   |   2 +
 drivers/crypto/caam/jr.c       |  36 +++-
 drivers/crypto/caam/key_gen.c  |   2 +-
 9 files changed, 512 insertions(+), 479 deletions(-)

Comments

Herbert Xu Feb. 22, 2020, 1:42 a.m. UTC | #1
On Wed, Feb 12, 2020 at 07:55:15PM +0200, Iuliana Prodan wrote:
> Integrate crypto_engine framework into CAAM, to make use of
> the engine queue.
> Added support for SKCIPHER, HASH, RSA and AEAD algorithms.
> This is intended to be used for CAAM backlogging support.
> The requests, with backlog flag (e.g. from dm-crypt) will be
> listed into crypto-engine queue and processed by CAAM when free.
> 
> While here, I've also made some refactorization.
> Patches #1 - #4 include some refactorizations on caamalg, caamhash
> and caampkc.
> Patch #5 changes the return code of caam_jr_enqueue function
> to -EINPROGRESS, in case of success, -ENOSPC in case the CAAM is
> busy, -EIO if it cannot map the caller's descriptor.
> Patches #6 - #9 integrate crypto_engine into CAAM, for
> SKCIPHER/AEAD/RSA/HASH algorithms.
> 
> ---
> Changes since V5:
> 	- remove unnecessary initializations;
> 	- add local variable for share descriptor offset for skcipher and hash;
> 	- handle error case for ahash_update_first and ahash_update_no_ctx.
> 
> Changes since V4:
> 	- reorganize {skcipher,aead,rsa}_edesc struct for a proper
> 	  cacheline sharing.
> 
> Changes since V3:
> 	- update return on ahash_enqueue_req function from patch #9.
> 
> Changes since V2:
> 	- remove patch ("crypto: caam - refactor caam_jr_enqueue"),
> 	  that added some structures not needed anymore;
> 	- use _done_ callback function directly for skcipher and aead;
> 	- handle resource leak in case of transfer request to crypto-engine;
> 	- update commit messages.
> 
> Changes since V1:
> 	- remove helper function - akcipher_request_cast;
> 	- remove any references to crypto_async_request,
> 	  use specific request type;
> 	- remove bypass crypto-engine queue, in case is empty;
> 	- update some commit messages;
> 	- remove unrelated changes, like whitespaces;
> 	- squash some changes from patch #9 to patch #6;
> 	- added Reviewed-by.
> 
> Iuliana Prodan (9):
>   crypto: caam - refactor skcipher/aead/gcm/chachapoly {en,de}crypt
>     functions
>   crypto: caam - refactor ahash_done callbacks
>   crypto: caam - refactor ahash_edesc_alloc
>   crypto: caam - refactor RSA private key _done callbacks
>   crypto: caam - change return code in caam_jr_enqueue function
>   crypto: caam - support crypto_engine framework for SKCIPHER algorithms
>   crypto: caam - add crypto_engine support for AEAD algorithms
>   crypto: caam - add crypto_engine support for RSA algorithms
>   crypto: caam - add crypto_engine support for HASH algorithms
> 
>  drivers/crypto/caam/Kconfig    |   1 +
>  drivers/crypto/caam/caamalg.c  | 413 ++++++++++++++++++-----------------------
>  drivers/crypto/caam/caamhash.c | 338 +++++++++++++++++----------------
>  drivers/crypto/caam/caampkc.c  | 185 +++++++++++-------
>  drivers/crypto/caam/caampkc.h  |  10 +
>  drivers/crypto/caam/caamrng.c  |   4 +-
>  drivers/crypto/caam/intern.h   |   2 +
>  drivers/crypto/caam/jr.c       |  36 +++-
>  drivers/crypto/caam/key_gen.c  |   2 +-
>  9 files changed, 512 insertions(+), 479 deletions(-)

All applied.  Thanks.