aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2006-12-12 12:14:57 -0500
committerLinus Torvalds <torvalds@woody.osdl.org>2006-12-13 12:27:08 -0500
commitec8c0446b6e2b67b5c8813eb517f4bf00efa99a9 (patch)
treee7c12d7c486c958a5e38888b41cfcd6a558f1aff /Documentation
parentbcd022801ee514e28c32837f0b3ce18c775f1a7b (diff)
[PATCH] Optimize D-cache alias handling on fork
Virtually index, physically tagged cache architectures can get away without cache flushing when forking. This patch adds a new cache flushing function flush_cache_dup_mm(struct mm_struct *) which for the moment I've implemented to do the same thing on all architectures except on MIPS where it's a no-op. Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/cachetlb.txt23
1 files changed, 17 insertions, 6 deletions
diff --git a/Documentation/cachetlb.txt b/Documentation/cachetlb.txt
index 53245c429f7d..73e794f0ff09 100644
--- a/Documentation/cachetlb.txt
+++ b/Documentation/cachetlb.txt
@@ -179,10 +179,21 @@ Here are the routines, one by one:
179 lines associated with 'mm'. 179 lines associated with 'mm'.
180 180
181 This interface is used to handle whole address space 181 This interface is used to handle whole address space
182 page table operations such as what happens during 182 page table operations such as what happens during exit and exec.
183 fork, exit, and exec. 183
1842) void flush_cache_dup_mm(struct mm_struct *mm)
185
186 This interface flushes an entire user address space from
187 the caches. That is, after running, there will be no cache
188 lines associated with 'mm'.
189
190 This interface is used to handle whole address space
191 page table operations such as what happens during fork.
192
193 This option is separate from flush_cache_mm to allow some
194 optimizations for VIPT caches.
184 195
1852) void flush_cache_range(struct vm_area_struct *vma, 1963) void flush_cache_range(struct vm_area_struct *vma,
186 unsigned long start, unsigned long end) 197 unsigned long start, unsigned long end)
187 198
188 Here we are flushing a specific range of (user) virtual 199 Here we are flushing a specific range of (user) virtual
@@ -199,7 +210,7 @@ Here are the routines, one by one:
199 call flush_cache_page (see below) for each entry which may be 210 call flush_cache_page (see below) for each entry which may be
200 modified. 211 modified.
201 212
2023) void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn) 2134) void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn)
203 214
204 This time we need to remove a PAGE_SIZE sized range 215 This time we need to remove a PAGE_SIZE sized range
205 from the cache. The 'vma' is the backing structure used by 216 from the cache. The 'vma' is the backing structure used by
@@ -220,7 +231,7 @@ Here are the routines, one by one:
220 231
221 This is used primarily during fault processing. 232 This is used primarily during fault processing.
222 233
2234) void flush_cache_kmaps(void) 2345) void flush_cache_kmaps(void)
224 235
225 This routine need only be implemented if the platform utilizes 236 This routine need only be implemented if the platform utilizes
226 highmem. It will be called right before all of the kmaps 237 highmem. It will be called right before all of the kmaps
@@ -232,7 +243,7 @@ Here are the routines, one by one:
232 243
233 This routing should be implemented in asm/highmem.h 244 This routing should be implemented in asm/highmem.h
234 245
2355) void flush_cache_vmap(unsigned long start, unsigned long end) 2466) void flush_cache_vmap(unsigned long start, unsigned long end)
236 void flush_cache_vunmap(unsigned long start, unsigned long end) 247 void flush_cache_vunmap(unsigned long start, unsigned long end)
237 248
238 Here in these two interfaces we are flushing a specific range 249 Here in these two interfaces we are flushing a specific range