This patchset fixes some issues of the HiSilicon accelerator drivers. The first patch uses 128bit atomic operations to access mailbox instead of the generic IO interface. The reason is that one QM hardware entity in one accelerator servers QM mailbox MMIO interfaces in related PF and VFs. A mutex cannot lock mailbox processes in different functions. The second patch allocs memory for mailbox openration when the driver is bound to the device. The software directly returns after waiting for the mailbox times out, but the hardware does not cancel the operation. If the temporary memory is used, the hardware may access the memory after it is released. The third patch enables the maximum number of queues supported by the device instead of returning error, when the maximum number of queues is less than the default value. The fourth patch checks the number of queues on the function before algorithm registering to crypto subsystem. If the number of queues does not meet the minimum number of queues for task execution, the function is not registered to crypto to avoid process initialization failure. The fifth patch adds a cond_resched() to prevent soft lockup. The sixth patch fixes aeq type value. The last patch increases function communication waiting time so that the PF can communicate with all VFs. v2: - Re-describe the issues resolved by these patches. - Fix some code styles. Longfang Liu (1): crypto: hisilicon/qm - fix PF queue parameter issue Weili Qian (6): crypto: hisilicon/qm - obtain the mailbox configuration at one time crypto: hisilicon/qm - alloc buffer to set and get xqc crypto: hisilicon/qm - check function qp num before alg register crypto: hisilicon/qm - prevent soft lockup in qm_poll_req_cb()'s loop crypto: hisilicon/qm - fix the type value of aeq crypto: hisilicon/qm - increase function communication waiting time drivers/crypto/hisilicon/debugfs.c | 75 ++- drivers/crypto/hisilicon/hpre/hpre_crypto.c | 25 +- drivers/crypto/hisilicon/hpre/hpre_main.c | 19 +- drivers/crypto/hisilicon/qm.c | 567 ++++++++++---------- drivers/crypto/hisilicon/qm_common.h | 6 +- drivers/crypto/hisilicon/sec2/sec_crypto.c | 31 +- drivers/crypto/hisilicon/sec2/sec_main.c | 29 +- drivers/crypto/hisilicon/zip/zip_crypto.c | 29 +- drivers/crypto/hisilicon/zip/zip_main.c | 19 +- include/linux/hisi_acc_qm.h | 39 +- 10 files changed, 475 insertions(+), 364 deletions(-) mode change 100644 => 100755 drivers/crypto/hisilicon/qm.c -- 2.33.0