diff options
Diffstat (limited to 'kernel/sched/core.c')
-rw-r--r-- | kernel/sched/core.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 74dd565c2e1b..417cf657a606 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c | |||
@@ -2704,8 +2704,15 @@ need_resched: | |||
2704 | 2704 | ||
2705 | pre_schedule(rq, prev); | 2705 | pre_schedule(rq, prev); |
2706 | 2706 | ||
2707 | if (unlikely(!rq->nr_running)) | 2707 | if (unlikely(!rq->nr_running)) { |
2708 | idle_balance(rq); | 2708 | /* |
2709 | * We must set idle_stamp _before_ calling idle_balance(), such | ||
2710 | * that we measure the duration of idle_balance() as idle time. | ||
2711 | */ | ||
2712 | rq->idle_stamp = rq_clock(rq); | ||
2713 | if (idle_balance(rq)) | ||
2714 | rq->idle_stamp = 0; | ||
2715 | } | ||
2709 | 2716 | ||
2710 | put_prev_task(rq, prev); | 2717 | put_prev_task(rq, prev); |
2711 | next = pick_next_task(rq); | 2718 | next = pick_next_task(rq); |