2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-20 11:13:58 +08:00
linux-next/drivers
Thomas Gleixner 0a7992c908 acpi: fix bogus preemption logic
The ACPI_PREEMPTION_POINT() logic was introduced in commit 8bd108d
(ACPICA: add preemption point after each opcode parse).  The follow up
commits abe1dfab6, 138d15692, c084ca70 tried to fix the preemption logic
back and forth, but nobody noticed that the usage of
in_atomic_preempt_off() in that context is wrong.

The check which guards the call of cond_resched() is:

    if (!in_atomic_preempt_off() && !irqs_disabled())

in_atomic_preempt_off() is not intended for general use as the comment
above the macro definition clearly says:

 * Check whether we were atomic before we did preempt_disable():
 * (used by the scheduler, *after* releasing the kernel lock)

On a CONFIG_PREEMPT=n kernel the usage of in_atomic_preempt_off() works by
accident, but with CONFIG_PREEMPT=y it's just broken.

The whole purpose of the ACPI_PREEMPTION_POINT() is to reduce the latency
on a CONFIG_PREEMPT=n kernel, so make ACPI_PREEMPTION_POINT() depend on
CONFIG_PREEMPT=n and remove the in_atomic_preempt_off() check.

Addresses https://bugzilla.kernel.org/show_bug.cgi?id=16210

[akpm@linux-foundation.org: fix build]
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Len Brown <lenb@kernel.org>
Cc: Francois Valenduc <francois.valenduc@tvcablenet.be>
Cc: Lin Ming <ming.m.lin@intel.com>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-08-12 08:43:29 -07:00
..
accessibility
acpi acpi: fix bogus preemption logic 2010-08-12 08:43:29 -07:00
amba ARM: AMBA: Add pclk support to AMBA bus infrastructure 2010-07-31 13:07:27 +01:00
ata Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-08-11 09:13:19 -07:00
atm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2010-08-09 21:05:52 -07:00
auxdisplay
base drivers/base/node.c: reduce stack usage of node_read_meminfo() 2010-08-09 20:45:02 -07:00
block Merge branch 'for-2.6.36' of git://git.kernel.dk/linux-2.6-block 2010-08-10 15:22:42 -07:00
bluetooth Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2010-08-06 12:25:06 -07:00
cdrom block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
char kfifo: fix kfifo miss use of nozami.c 2010-08-11 08:59:23 -07:00
clocksource
connector
cpufreq [CPUFREQ] fix brace coding style issue. 2010-08-03 13:47:05 -04:00
cpuidle cpuidle: extend cpuidle and menu governor to handle dynamic states 2010-08-09 20:45:04 -07:00
crypto Merge branch 'ixp4xx' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 2010-08-11 09:17:27 -07:00
dca
dio
dma Merge branches 'master' and 'devel' into for-linus 2010-08-10 23:17:52 +01:00
edac edac: mpc85xx: add support for new MPCxxx/Pxxxx EDAC controllers 2010-08-11 08:59:21 -07:00
eisa
firewire Merge firewire branches to be released post v2.6.35 2010-08-02 10:09:04 +02:00
firmware edd: fix possible memory leak in edd_init() error path 2010-08-09 20:45:09 -07:00
gpio gpio: sx150x: add Semtech I2C sx150x gpio expander driver 2010-08-11 08:59:09 -07:00
gpu vt/console: try harder to print output when panicing 2010-08-10 13:47:40 -07:00
hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2010-08-10 15:08:02 -07:00
hwmon fix "hwmon: coretemp: update hotplug condition check" 2010-08-11 08:58:59 -07:00
i2c Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into devel-stable 2010-08-09 14:07:19 +01:00
ide Merge branch 'for-2.6.36' of git://git.kernel.dk/linux-2.6-block 2010-08-10 15:22:42 -07:00
idle Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq 2010-08-04 11:13:36 -07:00
ieee1394 Merge firewire branches to be released post v2.6.35 2010-08-02 10:09:04 +02:00
ieee802154
infiniband RDMA/cxgb4: Obtain RDMA QID ranges from LLD/FW 2010-08-07 23:08:47 -07:00
input panic: keep blinking in spite of long spin timer mode 2010-08-11 08:59:22 -07:00
isdn Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2010-08-09 21:05:52 -07:00
leds leds: Remove owner field from attribute initialization in bd2802 driver 2010-08-05 13:53:35 -07:00
lguest
macintosh Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-08-06 13:25:43 -07:00
mca
md Merge branch 'for-linus' of git://neil.brown.name/md 2010-08-10 15:38:19 -07:00
media Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 2010-08-10 15:09:54 -07:00
memstick block: push down BKL into .open and .release 2010-08-07 18:25:34 +02:00
message fusion: fix kernel-doc warnings 2010-08-11 08:59:12 -07:00
mfd
misc cs5535-mfgpt: reuse timers that have never been set up 2010-08-11 08:59:20 -07:00
mmc mmc: add ricoh e822 pci id 2010-08-11 08:59:05 -07:00
mtd mtd/nand_base: fix kernel-doc warnings & typos 2010-08-11 08:59:18 -07:00
net Merge branch 'ixp4xx' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 2010-08-11 09:17:27 -07:00
nubus
of of/platform: Register of_platform_drivers with an "of:" prefix 2010-08-01 01:44:18 -06:00
oprofile
parisc Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-08-04 15:31:02 -07:00
parport parport_serial: use the PCI IRQ if offered 2010-08-11 08:59:22 -07:00
pci Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 2010-08-09 21:00:07 -07:00
pcmcia Merge branches 'master' and 'devel' into for-linus 2010-08-10 23:17:52 +01:00
platform ips driver: make it less chatty 2010-08-03 11:55:15 -04:00
pnp
power Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-08-11 09:13:19 -07:00
pps
ps3
rapidio
regulator regulator: Remove owner field from attribute initialization in regulator core driver 2010-08-05 13:53:35 -07:00
rtc Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-08-11 09:13:19 -07:00
s390 Merge branch 'for-2.6.36' of git://git.kernel.dk/linux-2.6-block 2010-08-10 15:22:42 -07:00
sbus Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6 2010-08-05 15:57:35 -07:00
scsi scsi: 53c700: remove dma_is_consistent usage 2010-08-11 08:59:21 -07:00
serial Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-08-11 09:13:19 -07:00
sfi
sh sh: add a reparent function to DIV6 clocks 2010-08-04 16:12:01 +09:00
sn
spi of/address: Clean up function declarations 2010-08-01 01:42:42 -06:00
ssb Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2010-08-06 12:25:06 -07:00
staging Merge branch 'for-2.6.36' of git://git.kernel.dk/linux-2.6-block 2010-08-10 15:22:42 -07:00
tc
telephony pcmcia: do not use io_req_t when calling pcmcia_request_io() 2010-08-03 09:04:11 +02:00
thermal
uio uio: Remove IRQF_DISABLED flag from uio_cif.c 2010-08-05 13:53:33 -07:00
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 2010-08-10 15:05:02 -07:00
uwb
vhost Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2010-08-04 11:47:58 -07:00
video Merge branch 'msm-video' of git://codeaurora.org/quic/kernel/dwalker/linux-msm 2010-08-11 09:18:06 -07:00
virtio
vlynq
w1
watchdog watchdog: hpwdt: formatting of pointers in printk() 2010-08-08 18:22:44 +00:00
xen Merge branch 'for-2.6.36' of git://git.kernel.dk/linux-2.6-block 2010-08-10 15:22:42 -07:00
zorro zorro: Fix reading of proc/bus/zorro/* in small chunks 2010-08-09 21:14:08 +02:00
Kconfig
Makefile