[patch 2/2] arm: Implement l2x0 cache disable function

Catalin Marinas catalin.marinas at arm.com
Fri Jul 2 07:47:20 EDT 2010


On Thu, 2010-07-01 at 17:05 +0100, Thomas Gleixner wrote:
> This function is called from kexec code before the inner caches are
> disabled to prevent random crashes in the new kernel.
> 
> Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
> Index: linux-2.6/arch/arm/mm/cache-l2x0.c
> ===================================================================
> --- linux-2.6.orig/arch/arm/mm/cache-l2x0.c
> +++ linux-2.6/arch/arm/mm/cache-l2x0.c
> @@ -206,6 +206,12 @@ static void l2x0_flush_range(unsigned lo
>         spin_unlock_irqrestore(&l2x0_lock, flags);
>  }
> 
> +static void l2x0_cache_disable(void)
> +{
> +       l2x0_inv_all();
> +       writel(0, l2x0_base + L2X0_CTRL);
> +}

Even if we go this route, we need an l2x0_flush_all() rather than
invalidate here as the latter removes dirty cache lines without evicting
them first.

-- 
Catalin




More information about the linux-arm-kernel mailing list