public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH v4 0/3] Random Number Generator fixes
@ 2024-03-04 14:42 Weizhao Ouyang
  2024-03-04 14:42 ` [PATCH v4 1/3] firmware: psci: Fix bind_smccc_features psci check Weizhao Ouyang
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Weizhao Ouyang @ 2024-03-04 14:42 UTC (permalink / raw)
  To: Sughosh Ganu, Heinrich Schuchardt, Tom Rini, Etienne Carriere,
	Weizhao Ouyang, Simon Glass, Peng Fan, Ilias Apalodimas,
	Jens Wiklander, Abdellatif El Khlifi, u-boot

This series aim to fix smccc bind issue and add a list command for RNG
devices.

Changelog:

v3 --> v4
- update doc/usage/cmd/rng.rst

v2 --> v3
- remove fallback smc call
- add Fixes tag

v1 --> v2
- check SMCCC_ARCH_FEATURES
- update commit message and rng help info

Weizhao Ouyang (3):
  firmware: psci: Fix bind_smccc_features psci check
  driver: rng: Fix SMCCC TRNG crash
  cmd: rng: Add rng list command

 cmd/rng.c                 | 23 ++++++++++++++++++-----
 doc/usage/cmd/rng.rst     | 14 ++++++++++----
 drivers/firmware/psci.c   |  5 ++++-
 drivers/rng/smccc_trng.c  |  2 +-
 include/linux/arm-smccc.h |  6 ++++++
 5 files changed, 39 insertions(+), 11 deletions(-)

-- 
2.40.1


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

* [PATCH v4 1/3] firmware: psci: Fix bind_smccc_features psci check
  2024-03-04 14:42 [PATCH v4 0/3] Random Number Generator fixes Weizhao Ouyang
@ 2024-03-04 14:42 ` Weizhao Ouyang
  2024-03-14  0:39   ` Tom Rini
  2024-03-04 14:42 ` [PATCH v4 2/3] driver: rng: Fix SMCCC TRNG crash Weizhao Ouyang
  2024-03-04 14:42 ` [PATCH v4 3/3] cmd: rng: Add rng list command Weizhao Ouyang
  2 siblings, 1 reply; 7+ messages in thread
From: Weizhao Ouyang @ 2024-03-04 14:42 UTC (permalink / raw)
  To: Sughosh Ganu, Heinrich Schuchardt, Tom Rini, Etienne Carriere,
	Weizhao Ouyang, Simon Glass, Peng Fan, Ilias Apalodimas,
	Jens Wiklander, Abdellatif El Khlifi, u-boot

According to PSCI specification DEN0022F, PSCI_FEATURES is used to check
whether the SMCCC is implemented by discovering SMCCC_VERSION.

Signed-off-by: Weizhao Ouyang <o451686892@gmail.com>
---
v3: remove fallback smc call
v2: check SMCCC_ARCH_FEATURES
---
 drivers/firmware/psci.c   | 5 ++++-
 include/linux/arm-smccc.h | 6 ++++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c
index c6b9efab41..03544d76ed 100644
--- a/drivers/firmware/psci.c
+++ b/drivers/firmware/psci.c
@@ -135,10 +135,13 @@ static int bind_smccc_features(struct udevice *dev, int psci_method)
 	    PSCI_VERSION_MAJOR(psci_0_2_get_version()) == 0)
 		return 0;
 
-	if (request_psci_features(ARM_SMCCC_ARCH_FEATURES) ==
+	if (request_psci_features(ARM_SMCCC_VERSION) ==
 	    PSCI_RET_NOT_SUPPORTED)
 		return 0;
 
+	if (invoke_psci_fn(ARM_SMCCC_VERSION, 0, 0, 0) < ARM_SMCCC_VERSION_1_1)
+		return 0;
+
 	if (psci_method == PSCI_METHOD_HVC)
 		pdata->invoke_fn = smccc_invoke_hvc;
 	else
diff --git a/include/linux/arm-smccc.h b/include/linux/arm-smccc.h
index f44e9e8f93..da3d29aabe 100644
--- a/include/linux/arm-smccc.h
+++ b/include/linux/arm-smccc.h
@@ -55,8 +55,14 @@
 #define ARM_SMCCC_QUIRK_NONE		0
 #define ARM_SMCCC_QUIRK_QCOM_A6		1 /* Save/restore register a6 */
 
+#define ARM_SMCCC_VERSION		0x80000000
 #define ARM_SMCCC_ARCH_FEATURES		0x80000001
 
+#define ARM_SMCCC_VERSION_1_0		0x10000
+#define ARM_SMCCC_VERSION_1_1		0x10001
+#define ARM_SMCCC_VERSION_1_2		0x10002
+#define ARM_SMCCC_VERSION_1_3		0x10003
+
 #define ARM_SMCCC_RET_NOT_SUPPORTED	((unsigned long)-1)
 
 #ifndef __ASSEMBLY__
-- 
2.40.1


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

* [PATCH v4 2/3] driver: rng: Fix SMCCC TRNG crash
  2024-03-04 14:42 [PATCH v4 0/3] Random Number Generator fixes Weizhao Ouyang
  2024-03-04 14:42 ` [PATCH v4 1/3] firmware: psci: Fix bind_smccc_features psci check Weizhao Ouyang
