]> git.baikalelectronics.ru Git - kernel.git/commit
sched, idle: Fix the idle polling state logic
authorPeter Zijlstra <peterz@infradead.org>
Wed, 11 Sep 2013 10:43:13 +0000 (12:43 +0200)
committerIngo Molnar <mingo@kernel.org>
Wed, 25 Sep 2013 11:53:10 +0000 (13:53 +0200)
commita56b3e30c7055fe874b2a9c91a7bde1a3df3e111
treeccbaaa51ffd91f34fc0a4f5c5dbad34452ddc354
parent8b63c3b4690e1e5f99fb9c4d7058cf1730be775f
sched, idle: Fix the idle polling state logic

Mike reported that commit 0f06ed1b ("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>
arch/x86/kernel/process.c
drivers/acpi/processor_idle.c
drivers/idle/intel_idle.c
include/linux/sched.h
include/linux/thread_info.h
kernel/cpu/idle.c