Merge tag 'v6.11-p1' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto update from Herbert Xu: "API: - Test setkey in no-SIMD context - Add skcipher speed test for user-specified algorithm Algorithms: - Add x25519 support on ppc64le - Add VAES and AVX512 / AVX10 optimized AES-GCM on x86 - Remove sm2 algorithm Drivers: - Add Allwinner H616 support to sun8i-ce - Use DMA in stm32 - Add Exynos850 hwrng support to exynos" * tag 'v6.11-p1' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (81 commits) hwrng: core - remove (un)register_miscdev() crypto: lib/mpi - delete unnecessary condition crypto: testmgr - generate power-of-2 lengths more often crypto: mxs-dcp - Ensure payload is zero when using key slot hwrng: Kconfig - Do not enable by default CN10K driver crypto: starfive - Fix nent assignment in rsa dec crypto: starfive - Align rsa input data to 32-bit crypto: qat - fix unintentional re-enabling of error interrupts crypto: qat - extend scope of lock in adf_cfg_add_key_value_param() Documentation: qat: fix auto_reset attribute details crypto: sun8i-ce - add Allwinner H616 support crypto: sun8i-ce - wrap accesses to descriptor address fields dt-bindings: crypto: sun8i-ce: Add compatible for H616 hwrng: core - Fix wrong quality calculation at hw rng registration hwrng: exynos - Enable Exynos850 support hwrng: exynos - Add SMC based TRNG operation hwrng: exynos - Implement bus clock control hwrng: exynos - Use devm_clk_get_enabled() to get the clock hwrng: exynos - Improve coding style dt-bindings: rng: Add Exynos850 support to exynos-trng ...
This commit is contained in:
@@ -837,4 +837,5 @@ complete:
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
MODULE_DESCRIPTION("Intel Keem Bay OCS HCU Crypto Driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
@@ -290,17 +290,19 @@ int adf_cfg_add_key_value_param(struct adf_accel_dev *accel_dev,
|
||||
* 3. if the key exists with the same value, then return without doing
|
||||
* anything (the newly created key_val is freed).
|
||||
*/
|
||||
down_write(&cfg->lock);
|
||||
if (!adf_cfg_key_val_get(accel_dev, section_name, key, temp_val)) {
|
||||
if (strncmp(temp_val, key_val->val, sizeof(temp_val))) {
|
||||
adf_cfg_keyval_remove(key, section);
|
||||
} else {
|
||||
kfree(key_val);
|
||||
return 0;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
down_write(&cfg->lock);
|
||||
adf_cfg_keyval_add(key_val, section);
|
||||
|
||||
out:
|
||||
up_write(&cfg->lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -31,19 +31,22 @@ static const struct file_operations adf_ctl_ops = {
|
||||
.compat_ioctl = compat_ptr_ioctl,
|
||||
};
|
||||
|
||||
static const struct class adf_ctl_class = {
|
||||
.name = DEVICE_NAME,
|
||||
};
|
||||
|
||||
struct adf_ctl_drv_info {
|
||||
unsigned int major;
|
||||
struct cdev drv_cdev;
|
||||
struct class *drv_class;
|
||||
};
|
||||
|
||||
static struct adf_ctl_drv_info adf_ctl_drv;
|
||||
|
||||
static void adf_chr_drv_destroy(void)
|
||||
{
|
||||
device_destroy(adf_ctl_drv.drv_class, MKDEV(adf_ctl_drv.major, 0));
|
||||
device_destroy(&adf_ctl_class, MKDEV(adf_ctl_drv.major, 0));
|
||||
cdev_del(&adf_ctl_drv.drv_cdev);
|
||||
class_destroy(adf_ctl_drv.drv_class);
|
||||
class_unregister(&adf_ctl_class);
|
||||
unregister_chrdev_region(MKDEV(adf_ctl_drv.major, 0), 1);
|
||||
}
|
||||
|
||||
@@ -51,17 +54,17 @@ static int adf_chr_drv_create(void)
|
||||
{
|
||||
dev_t dev_id;
|
||||
struct device *drv_device;
|
||||
int ret;
|
||||
|
||||
if (alloc_chrdev_region(&dev_id, 0, 1, DEVICE_NAME)) {
|
||||
pr_err("QAT: unable to allocate chrdev region\n");
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
adf_ctl_drv.drv_class = class_create(DEVICE_NAME);
|
||||
if (IS_ERR(adf_ctl_drv.drv_class)) {
|
||||
pr_err("QAT: class_create failed for adf_ctl\n");
|
||||
ret = class_register(&adf_ctl_class);
|
||||
if (ret)
|
||||
goto err_chrdev_unreg;
|
||||
}
|
||||
|
||||
adf_ctl_drv.major = MAJOR(dev_id);
|
||||
cdev_init(&adf_ctl_drv.drv_cdev, &adf_ctl_ops);
|
||||
if (cdev_add(&adf_ctl_drv.drv_cdev, dev_id, 1)) {
|
||||
@@ -69,7 +72,7 @@ static int adf_chr_drv_create(void)
|
||||
goto err_class_destr;
|
||||
}
|
||||
|
||||
drv_device = device_create(adf_ctl_drv.drv_class, NULL,
|
||||
drv_device = device_create(&adf_ctl_class, NULL,
|
||||
MKDEV(adf_ctl_drv.major, 0),
|
||||
NULL, DEVICE_NAME);
|
||||
if (IS_ERR(drv_device)) {
|
||||
@@ -80,7 +83,7 @@ static int adf_chr_drv_create(void)
|
||||
err_cdev_del:
|
||||
cdev_del(&adf_ctl_drv.drv_cdev);
|
||||
err_class_destr:
|
||||
class_destroy(adf_ctl_drv.drv_class);
|
||||
class_unregister(&adf_ctl_class);
|
||||
err_chrdev_unreg:
|
||||
unregister_chrdev_region(dev_id, 1);
|
||||
return -EFAULT;
|
||||
|
||||
@@ -59,7 +59,7 @@ static int adf_get_vf_real_id(u32 fake)
|
||||
}
|
||||
|
||||
/**
|
||||
* adf_clean_vf_map() - Cleans VF id mapings
|
||||
* adf_clean_vf_map() - Cleans VF id mappings
|
||||
* @vf: flag indicating whether mappings is cleaned
|
||||
* for vfs only or for vfs and pfs
|
||||
*
|
||||
|
||||
@@ -100,7 +100,9 @@ static u32 adf_gen2_disable_pending_vf2pf_interrupts(void __iomem *pmisc_addr)
|
||||
errmsk3 |= ADF_GEN2_ERR_MSK_VF2PF(ADF_GEN2_VF_MSK);
|
||||
ADF_CSR_WR(pmisc_addr, ADF_GEN2_ERRMSK3, errmsk3);
|
||||
|
||||
errmsk3 &= ADF_GEN2_ERR_MSK_VF2PF(sources | disabled);
|
||||
/* Update only section of errmsk3 related to VF2PF */
|
||||
errmsk3 &= ~ADF_GEN2_ERR_MSK_VF2PF(ADF_GEN2_VF_MSK);
|
||||
errmsk3 |= ADF_GEN2_ERR_MSK_VF2PF(sources | disabled);
|
||||
ADF_CSR_WR(pmisc_addr, ADF_GEN2_ERRMSK3, errmsk3);
|
||||
|
||||
/* Return the sources of the (new) interrupt(s) */
|
||||
|
||||
@@ -1106,6 +1106,7 @@ int adf_rl_init(struct adf_accel_dev *accel_dev)
|
||||
mutex_init(&rl->rl_lock);
|
||||
rl->device_data = &accel_dev->hw_device->rl_data;
|
||||
rl->accel_dev = accel_dev;
|
||||
init_rwsem(&rl->user_input.lock);
|
||||
accel_dev->rate_limiting = rl;
|
||||
|
||||
err_ret:
|
||||
|
||||
@@ -193,8 +193,12 @@ static u32 disable_pending_vf2pf_interrupts(void __iomem *pmisc_addr)
|
||||
ADF_CSR_WR(pmisc_addr, ADF_GEN2_ERRMSK3, errmsk3);
|
||||
ADF_CSR_WR(pmisc_addr, ADF_GEN2_ERRMSK5, errmsk5);
|
||||
|
||||
errmsk3 &= ADF_DH895XCC_ERR_MSK_VF2PF_L(sources | disabled);
|
||||
errmsk5 &= ADF_DH895XCC_ERR_MSK_VF2PF_U(sources | disabled);
|
||||
/* Update only section of errmsk3 and errmsk5 related to VF2PF */
|
||||
errmsk3 &= ~ADF_DH895XCC_ERR_MSK_VF2PF_L(ADF_DH895XCC_VF_MSK);
|
||||
errmsk5 &= ~ADF_DH895XCC_ERR_MSK_VF2PF_U(ADF_DH895XCC_VF_MSK);
|
||||
|
||||
errmsk3 |= ADF_DH895XCC_ERR_MSK_VF2PF_L(sources | disabled);
|
||||
errmsk5 |= ADF_DH895XCC_ERR_MSK_VF2PF_U(sources | disabled);
|
||||
ADF_CSR_WR(pmisc_addr, ADF_GEN2_ERRMSK3, errmsk3);
|
||||
ADF_CSR_WR(pmisc_addr, ADF_GEN2_ERRMSK5, errmsk5);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user