linux/arch/mn10300
David Howells 57cf4f78c6 MN10300: Fix flush_icache_range()
flush_icache_range() is given virtual addresses to describe the region.  It
deals with these by attempting to translate them through the current set of
page tables.

This is fine for userspace memory and vmalloc()'d areas as they are governed by
page tables.  However, since the regions above 0x80000000 aren't translated
through the page tables by the MMU, the kernel doesn't bother to set up page
tables for them (see paging_init()).

This means flush_icache_range() as it stands cannot be used to flush regions of
the VM area between 0x80000000 and 0x9fffffff where the kernel resides if the
data cache is operating in WriteBack mode.

To fix this, make flush_icache_range() first check for addresses in the upper
half of VM space and deal with them appropriately, before dealing with any
range in the page table mapped area.

Ordinarily, this is not a problem, but it has the capacity to make kprobes and
kgdb malfunction.  It should not affect gdbstub, signal frame setup or module
loading as gdb has its own flush functions, and the others take place in the
page table mapped area only.

Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Akira Takeuchi <takeuchi.akr@jp.panasonic.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-10-01 15:01:47 -07:00
..
boot MN10300: Don't try and #include <linux/slab.h> in lib/inflate.c from bootloader 2010-08-12 09:51:35 -07:00
configs defconfig reduction 2010-08-14 22:26:53 +02:00
include/asm MN10300: Fix SIGRTMAX 2010-09-23 10:20:57 -07:00
kernel mn10300: check __get_user/__put_user results... 2010-09-27 12:19:53 -07:00
lib mn10300: add cc clobbers to asm statements 2010-01-11 09:34:10 -08:00
mm MN10300: Fix flush_icache_range() 2010-10-01 15:01:47 -07:00
oprofile MN10300: Kill MN10300's own profiling Kconfig 2009-04-09 10:53:16 -07:00
proc-mn103e010 Separate out the proc- and unit-specific header directories from the general 2009-04-10 14:33:48 +01:00
unit-asb2303 mn10300: fix kernel build failures when using gcc-4.x 2009-10-01 16:11:12 -07:00
unit-asb2305 PCI: clear bridge resource range if BIOS assigned bad one 2010-06-11 13:24:51 -07:00
Kconfig MN10300: Arch doesn't support HAVE_ARCH_TRACEHOOK 2010-09-23 10:20:58 -07:00
Kconfig.debug MN10300: Default config choice GDBSTUB_TTYSM0 should be GDBSTUB_ON_TTYSM0 2010-09-27 16:29:06 -07:00
Makefile mn10300: objcopy flags fix 2010-01-11 09:34:09 -08:00