Re: preempt-related hangs

From: Andrew Morton (akpm@zip.com.au)
Date: Sun Mar 24 2002 - 21:11:51 EST


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/



This archive was generated by hypermail 2b29 : Sun Mar 31 2002 - 22:00:08 EST