crypto: qat - refactor AE start
Change the API and the behaviour of the qat_hal_start() function. With this change, the function starts under the hood all acceleration engines (AEs) and there is no longer need to call it for each engine. Signed-off-by: Jack Xu <jack.xu@intel.com> Co-developed-by: Wojciech Ziemba <wojciech.ziemba@intel.com> Signed-off-by: Wojciech Ziemba <wojciech.ziemba@intel.com> Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
82b3230658
commit
10fb050cae
|
@ -74,17 +74,12 @@ int adf_ae_start(struct adf_accel_dev *accel_dev)
|
||||||
{
|
{
|
||||||
struct adf_fw_loader_data *loader_data = accel_dev->fw_loader;
|
struct adf_fw_loader_data *loader_data = accel_dev->fw_loader;
|
||||||
struct adf_hw_device_data *hw_data = accel_dev->hw_device;
|
struct adf_hw_device_data *hw_data = accel_dev->hw_device;
|
||||||
u32 ae_ctr, ae, max_aes = GET_MAX_ACCELENGINES(accel_dev);
|
u32 ae_ctr;
|
||||||
|
|
||||||
if (!hw_data->fw_name)
|
if (!hw_data->fw_name)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
for (ae = 0, ae_ctr = 0; ae < max_aes; ae++) {
|
ae_ctr = qat_hal_start(loader_data->fw_loader);
|
||||||
if (hw_data->ae_mask & (1 << ae)) {
|
|
||||||
qat_hal_start(loader_data->fw_loader, ae, 0xFF);
|
|
||||||
ae_ctr++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dev_info(&GET_DEV(accel_dev),
|
dev_info(&GET_DEV(accel_dev),
|
||||||
"qat_dev%d started %d acceleration engines\n",
|
"qat_dev%d started %d acceleration engines\n",
|
||||||
accel_dev->accel_id, ae_ctr);
|
accel_dev->accel_id, ae_ctr);
|
||||||
|
|
|
@ -133,8 +133,7 @@ void adf_vf_isr_resource_free(struct adf_accel_dev *accel_dev);
|
||||||
|
|
||||||
int qat_hal_init(struct adf_accel_dev *accel_dev);
|
int qat_hal_init(struct adf_accel_dev *accel_dev);
|
||||||
void qat_hal_deinit(struct icp_qat_fw_loader_handle *handle);
|
void qat_hal_deinit(struct icp_qat_fw_loader_handle *handle);
|
||||||
void qat_hal_start(struct icp_qat_fw_loader_handle *handle, unsigned char ae,
|
int qat_hal_start(struct icp_qat_fw_loader_handle *handle);
|
||||||
unsigned int ctx_mask);
|
|
||||||
void qat_hal_stop(struct icp_qat_fw_loader_handle *handle, unsigned char ae,
|
void qat_hal_stop(struct icp_qat_fw_loader_handle *handle, unsigned char ae,
|
||||||
unsigned int ctx_mask);
|
unsigned int ctx_mask);
|
||||||
void qat_hal_reset(struct icp_qat_fw_loader_handle *handle);
|
void qat_hal_reset(struct icp_qat_fw_loader_handle *handle);
|
||||||
|
|
|
@ -742,26 +742,32 @@ void qat_hal_deinit(struct icp_qat_fw_loader_handle *handle)
|
||||||
kfree(handle);
|
kfree(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
void qat_hal_start(struct icp_qat_fw_loader_handle *handle, unsigned char ae,
|
int qat_hal_start(struct icp_qat_fw_loader_handle *handle)
|
||||||
unsigned int ctx_mask)
|
|
||||||
{
|
{
|
||||||
|
unsigned long ae_mask = handle->hal_handle->ae_mask;
|
||||||
|
unsigned int fcu_sts;
|
||||||
|
unsigned char ae;
|
||||||
|
u32 ae_ctr = 0;
|
||||||
int retry = 0;
|
int retry = 0;
|
||||||
unsigned int fcu_sts = 0;
|
|
||||||
|
|
||||||
if (handle->fw_auth) {
|
if (handle->fw_auth) {
|
||||||
|
ae_ctr = hweight32(ae_mask);
|
||||||
SET_CAP_CSR(handle, FCU_CONTROL, FCU_CTRL_CMD_START);
|
SET_CAP_CSR(handle, FCU_CONTROL, FCU_CTRL_CMD_START);
|
||||||
do {
|
do {
|
||||||
msleep(FW_AUTH_WAIT_PERIOD);
|
msleep(FW_AUTH_WAIT_PERIOD);
|
||||||
fcu_sts = GET_CAP_CSR(handle, FCU_STATUS);
|
fcu_sts = GET_CAP_CSR(handle, FCU_STATUS);
|
||||||
if (((fcu_sts >> FCU_STS_DONE_POS) & 0x1))
|
if (((fcu_sts >> FCU_STS_DONE_POS) & 0x1))
|
||||||
return;
|
return ae_ctr;
|
||||||
} while (retry++ < FW_AUTH_MAX_RETRY);
|
} while (retry++ < FW_AUTH_MAX_RETRY);
|
||||||
pr_err("QAT: start error (AE 0x%x FCU_STS = 0x%x)\n", ae,
|
pr_err("QAT: start error (FCU_STS = 0x%x)\n", fcu_sts);
|
||||||
fcu_sts);
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
qat_hal_put_wakeup_event(handle, ae, (~ctx_mask) &
|
for_each_set_bit(ae, &ae_mask, handle->hal_handle->ae_max_num) {
|
||||||
ICP_QAT_UCLO_AE_ALL_CTX, 0x10000);
|
qat_hal_put_wakeup_event(handle, ae, 0, 0x10000);
|
||||||
qat_hal_enable_ctx(handle, ae, ctx_mask);
|
qat_hal_enable_ctx(handle, ae, ICP_QAT_UCLO_AE_ALL_CTX);
|
||||||
|
ae_ctr++;
|
||||||
|
}
|
||||||
|
return ae_ctr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue