Thread (11 messages) flat view 11 messages, 2 authors, 2011-06-16
DORMANTno replies REVIEWED: 3 (3M)

Revision v3 of 8 in this series; 1 review trailer.

Revisions (8)
  1. v1 [diff vs current]
  2. v2 [diff vs current]
  3. v3 [diff vs current]
  4. v3 current
  5. v4 [diff vs current]
  6. v4 [diff vs current]
  7. v4 [diff vs current]
  8. v4 [diff vs current]

[PATCH v3 1/9] ARM: l2x0: fix disabling function to avoid deadlock

From: catalin.marinas@arm.com (Catalin Marinas)
Date: 2011-06-16 14:53:26

On Wed, Jun 15, 2011 at 06:23:12PM +0100, Will Deacon wrote:
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.

Signed-off-by: Will Deacon <redacted>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>

-- 
Catalin
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help