mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-25 16:31:13 +00:00
bbdc13b15b
Removed upstreamed: ath79/patches-5.4/921-serial-core-add-support-for-boot-console-with-arbitr.patch[1] Manually rebased: layerscape/patches-5.4/804-crypto-0016-MLKU-114-1-crypto-caam-reduce-page-0-regs-access-to-.patch octeontx/patches-5.4/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch All other patches automatically rebased. 1. Private email exchange with patch author, Hauke Mehrtens Signed-off-by: John Audia <graysky@archlinux.us>
64 lines
2.3 KiB
Diff
64 lines
2.3 KiB
Diff
From e1a89cdf6fa6b04806eb24b939738bb89ab62914 Mon Sep 17 00:00:00 2001
|
|
From: Aymen Sghaier <aymen.sghaier@nxp.com>
|
|
Date: Thu, 13 Sep 2018 16:41:03 +0200
|
|
Subject: [PATCH] MLK-19053 crypto: caam - RNG4 TRNG errata
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
The TRNG as used in RNG4, used in CAAM has a documentation issue. The
|
|
effect is that it is possible that the entropy used to instantiate the
|
|
DRBG may be old entropy, rather than newly generated entropy. There is
|
|
proper programming guidance, but it is not in the documentation.
|
|
|
|
Signed-off-by: Aymen Sghaier <aymen.sghaier@nxp.com>
|
|
Signed-off-by: Vipul Kumar <vipul_kumar@mentor.com>
|
|
(cherry picked from commit ea2b30c8171acf7624e3d44276737c3878ca900d)
|
|
|
|
-ported to RNG initialization in ctrl.c
|
|
-changed commit headline
|
|
|
|
Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
|
|
---
|
|
drivers/crypto/caam/ctrl.c | 9 +++++++--
|
|
drivers/crypto/caam/regs.h | 3 ++-
|
|
2 files changed, 9 insertions(+), 3 deletions(-)
|
|
|
|
--- a/drivers/crypto/caam/ctrl.c
|
|
+++ b/drivers/crypto/caam/ctrl.c
|
|
@@ -339,7 +339,11 @@ static void kick_trng(struct platform_de
|
|
r4tst = &ctrl->r4tst[0];
|
|
|
|
/* put RNG4 into program mode */
|
|
- clrsetbits_32(&r4tst->rtmctl, 0, RTMCTL_PRGM);
|
|
+ /* Setting both RTMCTL:PRGM and RTMCTL:TRNG_ACC causes TRNG to
|
|
+ * properly invalidate the entropy in the entropy register and
|
|
+ * force re-generation.
|
|
+ */
|
|
+ clrsetbits_32(&r4tst->rtmctl, 0, RTMCTL_PRGM | RTMCTL_ACC);
|
|
|
|
/*
|
|
* Performance-wise, it does not make sense to
|
|
@@ -369,7 +373,8 @@ start_rng:
|
|
* select raw sampling in both entropy shifter
|
|
* and statistical checker; ; put RNG4 into run mode
|
|
*/
|
|
- clrsetbits_32(&r4tst->rtmctl, RTMCTL_PRGM, RTMCTL_SAMP_MODE_RAW_ES_SC);
|
|
+ clrsetbits_32(&r4tst->rtmctl, RTMCTL_PRGM | RTMCTL_ACC,
|
|
+ RTMCTL_SAMP_MODE_RAW_ES_SC);
|
|
}
|
|
|
|
static int caam_get_era_from_hw(struct caam_ctrl __iomem *ctrl)
|
|
--- a/drivers/crypto/caam/regs.h
|
|
+++ b/drivers/crypto/caam/regs.h
|
|
@@ -495,7 +495,8 @@ struct rngtst {
|
|
|
|
/* RNG4 TRNG test registers */
|
|
struct rng4tst {
|
|
-#define RTMCTL_PRGM 0x00010000 /* 1 -> program mode, 0 -> run mode */
|
|
+#define RTMCTL_ACC BIT(5) /* TRNG access mode */
|
|
+#define RTMCTL_PRGM BIT(16) /* 1 -> program mode, 0 -> run mode */
|
|
#define RTMCTL_SAMP_MODE_VON_NEUMANN_ES_SC 0 /* use von Neumann data in
|
|
both entropy shifter and
|
|
statistical checker */
|