This set is an initial rework of the QAT driver in preparation for the inclusion of the qat_4xxx driver (QAT GEN4). Summary of changes: * IV update logic moved to software to remove allocation of the IV buffer in the data-path and allow for devices that are not capable of updating it when performing AES-CBC or AES-CTR. * Added logic to detect the presence of engines and accelerators via soft-straps and fuse registers. * Added infrastructure to support devices with an arbitrary number of rings per bank. * Introduced adf_gen2_hw_data.[c|h] that contain logic that is common between QAT GEN2 devices (c62x, c3xxx and dh895xcc). * Abstracted logic that configures iov threads. * Abstracted access to transport CSRs. * Abstracted, refactored and updated admin interface logic. * Abstracted and refactored arbiter logic. * Changed sequence on how arbitration is enabled on rings. * Added support for device capability detection. * Replaced hardcoded masks. * Changed logic in adf_sriov.c to allow for drivers that do not implement some of the functions of that module. * Refactored logic related to device configuration and instance creation. * Changed logic to allow for instances in different banks. * Extended accelerator mask. Ahsan Atta (1): crypto: qat - num_rings_per_bank is device dependent Giovanni Cabiddu (28): crypto: qat - mask device capabilities with soft straps crypto: qat - fix configuration of iov threads crypto: qat - split transport CSR access logic crypto: qat - relocate GEN2 CSR access code crypto: qat - abstract admin interface crypto: qat - add packed to init admin structures crypto: qat - rename ME in AE crypto: qat - change admin sequence crypto: qat - use admin mask to send fw constants crypto: qat - update constants table crypto: qat - remove writes into WQCFG crypto: qat - remove unused macros in arbiter module crypto: qat - abstract arbiter access crypto: qat - register crypto instances based on capability crypto: qat - enable ring after pair is programmed crypto: qat - abstract build ring base crypto: qat - replace constant masks with GENMASK crypto: qat - use BIT_ULL() - 1 pattern for masks crypto: qat - abstract writes to arbiter enable crypto: qat - remove hardcoded bank irq clear flag mask crypto: qat - call functions in adf_sriov if available crypto: qat - remove unnecessary void* casts crypto: qat - change return value in adf_cfg_add_key_value_param() crypto: qat - change return value in adf_cfg_key_val_get() crypto: qat - refactor qat_crypto_create_instances() crypto: qat - refactor qat_crypto_dev_config() crypto: qat - allow for instances in different banks crypto: qat - extend ae_mask Marco Chiappero (2): crypto: qat - update IV in software crypto: qat - add support for capability detection .../crypto/qat/qat_c3xxx/adf_c3xxx_hw_data.c | 49 ++++- .../crypto/qat/qat_c3xxx/adf_c3xxx_hw_data.h | 5 + drivers/crypto/qat/qat_c3xxx/adf_drv.c | 11 +- .../qat/qat_c3xxxvf/adf_c3xxxvf_hw_data.c | 7 +- drivers/crypto/qat/qat_c3xxxvf/adf_drv.c | 4 +- .../crypto/qat/qat_c62x/adf_c62x_hw_data.c | 49 ++++- .../crypto/qat/qat_c62x/adf_c62x_hw_data.h | 5 + drivers/crypto/qat/qat_c62x/adf_drv.c | 11 +- .../qat/qat_c62xvf/adf_c62xvf_hw_data.c | 7 +- drivers/crypto/qat/qat_c62xvf/adf_drv.c | 4 +- drivers/crypto/qat/qat_common/Makefile | 1 + .../crypto/qat/qat_common/adf_accel_devices.h | 58 +++++- drivers/crypto/qat/qat_common/adf_admin.c | 77 ++++---- drivers/crypto/qat/qat_common/adf_cfg.c | 4 +- .../crypto/qat/qat_common/adf_cfg_strings.h | 3 +- .../crypto/qat/qat_common/adf_gen2_hw_data.c | 181 ++++++++++++++++++ .../crypto/qat/qat_common/adf_gen2_hw_data.h | 123 ++++++++++++ .../crypto/qat/qat_common/adf_hw_arbiter.c | 94 ++++----- drivers/crypto/qat/qat_common/adf_isr.c | 4 +- drivers/crypto/qat/qat_common/adf_sriov.c | 74 ++----- drivers/crypto/qat/qat_common/adf_transport.c | 130 +++++++++---- .../qat_common/adf_transport_access_macros.h | 67 ------- .../qat/qat_common/adf_transport_debug.c | 32 ++-- .../qat/qat_common/adf_transport_internal.h | 2 +- drivers/crypto/qat/qat_common/adf_vf_isr.c | 5 +- .../qat/qat_common/icp_qat_fw_init_admin.h | 6 +- drivers/crypto/qat/qat_common/icp_qat_hw.h | 23 +++ drivers/crypto/qat/qat_common/qat_algs.c | 136 +++++++------ drivers/crypto/qat/qat_common/qat_crypto.c | 162 ++++++++++------ drivers/crypto/qat/qat_common/qat_crypto.h | 26 ++- drivers/crypto/qat/qat_common/qat_hal.c | 27 +-- .../qat/qat_dh895xcc/adf_dh895xcc_hw_data.c | 60 +++++- .../qat/qat_dh895xcc/adf_dh895xcc_hw_data.h | 5 + drivers/crypto/qat/qat_dh895xcc/adf_drv.c | 9 +- .../qat_dh895xccvf/adf_dh895xccvf_hw_data.c | 7 +- drivers/crypto/qat/qat_dh895xccvf/adf_drv.c | 4 +- 36 files changed, 1024 insertions(+), 448 deletions(-) create mode 100644 drivers/crypto/qat/qat_common/adf_gen2_hw_data.c create mode 100644 drivers/crypto/qat/qat_common/adf_gen2_hw_data.h -- 2.26.2