firmware: psci: Do not bind driver if U-Boot runs in EL3
authorMichal Simek <michal.simek@xilinx.com>
Thu, 13 Aug 2020 10:43:22 +0000 (12:43 +0200)
committerTom Rini <trini@konsulko.com>
Mon, 24 Aug 2020 18:11:31 +0000 (14:11 -0400)
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>
drivers/firmware/psci.c

index 7d2e49f..68953cc 100644 (file)
@@ -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");