* [patch] lockdep: core, fix rq-lock handling on __ARCH_WANT_UNLOCKED_CTXSW
@ 2006-07-12 20:26 Ingo Molnar
2006-07-12 22:42 ` Ralf Baechle
0 siblings, 1 reply; 2+ messages in thread
From: Ingo Molnar @ 2006-07-12 20:26 UTC (permalink / raw)
To: Andrew Morton, Linus Torvalds; +Cc: Ralf Baechle, linux-kernel
Subject: lockdep: core, fix rq-lock handling on __ARCH_WANT_UNLOCKED_CTXSW
From: Ingo Molnar <mingo@elte.hu>
on platforms that have __ARCH_WANT_UNLOCKED_CTXSW set and want to
implement lock validator support there's a bug in rq->lock handling: in
this case we dont 'carry over' the runqueue lock into another task - but
still we did a spinlock_release() of it. Fix this by making the
spinlock_release() in context_switch() dependent on
!__ARCH_WANT_UNLOCKED_CTXSW.
(Reported by Ralf Baechle on MIPS, which has __ARCH_WANT_UNLOCKED_CTXSW.
This fixes a lockdep-internal BUG message on such platforms.)
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
kernel/sched.c | 8 ++++++++
1 file changed, 9 insertions(+)
Index: linux/kernel/sched.c
===================================================================
--- linux.orig/kernel/sched.c
+++ linux/kernel/sched.c
@@ -1788,7 +1788,15 @@ context_switch(struct rq *rq, struct tas
WARN_ON(rq->prev_mm);
rq->prev_mm = oldmm;
}
+ /*
+ * Since the runqueue lock will be released by the next
+ * task (which is an invalid locking op but in the case
+ * of the scheduler it's an obvious special-case), so we
+ * do an early lockdep release here:
+ */
+#ifndef __ARCH_WANT_UNLOCKED_CTXSW
spin_release(&rq->lock.dep_map, 1, _THIS_IP_);
+#endif
/* Here we just switch the register state and the stack. */
switch_to(prev, next, prev);
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [patch] lockdep: core, fix rq-lock handling on __ARCH_WANT_UNLOCKED_CTXSW
2006-07-12 20:26 [patch] lockdep: core, fix rq-lock handling on __ARCH_WANT_UNLOCKED_CTXSW Ingo Molnar
@ 2006-07-12 22:42 ` Ralf Baechle
0 siblings, 0 replies; 2+ messages in thread
From: Ralf Baechle @ 2006-07-12 22:42 UTC (permalink / raw)
To: Ingo Molnar; +Cc: Andrew Morton, Linus Torvalds, linux-kernel
On Wed, Jul 12, 2006 at 10:26:39PM +0200, Ingo Molnar wrote:
> Subject: lockdep: core, fix rq-lock handling on __ARCH_WANT_UNLOCKED_CTXSW
> From: Ingo Molnar <mingo@elte.hu>
>
> on platforms that have __ARCH_WANT_UNLOCKED_CTXSW set and want to
> implement lock validator support there's a bug in rq->lock handling: in
> this case we dont 'carry over' the runqueue lock into another task - but
> still we did a spinlock_release() of it. Fix this by making the
> spinlock_release() in context_switch() dependent on
> !__ARCH_WANT_UNLOCKED_CTXSW.
>
> (Reported by Ralf Baechle on MIPS, which has __ARCH_WANT_UNLOCKED_CTXSW.
> This fixes a lockdep-internal BUG message on such platforms.)
>
> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Tested and works as advertised for me,
Ralf
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2006-07-13 11:04 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-12 20:26 [patch] lockdep: core, fix rq-lock handling on __ARCH_WANT_UNLOCKED_CTXSW Ingo Molnar
2006-07-12 22:42 ` Ralf Baechle
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox