All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/4] crypto: qat - fix dm-crypt related issues
@ 2022-03-31 15:36 Giovanni Cabiddu
  2022-03-31 15:36 ` [PATCH v2 1/4] crypto: qat - use pre-allocated buffers in datapath Giovanni Cabiddu
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Giovanni Cabiddu @ 2022-03-31 15:36 UTC (permalink / raw)
  To: herbert; +Cc: linux-crypto, qat-linux, marco.chiappero, Giovanni Cabiddu

This set fixes the issues related with the dm-crypt + QAT driver
use-case.

The first patch fixes a potential dead-lock that might occur when using
dm-crypt + QAT in out of memory conditions. The datapaths of the aead
and skcipher implementations have been changed to use pre-allocated
buffers that are part of the request contexts.
The also removes the CRYPTO_ALG_ALLOCATES_MEMORY flag from the aead and
skcipher implementations.

The second patch refactors the submission logic in preparation for the
introduction of a backlog queue to handle crypto requests with the
CRYPTO_TFM_REQ_MAY_BACKLOG flag set.

The third patch addresses a stall in the dm-crypt + QAT usecase by
adding support for the CRYPTO_TFM_REQ_MAY_BACKLOG flag. If the HW queue
is full, the driver enqueues the request in a list and resubmit it at
a later time, avoiding losing it.

The last, re-enables the crypto instances in the QAT driver which were
disabled due to the issues above.

Changes from v1:
 - Patch #3: removed worqueues. Requests in the backlog queue are now
   resubmitted in the context of the callback of a previously submitted
   request. This reduces the CPU utilization as the resubmit backlog
   function always finds a free slot in the HW queues when resubmits a
   job.

Giovanni Cabiddu (4):
  crypto: qat - use pre-allocated buffers in datapath
  crypto: qat - refactor submission logic
  crypto: qat - add backlog mechanism
  crypto: qat - re-enable registration of algorithms

 drivers/crypto/qat/qat_4xxx/adf_drv.c         |   7 -
 drivers/crypto/qat/qat_common/Makefile        |   1 +
 drivers/crypto/qat/qat_common/adf_transport.c |  11 ++
 drivers/crypto/qat/qat_common/adf_transport.h |   1 +
 .../qat/qat_common/adf_transport_internal.h   |   1 +
 drivers/crypto/qat/qat_common/qat_algs.c      | 150 ++++++++++--------
 drivers/crypto/qat/qat_common/qat_algs_send.c |  84 ++++++++++
 drivers/crypto/qat/qat_common/qat_algs_send.h |  11 ++
 drivers/crypto/qat/qat_common/qat_asym_algs.c |  56 ++++---
 drivers/crypto/qat/qat_common/qat_crypto.c    |  10 +-
 drivers/crypto/qat/qat_common/qat_crypto.h    |  39 +++++
 11 files changed, 269 insertions(+), 102 deletions(-)
 create mode 100644 drivers/crypto/qat/qat_common/qat_algs_send.c
 create mode 100644 drivers/crypto/qat/qat_common/qat_algs_send.h

-- 
2.35.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-04-07 19:26 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-31 15:36 [PATCH v2 0/4] crypto: qat - fix dm-crypt related issues Giovanni Cabiddu
2022-03-31 15:36 ` [PATCH v2 1/4] crypto: qat - use pre-allocated buffers in datapath Giovanni Cabiddu
2022-03-31 15:36 ` [PATCH v2 2/4] crypto: qat - refactor submission logic Giovanni Cabiddu
2022-03-31 15:36 ` [PATCH v2 3/4] crypto: qat - add backlog mechanism Giovanni Cabiddu
2022-03-31 15:36 ` [PATCH v2 4/4] crypto: qat - re-enable registration of algorithms Giovanni Cabiddu
2022-04-07 19:26 ` [PATCH v2 0/4] crypto: qat - fix dm-crypt related issues Giovanni Cabiddu

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.