Messages in this thread Patch in this message | | | From | Con Kolivas <> | Subject | Re: 2.6.21-rc5-mm4 | Date | Wed, 4 Apr 2007 08:31:34 +1000 |
| |
On Wednesday 04 April 2007 08:20, Michal Piotrowski wrote: > Michal Piotrowski napisał(a): > > http://www.stardust.webpages.pl/files/tbf/bitis-gabonica/2.6.21-rc5-mm4/m > >m-oops > > http://www.stardust.webpages.pl/files/tbf/bitis-gabonica/2.6.21-rc5-mm4/m > >m-config > > Sorry for a delay.
Never apologise!
(I'm trying hard to stay offline for my own health so I may have huge delays).
> Con, I think that your > sched-implement-staircase-deadline-cpu-scheduler-staircase-improvements.pat >ch is causing this oops.
Thanks for heads up!
Try this patch please? --- Fix exiting recalc_task_prio without p->array being updated.
Microoptimisation courtesy of Dmitry Adamushko <dmitry.adamushko@gmail.com>
Signed-off-by: Con Kolivas <kernel@kolivas.org>
--- kernel/sched.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-)
Index: linux-2.6.21-rc5-mm3/kernel/sched.c =================================================================== --- linux-2.6.21-rc5-mm3.orig/kernel/sched.c 2007-04-04 08:23:45.000000000 +1000 +++ linux-2.6.21-rc5-mm3/kernel/sched.c 2007-04-04 08:25:39.000000000 +1000 @@ -683,11 +683,13 @@ static void dequeue_task(struct task_str * The task is being queued on a fresh array so it has its entitlement * bitmap cleared. */ -static inline void task_new_array(struct task_struct *p, struct rq *rq) +static void task_new_array(struct task_struct *p, struct rq *rq, + struct prio_array *array) { bitmap_zero(p->bitmap, PRIO_RANGE); p->rotation = rq->prio_rotation; p->time_slice = p->quota; + p->array = array; } /* Find the first slot from the relevant prio_matrix entry */ @@ -736,11 +738,8 @@ static inline int next_entitled_slot(str static void queue_expired(struct task_struct *p, struct rq *rq) { - p->array = rq->expired; - task_new_array(p, rq); + task_new_array(p, rq, rq->expired); p->prio = p->normal_prio = first_prio_slot(p); - p->time_slice = p->quota; - p->rotation = rq->prio_rotation; } #ifdef CONFIG_SMP @@ -800,9 +799,9 @@ static void recalc_task_prio(struct task queue_expired(p, rq); return; } else - task_new_array(p, rq); + task_new_array(p, rq, array); } else - task_new_array(p, rq); + task_new_array(p, rq, array); queue_prio = next_entitled_slot(p, rq); if (queue_prio >= MAX_PRIO) { -- -ck - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |