diff mbox series

Revert "ARM: uniphier: add weird workaround code for LD20"

Message ID 20200706042304.15853-1-yamada.masahiro@socionext.com
State Superseded
Headers show
Series Revert "ARM: uniphier: add weird workaround code for LD20" | expand

Commit Message

Masahiro Yamada July 6, 2020, 4:23 a.m. UTC
This reverts commit 45f41c134baf5ff1bbf59d33027f6c79884fa4d9.

This weird workaround was the best I came up with at that time
to boot U-Boot from TF-A.

I noticed U-Boot successfully boots on LD20 (i.e. CA72 CPU) by using
the latest TF-A.

Specifically, since the following TF-A commit, U-Boot runs at EL2
instead of EL1, and this issue does not happen:

|commit f998a052fd94ea082833109f25b94ed5bfa24e8b
|Author: Masahiro Yamada <yamada.masahiro at socionext.com>
|Date:   Thu Jul 25 10:57:38 2019 +0900
|
|    uniphier: run BL33 at EL2
|
|    All the SoCs in 64-bit UniPhier SoC family support EL2.
|
|    Just hard-code MODE_EL2 instead of using el_implemented() helper.
|
|    Change-Id: I7ab48002c5205bc8c013e1b46313b57d6c431db0
|    Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>

However, if I revert that, U-Boot hangs on LD20, presumably because
some EL1 code in U-Boot triggers this issue.

Now that commit "arm64: issue ISB after updating system registers"
fixes this issue properly, this weird workaround is unneeded
irrespective of the exception level at which U-Boot runs.

Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
---

 arch/arm/mach-uniphier/arm64/Makefile        |  1 -
 arch/arm/mach-uniphier/arm64/lowlevel_init.S | 13 -------------
 2 files changed, 14 deletions(-)
 delete mode 100644 arch/arm/mach-uniphier/arm64/lowlevel_init.S
diff mbox series

Patch

diff --git a/arch/arm/mach-uniphier/arm64/Makefile b/arch/arm/mach-uniphier/arm64/Makefile
index c569551120c7..750c4f756edb 100644
--- a/arch/arm/mach-uniphier/arm64/Makefile
+++ b/arch/arm/mach-uniphier/arm64/Makefile
@@ -1,4 +1,3 @@ 
 # SPDX-License-Identifier: GPL-2.0+
 
 obj-y += mem_map.o
-obj-$(CONFIG_ARCH_UNIPHIER_LD20) += lowlevel_init.o
diff --git a/arch/arm/mach-uniphier/arm64/lowlevel_init.S b/arch/arm/mach-uniphier/arm64/lowlevel_init.S
deleted file mode 100644
index f4e5cbbbd1cc..000000000000
--- a/arch/arm/mach-uniphier/arm64/lowlevel_init.S
+++ /dev/null
@@ -1,13 +0,0 @@ 
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * Copyright (C) 2017 Socionext Inc.
- */
-
-#include <linux/linkage.h>
-
-ENTRY(lowlevel_init)
-	/* LD20 needs the following code to boot.  I do not know why. */
-	mrs	x0, sctlr_el1
-	msr	sctlr_el1, x0
-	ret
-ENDPROC(lowlevel_init)