diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-10-25 10:31:40 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-12-04 09:58:51 -0500 |
commit | ea201dbb78651c71c56e440b8b3132906bc7456d (patch) | |
tree | 53fa8679229960bb585766c5b49301dee834bcec | |
parent | 9e95922b1016ac941db7edcf6b6088b3c2e916c8 (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>
-rw-r--r-- | arch/arm/mm/flush.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c index 9770e27dd581..f8feb5d919fe 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 | ||