• Andrew Morton's avatar
    [PATCH] cpu_idle() startup race fix · 49487a3d
    Andrew Morton authored
    Diagnosis from Christian Vogel <vogel@skunk.physik.uni-erlangen.de>
    
    cpu_idle() tests pm_idle() just once then falls into the
    
    	while (!need_resched())
    		idle();
    
    loop.
    
    Problem is, that loop never terminates (need_resched() always returns false
    on preemptive kernels).
    
    The other problem is that ACPI updates pm_idle _after_ cpu_idle() has taken a
    local copy.  So we always call default_idle(), even when pm_idle is pointing
    at a new idle handler.
    
    So fix it to pick up changed values of pm_idle() each time around the inner
    loop.
    49487a3d
process.c 17.5 KB