]> git.karo-electronics.de Git - linux-beck.git/commitdiff
[ARM] Kirkwood: invalidate L2 cache before enabling it
authorMaxime Bizon <mbizon@freebox.fr>
Fri, 27 Mar 2009 17:42:19 +0000 (18:42 +0100)
committerNicolas Pitre <nico@cam.org>
Sun, 29 Mar 2009 02:39:30 +0000 (22:39 -0400)
I get random oopses on my Kirkwood board at startup when L2 cache is
enabled. FYI I'm using Marvell uboot version 3.4.16

Each boot produces the same oops, but anything that changes the kernel
size (even only changing initramfs) makes the oops different.

I noticed that nothing invalidates the L2 cache before enabling it,
doing so fixes my problem.

Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
arch/arm/mm/cache-feroceon-l2.c

index d6dd83826f8af0baffd833ad11807d18377d5cfb..1afed5068c2df92ed2e58f6a42faee24745b111d 100644 (file)
@@ -115,6 +115,10 @@ static inline void l2_inv_pa_range(unsigned long start, unsigned long end)
        raw_local_irq_restore(flags);
 }
 
+static inline void l2_inv_all(void)
+{
+       __asm__("mcr p15, 1, %0, c15, c11, 0" : : "r" (0));
+}
 
 /*
  * Linux primitives.
@@ -321,6 +325,7 @@ static void __init enable_l2(void)
 
                d = flush_and_disable_dcache();
                i = invalidate_and_disable_icache();
+               l2_inv_all();
                write_extra_features(u | 0x00400000);
                if (i)
                        enable_icache();