linux/arch/arm
Will Deacon 534be1d5a2 ARM: 6194/1: change definition of cpu_relax() for ARM11MPCore
Linux expects that if a CPU modifies a memory location, then that
modification will eventually become visible to other CPUs in the system.

On an ARM11MPCore processor, loads are prioritised over stores so it is
possible for a store operation to be postponed if a polling loop immediately
follows it. If the variable being polled indirectly depends on the outstanding
store [for example, another CPU may be polling the variable that is pending
modification] then there is the potential for deadlock if interrupts are
disabled. This deadlock occurs in the KGDB testsuire when executing on an
SMP ARM11MPCore configuration.

This patch changes the definition of cpu_relax() to smp_mb() for ARMv6 cores,
forcing a flushing of the write buffer on SMP systems before the next load
takes place. If the Kernel is not compiled for SMP support, this will expand
to a barrier() as before.

Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2010-07-01 10:13:52 +01:00
..
boot ARM: arch/arm/boot/bootp/bootp.lds: Checkpatch cleanup 2010-05-24 20:40:09 +01:00
common ARM: 6146/1: sa1111: Prevent deadlock in resume path 2010-05-27 10:36:08 +01:00
configs ARM: s3c2410_defconfig: Add new machines 2010-05-28 19:33:05 +09:00
include/asm ARM: 6194/1: change definition of cpu_relax() for ARM11MPCore 2010-07-01 10:13:52 +01:00
kernel Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-05-25 12:06:33 -07:00
lib ARM: 6110/1: Fix Thumb-2 kernel builds when UACCESS_WITH_MEMCPY is enabled 2010-05-08 10:45:26 +01:00
mach-aaec2000 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mach-at91 ARM: mach-at91: duplicated include 2010-05-24 20:40:13 +01:00
mach-bcmring Merge branch 'devel-stable' into devel 2010-05-17 17:24:04 +01:00
mach-clps711x ARM: arch/arm/mach-clps711x/Makefile.boot: Checkpatch cleanup 2010-05-24 20:40:09 +01:00
mach-cns3xxx ARM: cns3xxx: Add CNS3420 Validation Board support 2010-05-02 21:55:49 +04:00
mach-davinci davinci: da850 TPS6507x touch screen driver board data 2010-05-28 01:37:39 +02:00
mach-dove Merge branch 'origin' into devel-stable 2010-03-08 20:21:04 +00:00
mach-ebsa110
mach-ep93xx Merge remote branch 'origin' into secretlab/next-spi 2010-05-25 00:38:26 -06:00
mach-footbridge ARM: arch/arm/mach-footbridge/ebsa285-pci.c: Checkpatch cleanup 2010-05-24 20:40:10 +01: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: arch/arm/mach-h720x/common.h: Checkpatch cleanup 2010-05-24 20:40:10 +01:00
mach-integrator Merge branch 'devel-stable' into devel 2010-05-17 17:24:04 +01:00
mach-iop13xx include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mach-iop32x Merge branch 'devel-stable' into devel 2010-05-17 17:24:04 +01:00
mach-iop33x include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mach-ixp4xx Merge branch 'devel-stable' into devel 2010-05-17 17:24:04 +01:00
mach-ixp23xx include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mach-ixp2000 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mach-kirkwood Merge git://git.infradead.org/mtd-2.6 2010-05-21 07:25:43 -07:00
mach-ks8695
mach-l7200
mach-lh7a40x include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mach-loki Merge branch 'misc2' into devel 2010-02-25 22:09:41 +00:00
mach-mmp [ARM] mmp: append device support in jasper 2010-05-11 17:25:06 +02:00
mach-msm msm: dma: add completion.h header 2010-06-07 16:16:33 -07: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 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-05-25 12:06:33 -07:00
mach-mx3 leds: Add mx31moboard MC13783 led support 2010-05-26 13:07:56 +01:00
mach-mx5 Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel-stable 2010-05-20 23:43:18 +01:00
mach-mx25 arm/mx25: add watchdog device 2010-05-18 08:32:33 +02:00
mach-mxc91231 Merge branch 'origin' into devel-stable 2010-03-08 20:21:04 +00:00
mach-netx include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mach-nomadik ARM: 6145/1: ux500 MTU clockrate correction 2010-05-27 10:36:08 +01:00
mach-ns9xxx include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mach-nuc93x
mach-omap1 Merge branch 'omap4-i2c-init' into omap-for-linus 2010-05-20 11:37:23 -07:00
mach-omap2 Merge branch 'for_2.6.35rc' of git://git.pwsan.com/linux-2.6 into omap-fixes-for-linus 2010-06-28 15:47:04 +03:00
mach-orion5x leds: leds-gpio: Change blink_set callback to be able to turn off blinking 2010-05-26 13:07:55 +01:00
mach-pnx4008 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mach-pxa [ARM] pxa/spitz: Correctly register WM8750 2010-05-31 12:03:45 +08:00
mach-realview ARM: 6193/1: RealView: Align the machine_desc.phys_io to 1MB section 2010-07-01 10:13:46 +01:00
mach-rpc include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mach-s3c24a0/include/mach Merge branch 'origin' into devel-stable 2010-03-08 20:21:04 +00:00
mach-s3c64xx ARM: S3C64XX: Add USB OTG HCLK to the list of clocks 2010-05-28 19:31:34 +09:00
mach-s3c2400
mach-s3c2410 ARM: SAMSUNG: Move WDT device definitions in plat-samsung 2010-05-20 19:44:18 +09:00
mach-s3c2412 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 2010-05-20 09:41:44 -07:00
mach-s3c2416 ARM: SMDK2416: Add support for framebuffer device and ensure correct setup 2010-05-18 18:46:30 +09:00
mach-s3c2440 gta02: Use pcf50633 backlight driver instead of platform backlight driver. 2010-05-26 17:34:40 +01:00
mach-s3c2443 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-05-20 09:20:59 -07:00
mach-s5p6440 ARM: S5P: Fix the platform external interrupt issues. 2010-05-26 19:09:50 +09:00
mach-s5p6442 ARM: S5P: Fix the platform external interrupt issues. 2010-05-26 19:09:50 +09:00
mach-s5pc100 ARM: S5PC100: Fixup cross tree merge problems 2010-05-26 19:09:50 +09:00
mach-s5pv210 ARM: S5P: Fix the platform external interrupt issues. 2010-05-26 19:09:50 +09:00
mach-sa1100 ARM: arch/arm/mach-sa1100/leds.c: Checkpatch cleanup 2010-05-24 20:40:11 +01:00
mach-shark ARM: arch/arm/mach-shark/pci.c: Checkpatch cleanup 2010-05-24 20:40:11 +01:00
mach-shmobile ARM: remove 'select GENERIC_TIME' 2010-05-18 08:17:56 +01:00
mach-spear3xx ARM: 6091/1: ST SPEAr: Adding support for shared irq layer 2010-05-04 16:54:54 +01:00
mach-spear6xx ARM: SPEAR6xx: remove duplicated #include 2010-05-24 20:39:52 +01:00
mach-stmp37xx
mach-stmp378x
mach-u300 ARM: AB3550 board configuration and irq for U300 2010-05-28 01:37:47 +02:00
mach-ux500 Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 2010-06-08 19:40:08 +01:00
mach-versatile Merge branch 'devel-stable' into devel 2010-05-17 17:24:04 +01:00
mach-vexpress ARM: 6192/1: VExpress: Align the machine_desc.phys_io to 1MB section 2010-07-01 10:13:41 +01:00
mach-w90x900 ARM: 6141/1: Add audio support part in arch/arm/mach-w90x900 2010-05-24 22:25:34 +01:00
mm ARM: 6188/1: Add a config option for the ARM11MPCore DMA cache maintenance workaround 2010-07-01 10:12:31 +01:00
nwfpe ARM: arch/arm/nwfpe/fpsr.h: Checkpatch cleanup 2010-05-24 20:40:12 +01:00
oprofile ARM: 6074/1: oprofile: convert from sysdev to platform device 2010-05-17 11:53:59 +01:00
plat-iop ARM: 6048/1: ARM: iop3xx: register PMU IRQs during board initialisation 2010-04-29 18:03:49 +01:00
plat-mxc Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel-stable 2010-05-20 23:43:18 +01:00
plat-nomadik ARM: 6145/1: ux500 MTU clockrate correction 2010-05-27 10:36:08 +01:00
plat-omap omap: GPIO: fix auto-disable of debounce clock 2010-06-10 15:37:41 +03:00
plat-orion mtd: orion/kirkwood: add RnB line support to orion mtd driver 2010-05-14 01:04:19 +01:00
plat-pxa Merge branch 'devel-stable' into devel 2010-05-17 17:24:04 +01:00
plat-s3c24xx ARM: SAMSUNG: Move WDT device definitions in plat-samsung 2010-05-20 19:44:18 +09:00
plat-s5p ARM: S5P: Regoster clk_xusbxti clock for hsotg driver 2010-05-28 19:31:34 +09:00
plat-samsung ARM: SAMSUNG: gpio-cfg.h: update documentation 2010-05-28 19:31:32 +09:00
plat-spear ARM: 6091/1: ST SPEAr: Adding support for shared irq layer 2010-05-04 16:54:54 +01:00
plat-stmp3xxx include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
plat-versatile ARM: Indirect round/set_rate operations through clk structure 2010-05-02 09:35:38 +01:00
tools ARM: Update mach-types 2010-05-01 11:32:58 +01:00
vfp ARM: VFP: Fix vfp_put_double() for d16-d31 2010-05-27 10:32:06 +01:00
Kconfig Merge branch 'master' into devel 2010-05-24 23:08:54 +01: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 'for-rmk/samsung3' of git://git.fluff.org/bjdooks/linux into devel-stable 2010-05-24 23:08:36 +01:00