linux/arch/mips/mm
Ralf Baechle 2eaa7ec286 [MIPS] Handle I-cache coherency in flush_cache_range()
So far flush_cache_range() did't consider the I-cache largely because it
did rarely ever matter to real world code.  This was working primarily
because normally code and data are don't share the same pages - with the
exception of MIPS16 code which uses address constants embedded between
the code.   The following sequence of events may break the code:

 o MIPS16 executable being loaded
 o dynamic linker relocates the address constants embedded into the code:
 o   Uses mprotect(2) to make code pages PROT_READ|PROT_WRITE
 o   Performs the actual relocations by writing to the pages which likely
     are COW.  Because no PROT_EXEC is set I-cache coherence will not be
     considered.
 o   Uses mprotect(2) to switch code pages back to PROT_READ|PROT_EXEC.
     This results in a call to flush_cache_range() which also does not
     consider I-caches.
 o => executing the page just having been relocated may now result in the
   I-cache getting refilled with stale data from memory.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2008-02-19 17:01:31 +00:00
..
c-r3k.c [MIPS] c-r3k: Implement flush_cache_range() 2007-10-29 19:35:36 +00:00
c-r4k.c [MIPS] Handle I-cache coherency in flush_cache_range() 2008-02-19 17:01:31 +00:00
c-tx39.c [MIPS] Allow hardwiring of the CPU type to a single type for optimization. 2007-10-11 23:46:15 +01:00
cache.c Remove dma_cache_(wback|inv|wback_inv) functions 2007-10-17 08:42:57 -07:00
cerr-sb1.c [MIPS] Sibyte: Replace use of removed IO_SPACE_BASE with IOADDR. 2007-11-15 23:21:49 +00:00
cex-gen.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cex-sb1.S [MIPS] Sibyte: #if CONFIG_* doesn't fly. 2006-02-21 16:58:23 +00:00
dma-default.c [MIPS] Use correct dma flushing in dma_cache_sync() 2008-01-29 10:14:58 +00:00
extable.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
fault.c pid namespaces: define is_global_init() and is_container_init() 2007-10-19 11:53:37 -07:00
highmem.c [MIPS] Remove LIMITED_DMA support 2007-05-11 14:28:31 +01:00
init.c [MIPS] 64-bit Sibyte kernels need DMA32. 2007-11-26 17:26:14 +00:00
ioremap.c Detach sched.h from mm.h 2007-05-21 09:18:19 -07:00
Makefile [MIPS] Split the micro-assembler from tlbex.c. 2008-02-01 14:48:44 +00:00
pg-r4k.c [MIPS] R4000/R4400 daddiu erratum workaround 2008-01-29 10:14:55 +00:00
pg-sb1.c [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
pgtable-32.c [MIPS] Add external declaration of pagetable_init() to pgalloc.h 2007-02-18 21:31:36 +00:00
pgtable-64.c [MIPS] Add external declaration of pagetable_init() to pgalloc.h 2007-02-18 21:31:36 +00:00
pgtable.c [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
sc-ip22.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sc-mips.c [MIPS] Fix "no space between function name and open parenthesis" warnings. 2007-10-11 23:46:15 +01:00
sc-r5k.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sc-rm7k.c [MIPS] Use __ffs() instead of ffs() for waybit calculation. 2006-04-19 04:14:30 +02:00
tlb-r3k.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
tlb-r4k.c [MIPS] Fix "no space between function name and open parenthesis" warnings. 2007-10-11 23:46:15 +01:00
tlb-r8k.c [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
tlbex-fault.S [MIPS] Stacktrace build-fix and improvement 2006-10-01 23:16:58 +01:00
tlbex.c [MIPS] Split the micro-assembler from tlbex.c. 2008-02-01 14:48:44 +00:00
uasm.c [MIPS] Split the micro-assembler from tlbex.c. 2008-02-01 14:48:44 +00:00
uasm.h [MIPS] Split the micro-assembler from tlbex.c. 2008-02-01 14:48:44 +00:00