5edf71ae12
We must not call TLB maintainence operations with interrupts disabled, otherwise we risk a lockup in the SMP IPI code. This means that consistent_free() can not be called from a context with IRQs disabled. In addition, we must not hold the lock in consistent_free when we call flush_tlb_kernel_range(). However, we must continue to prevent consistent_alloc() from re-using the memory region until we've finished tearing down the mapping and dealing with the TLB. Therefore, leave the vm_region entry in the list, but mark it inactive before dropping the lock and starting the tear-down process. After the mapping has been torn down, re-acquire the lock and remove the entry from the list. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
abort-ev4.S | ||
abort-ev4t.S | ||
abort-ev5t.S | ||
abort-ev5tj.S | ||
abort-ev6.S | ||
abort-lv4t.S | ||
abort-macro.S | ||
alignment.c | ||
cache-v3.S | ||
cache-v4.S | ||
cache-v4wb.S | ||
cache-v4wt.S | ||
cache-v6.S | ||
consistent.c | ||
copypage-v3.S | ||
copypage-v4mc.c | ||
copypage-v4wb.S | ||
copypage-v4wt.S | ||
copypage-v6.c | ||
copypage-xscale.c | ||
discontig.c | ||
extable.c | ||
fault-armv.c | ||
fault.c | ||
fault.h | ||
flush.c | ||
init.c | ||
ioremap.c | ||
mm-armv.c | ||
mmap.c | ||
mmu.c | ||
proc-arm6_7.S | ||
proc-arm720.S | ||
proc-arm920.S | ||
proc-arm922.S | ||
proc-arm925.S | ||
proc-arm926.S | ||
proc-arm1020.S | ||
proc-arm1020e.S | ||
proc-arm1022.S | ||
proc-arm1026.S | ||
proc-macros.S | ||
proc-sa110.S | ||
proc-sa1100.S | ||
proc-syms.c | ||
proc-v6.S | ||
proc-xscale.S | ||
tlb-v3.S | ||
tlb-v4.S | ||
tlb-v4wb.S | ||
tlb-v4wbi.S | ||
tlb-v6.S |