android_kernel_xiaomi_sm8350/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
mach-at91 ARM: 5986/1: at91sam9g20-ek: Correct braces in I2C registration code 2010-03-13 10:48:21 +00:00
mach-bcmring
mach-clps711x
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
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
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
mach-l7200
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
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
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
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
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
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
oprofile
plat-iop
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
plat-pxa
plat-s3c24xx ARM: S3C2440: Fix s3c2440 cpufreq compilation post move. 2010-03-15 22:43:12 +00:00
plat-s5p
plat-s5pc1xx
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
Makefile Merge branch 'origin' into devel-stable 2010-03-08 20:21:04 +00:00