All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4] crypto: caam - fix i.MX6SX entropy delay value
@ 2022-04-19 11:44 Fabio Estevam
  2022-04-19 20:38 ` Horia Geantă
       [not found] ` <VI1PR04MB5342FB22BDAF3163C7C8ECD9E7F59@VI1PR04MB5342.eurprd04.prod.outlook.com>
  0 siblings, 2 replies; 4+ messages in thread
From: Fabio Estevam @ 2022-04-19 11:44 UTC (permalink / raw)
  To: herbert
  Cc: horia.geanta, gaurav.jain, V.Sethi, linux-crypto, Fabio Estevam, stable

From: Fabio Estevam <festevam@denx.de>

Since commit 358ba762d9f1 ("crypto: caam - enable prediction resistance
in HRWNG") the following CAAM errors can be seen on i.MX6SX:

caam_jr 2101000.jr: 20003c5b: CCB: desc idx 60: RNG: Hardware error
hwrng: no data available

This error is due to an incorrect entropy delay for i.MX6SX.

Fix it by increasing the minimum entropy delay for i.MX6SX
as done in U-Boot:
https://patchwork.ozlabs.org/project/uboot/patch/20220415111049.2565744-1-gaurav.jain@nxp.com/

Cc: <stable@vger.kernel.org>
Fixes: 358ba762d9f1 ("crypto: caam - enable prediction resistance in HRWNG") 
Signed-off-by: Fabio Estevam <festevam@denx.de>
---
Changes since v3:
- Add a needs_extended_entropy_delay() function
- Assign the 'ent_delay' inside the the RNG initialization area. (Horia)
- Change the terminology as per Horia's explanation.

 drivers/crypto/caam/ctrl.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c
index ca0361b2dbb0..5b989a842ee9 100644
--- a/drivers/crypto/caam/ctrl.c
+++ b/drivers/crypto/caam/ctrl.c
@@ -609,6 +609,13 @@ static bool check_version(struct fsl_mc_version *mc_version, u32 major,
 }
 #endif
 
+static bool needs_extended_entropy_delay(void)
+{
+	if (of_machine_is_compatible("fsl,imx6sx"))
+		return true;
+	return false;
+}
+
 /* Probe routine for CAAM top (controller) level */
 static int caam_probe(struct platform_device *pdev)
 {
@@ -855,6 +862,8 @@ static int caam_probe(struct platform_device *pdev)
 			 * Also, if a handle was instantiated, do not change
 			 * the TRNG parameters.
 			 */
+			if (needs_extended_entropy_delay())
+				ent_delay = 12000;
 			if (!(ctrlpriv->rng4_sh_init || inst_handles)) {
 				dev_info(dev,
 					 "Entropy delay = %u\n",
@@ -871,6 +880,15 @@ static int caam_probe(struct platform_device *pdev)
 			 */
 			ret = instantiate_rng(dev, inst_handles,
 					      gen_sk);
+			/*
+			 * Entropy delay is determined via TRNG characterization.
+			 * TRNG characterization is run across different voltages
+			 * and temperatures.
+			 * If worst case value for ent_dly is identified,
+			 * the loop can be skipped for that platform.
+			 */
+			if (needs_extended_entropy_delay())
+				break;
 			if (ret == -EAGAIN)
 				/*
 				 * if here, the loop will rerun,
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v4] crypto: caam - fix i.MX6SX entropy delay value
  2022-04-19 11:44 [PATCH v4] crypto: caam - fix i.MX6SX entropy delay value Fabio Estevam
@ 2022-04-19 20:38 ` Horia Geantă
       [not found] ` <VI1PR04MB5342FB22BDAF3163C7C8ECD9E7F59@VI1PR04MB5342.eurprd04.prod.outlook.com>
  1 sibling, 0 replies; 4+ messages in thread
From: Horia Geantă @ 2022-04-19 20:38 UTC (permalink / raw)
  To: Fabio Estevam, herbert
  Cc: Gaurav Jain, Varun Sethi, linux-crypto, Fabio Estevam, stable

On 4/19/2022 2:45 PM, Fabio Estevam wrote:
> From: Fabio Estevam <festevam@denx.de>
> 
> Since commit 358ba762d9f1 ("crypto: caam - enable prediction resistance
> in HRWNG") the following CAAM errors can be seen on i.MX6SX:
> 
> caam_jr 2101000.jr: 20003c5b: CCB: desc idx 60: RNG: Hardware error
> hwrng: no data available
> 
> This error is due to an incorrect entropy delay for i.MX6SX.
> 
> Fix it by increasing the minimum entropy delay for i.MX6SX
> as done in U-Boot:
> https://patchwork.ozlabs.org/project/uboot/patch/20220415111049.2565744-1-gaurav.jain@nxp.com/
> 
> Cc: <stable@vger.kernel.org>
> Fixes: 358ba762d9f1 ("crypto: caam - enable prediction resistance in HRWNG") 
> Signed-off-by: Fabio Estevam <festevam@denx.de>
Reviewed-by: Horia Geantă <horia.geanta@nxp.com>

Thanks,
Horia

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: [EXT] [PATCH v4] crypto: caam - fix i.MX6SX entropy delay value
       [not found] ` <VI1PR04MB5342FB22BDAF3163C7C8ECD9E7F59@VI1PR04MB5342.eurprd04.prod.outlook.com>
@ 2022-04-20 11:34   ` Vabhav Sharma
  2022-04-20 12:08     ` Fabio Estevam
  0 siblings, 1 reply; 4+ messages in thread
From: Vabhav Sharma @ 2022-04-20 11:34 UTC (permalink / raw)
  To: herbert, Fabio Estevam
  Cc: Horia Geanta, Gaurav Jain, Varun Sethi, linux-crypto,
	Fabio Estevam, stable



> -----Original Message-----
> From: Fabio Estevam <festevam@gmail.com>
> Sent: Tuesday, April 19, 2022 5:15 PM
> To: herbert@gondor.apana.org.au
> Cc: Horia Geanta <horia.geanta@nxp.com>; Gaurav Jain
> <gaurav.jain@nxp.com>; Varun Sethi <V.Sethi@nxp.com>; linux-
> crypto@vger.kernel.org; Fabio Estevam <festevam@denx.de>;
> stable@vger.kernel.org
> Subject: [EXT] [PATCH v4] crypto: caam - fix i.MX6SX entropy delay value
> 
> Caution: EXT Email
> 
> From: Fabio Estevam <festevam@denx.de>
> 
> Since commit 358ba762d9f1 ("crypto: caam - enable prediction resistance in
> HRWNG") the following CAAM errors can be seen on i.MX6SX:
> 
> caam_jr 2101000.jr: 20003c5b: CCB: desc idx 60: RNG: Hardware error
> hwrng: no data available
> 
> This error is due to an incorrect entropy delay for i.MX6SX.
> 
> Fix it by increasing the minimum entropy delay for i.MX6SX as done in U-Boot:
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatch
> work.ozlabs.org%2Fproject%2Fuboot%2Fpatch%2F20220415111049.2565744-
> 1-
> gaurav.jain%40nxp.com%2F&amp;data=05%7C01%7Cgaurav.jain%40nxp.co
> m%7C9016fe4b6bb8402de08f08da21fa0703%7C686ea1d3bc2b4c6fa92cd99c5c
> 301635%7C0%7C0%7C637859655100732358%7CUnknown%7CTWFpbGZsb3d8
> eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3
> D%7C3000%7C%7C%7C&amp;sdata=wglpvZBmQUKn7sLRx5xpdwdgFMOc6LE
> qIMqUU0h4UZE%3D&amp;reserved=0
> 
> Cc: <stable@vger.kernel.org>
> Fixes: 358ba762d9f1 ("crypto: caam - enable prediction resistance in HRWNG")
> Signed-off-by: Fabio Estevam <festevam@denx.de>
> ---
> Changes since v3:
> - Add a needs_extended_entropy_delay() function
> - Assign the 'ent_delay' inside the the RNG initialization area. (Horia)
> - Change the terminology as per Horia's explanation.
> 
>  drivers/crypto/caam/ctrl.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c index
> ca0361b2dbb0..5b989a842ee9 100644
> --- a/drivers/crypto/caam/ctrl.c
> +++ b/drivers/crypto/caam/ctrl.c
> @@ -609,6 +609,13 @@ static bool check_version(struct fsl_mc_version
> *mc_version, u32 major,  }  #endif
> 
> +static bool needs_extended_entropy_delay(void)
> +{
> +       if (of_machine_is_compatible("fsl,imx6sx"))
> +               return true;
> +       return false;
> +}
> +
>  /* Probe routine for CAAM top (controller) level */  static int
> caam_probe(struct platform_device *pdev)  { @@ -855,6 +862,8 @@ static
> int caam_probe(struct platform_device *pdev)
>                          * Also, if a handle was instantiated, do not change
>                          * the TRNG parameters.
>                          */
> +                       if (needs_extended_entropy_delay())
> +                               ent_delay = 12000;
>                         if (!(ctrlpriv->rng4_sh_init || inst_handles)) {
Please note if TRNG state handles are already instantiated e.g. by U-Boot bootloader, It is assumed that entropy is set correctly and kick_trng() will be skipped
Kindly pick the U-Boot changes as detailed in commit message.
>                                 dev_info(dev,
>                                          "Entropy delay = %u\n", @@ -871,6 +880,15 @@ static
> int caam_probe(struct platform_device *pdev)
>                          */
>                         ret = instantiate_rng(dev, inst_handles,
>                                               gen_sk);
> +                       /*
> +                        * Entropy delay is determined via TRNG characterization.
> +                        * TRNG characterization is run across different voltages
> +                        * and temperatures.
> +                        * If worst case value for ent_dly is identified,
> +                        * the loop can be skipped for that platform.
> +                        */
> +                       if (needs_extended_entropy_delay())
There is nothing like extended entropy delay and function name seems to be incorrect, The software test were run offline across ranges of temperature, voltage and process to determine the correct entropy delay.
However, value of 12000 is determined by running said test across voltage and temperature only for iMX6SX.
> +                               break;
>                         if (ret == -EAGAIN)
>                                 /*
>                                  * if here, the loop will rerun,
> --
> 2.25.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [EXT] [PATCH v4] crypto: caam - fix i.MX6SX entropy delay value
  2022-04-20 11:34   ` [EXT] " Vabhav Sharma
@ 2022-04-20 12:08     ` Fabio Estevam
  0 siblings, 0 replies; 4+ messages in thread
From: Fabio Estevam @ 2022-04-20 12:08 UTC (permalink / raw)
  To: Vabhav Sharma
  Cc: herbert, Horia Geanta, Gaurav Jain, Varun Sethi, linux-crypto,
	Fabio Estevam, stable

Hi Vabhav,

On Wed, Apr 20, 2022 at 8:34 AM Vabhav Sharma <vabhav.sharma@nxp.com> wrote:

> There is nothing like extended entropy delay and function name seems to be incorrect, The software test were run offline across ranges of temperature, voltage and process to determine the correct entropy delay.
> However, value of 12000 is determined by running said test across voltage and temperature only for iMX6SX.

Ok, I did as you suggested and sent a v5.

Just realized that I forgot to add you on Cc. Sorry about that.

Thanks

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-04-20 12:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-19 11:44 [PATCH v4] crypto: caam - fix i.MX6SX entropy delay value Fabio Estevam
2022-04-19 20:38 ` Horia Geantă
     [not found] ` <VI1PR04MB5342FB22BDAF3163C7C8ECD9E7F59@VI1PR04MB5342.eurprd04.prod.outlook.com>
2022-04-20 11:34   ` [EXT] " Vabhav Sharma
2022-04-20 12:08     ` Fabio Estevam

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.