aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mm/flush.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2009-10-25 10:31:40 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2009-12-04 09:58:51 -0500
commitea201dbb78651c71c56e440b8b3132906bc7456d (patch)
tree53fa8679229960bb585766c5b49301dee834bcec /arch/arm/mm/flush.c
parent9e95922b1016ac941db7edcf6b6088b3c2e916c8 (diff)
ARM: I-cache: avoid flushing in flush_cache_mm()
flush_cache_mm() is called in two cases: 1. when a process exits, just before the page tables are torn down. We can allow the stale lines to evict themselves over time without causing any harm. 2. when a process forks, and we've allocated a new ASID. The instruction cache issues are dealt with as pages are brought into the new process address space. Flushing the I-cache here is therefore unnecessary. However, we must keep the VIPT aliasing D-cache flush to ensure that any dirty cache lines are not written back after the pages have been reallocated for some other use - which would result in corruption. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm/flush.c')
-rw-r--r--arch/arm/mm/flush.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c
index 9770e27dd58..f8feb5d919f 100644
--- a/arch/arm/mm/flush.c
+++ b/arch/arm/mm/flush.c
@@ -50,7 +50,6 @@ void flush_cache_mm(struct mm_struct *mm)
50 : 50 :
51 : "r" (0) 51 : "r" (0)
52 : "cc"); 52 : "cc");
53 __flush_icache_all();
54 } 53 }
55} 54}
56 55