@ 2024-03-04 14:42 ` Weizhao Ouyang
  2024-03-14  0:39   ` Tom Rini
  2024-03-04 14:42 ` [PATCH v4 3/3] cmd: rng: Add rng list command Weizhao Ouyang
  2 siblings, 1 reply; 7+ messages in thread
From: Weizhao Ouyang @ 2024-03-04 14:42 UTC (permalink / raw)
  To: Sughosh Ganu, Heinrich Schuchardt, Tom Rini, Etienne Carriere,
	Weizhao Ouyang, Simon Glass, Peng Fan, Ilias Apalodimas,
	Jens Wiklander, Abdellatif El Khlifi, u-boot

Fix a SMCCC TRNG null pointer crash due to a failed smccc feature
binding.

Fixes: 53355bb86c25 ("drivers: rng: add smccc trng driver")
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Weizhao Ouyang <o451686892@gmail.com>
---
v3: add Fixes tag
---
 drivers/rng/smccc_trng.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/rng/smccc_trng.c b/drivers/rng/smccc_trng.c
index 3a4bb33941..3087cb991a 100644
--- a/drivers/rng/smccc_trng.c
+++ b/drivers/rng/smccc_trng.c
@@ -166,7 +166,7 @@ static int smccc_trng_probe(struct udevice *dev)
 	struct smccc_trng_priv *priv = dev_get_priv(dev);
 	struct arm_smccc_res res;
 
-	if (!(smccc_trng_is_supported(smccc->invoke_fn)))
+	if (!smccc || !(smccc_trng_is_supported(smccc->invoke_fn)))
 		return -ENODEV;
 
 	/* At least one of 64bit and 32bit interfaces is available */
-- 
2.40.1


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

* [PATCH v4 3/3] cmd: rng: Add rng list command
  2024-03-04 14:42 [PATCH v4 0/3] Random Number Generator fixes Weizhao Ouyang
  2024-03-04 14:42 ` [PATCH v4 1/3] firmware: psci: Fix bind_smccc_features psci check Weizhao Ouyang
  2024-03-04 14:42 ` [PATCH v4 2/3] driver: rng: Fix SMCCC TRNG crash Weizhao Ouyang
@ 2024-03-04 14:42 ` Weizhao Ouyang
  2024-03-14  0:39   ` Tom Rini
  2 siblings, 1 reply; 7+ messages in thread
From: Weizhao Ouyang @ 2024-03-04 14:42 UTC (permalink / raw)
  To: Sughosh Ganu, Heinrich Schuchardt, Tom Rini, Etienne Carriere,
	Weizhao Ouyang, Simon Glass, Peng Fan, Ilias Apalodimas,
	Jens Wiklander, Abdellatif El Khlifi, u-boot

The 'rng list' command probes all RNG devices and list those devices
that are successfully probed. Also update the help info.

Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Weizhao Ouyang <o451686892@gmail.com>
---
v4: update doc/usage/cmd/rng.rst
---
 cmd/rng.c             | 23 ++++++++++++++++++-----
 doc/usage/cmd/rng.rst | 14 ++++++++++----
 2 files changed, 28 insertions(+), 9 deletions(-)

diff --git a/cmd/rng.c b/cmd/rng.c
index 52f722c7af..b073a6c849 100644
--- a/cmd/rng.c
+++ b/cmd/rng.c
@@ -19,6 +19,22 @@ static int do_rng(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 	struct udevice *dev;
 	int ret = CMD_RET_SUCCESS;
 
+	if (argc == 2 && !strcmp(argv[1], "list")) {
+		int idx = 0;
+
+		uclass_foreach_dev_probe(UCLASS_RNG, dev) {
+			idx++;
+			printf("RNG #%d - %s\n", dev->seq_, dev->name);
+		}
+
+		if (!idx) {
+			log_err("No RNG device\n");
+			return CMD_RET_FAILURE;
+		}
+
+		return CMD_RET_SUCCESS;
+	}
+
 	switch (argc) {
 	case 1:
 		devnum = 0;
@@ -56,12 +72,9 @@ static int do_rng(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 	return ret;
 }
 
-U_BOOT_LONGHELP(rng,
-	"[dev [n]]\n"
-	"  - print n random bytes(max 64) read from dev\n");
-
 U_BOOT_CMD(
 	rng, 3, 0, do_rng,
 	"print bytes from the hardware random number generator",
-	rng_help_text
+	"list         - list all the probed rng devices\n"
+	"rng [dev] [n]    - print n random bytes(max 64) read from dev\n"
 );
diff --git a/doc/usage/cmd/rng.rst b/doc/usage/cmd/rng.rst
index 274e4d88df..4a61e33d27 100644
--- a/doc/usage/cmd/rng.rst
+++ b/doc/usage/cmd/rng.rst
@@ -11,16 +11,22 @@ Synopsis
 
 ::
 
-    rng [devnum [n]]
+    rng list
+    rng [dev] [n]
 
-Description
------------
+rng list
+--------
+
+List all the probed rng devices.
+
+rng [dev] [n]
+-------------
 
 The *rng* command reads the random number generator(RNG) device and
 prints the random bytes read on the console. A maximum of 64 bytes can
 be read in one invocation of the command.
 
-devnum
+dev
     The RNG device from which the random bytes are to be
     read. Defaults to 0.
 
-- 
2.40.1


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

* Re: [PATCH v4 1/3] firmware: psci: Fix bind_smccc_features psci check
  2024-03-04 14:42 ` [PATCH v4 1/3] firmware: psci: Fix bind_smccc_features psci check Weizhao Ouyang
