linux/arch/arm
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
..
boot [ARM] 5412/1: XSCALE: add ice dcc support 2009-02-27 20:57:46 +00:00
common [ARM] pxa: separate definitions from pxa-regs.h and remove it finally 2009-03-09 21:22:40 +08:00
configs [ARM] pxa/magician: select PXA_SSP for touchscreen and sound 2009-03-09 21:22:33 +08:00
include/asm [ARM] 5422/1: ARM: MMU: add a Non-cacheable Normal executable memory type 2009-03-12 19:25:02 +00:00
kernel [ARM] 5412/1: XSCALE: add ice dcc support 2009-02-27 20:57:46 +00:00
lib Merge branch 'clps7500' into devel 2008-11-27 12:39:43 +00:00
mach-aaec2000 arm: struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-06 10:44:43 -08:00
mach-at91 [ARM] 5399/1: [AT91] Configure MCLK and SSC for AT91SAMG20-EK 2009-02-21 16:39:40 +00:00
mach-clps711x [ARM] clps711x: fix warning in edb7211-mm.c 2009-01-08 16:29:42 +00:00
mach-davinci USB: musb_hdrc: another davinci buildfix (otg related) 2009-01-27 16:15:32 -08:00
mach-ebsa110 [ARM] Hide ISA DMA API when ISA_DMA_API is unset 2008-11-29 18:42:40 +00:00
mach-ep93xx [ARM] 5414/2: ep93xx m2p dma core 2009-03-03 12:20:11 +00:00
mach-footbridge Merge branch 'dma' into devel 2009-02-21 21:42:50 +00:00
mach-h720x [ARM] fix AT91, davinci, h720x, ks8695, msm, mx2, mx3, netx, omap1, omap2, pxa, s3c 2009-01-08 16:29:42 +00:00
mach-imx [ARM] i.MX add missing include 2009-01-12 12:14:40 +01:00
mach-integrator libata-sff: fix incorrect EH message 2009-01-26 06:36:16 -05:00
mach-iop13xx [ARM] Hide ISA DMA API when ISA_DMA_API is unset 2008-11-29 18:42:40 +00:00
mach-iop32x [ARM] Hide ISA DMA API when ISA_DMA_API is unset 2008-11-29 18:42:40 +00:00
mach-iop33x [ARM] fix missing includes for iop33x and sa1100_ir 2008-12-01 23:01:19 +00:00
mach-ixp4xx Merge branch 'cpus4096-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-02 11:44:09 -08:00
mach-ixp23xx [ARM] Hide ISA DMA API when ISA_DMA_API is unset 2008-11-29 18:42:40 +00:00
mach-ixp2000 [ARM] Hide ISA DMA API when ISA_DMA_API is unset 2008-11-29 18:42:40 +00:00
mach-kirkwood [ARM] 5357/1: Kirkwood: add missing ge01 tclk initialization 2009-01-08 16:29:41 +00:00
mach-ks8695 [ARM] 5372/1: ACS5K: Core board support for the ACS-5000 2009-02-10 11:24:21 +00:00
mach-l7200 [ARM] Add a common typesafe __io implementation 2008-11-30 11:45:54 +00:00
mach-lh7a40x arm: struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-06 10:44:43 -08:00
mach-loki [ARM] Hide ISA DMA API when ISA_DMA_API is unset 2008-11-29 18:42:40 +00:00
mach-msm [ARM] msm: fix build errors 2009-01-28 10:19:52 +00:00
mach-mv78xx0 [ARM] 5361/1: mv78xx0: fix compilation error 2009-01-08 16:29:40 +00:00
mach-mx1 [ARM] MXC: remove dependency to other include files from irqs.h 2008-12-18 16:40:11 +01:00
mach-mx2 [ARM] fix AT91, davinci, h720x, ks8695, msm, mx2, mx3, netx, omap1, omap2, pxa, s3c 2009-01-08 16:29:42 +00:00
mach-mx3 [ARM] fix AT91, davinci, h720x, ks8695, msm, mx2, mx3, netx, omap1, omap2, pxa, s3c 2009-01-08 16:29:42 +00:00
mach-netx [ARM] fix netx 2009-01-08 16:29:44 +00:00
mach-ns9xxx Merge branch 'cpus4096-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-02 11:44:09 -08:00
mach-omap1 ARM: OMAP: Fix hsmmc init, v2 2009-01-29 08:57:16 -08:00
mach-omap2 ARM: OMAP: fix fault in enter_full_retention() 2009-01-29 09:27:00 -08:00
mach-orion5x [ARM] 5360/1: Orion: fix compilation error 2009-01-08 16:29:40 +00:00
mach-pnx4008 [ARM] fix pnx4008 2009-01-08 16:29:43 +00:00
mach-pxa [ARM] pxa: add DM9000_PLATF_NO_EEPROM flag to CM-X... platforms 2009-03-09 21:22:40 +08:00
mach-realview [ARM] 5397/1: RealView: Add support for the ISP1761 USB chip 2009-02-19 11:30:27 +00:00
mach-rpc Merge branch 'dma' into devel 2009-02-21 21:42:50 +00:00
mach-s3c24a0/include/mach [ARM] S3C24A0: Remove duplicate <mach/io.h> file 2008-12-18 16:35:59 +00:00
mach-s3c2400 [ARM] remove a common set of __virt_to_bus definitions 2008-11-28 15:36:49 +00:00
mach-s3c2410 [ARM] fix AT91, davinci, h720x, ks8695, msm, mx2, mx3, netx, omap1, omap2, pxa, s3c 2009-01-08 16:29:42 +00:00
mach-s3c2412 [ARM] S3C: Remove unnecessary <linux/delay.h> includes 2008-12-18 16:36:02 +00:00
mach-s3c2440 [ARM] 5358/1: AT2440EVB: Use new include path of mci.h 2009-01-08 16:29:41 +00:00
mach-s3c2442 [ARM] Arrange for platforms to select appropriate CPU support 2008-11-27 12:38:00 +00:00
mach-s3c2443 [ARM] S3C: Remove unnecessary <linux/delay.h> includes 2008-12-18 16:36:02 +00:00
mach-s3c6400 [ARM] fix AT91, davinci, h720x, ks8695, msm, mx2, mx3, netx, omap1, omap2, pxa, s3c 2009-01-08 16:29:42 +00:00
mach-s3c6410 Merge branch 'next-s3c64xx-device' into next-merged 2008-12-18 16:17:37 +00:00
mach-sa1100 [ARM] 5407/1: SA1100: drop broken for ages iPAQ h3800 support 2009-02-21 16:39:07 +00:00
mach-shark Merge branch 'dma' into devel 2009-02-21 21:42:50 +00:00
mach-versatile [ARM] 5395/1: RealView: Add support for the DS1338 RTC chip 2009-02-19 11:30:25 +00:00
mach-w90x900 [ARM] 5393/1: Add W90P910 EVB NOR flash driver 2009-02-12 11:10:24 +00:00
mm [ARM] 5422/1: ARM: MMU: add a Non-cacheable Normal executable memory type 2009-03-12 19:25:02 +00:00
nwfpe [ARM] Convert asm/uaccess.h to linux/uaccess.h 2008-09-06 11:35:55 +01:00
oprofile [ARM] 5382/1: unwind: Reorganise the stacktrace support 2009-02-12 13:21:17 +00:00
plat-iop [ARM] iop: iop3xx needs registers mapped uncached+unbuffered 2008-11-09 11:18:36 +00:00
plat-mxc Merge branch 'dma' into devel 2009-02-21 21:42:50 +00:00
plat-omap ARM: OMAP: Fix hsmmc init, v2 2009-01-29 08:57:16 -08:00
plat-orion Merge branch 'cpus4096-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-02 11:44:09 -08:00
plat-s3c [ARM] 5376/1: S3C24XX: Fix sparse errors in platform uncompress.h 2009-02-19 11:30:19 +00:00
plat-s3c24xx [ARM] fix AT91, davinci, h720x, ks8695, msm, mx2, mx3, netx, omap1, omap2, pxa, s3c 2009-01-08 16:29:42 +00:00
plat-s3c64xx [ARM] S3C64XX: Fix EINT group macro definition 2009-01-08 16:25:24 +00:00
tools [ARM] Update mach-types 2008-11-30 16:39:42 +00:00
vfp [ARM] 5388/1: Add hwcap bits for VFPv3 and VFPv3D16 2009-02-12 10:59:44 +00:00
Kconfig [ARM] 5407/1: SA1100: drop broken for ages iPAQ h3800 support 2009-02-21 16:39:07 +00:00
Kconfig-nommu
Kconfig.debug [ARM] 5412/1: XSCALE: add ice dcc support 2009-02-27 20:57:46 +00:00
Makefile [ARM] 5386/2: unwind: Add Makefile and Kconfig entries for ARM stack unwinding 2009-02-19 11:30:18 +00:00