From: Weizhao Ouyang <o451686892@gmail.com>
To: Sughosh Ganu <sughosh.ganu@linaro.org>,
Heinrich Schuchardt <xypron.glpk@gmx.de>,
Tom Rini <trini@konsulko.com>,
Etienne Carriere <etienne.carriere@foss.st.com>,
Weizhao Ouyang <o451686892@gmail.com>,
Simon Glass <sjg@chromium.org>, Peng Fan <peng.fan@nxp.com>,
Ilias Apalodimas <ilias.apalodimas@linaro.org>,
Jens Wiklander <jens.wiklander@linaro.org>,
Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>,
u-boot@lists.denx.de
Subject: [PATCH v4 1/3] firmware: psci: Fix bind_smccc_features psci check
Date: Mon, 4 Mar 2024 14:42:40 +0000 [thread overview]
Message-ID: <20240304144242.11666-2-o451686892@gmail.com> (raw)
In-Reply-To: <20240304144242.11666-1-o451686892@gmail.com>
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
next prev parent reply other threads:[~2024-03-04 14:43 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-04 14:42 [PATCH v4 0/3] Random Number Generator fixes Weizhao Ouyang
2024-03-04 14:42 ` Weizhao Ouyang [this message]
2024-03-14 0:39 ` [PATCH v4 1/3] firmware: psci: Fix bind_smccc_features psci check 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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240304144242.11666-2-o451686892@gmail.com \
--to=o451686892@gmail.com \
--cc=abdellatif.elkhlifi@arm.com \
--cc=etienne.carriere@foss.st.com \
--cc=ilias.apalodimas@linaro.org \
--cc=jens.wiklander@linaro.org \
--cc=peng.fan@nxp.com \
--cc=sjg@chromium.org \
--cc=sughosh.ganu@linaro.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
--cc=xypron.glpk@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.