cddd459140
Add patches for linux-5.4. The patches are from NXP LSDK-20.04 release which was tagged LSDK-20.04-V5.4. https://source.codeaurora.org/external/qoriq/qoriq-components/linux/ For boards LS1021A-IOT, and Traverse-LS1043 which are not involved in LSDK, port the dts patches from 4.14. The patches are sorted into the following categories: 301-arch-xxxx 302-dts-xxxx 303-core-xxxx 701-net-xxxx 801-audio-xxxx 802-can-xxxx 803-clock-xxxx 804-crypto-xxxx 805-display-xxxx 806-dma-xxxx 807-gpio-xxxx 808-i2c-xxxx 809-jailhouse-xxxx 810-keys-xxxx 811-kvm-xxxx 812-pcie-xxxx 813-pm-xxxx 814-qe-xxxx 815-sata-xxxx 816-sdhc-xxxx 817-spi-xxxx 818-thermal-xxxx 819-uart-xxxx 820-usb-xxxx 821-vfio-xxxx Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
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
|
|
@@ -492,7 +492,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 */
|