Re: preempt-related hangs

Andrew Morton (akpm@zip.com.au)
Sun, 24 Mar 2002 18:11:51 -0800


Andrew Morton wrote:
>
> ..
> Kernel is 2.5.7, dual PIII. When I enable preempt it
> locks during boot.

OK, this patch fixed it. I don't know why.

--- linux-2.5.7/kernel/sched.c Mon Mar 18 13:04:41 2002
+++ 25/kernel/sched.c Sun Mar 24 18:09:09 2002
@@ -1545,6 +1545,8 @@ void set_cpus_allowed(task_t *p, unsigne
migration_req_t req;
runqueue_t *rq;

+ preempt_disable();
+
new_mask &= cpu_online_map;
if (!new_mask)
BUG();
@@ -1557,7 +1559,7 @@ void set_cpus_allowed(task_t *p, unsigne
*/
if (new_mask & (1UL << p->thread_info->cpu)) {
task_rq_unlock(rq, &flags);
- return;
+ goto out;
}

init_MUTEX_LOCKED(&req.sem);
@@ -1567,6 +1569,8 @@ void set_cpus_allowed(task_t *p, unsigne
wake_up_process(rq->migration_thread);

down(&req.sem);
+out:
+ preempt_disable();
}

static volatile unsigned long migration_mask;

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