Message ID | 4EAA02A7.7010109@infradead.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Hi, On Thu, 2011-10-27 at 18:17 -0700, Geoff Levand wrote: > I verified that indeed 317f394160e9beb97d19a84c39b7e5eb3d7815a8 > 'sched: Move the second half of ttwu() to the remote cpu' introduces > the hang. After some more digging I found that it seems a short while after startup ps3_smp_message_pass() gets called with a PPC_MSG_RESCHEDULE, but then there is no corresponding call to scheduler_ipi() on the target cpu. I'll do some more work on it and verify that this is what is actually happening. -Geoff
diff --git a/kernel/sched.c b/kernel/sched.c index 9e3ede1..c16a35a 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -2561,21 +2561,21 @@ static void ttwu_queue_remote(struct task_struct *p, int cpu) if (!next) smp_send_reschedule(cpu); } #endif static void ttwu_queue(struct task_struct *p, int cpu) { struct rq *rq = cpu_rq(cpu); -#if defined(CONFIG_SMP) && defined(CONFIG_SCHED_TTWU_QUEUE) +#if 0 //defined(CONFIG_SMP) && defined(CONFIG_SCHED_TTWU_QUEUE) if (sched_feat(TTWU_QUEUE) && cpu != smp_processor_id()) { ttwu_queue_remote(p, cpu); return; } #endif raw_spin_lock(&rq->lock); ttwu_do_activate(rq, p, 0); raw_spin_unlock(&rq->lock); }