1
linux/arch/arm/mm
Will Deacon 38a8914f9a 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>
2011-07-06 20:48:08 +01:00
..
abort-ev4.S
abort-ev4t.S
abort-ev5t.S
abort-ev5tj.S
abort-ev6.S ARM: v6k: select clear exclusive code seqences according to V6 variants 2011-02-02 21:23:28 +00:00
abort-ev7.S
abort-lv4t.S
abort-macro.S
abort-nommu.S
alignment.c
cache-fa.S
cache-feroceon-l2.c
cache-l2x0.c ARM: 6987/1: l2x0: fix disabling function to avoid deadlock 2011-07-06 20:48:08 +01:00
cache-tauros2.c
cache-v3.S
cache-v4.S
cache-v4wb.S Fix common misspellings 2011-03-31 11:26:23 -03:00
cache-v4wt.S Fix common misspellings 2011-03-31 11:26:23 -03:00
cache-v6.S ARM: 6941/1: cache: ensure MVA is cacheline aligned in flush_kern_dcache_area 2011-05-26 12:14:32 +01:00
cache-v7.S ARM: 6941/1: cache: ensure MVA is cacheline aligned in flush_kern_dcache_area 2011-05-26 12:14:32 +01:00
cache-xsc3l2.c
context.c Revert "ARM: 6944/1: mm: allow ASID 0 to be allocated to tasks" 2011-06-09 10:13:16 +01:00
copypage-fa.c
copypage-feroceon.c
copypage-v3.c
copypage-v4mc.c
copypage-v4wb.c
copypage-v4wt.c
copypage-v6.c
copypage-xsc3.c
copypage-xscale.c
dma-mapping.c Merge branches 'fixes', 'pgt-next' and 'versatile' into devel 2011-03-20 09:32:12 +00:00
extable.c
fault-armv.c ARM: pgtable: add pud-level code 2011-02-21 19:24:14 +00:00
fault.c ARM: pgtable: add pud-level code 2011-02-21 19:24:14 +00:00
fault.h
flush.c Merge branches 'consolidate', 'ep93xx', 'fixes', 'misc', 'mmci', 'remove' and 'spear' into for-linus 2011-05-23 19:27:40 +01:00
highmem.c
idmap.c ARM: pgtable: add pud-level code 2011-02-21 19:24:14 +00:00
init.c ARM: initrd: disable initrds outside of memory 2011-06-11 00:43:21 +01:00
iomap.c
ioremap.c Revert "ARM: relax ioremap prohibition (309caa9) for -final and -stable" 2010-12-24 09:49:52 +00:00
Kconfig Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-03-17 19:08:06 -07:00
Makefile ARM: v6k: introduce CPU_V6K option 2011-02-02 21:23:26 +00:00
mm.h ARM: kill pmd_off() 2011-05-26 19:50:30 +01:00
mmap.c ARM: 6877/1: the ADDR_NO_RANDOMIZE personality flag should be honored with mmap() 2011-04-14 09:15:24 +01:00
mmu.c ARM: move memory layout sanity checking before meminfo initialization 2011-07-05 20:27:16 +01:00
nommu.c ARM: move memory layout sanity checking before meminfo initialization 2011-07-05 20:27:16 +01:00
pabort-legacy.S
pabort-v6.S
pabort-v7.S
pgd.c Merge branches 'fixes', 'pgt-next' and 'versatile' into devel 2011-03-20 09:32:12 +00:00
proc-arm6_7.S ARM: pm: add generic CPU suspend/resume support 2011-02-22 17:11:23 +00:00
proc-arm7tdmi.S ARM: 6948/1: Fix .size directives for __arm{7,9}tdmi_proc_info 2011-06-06 10:56:10 +01:00
proc-arm9tdmi.S ARM: 6948/1: Fix .size directives for __arm{7,9}tdmi_proc_info 2011-06-06 10:56:10 +01:00
proc-arm720.S Fix common misspellings 2011-03-31 11:26:23 -03:00
proc-arm740.S ARM: pm: add generic CPU suspend/resume support 2011-02-22 17:11:23 +00:00
proc-arm920.S Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into fixes 2011-04-13 23:32:13 +01:00
proc-arm922.S Fix common misspellings 2011-03-31 11:26:23 -03:00
proc-arm925.S Fix common misspellings 2011-03-31 11:26:23 -03:00
proc-arm926.S ARM: Make consolidated PM sleep code depend on PM_SLEEP 2011-04-02 10:08:55 +01:00
proc-arm940.S ARM: pm: add generic CPU suspend/resume support 2011-02-22 17:11:23 +00:00
proc-arm946.S ARM: pm: add generic CPU suspend/resume support 2011-02-22 17:11:23 +00:00
proc-arm1020.S Fix common misspellings 2011-03-31 11:26:23 -03:00
proc-arm1020e.S Fix common misspellings 2011-03-31 11:26:23 -03:00
proc-arm1022.S Fix common misspellings 2011-03-31 11:26:23 -03:00
proc-arm1026.S Fix common misspellings 2011-03-31 11:26:23 -03:00
proc-fa526.S ARM: pm: add generic CPU suspend/resume support 2011-02-22 17:11:23 +00:00
proc-feroceon.S ARM: pm: add generic CPU suspend/resume support 2011-02-22 17:11:23 +00:00
proc-macros.S Fix common misspellings 2011-03-31 11:26:23 -03:00
proc-mohawk.S ARM: pm: add generic CPU suspend/resume support 2011-02-22 17:11:23 +00:00
proc-sa110.S ARM: pm: add generic CPU suspend/resume support 2011-02-22 17:11:23 +00:00
proc-sa1100.S ARM: Make consolidated PM sleep code depend on PM_SLEEP 2011-04-02 10:08:55 +01:00
proc-syms.c
proc-v6.S ARM: 6942/1: mm: make TTBR1 always point to swapper_pg_dir on ARMv6/7 2011-05-26 12:14:32 +01:00
proc-v7.S ARM: pm: ensure ARMv7 CPUs save and restore the TLS register 2011-06-24 08:47:09 +01:00
proc-xsc3.S ARM: Make consolidated PM sleep code depend on PM_SLEEP 2011-04-02 10:08:55 +01:00
proc-xscale.S ARM: Fix .size directive for xscale_dma_a0_map_area 2011-04-28 17:56:31 +08:00
tlb-fa.S
tlb-v3.S
tlb-v4.S
tlb-v4wb.S
tlb-v4wbi.S
tlb-v6.S
tlb-v7.S
vmregion.c ARM: DMA: top-down allocation in DMA coherent region 2011-02-23 17:24:11 +00:00
vmregion.h