[linux-yocto] [PATCH 25/42] arch/arm/mach-axxia: Enable L3

Cristian Bercaru cristian.bercaru at windriver.com
Thu Jun 11 01:32:10 PDT 2015


From: John Jacques <john.jacques at lsi.com>

In some cases, the boot loader will leave the L3 cache in
SFONLY mode.  This is required because the early fixup
code in arch/arm/boot/compressed does not flush L3 cache.
This commit causes Linux to enable the L3 cache in the
arch/arm/mach-axxia startup code.

Signed-off-by: John Jacques <john.jacques at lsi.com>
---
 arch/arm/mach-axxia/axxia.c |   14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/arch/arm/mach-axxia/axxia.c b/arch/arm/mach-axxia/axxia.c
index 59dd9f8..5e07541 100644
--- a/arch/arm/mach-axxia/axxia.c
+++ b/arch/arm/mach-axxia/axxia.c
@@ -63,9 +63,6 @@ static const char *axxia_dt_match[] __initconst = {
 };
 
 static void __iomem *base;
-
-#ifdef CONFIG_KEXEC
-
 static void __iomem *dickens;
 
 static void set_l3_pstate(u32 newstate)
@@ -94,14 +91,12 @@ static void set_l3_pstate(u32 newstate)
 static void
 flush_l3(void)
 {
-	/* Shutdown to flush */
-	set_l3_pstate(0);
+	/* Switch to SFONLY to flush */
+	set_l3_pstate(1);
 	/* ...and then back up again */
 	set_l3_pstate(3);
 }
 
-#endif
-
 static struct map_desc axxia_static_mappings[] __initdata = {
 #ifdef CONFIG_DEBUG_LL
 	{
@@ -203,12 +198,13 @@ static struct notifier_block axxia_amba_nb = {
 void __init axxia_dt_init(void)
 {
 	base = ioremap(0x2010000000, 0x40000);
-#ifdef CONFIG_KEXEC
 	if (!of_find_compatible_node(NULL, NULL, "lsi,axm5500-sim")) {
 		dickens = ioremap(0x2000000000, SZ_4M);
+#ifdef CONFIG_KEXEC
 		kexec_reinit = flush_l3;
-	}
 #endif
+		flush_l3();
+	}
 
 	bus_register_notifier(&platform_bus_type, &axxia_platform_nb);
 	bus_register_notifier(&amba_bustype, &axxia_amba_nb);
-- 
1.7.9.5



More information about the linux-yocto mailing list