linux/arch
Peter Zijlstra e895dad0a5 sched, idle: Fix the idle polling state logic
commit ea81174789 upstream.

Mike reported that commit 7d1a9417 ("x86: Use generic idle loop")
regressed several workloads and caused excessive reschedule
interrupts.

The patch in question failed to notice that the x86 code had an
inverted sense of the polling state versus the new generic code (x86:
default polling, generic: default !polling).

Fix the two prominent x86 mwait based idle drivers and introduce a few
new generic polling helpers (fixing the wrong smp_mb__after_clear_bit
usage).

Also switch the idle routines to using tif_need_resched() which is an
immediate TIF_NEED_RESCHED test as opposed to need_resched which will
end up being slightly different.

Reported-by: Mike Galbraith <bitbucket@online.de>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: lenb@kernel.org
Cc: tglx@linutronix.de
Link: http://lkml.kernel.org/n/tip-nc03imb0etuefmzybzj7sprf@git.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-11-29 11:11:42 -08:00
..
alpha Removal of GENERIC_GPIO for v3.10 2013-05-09 09:59:16 -07:00
arc ARC: Incorrect mm reference used in vmalloc fault handler 2013-11-13 12:05:32 +09:00
arm ARM: integrator: deactivate timer0 on the Integrator/CP 2013-11-04 04:31:06 -08:00
arm64 arm64: perf: fix ARMv8 EVTYPE_MASK to include NSH bit 2013-09-26 17:18:03 -07:00
avr32 avr32: fix clockevents kernel warning 2013-10-13 16:08:31 -07:00
blackfin blackfin updates for Linux 3.10 2013-05-10 07:21:16 -07:00
c6x arch: c6x: mm: include "asm/uaccess.h" to pass compiling 2013-07-21 18:21:29 -07:00
cris - Lots of cleanups from Artem, including deletion of some obsolete drivers 2013-05-09 10:15:46 -07:00
frv Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-05-01 14:08:52 -07:00
h8300 We get rid of the general module prefix confusion with a binary config option, 2013-05-05 10:58:06 -07:00
hexagon Removal of GENERIC_GPIO for v3.10 2013-05-09 09:59:16 -07:00
ia64 Fix TLB gather virtual address range invalidation corner cases 2013-08-20 08:43:05 -07:00
m32r Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-05-01 14:08:52 -07:00
m68k m68k/atari: ARAnyM - Fix NatFeat module support 2013-08-20 08:43:05 -07:00
metag metag: fix mm/hugetlb.c build breakage 2013-06-19 06:23:34 -10:00
microblaze microblaze: fix clone syscall 2013-08-20 08:43:02 -07:00
mips compiler/gcc4: Add quirk for 'asm goto' miscompilation bug 2013-10-18 07:45:45 -07:00
mn10300 mn10300: Use early_param() to parse "mem=" parameter 2013-06-28 16:53:03 +01:00
openrisc Removal of GENERIC_GPIO for v3.10 2013-05-09 09:59:16 -07:00
parisc parisc: Do not crash 64bit SMP kernels on machines with >= 4GB RAM 2013-11-13 12:05:32 +09:00
powerpc compiler/gcc4: Add quirk for 'asm goto' miscompilation bug 2013-10-18 07:45:45 -07:00
s390 crypto: s390 - Fix aes-cbc IV corruption 2013-11-29 11:11:40 -08:00
score score: remove redundant kcore_list entries 2013-05-25 10:27:27 -07:00
sh Fix TLB gather virtual address range invalidation corner cases 2013-08-20 08:43:05 -07:00
sparc compiler/gcc4: Add quirk for 'asm goto' miscompilation bug 2013-10-18 07:45:45 -07:00
tile tile: use a more conservative __my_cpu_offset in CONFIG_PREEMPT 2013-10-13 16:08:34 -07:00
um uml: check length in exitcode_proc_write() 2013-11-13 12:05:33 +09:00
unicore32 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2013-05-10 09:21:05 -07:00
x86 sched, idle: Fix the idle polling state logic 2013-11-29 11:11:42 -08:00
xtensa xtensa: don't use alternate signal stack on threads 2013-11-13 12:05:33 +09:00
.gitignore
Kconfig microblaze: fix clone syscall 2013-08-20 08:43:02 -07:00