crypto: caam - fix i.MX6SX entropy delay value
Subsystems (3)
PATCH v5 1/1 crypto: caam - fix i.MX6SX entropy delay value
From: Fabio Estevam <[email protected]>
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/[email protected]/
As explained in the U-Boot patch:
"RNG self tests are run to determine the correct entropy delay. Such tests are executed with different voltages and temperatures to identify the worst case value for the entropy delay. For i.MX6SX, it was determined that after adding a margin value of 1000 the minimum entropy delay should be at least 12000."
---
Changes since v4:
- Change the function name to needs_entropy_delay_adjustment() - Vabhav
- Improve the commit log by adding the explanation from the U-Boot patch - Vabhav
drivers/crypto/caam/ctrl.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
drivers/crypto/caam/ctrl.c +18 -0
@@ -609,6 +609,13 @@ static bool check_version(struct fsl_mc_version *mc_version, u32 major, }#endif +static bool needs_entropy_delay_adjustment (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_entropy_delay_adjustment ()) + 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_entropy_delay_adjustment ()) +break ;if (ret == -EAGAIN )/* * if here, the loop will rerun,
Signature · 1 line
2.25.1
A message that is not in the archive (sent off-list or not yet received): HE1PR04MB29711AB352AE20A4A51B4C598EF49@HE1PR04MB2971.eurprd04.prod.outlook.com
Vabhav Sharma
Reviewed-byQuoted 98 lines
-----Original Message-----
From: Fabio Estevam <[email protected]>
Sent: Wednesday, April 20, 2022 5:36 PM
To: [email protected]
Cc: Horia Geanta <[email protected]>; Gaurav Jain <[email protected]>; Varun Sethi <[email protected]>; linux- [email protected]; Fabio Estevam <[email protected]>; [email protected]
Subject: [PATCH v5] crypto: caam - fix i.MX6SX entropy delay valueFrom: Fabio Estevam <[email protected]>
Since commit
358ba762d9f1("crypto: caam - enable prediction resistance in HRWNG") the following CAAM errors can be seen on i.MX6SX:
caam_jr2101000.jr:20003c5b: CCB: desc idx 60: RNG: Hardware error
hwrng: no data availableThis 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&data=05%7C01%7Cmeenakshi.aggarwal%4 0nxp.com%7Caf57d0186dde479aa9cf08da22c687d0%7C686ea1d3bc2b4c6fa92 cd99c5c301635%7C0%7C0%7C637860533324307730%7CUnknown%7CTWFpb GZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI 6Mn0%3D%7C3000%7C%7C%7C&sdata=UhqjgESpgMhOhJS%2BT4ghI6y NIvyybOI8yEv5%2FjKNcDE%3D&reserved=0As explained in the U-Boot patch:
"RNG self tests are run to determine the correct entropy delay. Such tests are executed with different voltages and temperatures to identify the worst case value for the entropy delay. For i.MX6SX, it was determined that after adding a margin value of 1000 the minimum entropy delay should be at least 12000."
Cc <[email protected]>Fixes 358ba762d9f1 ("crypto: caam - enable prediction resistance in HRWNG")Signed-off-by Fabio Estevam <[email protected]>Reviewed-by Horia Geantă <[email protected]>---
Changes since v4:
- Change the function name toneeds_entropy_delay_adjustment()- Vabhav
- Improve the commit log by adding the explanation from the U-Boot patch - Vabhavdrivers/crypto/caam/ctrl.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)drivers/crypto/caam/ctrl.c index renamed from drivers/crypto/caam/ctrl.c +0
-0
ca0361b2dbb0..f87aa2169e5f100644drivers/crypto/caam/ctrl.c +7
-0@@ -609,6 +609,13 @@ static bool check_version(struct fsl_mc_version *mc_version, u32 major, } #endif +static bool needs_entropy_delay_adjustment (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 intcaam_probe(struct platform_device *pdev)drivers/crypto/caam/ctrl.c +4
-0* Also, if a handle was instantiated, do not change * the TRNG parameters. */ +if (needs_entropy_delay_adjustment ()) + 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.
drivers/crypto/caam/ctrl.c +1
-0+* TRNG characterization is run across different voltages
drivers/crypto/caam/ctrl.c +6
-1+* and temperatures. +* If worst case value for ent_dly is identified, +* the loop can be skipped for that platform. +*/ +if (needs_entropy_delay_adjustment ()) +break ;if (ret == -EAGAIN )/* * if here, the loop will rerun, -- 2.25.1
Quoted 96 lines
-----Original Message-----
From: Fabio Estevam <[email protected]>
Sent: Wednesday, April 20, 2022 5:36 PM
To: [email protected]
Cc: Horia Geanta <[email protected]>; Gaurav Jain <[email protected]>; Varun Sethi <[email protected]>; linux- [email protected]; Fabio Estevam <[email protected]>; [email protected]
Subject: [EXT] [PATCH v5] crypto: caam - fix i.MX6SX entropy delay valueCaution: EXT Email
From: Fabio Estevam <[email protected]>
Since commit
358ba762d9f1("crypto: caam - enable prediction resistance in HRWNG") the following CAAM errors can be seen on i.MX6SX:
caam_jr2101000.jr:20003c5b: CCB: desc idx 60: RNG: Hardware error
hwrng: no data availableThis 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%2Fpatchwo
rk.ozlabs.org%2Fproject%2Fuboot%2Fpatch%2F20220415111049.2565744-1- gaurav.jain%40nxp.com%2F&data=05%7C01%7Cgaurav.jain%40nxp.com% 7Cc2f2316c0db64170b59e08da22c62c4d%7C686ea1d3bc2b4c6fa92cd99c5c301 635%7C0%7C0%7C637860531804367821%7CUnknown%7CTWFpbGZsb3d8eyJ WIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C 3000%7C%7C%7C&sdata=OTgUAquesUW39%2F0bhSnXHDe4UpCU8dQN% 2B7P0hlE6oiE%3D&reserved=0As explained in the U-Boot patch:
"RNG self tests are run to determine the correct entropy delay. Such tests are executed with different voltages and temperatures to identify the worst case value for the entropy delay. For i.MX6SX, it was determined that after adding a margin value of 1000 the minimum entropy delay should be at least 12000."
Cc <[email protected]>Fixes 358ba762d9f1 ("crypto: caam - enable prediction resistance in HRWNG")Signed-off-by Fabio Estevam <[email protected]>Reviewed-by Horia Geantă <[email protected]>---
Changes since v4:
- Change the function name toneeds_entropy_delay_adjustment()- Vabhav
- Improve the commit log by adding the explanation from the U-Boot patch - Vabhavdrivers/crypto/caam/ctrl.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)drivers/crypto/caam/ctrl.c index renamed from drivers/crypto/caam/ctrl.c +0
-0
ca0361b2dbb0..f87aa2169e5f100644drivers/crypto/caam/ctrl.c +7
-0@@ -609,6 +609,13 @@ static bool check_version(struct fsl_mc_version *mc_version, u32 major, } #endif +static bool needs_entropy_delay_adjustment (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 intcaam_probe(struct platform_device *pdev)
* Also, if a handle was instantiated, do not change
* the TRNG parameters.
*/drivers/crypto/caam/ctrl.c +2
-0+if (needs_entropy_delay_adjustment ()) + ent_delay =12000 ;if (!(ctrlpriv->rng4_sh_init || inst_handles)) { dev_info(dev, "Entropy delay = %u\n", @@ -871,6 +880,15 @@ staticint
caam_probe(struct platform_device *pdev)*/ ret = instantiate_rng(dev, inst_handles, gen_sk);drivers/crypto/caam/ctrl.c +9
-1+/* +* 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_entropy_delay_adjustment ()) +break ;if (ret == -EAGAIN )/* * if here, the loop will rerun, -- 2.25.1
Herbert Xu
maintainerQuoted 26 lines · Fabio Estevam
From: Fabio Estevam <[email protected]>
Since commit
358ba762d9f1("crypto: caam - enable prediction resistance in HRWNG") the following CAAM errors can be seen on i.MX6SX:
caam_jr2101000.jr:20003c5b: CCB: desc idx 60: RNG: Hardware error
hwrng: no data availableThis 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/[email protected]/As explained in the U-Boot patch:
"RNG self tests are run to determine the correct entropy delay. Such tests are executed with different voltages and temperatures to identify the worst case value for the entropy delay. For i.MX6SX, it was determined that after adding a margin value of 1000 the minimum entropy delay should be at least 12000."
Cc <[email protected]>Fixes 358ba762d9f1 ("crypto: caam - enable prediction resistance in HRWNG")Signed-off-by Fabio Estevam <[email protected]>Reviewed-by Horia Geantă <[email protected]>
Quoted 8 lines
---
Changes since v4:
- Change the function name toneeds_entropy_delay_adjustment()- Vabhav
- Improve the commit log by adding the explanation from the U-Boot patch - Vabhavdrivers/crypto/caam/ctrl.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
Patch applied. Thanks.
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Hi!
I found an older discussion on the same topic,
where it is mentioned that the same problem also occurs on imx6dl, imx6d and imx6s:
https://linuxlists.cc/l/4/linux-crypto/t/3843436/caam_rng_trouble#post4282922
I have also observed the problem on an imx6dl, running a 5.10.112 kernel.
Therefore, the problem might persist for the other variants.
BR
BB