Re: [OOPS] 2.4.20-pre1-ac3, SMP (Dual PIII)

Antti Salmela (asalmela@iki.fi)
Fri, 16 Aug 2002 19:50:57 +0300


On Fri, Aug 16, 2002 at 04:17:18PM +0200, Christian Ehrhardt wrote:
> On Thu, Aug 15, 2002 at 02:33:02AM +0100, Alan Cox wrote:
> > Thanks - your analysis is informative to say the least. It looks like
> > the PIV load balancing code is the problem.
>
> The (untested) patch below should correct this problem along with
> a locking oddity (last hunk) that IMHO either needs fixing or a BIG
> comment. Be prepared for a few (up to 4) lines of fuzz due to additional
> BUG_ONs in both versions of the file.

With this patch I could boot 2.4.20-pre2-ac3 and it has now run nearly an
hour without any problems.

> regards Christian Ehrhardt
>
> [1] http://www.atnf.csiro.au/people/rgooch/benchmarks/linux-scheduler.html
>
>
> --- /usr/src/linux-2.4.20-pre1-ac3/kernel/sched.c Thu Aug 15 20:03:01 2002
> +++ sched.c Fri Aug 16 16:15:57 2002
> @@ -769,7 +772,7 @@
> set_tsk_need_resched(p);
>
> /* put it at the end of the queue: */
> - dequeue_task(p, rq->active);
> + dequeue_task(p, p->array);
> enqueue_task(p, rq->active);
> }
> goto out;
> @@ -785,7 +788,7 @@
> if (p->sleep_avg)
> p->sleep_avg--;
> if (!--p->time_slice) {
> - dequeue_task(p, rq->active);
> + dequeue_task(p, p->array);
> set_tsk_need_resched(p);
> p->prio = effective_prio(p);
> p->time_slice = TASK_TIMESLICE(p);
> @@ -1396,7 +1399,7 @@
> */
> if (likely(current->prio == MAX_PRIO-1)) {
> if (current->time_slice <= 1) {
> - dequeue_task(current, rq->active);
> + dequeue_task(current, array);
> enqueue_task(current, rq->expired);
> } else
> current->time_slice--;
> @@ -1411,7 +1414,7 @@
> list_add_tail(&current->run_list, array->queue + current->prio);
> __set_bit(current->prio, array->bitmap);
> }
> - spin_unlock(&rq->lock);
> + rq_unlock (rq);
>
> schedule();
>

-- 
Antti Salmela
-
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/