linux/arch/ppc/kernel
Benjamin Herrenschmidt b98ac05d5e [POWERPC] 4xx: Deal with 44x virtually tagged icache
The 44x family has an interesting "feature" which is a virtually
tagged instruction cache (yuck !). So far, we haven't dealt with
it properly, which means we've been mostly lucky or people didn't
report the problems, unless people have been running custom patches
in their distro...

This is an attempt at fixing it properly. I chose to do it by
setting a global flag whenever we change a PTE that was previously
marked executable, and flush the entire instruction cache upon
return to user space when that happens.

This is a bit heavy handed, but it's hard to do more fine grained
flushes as the icbi instruction, on those processor, for some very
strange reasons (since the cache is virtually mapped) still requires
a valid TLB entry for reading in the target address space, which
isn't something I want to deal with.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
2007-11-01 07:15:30 -05:00
..
asm-offsets.c rename thread_info to stack 2007-05-09 12:30:56 -07:00
cpu_setup_power4.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
entry.S [POWERPC] 4xx: Deal with 44x virtually tagged icache 2007-11-01 07:15:30 -05:00
head.S [POWERPC] Remove APUS support from arch/ppc 2007-09-17 15:15:04 +10:00
head_4xx.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
head_8xx.S [PPC] 8xx: Fix r3 trashing due to 8MB TLB page instantiation 2007-09-10 16:01:22 -05:00
head_44x.S [PPC] Use cpu setup routines from cpu_setup_44x.S for ARCH=ppc 2007-10-04 11:02:09 +10:00
head_booke.h [PATCH] ppc32: fix ppc44x fpu build 2005-11-10 11:24:06 +11:00
head_fsl_booke.S [POWERPC] 85xx: Drop use of SYNC macro in head_fsl_booke.S 2007-02-13 16:13:27 -06:00
machine_kexec.c Storage class should be first 2006-06-26 18:57:34 +02:00
Makefile [POWERPC] 8xx: generic 8xx code arch/powerpc port 2007-02-07 14:01:02 +11:00
misc.S [POWERPC] 4xx: Deal with 44x virtually tagged icache 2007-11-01 07:15:30 -05:00
pci.c PCI: Use a weak symbol for the empty version of pcibios_add_platform_entries() 2007-07-11 16:02:07 -07:00
ppc-stub.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
ppc_htab.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
ppc_ksyms.c [POWERPC] Remove APUS support from arch/ppc 2007-09-17 15:15:04 +10:00
relocate_kernel.S [PATCH] ppc32: use correct register names in arch/ppc/kernel/relocate_kernel.S 2005-06-30 08:45:09 -07:00
rio.c [PATCH] RapidIO support: ppc32 2005-11-07 07:53:47 -08:00
semaphore.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
setup.c [POWERPC] Remove APUS support from arch/ppc 2007-09-17 15:15:04 +10:00
smp-tbsync.c [POWERPC] Fix irq enable/disable in smp_generic_take_timebase 2006-08-30 16:10:47 +10:00
smp.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
softemu8xx.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
time.c [POWERPC] ppc: Add missing calls to set_irq_regs 2006-10-16 15:52:14 +10:00
traps.c pid namespaces: define is_global_init() and is_container_init() 2007-10-19 11:53:37 -07:00
vmlinux.lds.S [POWERPC] Fix ppc kernels after build-id addition 2007-09-22 14:49:21 +10:00