linux/arch/arm/mm
Russell King 1522ac3ec9 [ARM] Fix virtual to physical translation macro corner cases
The current use of these macros works well when the conversion is
entirely linear.  In this case, we can be assured that the following
holds true:

	__va(p + s) - s = __va(p)

However, this is not always the case, especially when there is a
non-linear conversion (eg, when there is a 3.5GB hole in memory.)
In this case, if 's' is the size of the region (eg, PAGE_SIZE) and
'p' is the final page, the above is most definitely not true.

So, we must ensure that __va() and __pa() are only used with valid
kernel direct mapped RAM addresses.  This patch tweaks the code
to achieve this.

Tested-by: Charles Moschel <fred99@carolina.rr.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2009-03-12 23:09:09 +00:00
..
abort-ev4.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
abort-ev4t.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
abort-ev5t.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
abort-ev5tj.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
abort-ev6.S [ARM] 5416/1: Use unused address in v6_early_abort 2009-03-03 12:11:25 +00:00
abort-ev7.S [ARM] 5227/1: Add the ENDPROC declarations to the .S files 2008-09-01 12:06:34 +01:00
abort-lv4t.S [ARM] nommu: abort handler fixup for !CPU_CP15_MMU cores. 2006-09-28 20:15:46 +01:00
abort-macro.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
abort-nommu.S [ARM] 5227/1: Add the ENDPROC declarations to the .S files 2008-09-01 12:06:34 +01:00
alignment.c Merge branch 'omap3-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 into devel 2008-12-15 22:13:26 +00:00
cache-feroceon-l2.c [ARM] 5329/1: Feroceon: fix feroceon_l2_inv_range 2008-11-08 23:08:54 +00:00
cache-l2x0.c [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
cache-v3.S [ARM] Remove unnecessary mach/hardware.h includes in arch/arm/mm 2008-11-28 23:20:39 +00:00
cache-v4.S [ARM] Remove unnecessary mach/hardware.h includes in arch/arm/mm 2008-11-28 23:20:39 +00:00
cache-v4wb.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
cache-v4wt.S [ARM] Remove unnecessary mach/hardware.h includes in arch/arm/mm 2008-11-28 23:20:39 +00:00
cache-v6.S [ARM] 3356/1: Workaround for the ARM1136 I-cache invalidation problem 2006-03-10 22:26:47 +00:00
cache-v7.S ARMv7: Add extra barriers for flush_cache_all compressed/head.S 2008-11-06 13:23:07 +00:00
cache-xsc3l2.c [ARM] xsc3: fix xsc3_l2_inv_range 2008-11-06 10:48:29 -07:00
context.c Merge branches 'armv7', 'at91', 'misc' and 'omap' into devel 2007-05-09 10:41:28 +01:00
copypage-feroceon.c [ARM] 5421/1: ftrace: fix crash due to tracing of __naked functions 2009-03-12 21:33:03 +00:00
copypage-v3.c [ARM] 5421/1: ftrace: fix crash due to tracing of __naked functions 2009-03-12 21:33:03 +00:00
copypage-v4mc.c [ARM] 5421/1: ftrace: fix crash due to tracing of __naked functions 2009-03-12 21:33:03 +00:00
copypage-v4wb.c [ARM] 5421/1: ftrace: fix crash due to tracing of __naked functions 2009-03-12 21:33:03 +00:00
copypage-v4wt.c [ARM] 5421/1: ftrace: fix crash due to tracing of __naked functions 2009-03-12 21:33:03 +00:00
copypage-v6.c [ARM] clearpage: provide our own clear_user_highpage() 2008-11-27 23:53:48 +00:00
copypage-xsc3.c [ARM] 5421/1: ftrace: fix crash due to tracing of __naked functions 2009-03-12 21:33:03 +00:00
copypage-xscale.c [ARM] 5421/1: ftrace: fix crash due to tracing of __naked functions 2009-03-12 21:33:03 +00:00
discontig.c mm: move bootmem descriptors definition to a single place 2008-07-24 10:47:14 -07:00
dma-mapping.c [ARM] Fix virtual to physical translation macro corner cases 2009-03-12 23:09:09 +00:00
extable.c [ARM] Convert asm/uaccess.h to linux/uaccess.h 2008-09-06 11:35:55 +01:00
fault-armv.c [ARM] 5366/1: fix shared memory coherency with VIVT L1 + L2 caches 2009-01-28 16:55:00 +00:00
fault.c Merge branch 'mxc-pu-imxfb' of git://pasiphae.extern.pengutronix.de/git/imx/linux-2.6 into devel 2008-12-17 20:04:45 +00:00
fault.h [ARM] do_bad_area() always takes current and current->active_mm 2006-09-27 16:13:48 +01:00
flush.c [ARM] cachetype: move definitions to separate header 2008-09-01 12:06:24 +01:00
init.c [ARM] Fix virtual to physical translation macro corner cases 2009-03-12 23:09:09 +00:00
iomap.c [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
ioremap.c [ARM] fix section-based ioremap 2009-01-25 17:36:34 +00:00
Kconfig Merge branch 'for-rmk-realview' of git://linux-arm.org/linux-2.6 into devel 2008-12-01 17:53:45 +00:00
Makefile [ARM] dma: rename consistent.c to dma-mapping.c 2008-09-25 15:59:19 +01:00
mm.h [ARM] use asm/sections.h 2008-12-01 11:53:07 +00:00
mmap.c [ARM] Fix virtual to physical translation macro corner cases 2009-03-12 23:09:09 +00:00
mmu.c [ARM] 5402/1: fix a case of wrap-around in sanity_check_meminfo() 2009-02-19 09:49:45 +00:00
nommu.c [ARM] use asm/sections.h 2008-12-01 11:53:07 +00:00
pgd.c [ARM] remove memzero() 2008-11-27 12:37:59 +00:00
proc-arm6_7.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-arm7tdmi.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-arm9tdmi.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-arm720.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-arm740.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-arm920.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-arm922.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-arm925.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-arm926.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-arm940.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-arm946.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-arm1020.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-arm1020e.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-arm1022.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-arm1026.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-feroceon.S Merge branch 'for-rmk' of git://git.marvell.com/orion 2008-10-09 21:33:07 +01:00
proc-macros.S [ARM] Remove MT_DEVICE_IXP2000 and associated definitions 2008-10-01 16:41:06 +01:00
proc-sa110.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-sa1100.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
proc-syms.c [ARM] 5364/1: allow flush_ioremap_region() to be used from modules 2009-01-12 13:51:03 +00:00
proc-v6.S Modern processors may need to drain the WB before WFI 2008-11-10 14:14:11 +00:00
proc-v7.S Merge branch 'for-rmk' of git://linux-arm.org/linux-2.6 into devel 2008-11-27 12:42:48 +00:00
proc-xsc3.S [ARM] pxa: add base PXA935 support due to CPUID change 2008-12-02 14:42:40 +08:00
proc-xscale.S [ARM] Don't include asm/elf.h in asm code 2008-10-01 16:41:10 +01:00
tlb-v3.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
tlb-v4.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
tlb-v4wb.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
tlb-v4wbi.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
tlb-v6.S [ARM] 4129/1: Add barriers after the TLB operations 2007-02-08 14:49:27 +00:00
tlb-v7.S [ARM] 5227/1: Add the ENDPROC declarations to the .S files 2008-09-01 12:06:34 +01:00