Messages in this thread Patch in this message |  | | Date | Tue, 19 Jul 2011 14:58:49 -0600 | | From | Terry Loftin <> | | Subject | [PATCH 2/2] sched: Fix "divide error: 0000" in find_busiest_group |
| |
Add a check to sched_avg_update() to detect and reset age_stamp if the clock value has wrapped. Because __cycles_2_ns() includes an offset to account for start up time, the clock may not wrap to zero, so use the current clock value instead.
Signed-off-by: Terry Loftin <terry.loftin@hp.com> Signed-off-by: Bob Montgomery <bob.montgomery@hp.com> --- diff --git a/kernel/sched.c b/kernel/sched.c index 18d38e4..b39cae1 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -1256,6 +1256,8 @@ static void sched_avg_update(struct rq *rq) { s64 period = sched_avg_period();
+ if (unlikely(rq->age_stamp > rq->clock)) + rq->age_stamp = rq->clock; while ((s64)(rq->clock - rq->age_stamp) > period) { /* * Inline assembly required to prevent the compiler
|  |