aboutsummaryrefslogtreecommitdiff
path: root/drivers/firmware/psci.c
diff options
context:
space:
mode:
authorMichal Simek <michal.simek@xilinx.com>2020-08-13 12:43:22 +0200
committerTom Rini <trini@konsulko.com>2020-08-24 14:11:31 -0400
commit10e4d64e345b6b684d27d3da6ed8d887c8e45f76 (patch)
treee74f81cb34502d8c6d668a4c3e2697a70764ff83 /drivers/firmware/psci.c
parent565add124de00c994652a0d2d6d1eb6b2a7c9553 (diff)
downloadu-boot-10e4d64e345b6b684d27d3da6ed8d887c8e45f76.zip
u-boot-10e4d64e345b6b684d27d3da6ed8d887c8e45f76.tar.gz
u-boot-10e4d64e345b6b684d27d3da6ed8d887c8e45f76.tar.bz2
firmware: psci: Do not bind driver if U-Boot runs in EL3
There is no reason to bind psci driver if U-Boot runs in EL3 because SMC/HVC instructions can't be called. That's why detect this state and don't let user to crash from prompt by performing reset or poweroff commands (if enabled). Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Diffstat (limited to 'drivers/firmware/psci.c')
-rw-r--r--drivers/firmware/psci.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c
index 7d2e49f..68953cc 100644
--- a/drivers/firmware/psci.c
+++ b/drivers/firmware/psci.c
@@ -19,6 +19,7 @@
#include <linux/errno.h>
#include <linux/printk.h>
#include <linux/psci.h>
+#include <asm/system.h>
#define DRIVER_NAME "psci"
@@ -73,6 +74,11 @@ static int psci_probe(struct udevice *dev)
{
const char *method;
+#if defined(CONFIG_ARM64)
+ if (current_el() == 3)
+ return -EINVAL;
+#endif
+
method = ofnode_read_string(dev_ofnode(dev), "method");
if (!method) {
pr_warn("missing \"method\" property\n");