kernel_optimize_test/include/asm-arm
George G. Davis a188ad2bc7 [ARM] 3762/1: Fix ptrace cache coherency bug for ARM1136 VIPT nonaliasing Harvard caches
Patch from George G. Davis

Resolve ARM1136 VIPT non-aliasing cache coherency issues observed when
using ptrace to set breakpoints and cleanup copy_{to,from}_user_page()
while we're here as requested by Russell King because "it's also far
too heavy on non-v6 CPUs".

NOTES:

1. Only access_process_vm() calls copy_{to,from}_user_page().
2. access_process_vm() calls get_user_pages() to pin down the "page".
3. get_user_pages() calls flush_dcache_page(page) which ensures cache
   coherency between kernel and userspace mappings of "page".  However
   flush_dcache_page(page) may not invalidate I-Cache over this range
   for all cases, specifically, I-Cache is not invalidated for the VIPT
   non-aliasing case.  So memory is consistent between kernel and user
   space mappings of "page" but I-Cache may still be hot over this
   range.  IOW, we don't have to worry about flush_cache_page() before
   memcpy().
4. Now, for the copy_to_user_page() case, after memcpy(), we must flush
   the caches so memory is consistent with kernel cache entries and
   invalidate the I-Cache if this mm region is executable.  We don't
   need to do anything after memcpy() for the copy_from_user_page()
   case since kernel cache entries will be invalidated via the same
   process above if we access "page" again.  The flush_ptrace_access()
   function (borrowed from SPARC64 implementation) is added to handle
   cache flushing after memcpy() for the copy_to_user_page() case.

