>>> On Tue, Feb 5, 2008 at 11:59 AM, in message <[EMAIL PROTECTED]>, Daniel Walker <[EMAIL PROTECTED]> wrote: > On Mon, Feb 04, 2008 at 10:02:12PM -0700, Gregory Haskins wrote: >> >>> On Mon, Feb 4, 2008 at 9:51 PM, in message >> <[EMAIL PROTECTED]>, Daniel Walker >> <[EMAIL PROTECTED]> wrote: >> > I get the following when I tried it, >> > >> > BUG: sleeping function called from invalid context bash(5126) at >> > kernel/rtmutex.c:638 >> > in_atomic():1 [00000001], irqs_disabled():1 >> >> Hi Daniel, >> Can you try this patch and let me know if it fixes your problem? >> >> ----------------------- >> >> use rcu for root-domain kfree >> >> Signed-off-by: Gregory Haskins <[EMAIL PROTECTED]> >> >> diff --git a/kernel/sched.c b/kernel/sched.c >> index e6ad493..77e86c1 100644 >> --- a/kernel/sched.c >> +++ b/kernel/sched.c >> @@ -339,6 +339,7 @@ struct root_domain { >> atomic_t refcount; >> cpumask_t span; >> cpumask_t online; >> + struct rcu_head rcu; >> >> /* >> * The "RT overload" flag: it gets set if a CPU has more than >> @@ -6222,6 +6223,12 @@ sd_parent_degenerate(struct sched_domain *sd, struct > sched_domain *parent) >> return 1; >> } >> >> +/* rcu callback to free a root-domain */ >> +static void rq_free_root(struct rcu_head *rcu) >> +{ >> + kfree(container_of(rcu, struct root_domain, rcu)); >> +} >> + > > I looked at the code a bit, and I'm not sure you need this complexity.. > Once you have replace the old_rq, there is no reason it needs to > protection of the run queue spinlock .. So you could just move the kfree > down below the spin_unlock_irqrestore() ..
Indeed. When I looked last night at the stack, I thought the in_atomic was coming from further up in the trace. I see the issue now, thanks Daniel. (Anyone have a spare brown bag?) -Greg > > Daniel > - > To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in > the body of a message to [EMAIL PROTECTED] > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/