aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/patches-5.4/804-crypto-0006-crypto-caam-use-devres-to-de-initialize-the-RNG.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/layerscape/patches-5.4/804-crypto-0006-crypto-caam-use-devres-to-de-initialize-the-RNG.patch')
-rw-r--r--target/linux/layerscape/patches-5.4/804-crypto-0006-crypto-caam-use-devres-to-de-initialize-the-RNG.patch179
1 files changed, 0 insertions, 179 deletions
diff --git a/target/linux/layerscape/patches-5.4/804-crypto-0006-crypto-caam-use-devres-to-de-initialize-the-RNG.patch b/target/linux/layerscape/patches-5.4/804-crypto-0006-crypto-caam-use-devres-to-de-initialize-the-RNG.patch
deleted file mode 100644
index 6e3cd24ac0..0000000000
--- a/target/linux/layerscape/patches-5.4/804-crypto-0006-crypto-caam-use-devres-to-de-initialize-the-RNG.patch
+++ /dev/null
@@ -1,179 +0,0 @@
-From 4719469bf1e6d5bac8bb0426be4dd6a124471b69 Mon Sep 17 00:00:00 2001
-From: Andrey Smirnov <andrew.smirnov@gmail.com>
-Date: Tue, 22 Oct 2019 08:30:10 -0700
-Subject: [PATCH] crypto: caam - use devres to de-initialize the RNG
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Use devres to de-initialize the RNG and drop explicit de-initialization
-code in caam_remove().
-
-Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
-Cc: Chris Healy <cphealy@gmail.com>
-Cc: Lucas Stach <l.stach@pengutronix.de>
-Cc: Horia Geantă <horia.geanta@nxp.com>
-Cc: Herbert Xu <herbert@gondor.apana.org.au>
-Cc: Iuliana Prodan <iuliana.prodan@nxp.com>
-Cc: linux-crypto@vger.kernel.org
-Cc: linux-kernel@vger.kernel.org
-Reviewed-by: Horia Geantă <horia.geanta@nxp.com>
-Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-(cherry picked from commit e57acaf0dfe0c8f63411d43cf7c689e43f6810c0)
----
- drivers/crypto/caam/ctrl.c | 130 ++++++++++++++++++++++++---------------------
- 1 file changed, 70 insertions(+), 60 deletions(-)
-
---- a/drivers/crypto/caam/ctrl.c
-+++ b/drivers/crypto/caam/ctrl.c
-@@ -176,6 +176,73 @@ static inline int run_descriptor_deco0(s
- }
-
- /*
-+ * deinstantiate_rng - builds and executes a descriptor on DECO0,
-+ * which deinitializes the RNG block.
-+ * @ctrldev - pointer to device
-+ * @state_handle_mask - bitmask containing the instantiation status
-+ * for the RNG4 state handles which exist in
-+ * the RNG4 block: 1 if it's been instantiated
-+ *
-+ * Return: - 0 if no error occurred
-+ * - -ENOMEM if there isn't enough memory to allocate the descriptor
-+ * - -ENODEV if DECO0 couldn't be acquired
-+ * - -EAGAIN if an error occurred when executing the descriptor
-+ */
-+static int deinstantiate_rng(struct device *ctrldev, int state_handle_mask)
-+{
-+ u32 *desc, status;
-+ int sh_idx, ret = 0;
-+
-+ desc = kmalloc(CAAM_CMD_SZ * 3, GFP_KERNEL);
-+ if (!desc)
-+ return -ENOMEM;
-+
-+ for (sh_idx = 0; sh_idx < RNG4_MAX_HANDLES; sh_idx++) {
-+ /*
-+ * If the corresponding bit is set, then it means the state
-+ * handle was initialized by us, and thus it needs to be
-+ * deinitialized as well
-+ */
-+ if ((1 << sh_idx) & state_handle_mask) {
-+ /*
-+ * Create the descriptor for deinstantating this state
-+ * handle
-+ */
-+ build_deinstantiation_desc(desc, sh_idx);
-+
-+ /* Try to run it through DECO0 */
-+ ret = run_descriptor_deco0(ctrldev, desc, &status);
-+
-+ if (ret ||
-+ (status && status != JRSTA_SSRC_JUMP_HALT_CC)) {
-+ dev_err(ctrldev,
-+ "Failed to deinstantiate RNG4 SH%d\n",
-+ sh_idx);
-+ break;
-+ }
-+ dev_info(ctrldev, "Deinstantiated RNG4 SH%d\n", sh_idx);
-+ }
-+ }
-+
-+ kfree(desc);
-+
-+ return ret;
-+}
-+
-+static void devm_deinstantiate_rng(void *data)
-+{
-+ struct device *ctrldev = data;
-+ struct caam_drv_private *ctrlpriv = dev_get_drvdata(ctrldev);
-+
-+ /*
-+ * De-initialize RNG state handles initialized by this driver.
-+ * In case of SoCs with Management Complex, RNG is managed by MC f/w.
-+ */
-+ if (ctrlpriv->rng4_sh_init)
-+ deinstantiate_rng(ctrldev, ctrlpriv->rng4_sh_init);
-+}
-+
-+/*
- * instantiate_rng - builds and executes a descriptor on DECO0,
- * which initializes the RNG block.
- * @ctrldev - pointer to device
-@@ -247,59 +314,9 @@ static int instantiate_rng(struct device
-
- kfree(desc);
-
-- return ret;
--}
--
--/*
-- * deinstantiate_rng - builds and executes a descriptor on DECO0,
-- * which deinitializes the RNG block.
-- * @ctrldev - pointer to device
-- * @state_handle_mask - bitmask containing the instantiation status
-- * for the RNG4 state handles which exist in
-- * the RNG4 block: 1 if it's been instantiated
-- *
-- * Return: - 0 if no error occurred
-- * - -ENOMEM if there isn't enough memory to allocate the descriptor
-- * - -ENODEV if DECO0 couldn't be acquired
-- * - -EAGAIN if an error occurred when executing the descriptor
-- */
--static int deinstantiate_rng(struct device *ctrldev, int state_handle_mask)
--{
-- u32 *desc, status;
-- int sh_idx, ret = 0;
--
-- desc = kmalloc(CAAM_CMD_SZ * 3, GFP_KERNEL);
-- if (!desc)
-- return -ENOMEM;
--
-- for (sh_idx = 0; sh_idx < RNG4_MAX_HANDLES; sh_idx++) {
-- /*
-- * If the corresponding bit is set, then it means the state
-- * handle was initialized by us, and thus it needs to be
-- * deinitialized as well
-- */
-- if ((1 << sh_idx) & state_handle_mask) {
-- /*
-- * Create the descriptor for deinstantating this state
-- * handle
-- */
-- build_deinstantiation_desc(desc, sh_idx);
--
-- /* Try to run it through DECO0 */
-- ret = run_descriptor_deco0(ctrldev, desc, &status);
--
-- if (ret ||
-- (status && status != JRSTA_SSRC_JUMP_HALT_CC)) {
-- dev_err(ctrldev,
-- "Failed to deinstantiate RNG4 SH%d\n",
-- sh_idx);
-- break;
-- }
-- dev_info(ctrldev, "Deinstantiated RNG4 SH%d\n", sh_idx);
-- }
-- }
--
-- kfree(desc);
-+ if (!ret)
-+ ret = devm_add_action_or_reset(ctrldev, devm_deinstantiate_rng,
-+ ctrldev);
-
- return ret;
- }
-@@ -320,13 +337,6 @@ static int caam_remove(struct platform_d
- caam_qi_shutdown(ctrldev);
- #endif
-
-- /*
-- * De-initialize RNG state handles initialized by this driver.
-- * In case of SoCs with Management Complex, RNG is managed by MC f/w.
-- */
-- if (!ctrlpriv->mc_en && ctrlpriv->rng4_sh_init)
-- deinstantiate_rng(ctrldev, ctrlpriv->rng4_sh_init);
--
- return 0;
- }
-