From: Michal Simek <michal.simek@xilinx.com>
Date: Thu, 13 Aug 2020 10:43:22 +0000 (+0200)
Subject: firmware: psci: Do not bind driver if U-Boot runs in EL3
X-Git-Tag: v2025.01-rc5-pxa1908~2242^2~20
X-Git-Url: http://git.dujemihanovic.xyz/img/html/static/%7B%7B?a=commitdiff_plain;h=10e4d64e345b6b684d27d3da6ed8d887c8e45f76;p=u-boot.git

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>
---

diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c
index 7d2e49fd3e..68953cc4f4 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");