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
mach-aaec2000
mach-at91 ARM: mach-at91: duplicated include 2010-05-24 20:40:13 +01:00
mach-bcmring
mach-clps711x ARM: arch/arm/mach-clps711x/Makefile.boot: Checkpatch cleanup 2010-05-24 20:40:09 +01:00
mach-cns3xxx
mach-davinci davinci: da850 TPS6507x touch screen driver board data 2010-05-28 01:37:39 +02:00
mach-dove
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
mach-h720x ARM: arch/arm/mach-h720x/common.h: Checkpatch cleanup 2010-05-24 20:40:10 +01:00
mach-integrator
mach-iop13xx
mach-iop32x
mach-iop33x
mach-ixp4xx
mach-ixp23xx
mach-ixp2000
mach-kirkwood Merge git://git.infradead.org/mtd-2.6 2010-05-21 07:25:43 -07:00
mach-ks8695
mach-l7200
mach-lh7a40x
mach-loki
mach-mmp
mach-msm msm: dma: add completion.h header 2010-06-07 16:16:33 -07:00
mach-mv78xx0
mach-mx1
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
mach-mxc91231
mach-netx
mach-nomadik ARM: 6145/1: ux500 MTU clockrate correction 2010-05-27 10:36:08 +01:00
mach-ns9xxx
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
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
mach-s3c24a0/include/mach
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
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
mach-spear3xx
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
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
plat-iop
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
plat-pxa
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
plat-stmp3xxx
plat-versatile
tools
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
Makefile Merge branch 'for-rmk/samsung3' of git://git.fluff.org/bjdooks/linux into devel-stable 2010-05-24 23:08:36 +01:00