@ 2024-03-14  0:39   ` Tom Rini
  0 siblings, 0 replies; 7+ messages in thread
From: Tom Rini @ 2024-03-14  0:39 UTC (permalink / raw)
  To: Weizhao Ouyang
  Cc: Sughosh Ganu, Heinrich Schuchardt, Etienne Carriere, Simon Glass,
	Peng Fan, Ilias Apalodimas, Jens Wiklander, Abdellatif El Khlifi,
	u-boot

[-- Attachment #1: Type: text/plain, Size: 316 bytes --]

On Mon, Mar 04, 2024 at 02:42:40PM +0000, Weizhao Ouyang wrote:

> According to PSCI specification DEN0022F, PSCI_FEATURES is used to check
> whether the SMCCC is implemented by discovering SMCCC_VERSION.
> 
> Signed-off-by: Weizhao Ouyang <o451686892@gmail.com>

Applied to u-boot/next, thanks!

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

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

* Re: [PATCH v4 2/3] driver: rng: Fix SMCCC TRNG crash
  2024-03-04 14:42 ` [PATCH v4 2/3] driver: rng: Fix SMCCC TRNG crash Weizhao Ouyang
@ 2024-03-14  0:39   ` Tom Rini
  0 siblings, 0 replies; 7+ messages in thread
From: Tom Rini @ 2024-03-14  0:39 UTC (permalink / raw)
  To: Weizhao Ouyang
  Cc: Sughosh Ganu, Heinrich Schuchardt, Etienne Carriere, Simon Glass,
	Peng Fan, Ilias Apalodimas, Jens Wiklander, Abdellatif El Khlifi,
	u-boot

[-- Attachment #1: Type: text/plain, Size: 375 bytes --]

On Mon, Mar 04, 2024 at 02:42:41PM +0000, Weizhao Ouyang wrote:

> Fix a SMCCC TRNG null pointer crash due to a failed smccc feature
> binding.
> 
> Fixes: 53355bb86c25 ("drivers: rng: add smccc trng driver")
> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> Signed-off-by: Weizhao Ouyang <o451686892@gmail.com>

Applied to u-boot/next, thanks!

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

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

* Re: [PATCH v4 3/3] cmd: rng: Add rng list command
  2024-03-04 14:42 ` [PATCH v4 3/3] cmd: rng: Add rng list command Weizhao Ouyang
@ 2024-03-14  0:39   ` Tom Rini
  0 siblings, 0 replies; 7+ messages in thread
From: Tom Rini @ 2024-03-14  0:39 UTC (permalink / raw)
  To: Weizhao Ouyang
  Cc: Sughosh Ganu, Heinrich Schuchardt, Etienne Carriere, Simon Glass,
	Peng Fan, Ilias Apalodimas, Jens Wiklander, Abdellatif El Khlifi,
	u-boot

[-- Attachment #1: Type: text/plain, Size: 363 bytes --]

On Mon, Mar 04, 2024 at 02:42:42PM +0000, Weizhao Ouyang wrote:

> The 'rng list' command probes all RNG devices and list those devices
> that are successfully probed. Also update the help info.
> 
> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> Signed-off-by: Weizhao Ouyang <o451686892@gmail.com>

Applied to u-boot/next, thanks!

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

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

end of thread, other threads:[~2024-03-14  0:39 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-04 14:42 [PATCH v4 0/3] Random Number Generator fixes Weizhao Ouyang
2024-03-04 14:42 ` [PATCH v4 1/3] firmware: psci: Fix bind_smccc_features psci check Weizhao Ouyang
2024-03-14  0:39   ` Tom Rini
2024-03-04 14:42 ` [PATCH v4 2/3] driver: rng: Fix SMCCC TRNG crash Weizhao Ouyang
2024-03-14  0:39   ` Tom Rini
2024-03-04 14:42 ` [PATCH v4 3/3] cmd: rng: Add rng list command Weizhao Ouyang
2024-03-14  0:39   ` Tom Rini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox