Messages in this thread | | | Date | Fri, 1 Feb 2008 23:44:12 +0100 | From | "Dmitry Adamushko" <> | Subject | Re: [Regression] 2.6.24-git3: Major annoyance during suspend/hibernation on x86-64 (bisected) |
| |
On 01/02/2008, Dmitry Adamushko <dmitry.adamushko@gmail.com> wrote: > On 01/02/2008, Ingo Molnar <mingo@elte.hu> wrote: > > > > thanks - i cannot reproduce it on my usual suspend/resume testbox > > because e1000 broke on it, and this is a pretty annoying regression. > > We'll have to undo the hung-tasks detection feature if it's not fixed > > quickly. (there's no point in debugging features that _add_ bugs) > > I can reproduce it and Peter's patch does fix it for me. > > e.g. > root@earth:/sys/devices/system/cpu/cpu1# time echo 0 > online > real 0m6.743s > root@earth:/sys/devices/system/cpu/cpu1# time echo 0 > online > real 0m7.770s > > I've observed delays from ~3 s. up to ~8 s. (out of ~20 tests) so the > 10s. delay of msleep_interruptible() might be related but > I'm still looking for the reason why this fix helps (and what goes > wrong with the current code). >
heh... it's pretty obvious indeed. What's msleep_interruptible() is all about? :-)
"sleep waiting for signals"
so the 'watchdog' thread gets woken up
[ as a result of cpu_callback(action = CPU_DEAD) --> kthread_stop() ]
just to be immediately scheduled out again for as long as the remaining timeout > 0.
So it should work if we substitute msleep_interruptible() with schedule_timeout_interruptible().
-- Best regards, Dmitry Adamushko
| |