arm: Disable outer (L2) cache in kexec
authorThomas Gleixner <[tglx@linutronix.de]>
Sat, 31 Jul 2010 15:36:06 +0000 (21:06 +0530)
committerSantosh Shilimkar <santosh.shilimkar@ti.com>
Tue, 26 Oct 2010 06:09:56 +0000 (11:39 +0530)
commitae360a78f41164e7f9c4cf846696b5b6d8dae5c8
treecb96d4ecbb0c04e7c25a0b08b2dc7f979391a1dc
parent9a6655e49fd98f3748bb80da20705448aad9ee57
arm: Disable outer (L2) cache in kexec

kexec does not disable the outer cache before disabling the inner
caches in cpu_proc_fin(). So L2 is enabled across the kexec jump. When
the new kernel enables chaches again, it randomly crashes.

Disabling L2 before calling cpu_proc_fin() cures the problem.

Disabling L2 requires the following new functions: flush_all(),
inv_all() and disable(). Add them to outer_cache_fns and call them
from the kexec code.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Linus Walleij <linus.walleij@stericsson.com>
arch/arm/include/asm/outercache.h
arch/arm/kernel/machine_kexec.c