diff options
author | Atsushi Nemoto <anemo@mba.ocn.ne.jp> | 2006-08-25 04:55:31 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2006-09-27 08:37:37 -0400 |
commit | f6502791d780b22fc147150137704a07a05ba361 (patch) | |
tree | 687dbfcd20e60c480868eb1b64f784e8084b6e4b /arch/mips/mm/c-r4k.c | |
parent | a94d702049569401c65b579d0751ce282f962b41 (diff) |
[MIPS] Do not use drop_mmu_context to flusing other task's VIPT I-cache.
c-r4k.c and c-sb1.c use drop_mmu_context() to flush virtually tagged
I-caches, but this does not work for flushing other task's icache. This
is for example triggered by copy_to_user_page() called from ptrace(2).
Use indexed flush for such cases.
Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/mm/c-r4k.c')
-rw-r--r-- | arch/mips/mm/c-r4k.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c index 4e1498246343..2d729f6f6348 100644 --- a/arch/mips/mm/c-r4k.c +++ b/arch/mips/mm/c-r4k.c | |||
@@ -475,7 +475,7 @@ static inline void local_r4k_flush_cache_page(void *args) | |||
475 | } | 475 | } |
476 | } | 476 | } |
477 | if (exec) { | 477 | if (exec) { |
478 | if (cpu_has_vtag_icache) { | 478 | if (cpu_has_vtag_icache && mm == current->active_mm) { |
479 | int cpu = smp_processor_id(); | 479 | int cpu = smp_processor_id(); |
480 | 480 | ||
481 | if (cpu_context(cpu, mm) != 0) | 481 | if (cpu_context(cpu, mm) != 0) |
@@ -599,7 +599,7 @@ static inline void local_r4k_flush_icache_page(void *args) | |||
599 | * We're not sure of the virtual address(es) involved here, so | 599 | * We're not sure of the virtual address(es) involved here, so |
600 | * we have to flush the entire I-cache. | 600 | * we have to flush the entire I-cache. |
601 | */ | 601 | */ |
602 | if (cpu_has_vtag_icache) { | 602 | if (cpu_has_vtag_icache && vma->vm_mm == current->active_mm) { |
603 | int cpu = smp_processor_id(); | 603 | int cpu = smp_processor_id(); |
604 | 604 | ||
605 | if (cpu_context(cpu, vma->vm_mm) != 0) | 605 | if (cpu_context(cpu, vma->vm_mm) != 0) |