From: Gregory CLEMENT Date: Mon, 7 Jan 2013 10:28:42 +0000 (+0100) Subject: ARM: 7616/1: cache-l2x0: aurora: Use writel_relaxed instead of writel X-Git-Tag: upstream/snapshot3+hdmi~5819^2~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8a3a180d21793f2e4386b3cb61c48322564fc80a;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git ARM: 7616/1: cache-l2x0: aurora: Use writel_relaxed instead of writel The use of writel instead of writel_relaxed lead to deadlock in some situation (SMP on Armada 370 for instance). The use of writel_relaxed as it was done in the rest of this driver fixes this bug. Signed-off-by: Gregory CLEMENT Tested-by: Thomas Petazzoni Acked-by: Jason Cooper Signed-off-by: Russell King --- diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c index 55ca637..c2f3739 100644 --- a/arch/arm/mm/cache-l2x0.c +++ b/arch/arm/mm/cache-l2x0.c @@ -460,8 +460,8 @@ static void aurora_pa_range(unsigned long start, unsigned long end, unsigned long flags; raw_spin_lock_irqsave(&l2x0_lock, flags); - writel(start, l2x0_base + AURORA_RANGE_BASE_ADDR_REG); - writel(end, l2x0_base + offset); + writel_relaxed(start, l2x0_base + AURORA_RANGE_BASE_ADDR_REG); + writel_relaxed(end, l2x0_base + offset); raw_spin_unlock_irqrestore(&l2x0_lock, flags); cache_sync(); @@ -675,8 +675,9 @@ static void pl310_resume(void) static void aurora_resume(void) { if (!(readl(l2x0_base + L2X0_CTRL) & L2X0_CTRL_EN)) { - writel(l2x0_saved_regs.aux_ctrl, l2x0_base + L2X0_AUX_CTRL); - writel(l2x0_saved_regs.ctrl, l2x0_base + L2X0_CTRL); + writel_relaxed(l2x0_saved_regs.aux_ctrl, + l2x0_base + L2X0_AUX_CTRL); + writel_relaxed(l2x0_saved_regs.ctrl, l2x0_base + L2X0_CTRL); } }