[BUG] 2.6.29-rc1 - Badness at kernel/sched.c:4440 with CONFIG_DEBUG_PREEMPT

Ingo Molnar mingo at elte.hu
Mon Jan 12 23:05:38 EST 2009


* Kamalesh Babulal <kamalesh at linux.vnet.ibm.com> wrote:

> Hi Ingo,
> 
> 	While booting up 2.6.29-rc1 kernel on powerpc machine, Kernel
> Badness warning is seen, when compiled with CONFIG_DEBUG_PREEMPT=y

> kernel warning is not seen after reverting the patch.
> 
> commit 7317d7b87edb41a9135e30be1ec3f7ef817c53dd
> Author: Nick Piggin <nickpiggin at yahoo.com.au>
> Date:   Tue Sep 30 20:50:27 2008 +1000
> 
>     sched: improve preempt debugging

thanks. This has been bisected before by Alexey Zaytsev so i've now 
reverted the commit in tip/sched/urgent and will send it to Linus ASAP. 
The revert commit can be found below.

	Ingo

--------------------->
>From 01e3eb82278bf45221fc38b391bc5ee0f6a314d6 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo at elte.hu>
Date: Mon, 12 Jan 2009 13:00:50 +0100
Subject: [PATCH] Revert "sched: improve preempt debugging"

This reverts commit 7317d7b87edb41a9135e30be1ec3f7ef817c53dd.

This has been reported (and bisected) by Alexey Zaytsev and
Kamalesh Babulal to produce annoying warnings during bootup
on both x86 and powerpc.

kernel_locked() is not a valid test in IRQ context (we update the
BKL's ->lock_depth and the preempt count separately and non-atomicalyy),
so we cannot put it into the generic preempt debugging checks which
can run in IRQ contexts too.

Reported-and-bisected-by: Alexey Zaytsev <alexey.zaytsev at gmail.com>
Reported-and-bisected-by: Kamalesh Babulal <kamalesh at linux.vnet.ibm.com>
Signed-off-by: Ingo Molnar <mingo at elte.hu>
---
 kernel/sched.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kernel/sched.c b/kernel/sched.c
index 8be2c13..3b630d8 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -4440,7 +4440,7 @@ void __kprobes sub_preempt_count(int val)
 	/*
 	 * Underflow?
 	 */
-       if (DEBUG_LOCKS_WARN_ON(val > preempt_count() - (!!kernel_locked())))
+	if (DEBUG_LOCKS_WARN_ON(val > preempt_count()))
 		return;
 	/*
 	 * Is the spinlock portion underflowing?



More information about the Linuxppc-dev mailing list