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
arch-at91rm9200
arch-cl7500
arch-clps711x
arch-ebsa110
arch-ebsa285
arch-ep93xx
arch-h720x
arch-imx
arch-integrator
arch-iop3xx
arch-ixp4xx
arch-ixp23xx
arch-ixp2000
arch-l7200
arch-lh7a40x
arch-netx
arch-omap
arch-pnx4008
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
arch-rpc
arch-s3c2410 [ARM] 3765/1: S3C24XX: cleanup include/asm-arm/arch-s3c2410/dma.h 2006-08-31 15:26:41 +01:00
arch-sa1100
arch-shark
arch-versatile
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
a.out.h
apm.h
assembler.h
atomic.h
auxvec.h
bitops.h
bug.h
bugs.h
byteorder.h
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
cputime.h
current.h
delay.h
div64.h
dma-mapping.h
dma.h
domain.h
dyntick.h
ecard.h
elf.h
emergency-restart.h
errno.h
fcntl.h
fiq.h
floppy.h
fpstate.h
futex.h
glue.h
hardirq.h
hardware.h
hw_irq.h
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
Kbuild
kmap_types.h
leds.h
limits.h
linkage.h
local.h
locks.h
mc146818rtc.h
memory.h
mman.h
mmu_context.h
mmu.h
mmzone.h
module.h
msgbuf.h
mtd-xip.h
mutex.h
namei.h
nwflash.h
page-nommu.h
page.h
param.h
parport.h
pci.h
percpu.h
pgalloc.h
pgtable-hwdef.h
pgtable-nommu.h
pgtable.h
poll.h
posix_types.h
proc-fns.h
processor.h
procinfo.h
ptrace.h
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
sizes.h
smp.h
socket.h
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
termbits.h
termios.h
therm.h
thread_info.h
thread_notify.h
timex.h
tlb.h
tlbflush.h
topology.h
traps.h
types.h
uaccess.h
ucontext.h
unaligned.h
unistd.h
user.h
vfp.h
vfpmacros.h
vga.h
xor.h