Signed-off-by: George G. Davis <gdavis@mvista.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2006-09-02 18:43:20 +01:00
..
arch-aaec2000 [ARM] 3631/1: Remove legacy __mem_isa() definitions 2006-06-24 10:34:48 +01:00
arch-at91rm9200 [ARM] 3711/1: AT91 timer update 2006-07-05 17:22:52 +01:00
arch-cl7500 Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
arch-clps711x [ARM] 3631/1: Remove legacy __mem_isa() definitions 2006-06-24 10:34:48 +01:00
arch-ebsa110 [ARM] ebsa110: Fix incorrect serial port address 2006-04-07 13:23:48 +01:00
arch-ebsa285 [ARM] 3631/1: Remove legacy __mem_isa() definitions 2006-06-24 10:34:48 +01:00
arch-ep93xx [ARM] 3634/1: ep93xx: initial implementation of the clk_* API 2006-06-24 10:33:02 +01:00
arch-h720x [ARM] 3660/1: Remove legacy defines 2006-06-28 17:54:55 +01:00
arch-imx [ARM] 3660/1: Remove legacy defines 2006-06-28 17:54:55 +01:00
arch-integrator [ARM] 3631/1: Remove legacy __mem_isa() definitions 2006-06-24 10:34:48 +01:00
arch-iop3xx [ARM] 3731/1: Allow IRQ definitions of IQ80331 and IQ80332 to co-exist 2006-07-24 21:30:01 +01:00
arch-ixp4xx typo fixes: disadvantadge -> disadvantage 2006-06-30 18:23:39 +02:00
arch-ixp23xx [ARM] 3662/1: ixp23xx: don't include asm/hardware.h in uncompress.h 2006-06-28 17:54:56 +01:00
arch-ixp2000
arch-l7200 [ARM] 3631/1: Remove legacy __mem_isa() definitions 2006-06-24 10:34:48 +01:00
arch-lh7a40x [ARM] 3631/1: Remove legacy __mem_isa() definitions 2006-06-24 10:34:48 +01:00
arch-netx [ARM] 3631/1: Remove legacy __mem_isa() definitions 2006-06-24 10:34:48 +01:00
arch-omap [ARM] 3743/1: ARM: OMAP: Fix compile for OMAP 2006-08-02 14:41:39 +01:00
arch-pnx4008 [ARM] 3621/1: fix compilation breakage for pnx4008 2006-06-22 10:27:15 +01:00
arch-pxa [ARM] 3760/1: This patch adds timeouts while working with SSP registers. Such timeouts were en 2006-08-27 12:54:56 +01:00
arch-realview [ARM] 3631/1: Remove legacy __mem_isa() definitions 2006-06-24 10:34:48 +01:00
arch-rpc [ARM] Move FLUSH_BASE macros to asm/arch/memory.h 2006-04-07 13:22:21 +01:00
arch-s3c2410 [ARM] 3765/1: S3C24XX: cleanup include/asm-arm/arch-s3c2410/dma.h 2006-08-31 15:26:41 +01:00
arch-sa1100 [ARM] 3631/1: Remove legacy __mem_isa() definitions 2006-06-24 10:34:48 +01:00
arch-shark [ARM] Move FLUSH_BASE macros to asm/arch/memory.h 2006-04-07 13:22:21 +01:00
arch-versatile [ARM] Allow Versatile to be built for AB and PB 2006-07-11 21:10:42 +01:00
hardware [ARM] 3760/1: This patch adds timeouts while working with SSP registers. Such timeouts were en 2006-08-27 12:54:56 +01:00
mach [PATCH] genirq: ARM dyntick cleanup 2006-07-02 17:29:21 -07:00
a.out.h
apm.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
assembler.h [ARM] Remove MODE_(SVC|IRQ|FIQ|USR) and DEFAULT_FIQ 2006-06-25 12:01:48 +01:00
atomic.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
auxvec.h
bitops.h
bug.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
bugs.h [ARM] nommu: adjust headers for !MMU ARM systems 2006-06-28 17:59:45 +01:00
byteorder.h [ARM] Fix byte order macros for Thumb 2006-06-19 15:35:36 +01:00
cache.h
cacheflush.h [ARM] 3762/1: Fix ptrace cache coherency bug for ARM1136 VIPT nonaliasing Harvard caches 2006-09-02 18:43:20 +01:00
checksum.h
cpu-multi32.h
cpu-single.h
cpu.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
cputime.h
current.h
delay.h
div64.h
dma-mapping.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
dma.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
domain.h [ARM] nommu: adjust headers for !MMU ARM systems 2006-06-28 17:59:45 +01:00
dyntick.h [ARM] 3692/1: ARM: coswitch irq handling to the generic implementation 2006-07-01 22:30:09 +01:00
ecard.h
elf.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
emergency-restart.h
errno.h
fcntl.h
fiq.h
floppy.h [PATCH] ARM: fixup irqflags breakage after ARM genirq merge 2006-07-02 17:29:22 -07:00
fpstate.h [ARM] 3370/2: ep93xx: add crunch support 2006-06-28 17:55:01 +01:00
futex.h
glue.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
hardirq.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
hardware.h
hw_irq.h [PATCH] ARM: fixup irqflags breakage after ARM genirq merge 2006-07-02 17:29:22 -07:00
ide.h
io.h [ARM] Move prototype for register_isa_ports to asm/io.h 2006-08-28 12:45:16 +01:00
ioctl.h
ioctls.h
ipc.h
ipcbuf.h
irq.h [ARM] 3692/1: ARM: coswitch irq handling to the generic implementation 2006-07-01 22:30:09 +01:00
Kbuild Add empty Kbuild files for 'make headers_install' in remaining arches. 2006-06-18 12:58:53 +01:00
kmap_types.h
leds.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
limits.h
linkage.h
local.h
locks.h
mc146818rtc.h
memory.h [ARM] 3705/1: add supersection support to ioremap() 2006-07-01 19:58:20 +01:00
mman.h
mmu_context.h [ARM] Add section support to ioremap 2006-06-29 22:14:30 +01:00
mmu.h [ARM] Add section support to ioremap 2006-06-29 22:14:30 +01:00
mmzone.h
module.h
msgbuf.h
mtd-xip.h
mutex.h
namei.h
nwflash.h
page-nommu.h [ARM] nommu: adjust headers for !MMU ARM systems 2006-06-28 17:59:45 +01:00
page.h [ARM] nommu: adjust headers for !MMU ARM systems 2006-06-28 17:59:45 +01:00
param.h
parport.h
pci.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
percpu.h
pgalloc.h [ARM] nommu: adjust headers for !MMU ARM systems 2006-06-28 17:59:45 +01:00
pgtable-hwdef.h [ARM] Set bit 4 on section mappings correctly depending on CPU 2006-06-29 18:24:21 +01:00
pgtable-nommu.h [ARM] nommu: adjust headers for !MMU ARM systems 2006-06-28 17:59:45 +01:00
pgtable.h [ARM] nommu: adjust headers for !MMU ARM systems 2006-06-28 17:59:45 +01:00
poll.h
posix_types.h
proc-fns.h [ARM] nommu: adjust headers for !MMU ARM systems 2006-06-28 17:59:45 +01:00
processor.h
procinfo.h [ARM] 3756/1: Assign value for HWCAP_IWMMXT 2006-08-18 15:32:17 +01:00
ptrace.h [ARM] 3665/1: crunch: add ptrace support 2006-06-28 17:55:00 +01:00
resource.h
rtc.h
scatterlist.h
sections.h
segment.h
semaphore-helper.h
semaphore.h
sembuf.h
serial.h
setup.h
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h [PATCH] ARM: fixup irqflags breakage after ARM genirq merge 2006-07-02 17:29:22 -07:00
sizes.h
smp.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
socket.h [AF_UNIX]: Datagram getpeersec 2006-06-29 16:58:06 -07:00
sockios.h
spinlock_types.h
spinlock.h [ARM] Fix ARM __raw_read_trylock() implementation 2006-08-31 15:09:30 +01:00
stat.h
statfs.h
string.h
suspend.h
system.h [PATCH] remove set_wmb - arch removal 2006-07-14 21:56:14 -07:00
termbits.h
termios.h
therm.h
thread_info.h Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2006-07-02 15:04:12 -07:00
thread_notify.h [ARM] Add thread_notify infrastructure 2006-06-22 10:24:18 +01:00
timex.h
tlb.h
tlbflush.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
topology.h
traps.h
types.h
uaccess.h [ARM] nommu: uaccess tweaks 2006-06-28 17:59:46 +01:00
ucontext.h [ARM] 3664/1: crunch: add signal frame save/restore 2006-06-28 17:54:59 +01:00
unaligned.h
unistd.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-05-06 19:59:18 +01:00
user.h
vfp.h
vfpmacros.h [ARM] 3472/1: Use the D variants of FLDMIA/FSTMIA on ARMv6 2006-04-10 21:32:42 +01:00
vga.h [PATCH] vgacon: make VGA_MAP_MEM take size, remove extra use 2006-06-22 15:05:58 -07:00
xor.h