Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto fixes from Herbert Xu: "This fixes the following issues: API: - A large number of bug fixes for the af_alg interface, credit goes to Dmitry Vyukov for discovering and reporting these issues. Algorithms: - sw842 needs to select crc32. - The soft dependency on crc32c is now in the correct spot. Drivers: - The atmel AES driver needs HAS_DMA. - The atmel AES driver was a missing break statement, fortunately it's only a debug function. - A number of bug fixes for the Intel qat driver" * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (24 commits) crypto: algif_skcipher - sendmsg SG marking is off by one crypto: crc32c - Fix crc32c soft dependency crypto: algif_skcipher - Load TX SG list after waiting crypto: atmel-aes - Add missing break to atmel_aes_reg_name crypto: algif_skcipher - Fix race condition in skcipher_check_key crypto: algif_hash - Fix race condition in hash_check_key crypto: CRYPTO_DEV_ATMEL_AES should depend on HAS_DMA lib: sw842: select crc32 crypto: af_alg - Forbid bind(2) when nokey child sockets are present crypto: algif_skcipher - Remove custom release parent function crypto: algif_hash - Remove custom release parent function crypto: af_alg - Allow af_af_alg_release_parent to be called on nokey path crypto: qat - update init_esram for C3xxx dev type crypto: qat - fix timeout issues crypto: qat - remove to call get_sram_bar_id for qat_c3xxx crypto: algif_skcipher - Add key check exception for cipher_null crypto: skcipher - Add crypto_skcipher_has_setkey crypto: algif_hash - Require setkey before accept(2) crypto: hash - Add crypto_ahash_has_setkey crypto: algif_skcipher - Add nokey compatibility path ...
This commit is contained in:
@@ -381,6 +381,7 @@ config CRYPTO_DEV_BFIN_CRC
|
||||
|
||||
config CRYPTO_DEV_ATMEL_AES
|
||||
tristate "Support for Atmel AES hw accelerator"
|
||||
depends on HAS_DMA
|
||||
depends on AT_XDMAC || AT_HDMAC || COMPILE_TEST
|
||||
select CRYPTO_AES
|
||||
select CRYPTO_AEAD
|
||||
|
@@ -280,6 +280,7 @@ static const char *atmel_aes_reg_name(u32 offset, char *tmp, size_t sz)
|
||||
case AES_GCMHR(2):
|
||||
case AES_GCMHR(3):
|
||||
snprintf(tmp, sz, "GCMHR[%u]", (offset - AES_GCMHR(0)) >> 2);
|
||||
break;
|
||||
|
||||
default:
|
||||
snprintf(tmp, sz, "0x%02x", offset);
|
||||
|
@@ -389,7 +389,7 @@ static int qat_hal_check_ae_alive(struct icp_qat_fw_loader_handle *handle)
|
||||
{
|
||||
unsigned int base_cnt, cur_cnt;
|
||||
unsigned char ae;
|
||||
unsigned int times = MAX_RETRY_TIMES;
|
||||
int times = MAX_RETRY_TIMES;
|
||||
|
||||
for (ae = 0; ae < handle->hal_handle->ae_max_num; ae++) {
|
||||
qat_hal_rd_ae_csr(handle, ae, PROFILE_COUNT,
|
||||
@@ -402,7 +402,7 @@ static int qat_hal_check_ae_alive(struct icp_qat_fw_loader_handle *handle)
|
||||
cur_cnt &= 0xffff;
|
||||
} while (times-- && (cur_cnt == base_cnt));
|
||||
|
||||
if (!times) {
|
||||
if (times < 0) {
|
||||
pr_err("QAT: AE%d is inactive!!\n", ae);
|
||||
return -EFAULT;
|
||||
}
|
||||
@@ -453,7 +453,11 @@ static int qat_hal_init_esram(struct icp_qat_fw_loader_handle *handle)
|
||||
void __iomem *csr_addr =
|
||||
(void __iomem *)((uintptr_t)handle->hal_ep_csr_addr_v +
|
||||
ESRAM_AUTO_INIT_CSR_OFFSET);
|
||||
unsigned int csr_val, times = 30;
|
||||
unsigned int csr_val;
|
||||
int times = 30;
|
||||
|
||||
if (handle->pci_dev->device == ADF_C3XXX_PCI_DEVICE_ID)
|
||||
return 0;
|
||||
|
||||
csr_val = ADF_CSR_RD(csr_addr, 0);
|
||||
if ((csr_val & ESRAM_AUTO_TINIT) && (csr_val & ESRAM_AUTO_TINIT_DONE))
|
||||
@@ -467,7 +471,7 @@ static int qat_hal_init_esram(struct icp_qat_fw_loader_handle *handle)
|
||||
qat_hal_wait_cycles(handle, 0, ESRAM_AUTO_INIT_USED_CYCLES, 0);
|
||||
csr_val = ADF_CSR_RD(csr_addr, 0);
|
||||
} while (!(csr_val & ESRAM_AUTO_TINIT_DONE) && times--);
|
||||
if ((!times)) {
|
||||
if ((times < 0)) {
|
||||
pr_err("QAT: Fail to init eSram!\n");
|
||||
return -EFAULT;
|
||||
}
|
||||
@@ -658,7 +662,7 @@ static int qat_hal_clear_gpr(struct icp_qat_fw_loader_handle *handle)
|
||||
ret = qat_hal_wait_cycles(handle, ae, 20, 1);
|
||||
} while (ret && times--);
|
||||
|
||||
if (!times) {
|
||||
if (times < 0) {
|
||||
pr_err("QAT: clear GPR of AE %d failed", ae);
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -693,14 +697,12 @@ int qat_hal_init(struct adf_accel_dev *accel_dev)
|
||||
struct adf_hw_device_data *hw_data = accel_dev->hw_device;
|
||||
struct adf_bar *misc_bar =
|
||||
&pci_info->pci_bars[hw_data->get_misc_bar_id(hw_data)];
|
||||
struct adf_bar *sram_bar =
|
||||
&pci_info->pci_bars[hw_data->get_sram_bar_id(hw_data)];
|
||||
struct adf_bar *sram_bar;
|
||||
|
||||
handle = kzalloc(sizeof(*handle), GFP_KERNEL);
|
||||
if (!handle)
|
||||
return -ENOMEM;
|
||||
|
||||
handle->hal_sram_addr_v = sram_bar->virt_addr;
|
||||
handle->hal_cap_g_ctl_csr_addr_v =
|
||||
(void __iomem *)((uintptr_t)misc_bar->virt_addr +
|
||||
ICP_QAT_CAP_OFFSET);
|
||||
@@ -714,6 +716,11 @@ int qat_hal_init(struct adf_accel_dev *accel_dev)
|
||||
(void __iomem *)((uintptr_t)handle->hal_cap_ae_xfer_csr_addr_v +
|
||||
LOCAL_TO_XFER_REG_OFFSET);
|
||||
handle->pci_dev = pci_info->pci_dev;
|
||||
if (handle->pci_dev->device != ADF_C3XXX_PCI_DEVICE_ID) {
|
||||
sram_bar =
|
||||
&pci_info->pci_bars[hw_data->get_sram_bar_id(hw_data)];
|
||||
handle->hal_sram_addr_v = sram_bar->virt_addr;
|
||||
}
|
||||
handle->fw_auth = (handle->pci_dev->device ==
|
||||
ADF_DH895XCC_PCI_DEVICE_ID) ? false : true;
|
||||
handle->hal_handle = kzalloc(sizeof(*handle->hal_handle), GFP_KERNEL);
|
||||
|
Reference in New Issue
Block a user