[PATCH] sparc64: Reduce ptrace cache flushing
authorDavid S. Miller <davem@davemloft.net>
Mon, 18 Apr 2005 01:03:11 +0000 (18:03 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Mon, 18 Apr 2005 01:03:11 +0000 (18:03 -0700)
commitdadeafdfc8da8c27e5a68e0706b9856eaac89391
tree17993d26e93e598a2f449063fe213afad2a45814
parentfb65b9619b756793d824df7501c895a2c2871f40
[PATCH] sparc64: Reduce ptrace cache flushing

We were flushing the D-cache excessively for ptrace() processing
and this makes debugging threads so slow as to be totally unusable.

All process page accesses via ptrace() go via access_process_vm().
This routine, for each process page, uses get_user_pages().  That
in turn does a flush_dcache_page() on the child pages before we
copy in/out the ptrace request data.

Therefore, all we need to do after the data movement is:

1) Flush the D-cache pages if the kernel maps the page to a different
   color than userspace does.
2) If we wrote to the page, we need to flush the I-cache on older cpus.

Previously we just flushed the entire cache at the end of a ptrace()
request, and that was beyond stupid.

Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/sparc64/kernel/ptrace.c
include/asm-sparc64/cacheflush.h