linux-stable/arch/arm/mm
Paul Walmsley e4707dd3e9 [ARM] 5422/1: ARM: MMU: add a Non-cacheable Normal executable memory type
This patch adds a Non-cacheable Normal ARM executable memory type,
MT_MEMORY_NONCACHED.

On OMAP3, this is used for rapid dynamic voltage/frequency scaling in
the VDD2 voltage domain. OMAP3's SDRAM controller (SDRC) is in the
VDD2 voltage domain, and its clock frequency must change along with
voltage. The SDRC clock change code cannot run from SDRAM itself,
since SDRAM accesses are paused during the clock change. So the
current implementation of the DVFS code executes from OMAP on-chip
SRAM, aka "OCM RAM."

If the OCM RAM pages are marked as Cacheable, the ARM cache controller
will attempt to flush dirty cache lines to the SDRC, so it can fill
those lines with OCM RAM instruction code. The problem is that the
SDRC is paused during DVFS, and so any SDRAM access causes the ARM MPU
subsystem to hang.

TI's original solution to this problem was to mark the OCM RAM
sections as Strongly Ordered memory, thus preventing caching. This is
overkill: since the memory is marked as non-bufferable, OCM RAM writes
become needlessly slow. The idea of "Strongly Ordered SRAM" is also
conceptually disturbing. Previous LAKML list discussion is here:

http://www.spinics.net/lists/arm-kernel/msg54312.html

This memory type MT_MEMORY_NONCACHED is used for OCM RAM by a future
patch.

Cc: Richard Woodruff <r-woodruff2@ti.com>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2009-03-12 19:25:02 +00:00
..
abort-ev4.S
abort-ev4t.S
abort-ev5t.S
abort-ev5tj.S
abort-ev6.S [ARM] CONFIG_CPU_MPCORE -> CONFIG_CPU_32v6K 2006-02-22 21:13:28 +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
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] fix a couple clear_user_highpage assembly constraints 2008-11-28 15:36:43 +00:00
copypage-v3.c [ARM] fix a couple clear_user_highpage assembly constraints 2008-11-28 15:36:43 +00:00
copypage-v4mc.c [ARM] fix StrongARM-11x0 page copy implementation 2009-01-24 11:41:17 +00:00
copypage-v4wb.c [ARM] fix a couple clear_user_highpage assembly constraints 2008-11-28 15:36:43 +00:00
copypage-v4wt.c [ARM] fix a couple clear_user_highpage assembly constraints 2008-11-28 15:36:43 +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] fix a couple clear_user_highpage assembly constraints 2008-11-28 15:36:43 +00:00
copypage-xscale.c [ARM] fix a couple clear_user_highpage assembly constraints 2008-11-28 15:36:43 +00:00
discontig.c mm: move bootmem descriptors definition to a single place 2008-07-24 10:47:14 -07:00
dma-mapping.c NOMMU: Rename ARM's struct vm_region 2009-01-08 12:04:47 +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] use asm/sections.h 2008-12-01 11:53:07 +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] sparse: fix several warnings 2008-09-05 14:11:24 +01:00
mmu.c [ARM] 5422/1: ARM: MMU: add a Non-cacheable Normal executable memory type 2009-03-12 19:25:02 +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