summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-pxa/sleep.S
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2011-07-01 14:36:19 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2011-07-06 20:48:08 +0100
commit38a8914f9ac2379293944f613e6ca24b61373de8 (patch)
tree2e414d49cb202c610899b8871626fb9eda580452 /arch/arm/mach-pxa/sleep.S
parent186dcaa448c0a7a99933efac2af225fc4fe82c53 (diff)
downloadblackbird-op-linux-38a8914f9ac2379293944f613e6ca24b61373de8.tar.gz
blackbird-op-linux-38a8914f9ac2379293944f613e6ca24b61373de8.zip
ARM: 6987/1: l2x0: fix disabling function to avoid deadlock
The l2x0_disable function attempts to writel with the l2x0_lock held. This results in deadlock when the writel contains an outer_sync call for the platform since the l2x0_lock is already held by the disable function. A further problem is that disabling the L2 without flushing it first can lead to the spin_lock operation becoming visible after the spin_unlock, causing any subsequent L2 maintenance to deadlock. This patch replaces the writel with a call to writel_relaxed in the disabling code and adds a flush before disabling in the control register, preventing livelock from occurring. Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-pxa/sleep.S')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud