x86: Simplify cpu_idle_wait
authorVenki Pallipadi <venkatesh.pallipadi@intel.com>
Thu, 10 Apr 2008 16:49:58 +0000 (09:49 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 10 Apr 2008 22:38:29 +0000 (15:38 -0700)
commit783e391b7b5b273cd20856d8f6f4878da8ec31b3
tree897e8db7c6eaf3763c2f1ef9aa099f2691d76400
parenta1e58bbdc969c3fe60addca7f2729779d22a83c1
x86: Simplify cpu_idle_wait

This patch also resolves hangs on boot:
http://lkml.org/lkml/2008/2/23/263
http://bugzilla.kernel.org/show_bug.cgi?id=10093

The bug was causing once-in-few-reboots 10-15 sec wait during boot on
certain laptops.

Earlier commit 40d6a146629b98d8e322b6f9332b182c7cbff3df added
smp_call_function in cpu_idle_wait() to kick cpus that are in tickless
idle.  Looking at cpu_idle_wait code at that time, code seemed to be
over-engineered for a case which is rarely used (while changing idle
handler).

Below is a simplified version of cpu_idle_wait, which just makes a dummy
smp_call_function to all cpus, to make them come out of old idle handler
and start using the new idle handler.  It eliminates code in the idle
loop to handle cpu_idle_wait.

Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/x86/kernel/process_32.c
arch/x86/kernel/process_64.c