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

login
register
mail settings
Submitter Ingo Molnar
Date Jan. 12, 2009, 12:05 p.m.
Message ID <20090112120538.GB24266@elte.hu>
Download mbox | patch
Permalink /patch/17921/
State Accepted
Commit 01e3eb82278bf45221fc38b391bc5ee0f6a314d6
Headers show

Comments

Ingo Molnar - Jan. 12, 2009, 12:05 p.m.
* Kamalesh Babulal <kamalesh@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@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@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@gmail.com>
Reported-and-bisected-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 kernel/sched.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Patch

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?