On Mon, 2011-06-13 at 19:31 -0400, Glauber Costa wrote: > @@ -1981,12 +1987,29 @@ static void update_rq_clock_task(struct rq > *rq, s64 delta) > > rq->prev_irq_time += irq_delta; > delta -= irq_delta; > +#endif > +#ifdef CONFIG_PARAVIRT_TIME_ACCOUNTING > + if (static_branch((¶virt_steal_rq_enabled))) { Why is that a different variable from the touch_steal_time() one? > + > + steal = paravirt_steal_clock(cpu_of(rq)); > + steal -= rq->prev_steal_time_acc; > + > + rq->prev_steal_time_acc += steal; You have this addition in the wrong place, when you clip: > + if (steal > delta) > + steal = delta; you just lost your steal delta, so the addition to prev_steal_time_acc needs to be after the clip. > + delta -= steal; > + } > +#endif > + > rq->clock_task += delta; > > - if (irq_delta && sched_feat(NONIRQ_POWER)) > - sched_rt_avg_update(rq, irq_delta); > + if ((irq_delta + steal) && sched_feat(NONTASK_POWER)) > + sched_rt_avg_update(rq, irq_delta + steal); > } -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html