Re: [Bug #12465] KVM guests stalling on 2.6.28 (bisected)

Peter Zijlstra
2009-01-20T16:19:36Z

On Tue, 2009-01-20 at 17:06 +0100, Ingo Molnar wrote:
> se.wait_max : -92.027877
>
> that field is not supposed to be negative. Mike, Peter, any ideas?

Possibly unrelated, but whilst I was poking at try_to_wake_up yesterday,
I thought I spotted a site where we fail to update rq clock.

Since we just moved the task to a new cpu (and thus rq) we need to
update_rq_clock() again.

diff --git a/kernel/sched.c b/kernel/sched.c
index d7ae5f4..6cd5e52 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -2398,6 +2398,7 @@ static int try_to_wake_up(struct task_struct *p, unsigned int state, int sync)
if (cpu != orig_cpu) {
set_task_cpu(p, cpu);
task_rq_unlock(rq, &flags);
+ update_rq_clock(rq);
/* might preempt at this point */
rq = task_rq_lock(p, &flags);
old_state = p->state;