From: Leo Yan <leo.yan@arm.com>
Date: Tue, 9 Jul 2024 16:23:09 +0000 (+0100)
Subject: driver: rng: Do not check ARM_SMCCC_TRNG_VERSION
X-Git-Tag: v2025.01-rc5-pxa1908~393
X-Git-Url: http://git.dujemihanovic.xyz/%22http:/www.sics.se/static/%7B%7B?a=commitdiff_plain;h=51ebe8cd6a53102ca80881fa9eb2ae653bf9cb08;p=u-boot.git

driver: rng: Do not check ARM_SMCCC_TRNG_VERSION

As described in the document SMC Calling Convention (ARM DEN 0028 1.5 F),
section 7 "Arm Architecture Calls", the SMC call SMCCC_ARCH_FEATURES is
not expected to support the function ID ARM_SMCCC_TRNG_VERSION. Trusted
Firmware-A follows up the specification in its implementation.

This commit removes the invocation to avoid the failure - which is a
wrong calling in U-boot. The later code invokes ARM_SMCCC_TRNG_VERSION
for retrieving the TRNG version, except it can read back the version
number, it also can be used to detect whether the TRNG is supported or
not.

Signed-off-by: Leo Yan <leo.yan@arm.com>
Reviewed-by: Weizhao Ouyang <o451686892@gmail.com>
---

diff --git a/drivers/rng/smccc_trng.c b/drivers/rng/smccc_trng.c
index f59b80666b..1da1affd8e 100644
--- a/drivers/rng/smccc_trng.c
+++ b/drivers/rng/smccc_trng.c
@@ -135,10 +135,6 @@ static bool smccc_trng_is_supported(void (*invoke_fn)(unsigned long a0, unsigned
 {
 	struct arm_smccc_res res;
 
-	(*invoke_fn)(ARM_SMCCC_ARCH_FEATURES, ARM_SMCCC_TRNG_VERSION, 0, 0, 0, 0, 0, 0, &res);
-	if (res.a0 == ARM_SMCCC_RET_NOT_SUPPORTED)
-		return false;
-
 	(*invoke_fn)(ARM_SMCCC_TRNG_VERSION, 0, 0, 0, 0, 0, 0, 0, &res);
 	if (res.a0 & BIT(31))
 		return false;