linux-stable/arch/arm
Catalin Marinas e7c5650f60 ARM: 5996/1: ARM: Change the mandatory barriers implementation (4/4)
The mandatory barriers (mb, rmb, wmb) are used even on uniprocessor
systems for things like ordering Normal Non-cacheable memory accesses
with DMA transfer (via Device memory writes). The current implementation
uses dmb() for mb() and friends but this is not sufficient. The DMB only
ensures the relative ordering of the observability of accesses by other
processors or devices acting as masters. In case of DMA transfers
started by writes to device memory, the relative ordering is not ensured
because accesses to slave ports of a device are not considered
observable by the DMB definition.

A DSB is required for the data to reach the main memory (even if mapped
as Normal Non-cacheable) before the device receives the notification to
begin the transfer. Furthermore, some L2 cache controllers (like L2x0 or
PL310) buffer stores to Normal Non-cacheable memory and this would need
to be drained with the outer_sync() function call.

The patch also allows platforms to define their own mandatory barriers
implementation by selecting CONFIG_ARCH_HAS_BARRIERS and providing a
mach/barriers.h file.

Note that the SMP barriers are unchanged (being DMBs as before) since
they are only guaranteed to work with Normal Cacheable memory.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2010-03-25 21:13:50 +00:00
..
boot ARM: 5990/1: ARM: use __armv5tej_mmu_cache_flush for V5TEJ instead of __armv4_mmu_cache_flush 2010-03-15 14:32:02 +00:00
common [ARM] locomo: fix unpaired spin_lock_irqsave 2010-03-22 12:03:09 +08:00
configs Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 2010-03-18 16:59:30 -07:00
include/asm ARM: 5996/1: ARM: Change the mandatory barriers implementation (4/4) 2010-03-25 21:13:50 +00:00
kernel ARM: 5991/1: Fix regression in restore_user_regs macro 2010-03-15 17:20:08 +00:00
lib
mach-aaec2000 ARM: 5910/1: ARM: Add tmp register for addruart and loadsp 2010-02-12 17:27:52 +00:00
mach-at91 ARM: 5986/1: at91sam9g20-ek: Correct braces in I2C registration code 2010-03-13 10:48:21 +00:00
mach-bcmring ARM: Consolidate clks_register() and similar 2010-02-12 17:32:36 +00:00
mach-clps711x ARM: 5910/1: ARM: Add tmp register for addruart and loadsp 2010-02-12 17:27:52 +00:00
mach-davinci Merge branch 'for-next' into for-linus 2010-03-08 16:55:37 +01:00
mach-dove Merge branch 'origin' into devel-stable 2010-03-08 20:21:04 +00:00
mach-ebsa110 ARM: 5910/1: ARM: Add tmp register for addruart and loadsp 2010-02-12 17:27:52 +00:00
mach-ep93xx Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-03-12 16:04:50 -08:00
mach-footbridge Merge branch 'misc2' into devel 2010-02-25 22:09:41 +00:00
mach-gemini Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-03-01 09:15:15 -08:00
mach-h720x ARM: 5910/1: ARM: Add tmp register for addruart and loadsp 2010-02-12 17:27:52 +00:00
mach-integrator Merge branches 'clks' and 'pnx' into devel 2010-02-25 22:10:38 +00:00
mach-iop13xx Merge branch 'misc2' into devel 2010-02-25 22:09:41 +00:00
mach-iop32x Merge branch 'misc2' into devel 2010-02-25 22:09:41 +00:00
mach-iop33x Merge branch 'misc2' into devel 2010-02-25 22:09:41 +00:00
mach-ixp4xx dma-mapping: arm: use generic pci_set_dma_mask and pci_set_consistent_dma_mask 2010-03-12 15:52:42 -08:00
mach-ixp23xx ARM: Fix IXP23xx build error in mach/memory.h 2010-03-20 15:33:09 +00:00
mach-ixp2000 Merge branch 'misc2' into devel 2010-02-25 22:09:41 +00:00
mach-kirkwood [ARM] Kirkwood: WPS button keycode mapping 2010-03-23 13:48:14 -04:00
mach-ks8695 ARM: 5910/1: ARM: Add tmp register for addruart and loadsp 2010-02-12 17:27:52 +00:00
mach-l7200 ARM: 5910/1: ARM: Add tmp register for addruart and loadsp 2010-02-12 17:27:52 +00:00
mach-lh7a40x Merge branch 'misc2' into devel 2010-02-25 22:09:41 +00:00
mach-loki Merge branch 'misc2' into devel 2010-02-25 22:09:41 +00:00
mach-mmp [ARM] mmp: fix for variables in uncompress.h being discarded 2010-03-22 12:03:05 +08:00
mach-msm Merge branch 'misc2' into devel 2010-02-25 22:09:41 +00:00
mach-mv78xx0 Merge branch 'origin' into devel-stable 2010-03-08 20:21:04 +00:00
mach-mx1 Merge branch 'origin' into devel-stable 2010-03-08 20:21:04 +00:00
mach-mx2 Merge branch 'origin' into devel-stable 2010-03-08 20:21:04 +00:00
mach-mx3 Merge branch 'origin' into devel-stable 2010-03-08 20:21:04 +00:00
mach-mx5 mx51_babbage: Fix ckih2 parameter in mx51_clocks_init function 2010-02-24 10:29:14 +01:00
mach-mx25 Merge branch 'origin' into devel-stable 2010-03-08 20:21:04 +00:00
mach-mxc91231 Merge branch 'origin' into devel-stable 2010-03-08 20:21:04 +00:00
mach-netx ARM: 5910/1: ARM: Add tmp register for addruart and loadsp 2010-02-12 17:27:52 +00:00
mach-nomadik Merge branch 'for-next' into for-linus 2010-03-08 16:55:37 +01:00
mach-ns9xxx Merge branch 'misc2' into devel 2010-02-25 22:09:41 +00:00
mach-nuc93x ARM: 5859/1: Add nuc93x platform support 2010-01-27 22:03:00 +00:00
mach-omap1 Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-03-01 09:15:15 -08:00
mach-omap2 ARM/OMAP: Remove the +x bit from a couple of source files 2010-03-12 09:16:09 -08:00
mach-orion5x [ARM] Orion5x: replace KEY_WLAN with KEY_WPS_BUTTON 2010-03-23 13:48:15 -04:00
mach-pnx4008 Merge branches 'clks' and 'pnx' into devel 2010-02-25 22:10:38 +00:00
mach-pxa [ARM] pxa/raumfeld: fix button name 2010-03-22 12:03:11 +08:00
mach-realview Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-03-01 09:15:15 -08:00
mach-rpc ARM: Fix RiscPC decompressor build errors 2010-03-15 22:04:54 +00:00
mach-s3c24a0/include/mach Merge branch 'origin' into devel-stable 2010-03-08 20:21:04 +00:00
mach-s3c64xx ARM: SAMSUNG: Fixup commit 4e6d488af3 2010-03-15 23:11:41 +00:00
mach-s3c2400
mach-s3c2410 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-03-12 16:04:50 -08:00
mach-s3c2412 ARM: SAMSUNG: Remove dma-plat.h to allow plat-s3c64xx to be removed 2010-02-21 23:10:35 +00:00
mach-s3c2440 ARM: S3C2440: Fix s3c2440 cpufreq compilation post move. 2010-03-15 22:43:12 +00:00
mach-s3c2443 ARM: Merge next-samsung-s3c2443-clock 2010-03-07 22:56:19 +00:00
mach-s5p6440 ARM: SAMSUNG: Fixup commit 4e6d488af3 2010-03-15 23:11:41 +00:00
mach-s5p6442 ARM: SAMSUNG: Fixup commit 4e6d488af3 2010-03-15 23:11:41 +00:00
mach-s5pc100 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-03-12 16:04:50 -08:00
mach-s5pv210 Merge branch 'origin' into devel-stable 2010-03-08 20:21:04 +00:00
mach-sa1100 Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-03-12 16:00:54 -08:00
mach-shark ARM: 5910/1: ARM: Add tmp register for addruart and loadsp 2010-02-12 17:27:52 +00:00
mach-shmobile ARM: mach-shmobile: ap4evb SDHI0 platform data V2 2010-03-15 12:06:47 +09:00
mach-stmp37xx
mach-stmp378x
mach-u300 Merge branch 'for-next' into for-linus 2010-03-08 16:55:37 +01:00
mach-ux500 Merge branch 'master' into for-linus 2010-03-08 20:24:11 +00:00
mach-versatile Merge branches 'clks' and 'pnx' into devel 2010-02-25 22:10:38 +00:00
mach-w90x900 NUC900 LCD Controller Driver 2010-03-12 15:52:34 -08:00
mm ARM: 5996/1: ARM: Change the mandatory barriers implementation (4/4) 2010-03-25 21:13:50 +00:00
nwfpe ARM: Kill CONFIG_CPU_32 2009-12-18 16:07:53 +00:00
oprofile ARM: 5901/2: arm/oprofile: reserve the PMU when starting 2010-02-12 17:23:43 +00:00
plat-iop ARM: Add caller information to ioremap 2010-02-15 21:39:11 +00:00
plat-mxc Merge branch 'origin' into devel-stable 2010-03-08 20:21:04 +00:00
plat-nomadik Merge branch 'origin' into devel-stable 2010-03-08 20:21:04 +00:00
plat-omap omap: McBSP: Drop unnecessary status/error bit clearing on reg_cacheretrieved register values 2010-03-12 09:16:09 -08:00
plat-orion [ARM] Orion: fix PCIe inbound window programming when RAM size is not a power of two 2009-12-28 23:50:49 -05:00
plat-pxa [ARM] pxa: use resource_size() in pwm.c 2009-12-29 14:11:27 +08:00
plat-s3c24xx ARM: S3C2440: Fix s3c2440 cpufreq compilation post move. 2010-03-15 22:43:12 +00:00
plat-s5p ARM: S5PV210: Update Kconfig and Makefiles 2010-02-24 22:47:23 +00:00
plat-s5pc1xx ARM: SAMSUNG: Remove empty gpio-core.h and use central plat/gpio-core.h 2010-01-19 18:46:02 +09:00
plat-samsung ARM: SAMSUNG: Fix build error from stale define in <plat/uncompress.h> 2010-03-15 22:57:18 +00:00
plat-stmp3xxx Merge branches 'clks' and 'pnx' into devel 2010-02-25 22:10:38 +00:00
tools ARM: Update mach-types 2010-03-20 15:37:39 +00:00
vfp Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-03-01 09:15:15 -08:00
Kconfig ARM: Fix sorting of platform group config options and includes 2010-03-15 19:03:06 +00:00
Kconfig-nommu
Kconfig.debug ARM: SAMSUNG: Move plat-s3c Kconfig entries to plat-samsung and plat-s3c24xx 2010-02-24 01:52:06 +00:00
Makefile Merge branch 'origin' into devel-stable 2010-03-08 20:21:04 +00:00