linux/arch/arm
Stephen Boyd 112ae50d21 ARM: 7627/1: Predicate preempt logic on PREEMP_COUNT not PREEMPT alone
commit 568dca15aa upstream.

Patrik Kluba reports that the preempt count becomes invalid due
to the preempt_enable() call being unbalanced with a
preempt_disable() call in the vfp assembly routines. This happens
because preempt_enable() and preempt_disable() update preempt
counts under PREEMPT_COUNT=y but the vfp assembly routines do so
under PREEMPT=y. In a configuration where PREEMPT=n and
DEBUG_ATOMIC_SLEEP=y, PREEMPT_COUNT=y and so the preempt_enable()
call in VFP_bounce() keeps subtracting from the preempt count
until it goes negative.

Fix this by always using PREEMPT_COUNT to decided when to update
preempt counts in the ARM assembly code.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Reported-by: Patrik Kluba <pkluba@dension.com>
Tested-by: Patrik Kluba <pkluba@dension.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-02-03 18:24:40 -06:00
..
boot ARM: 7532/1: decompressor: reset SCTLR.TRE for VMSA ARMv7 cores 2012-10-02 10:30:08 -07:00
common ARM: 7377/1: vic: re-read status register before dispatching each IRQ handler 2012-04-10 09:27:42 +01:00
configs ARM: mxs: Remove MMAP_MIN_ADDR setting from mxs_defconfig 2012-08-15 08:10:32 -07:00
include/asm ARM: 7566/1: vfp: fix save and restore when running on pre-VFPv3 and CONFIG_VFPv3 set 2012-12-17 10:37:43 -08:00
kernel ARM: missing ->mmap_sem around find_vma() in swp_emulate.c 2013-01-11 09:07:16 -08:00
lib ARM: 7527/1: uaccess: explicitly check __user pointer when !CPU_USE_DOMAINS 2012-10-02 10:29:52 -07:00
mach-at91 ARM: at91: rm9200: remake the BGA as default version 2013-02-03 18:24:40 -06:00
mach-bcmring ARM: bcmring: fix UART declarations 2012-04-18 21:21:45 -07:00
mach-clps711x ARM: A few more platform fixes for include file fallout 2012-03-30 17:00:34 -07:00
mach-cns3xxx ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-davinci Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux 2012-03-30 16:45:39 -07:00
mach-dove Dove: Fix irq_to_pmu() 2012-12-10 10:59:38 -08:00
mach-ebsa110 ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-ep93xx ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-exynos Revert: ARM: SAMSUNG: Add naming of s3c64xx-spi devices 2012-11-05 09:50:42 +01:00
mach-footbridge ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-gemini ARM: remove bunch of now unused mach/io.h files 2012-03-06 21:34:44 -06:00
mach-h720x ARM: A few more platform fixes for include file fallout 2012-03-30 17:00:34 -07:00
mach-highbank ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-imx ARM: imx6: spin the cpu until hardware takes it down 2012-09-14 10:00:05 -07:00
mach-integrator ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-iop13xx ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-iop32x ARM: kill off __mem_pci 2012-03-06 21:34:45 -06:00
mach-iop33x ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-ixp4xx ixp4xx: fix compilation by adding gpiolib support 2012-06-10 00:36:08 +09:00
mach-ixp23xx ARM: A few more platform fixes for include file fallout 2012-03-30 17:00:34 -07:00
mach-ixp2000 ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-kirkwood ARM: Kirkwood: Update PCI-E fixup 2012-12-10 10:59:39 -08:00
mach-ks8695 ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-l7200/include/mach
mach-lpc32xx ARM: arm-soc fixes for 3.4-rc 2012-03-29 21:30:28 -07:00
mach-mmp ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-msm ARM: msm: Fix gic irqdomain support 2012-04-23 16:13:27 -07:00
mach-mv78xx0 ARM: Orion: Fix WDT compile for Dove and MV78xx0 2012-07-16 09:04:07 -07:00
mach-mxs MTD merge for 3.4 2012-03-30 17:31:56 -07:00
mach-netx ARM: __io abuse cleanup 2012-03-13 21:25:21 -05:00
mach-nomadik ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-omap1 ARM: OMAP1: Amstrad Delta: Fix wrong IRQ base in FIQ handler 2012-05-04 09:53:09 -07:00
mach-omap2 ARM: OMAP2+: OPP: Fix to ensure check of right oppdef after bad one 2012-08-09 08:31:28 -07:00
mach-orion5x ARM: Orion: Fix Virtual/Physical mixup with watchdog 2012-07-16 09:04:07 -07:00
mach-picoxcell ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-pnx4008 ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-prima2 ARM: PRIMA2: fix irq domain size and IRQ mask of internal interrupt controller 2012-05-16 21:52:13 -07:00
mach-pxa ALSA: pxa27x: fix ac97 warm reset 2013-01-17 08:50:55 -08:00
mach-realview ARM: 7607/1: realview: fix private peripheral memory base for EB rev. B boards 2013-01-11 09:07:16 -08:00
mach-rpc ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-s3c24xx Revert: ARM: SAMSUNG: Add naming of s3c64xx-spi devices 2012-11-05 09:50:42 +01:00
mach-s3c64xx ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-s3c2410 Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
mach-s3c2412 Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
mach-s3c2440 Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
mach-s5p64x0 Revert: ARM: SAMSUNG: Add naming of s3c64xx-spi devices 2012-11-05 09:50:42 +01:00
mach-s5pc100 Revert: ARM: SAMSUNG: Add naming of s3c64xx-spi devices 2012-11-05 09:50:42 +01:00
mach-s5pv210 Revert: ARM: SAMSUNG: Add naming of s3c64xx-spi devices 2012-11-05 09:50:42 +01:00
mach-sa1100 arm/sa1100: fix sa1100-rtc memory resource 2012-04-27 11:02:14 +08:00
mach-shark ARM: A few more platform fixes for include file fallout 2012-03-30 17:00:34 -07:00
mach-shmobile ARM / mach-shmobile: Invalidate caches when booting secondary cores 2012-05-12 22:13:52 +02:00
mach-spear3xx ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-spear6xx ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-tegra ARM: tegra: make tegra_cpu_reset_handler_enable() __init 2012-07-16 09:03:20 -07:00
mach-u300 ARM: u300: bump all IRQ numbers by one 2012-04-20 09:52:58 +02:00
mach-ux500 arch/arm/mach-ux500/mbox-db5500.c: world-writable sysfs fifo file 2012-04-25 21:26:34 -07:00
mach-versatile ARM: versatile: fix build failure in pci.c 2012-04-02 22:03:35 -07:00
mach-vexpress ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
mach-vt8500 ARM: remove bunch of now unused mach/io.h files 2012-03-06 21:34:44 -06:00
mach-w90x900 ARM: A few more platform fixes for include file fallout 2012-03-30 17:00:34 -07:00
mach-zynq ARM: remove bunch of now unused mach/io.h files 2012-03-06 21:34:44 -06:00
mm ARM: DMA: Fix struct page iterator in dma_cache_maint() to work with sparsemem 2013-02-03 18:24:40 -06:00
net ARM: 7259/3: net: JIT compiler for packet filters 2012-03-24 09:38:56 +00:00
nwfpe Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
oprofile
plat-iop Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
plat-mxc ARM: 3ds_debugboard: Fix smsc911x driver probe 2012-04-02 11:15:15 +02:00
plat-nomadik Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-03-29 16:53:48 -07:00
plat-omap ARM: OMAP: counter: add locking to read_persistent_clock 2012-12-03 11:47:23 -08:00
plat-orion ARM: Orion: Fix Virtual/Physical mixup with watchdog 2012-07-16 09:04:07 -07:00
plat-pxa Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
plat-s3c24xx ARM: S3C24XX: Fix s3c2410_dma_enqueue parameters 2012-09-14 10:00:04 -07:00
plat-s5p ARM: SAMSUNG: Update default rate for xusbxti clock 2012-07-29 08:04:21 -07:00
plat-samsung Revert: ARM: SAMSUNG: Add naming of s3c64xx-spi devices 2012-11-05 09:50:42 +01:00
plat-spear Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2012-03-29 23:17:44 -07:00
plat-versatile Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-03-29 16:53:48 -07:00
tools
vfp ARM: 7627/1: Predicate preempt logic on PREEMP_COUNT not PREEMPT alone 2013-02-03 18:24:40 -06:00
Kconfig ARM: Kirkwood: Update PCI-E fixup 2012-12-10 10:59:39 -08:00
Kconfig-nommu
Kconfig.debug Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-03-29 16:53:48 -07:00
Makefile ARM: 7513/1: Make sure dtc is built before running it 2012-10-02 10:29:51 -07:00