From 1e2abe05a89cb8ff073837f733185fba2f112610 Mon Sep 17 00:00:00 2001 From: Furquan Shaikh Date: Mon, 13 Apr 2015 19:57:54 -0700 Subject: armv8/secmon: Disable and Enable GIC in PSCI path Disable and enable GIC before switching off a CPU and after bringing it up back respectively. BUG=None BRANCH=None TEST=Compiles successfully and psci commands work for ryu. Change-Id: Ib43af60e994e3d072e897a59595775d0b2dcef83 Signed-off-by: Patrick Georgi Original-Commit-Id: d5271d731f0a569583c2b32ef6726dadbfa846d3 Original-Change-Id: I672945fcb0ff416008a1aad5ed625cfa91bb9cbd Original-Signed-off-by: Furquan Shaikh Original-Reviewed-on: https://chromium-review.googlesource.com/265623 Original-Trybot-Ready: Furquan Shaikh Original-Tested-by: Furquan Shaikh Original-Reviewed-by: Aaron Durbin Original-Commit-Queue: Furquan Shaikh Reviewed-on: http://review.coreboot.org/9926 Reviewed-by: Stefan Reinauer Tested-by: build bot (Jenkins) --- src/arch/arm64/armv8/secmon/Makefile.inc | 1 + src/arch/arm64/armv8/secmon/psci.c | 4 ++++ 2 files changed, 5 insertions(+) (limited to 'src/arch/arm64') diff --git a/src/arch/arm64/armv8/secmon/Makefile.inc b/src/arch/arm64/armv8/secmon/Makefile.inc index 5284d39f39..ace00b441e 100644 --- a/src/arch/arm64/armv8/secmon/Makefile.inc +++ b/src/arch/arm64/armv8/secmon/Makefile.inc @@ -39,6 +39,7 @@ secmon-y += ../cpu.S secmon-y += ../exception.c secmon-y += ../../cpu.c secmon-y += ../../transition_asm.S ../../transition.c +secmon-y += ../../../../drivers/gic/gic.c ramstage-srcs += $(SECMON_RAMSTAGE) diff --git a/src/arch/arm64/armv8/secmon/psci.c b/src/arch/arm64/armv8/secmon/psci.c index a651b6e152..70251b2b06 100644 --- a/src/arch/arm64/armv8/secmon/psci.c +++ b/src/arch/arm64/armv8/secmon/psci.c @@ -17,6 +17,7 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA, 02110-1301 USA */ +#include #include #include #include @@ -231,6 +232,7 @@ void psci_turn_on_self(const struct cpu_action *action) void psci_cpu_entry(void) { + gic_enable(); /* * Just wait for an action to be performed. Only CPU_ON is supported * initially. i.e. no power down then wake. @@ -327,6 +329,8 @@ static int psci_turn_off_node(struct psci_node *e, int level, if (ret != PSCI_RET_SUCCESS) return ret; + gic_disable(); + /* Should never return. */ ret = soc_psci_ops.cmd_commit(&cmd); -- cgit v1.2.3