Check whether the SCU was already initialised
authorCatalin Marinas <catalin.marinas@arm.com>
Wed, 4 Nov 2009 12:16:38 +0000 (12:16 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Thu, 5 Nov 2009 10:10:36 +0000 (10:10 +0000)
If Linux is running in non-secure mode, this register may have been
already initialised and writing to the control register not allowed.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm/kernel/smp_scu.c

index d3831f6..9ab4149 100644 (file)
@@ -37,6 +37,10 @@ void __init scu_enable(void __iomem *scu_base)
        u32 scu_ctrl;
 
        scu_ctrl = __raw_readl(scu_base + SCU_CTRL);
+       /* already enabled? */
+       if (scu_ctrl & 1)
+               return;
+
        scu_ctrl |= 1;
        __raw_writel(scu_ctrl, scu_base + SCU_CTRL);