Messages in this thread Patch in this message | | | From | Alex Shi <> | Subject | [RFC PATCH 1/2] sched/update_avg: avoid negative time | Date | Tue, 21 Jan 2014 13:33:18 +0800 |
| |
rq->avg_idle try to reflect the average idle time between the cpu idle and first wakeup. But in the function, it maybe get a negative value if old avg_idle is too small. Then this negative value will be double counted in next time calculation. Guess that is not the original purpose, so recalibrate it to zero.
Signed-off-by: Alex Shi <alex.shi@linaro.org> --- kernel/sched/core.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 30eb011..af9121c6 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1358,6 +1358,9 @@ static void update_avg(u64 *avg, u64 sample) { s64 diff = sample - *avg; *avg += diff >> 3; + + if (*avg < 0) + *avg = 0; } #endif -- 1.8.1.2
| |