On Mon, Nov 28, 2022 at 12:21:11PM +0000, Giovanni Cabiddu wrote: > This set enables the offload of the compression deflate algorithm to QAT > accelerators through the acomp API. > > The first part of the set (patches 1 to 8) reworks and refactors logic > that is specific to the crypto service in order to be used by the > compression service. > In particular, the first 6 patches rework the buffer list logic, which > is used to map, unmap and convert scatterlists into the format that the > QAT firmware can understand. These relocate the bufferlist logic to a > separate file, change the interfaces so that the logic is service > agnostic (not tied to compression or crypto) and extend the interface to > allow an additional pre-allocated buffer for each destination scatter list > which will be used to avoid premature overflows reported by the compression > hardware. > Patch 7 relocates the function qat_algs_alloc_flags() from a crypto > specific header to qat_bl.h. > Patch 8 moves and renames the configuration function for GEN2, > qat_crypto_dev_config(), to a new file, adf_gen2_config.h, which > contains the configuration logic for both crypto and compression > instances for QAT GEN2 devices. > > The last 2 patches in the set introduce all the infrastructure required > to enable the compression service in the QAT driver and expose it through > the acomp APIs. > In particular, patch 9 introduces the logic related to the creation > and handling of compression instances and their configuration. In addition, > it adds the back-end for qat_deflate to plug into acomp, including the logic > to build descriptors for the newly added GEN2 compression firmware APIs. > This was all kept in a single patch to avoid introducing unused logic in > the QAT driver in previous patches. > > Patch 10, extends the compression logic to support to QAT GEN4 devices. > > Patch 11 extends the acomp api by defining the max size for the destination > buffer when a request is submitted with NULL destination buffer. > This value is then used in the followin patch. > > Patch 12 implements the resubmission logic for decompression requests > that is triggered if the destination buffer, allocated by the driver, > is not sufficiently big to store the output from the operation. > > Changes from v1: > - Implemented resubmission logic for decompression triggered when > the output buffer allocated by the driver is not sufficiently large to > store the result from the operation > - Renamed buffer list functions that are moved to the qat_bl module > > Changes from v2: > - Reworked decompression re-submission logic. For decompression operations > submitted specifying NULL as destination buffer, resubmit once with a > destination buffer of size 128KB instead of retying multiple times > doubling every time the size of the destination buffer. > - Added define in acomp api to specify the destination maximum size. > > Giovanni Cabiddu (12): > crypto: qat - relocate bufferlist logic > crypto: qat - rename bufferlist functions > crypto: qat - change bufferlist logic interface > crypto: qat - generalize crypto request buffers > crypto: qat - extend buffer list interface > crypto: qat - relocate backlog related structures > crypto: qat - relocate qat_algs_alloc_flags() > crypto: qat - rename and relocate GEN2 config function > crypto: qat - expose deflate through acomp api for QAT GEN2 > crypto: qat - enable deflate for QAT GEN4 > crypto: acomp - define max size for destination > crypto: qat - add resubmit logic for decompression > > .../crypto/qat/qat_4xxx/adf_4xxx_hw_data.c | 4 +- > .../crypto/qat/qat_4xxx/adf_4xxx_hw_data.h | 2 +- > drivers/crypto/qat/qat_4xxx/adf_drv.c | 145 ++++++- > .../crypto/qat/qat_c3xxx/adf_c3xxx_hw_data.c | 4 + > drivers/crypto/qat/qat_c3xxx/adf_drv.c | 2 +- > .../qat/qat_c3xxxvf/adf_c3xxxvf_hw_data.c | 4 + > .../crypto/qat/qat_c62x/adf_c62x_hw_data.c | 4 + > drivers/crypto/qat/qat_c62x/adf_drv.c | 2 +- > .../qat/qat_c62xvf/adf_c62xvf_hw_data.c | 4 + > drivers/crypto/qat/qat_common/Makefile | 8 +- > .../crypto/qat/qat_common/adf_accel_devices.h | 14 + > .../crypto/qat/qat_common/adf_cfg_strings.h | 1 + > .../crypto/qat/qat_common/adf_common_drv.h | 9 +- > drivers/crypto/qat/qat_common/adf_ctl_drv.c | 6 + > .../crypto/qat/qat_common/adf_gen2_config.c | 206 +++++++++ > .../crypto/qat/qat_common/adf_gen2_config.h | 10 + > drivers/crypto/qat/qat_common/adf_gen2_dc.c | 70 +++ > drivers/crypto/qat/qat_common/adf_gen2_dc.h | 10 + > drivers/crypto/qat/qat_common/adf_gen4_dc.c | 83 ++++ > drivers/crypto/qat/qat_common/adf_gen4_dc.h | 10 + > drivers/crypto/qat/qat_common/adf_init.c | 11 + > drivers/crypto/qat/qat_common/adf_sriov.c | 4 + > drivers/crypto/qat/qat_common/icp_qat_fw.h | 24 ++ > .../crypto/qat/qat_common/icp_qat_fw_comp.h | 404 ++++++++++++++++++ > drivers/crypto/qat/qat_common/icp_qat_hw.h | 66 +++ > .../qat/qat_common/icp_qat_hw_20_comp.h | 164 +++++++ > .../qat/qat_common/icp_qat_hw_20_comp_defs.h | 300 +++++++++++++ > drivers/crypto/qat/qat_common/qat_algs.c | 208 +-------- > drivers/crypto/qat/qat_common/qat_algs_send.h | 16 +- > drivers/crypto/qat/qat_common/qat_bl.c | 383 +++++++++++++++++ > drivers/crypto/qat/qat_common/qat_bl.h | 67 +++ > drivers/crypto/qat/qat_common/qat_comp_algs.c | 344 +++++++++++++++ > drivers/crypto/qat/qat_common/qat_comp_req.h | 123 ++++++ > .../crypto/qat/qat_common/qat_compression.c | 297 +++++++++++++ > .../crypto/qat/qat_common/qat_compression.h | 37 ++ > drivers/crypto/qat/qat_common/qat_crypto.c | 120 +----- > drivers/crypto/qat/qat_common/qat_crypto.h | 55 +-- > .../qat/qat_dh895xcc/adf_dh895xcc_hw_data.c | 4 + > drivers/crypto/qat/qat_dh895xcc/adf_drv.c | 2 +- > .../qat_dh895xccvf/adf_dh895xccvf_hw_data.c | 4 + > include/crypto/acompress.h | 1 + > 41 files changed, 2848 insertions(+), 384 deletions(-) > create mode 100644 drivers/crypto/qat/qat_common/adf_gen2_config.c > create mode 100644 drivers/crypto/qat/qat_common/adf_gen2_config.h > create mode 100644 drivers/crypto/qat/qat_common/adf_gen2_dc.c > create mode 100644 drivers/crypto/qat/qat_common/adf_gen2_dc.h > create mode 100644 drivers/crypto/qat/qat_common/adf_gen4_dc.c > create mode 100644 drivers/crypto/qat/qat_common/adf_gen4_dc.h > create mode 100644 drivers/crypto/qat/qat_common/icp_qat_fw_comp.h > create mode 100644 drivers/crypto/qat/qat_common/icp_qat_hw_20_comp.h > create mode 100644 drivers/crypto/qat/qat_common/icp_qat_hw_20_comp_defs.h > create mode 100644 drivers/crypto/qat/qat_common/qat_bl.c > create mode 100644 drivers/crypto/qat/qat_common/qat_bl.h > create mode 100644 drivers/crypto/qat/qat_common/qat_comp_algs.c > create mode 100644 drivers/crypto/qat/qat_common/qat_comp_req.h > create mode 100644 drivers/crypto/qat/qat_common/qat_compression.c > create mode 100644 drivers/crypto/qat/qat_common/qat_compression.h > > -- > 2.38.1 All applied. Thanks. -- Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt