From patchwork Mon Jan 12 11:39:14 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kamalesh Babulal X-Patchwork-Id: 17915 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from ozlabs.org (localhost [127.0.0.1]) by ozlabs.org (Postfix) with ESMTP id 98527DE184 for ; Mon, 12 Jan 2009 22:50:26 +1100 (EST) X-Original-To: linuxppc-dev@ozlabs.org Delivered-To: linuxppc-dev@ozlabs.org Received: from ausmtp04.au.ibm.com (ausmtp04.au.ibm.com [202.81.18.152]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "ausmtp04.au.ibm.com", Issuer "Equifax" (verified OK)) by ozlabs.org (Postfix) with ESMTPS id 2C2EADE0B0 for ; Mon, 12 Jan 2009 22:47:04 +1100 (EST) Received: from d23relay03.au.ibm.com (d23relay03.au.ibm.com [202.81.18.234]) by ausmtp04.au.ibm.com (8.13.8/8.13.8) with ESMTP id n0CBvj7K167868 for ; Mon, 12 Jan 2009 22:57:45 +1100 Received: from d23av03.au.ibm.com (d23av03.au.ibm.com [9.190.234.97]) by d23relay03.au.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id n0CBeLoP2306072 for ; Mon, 12 Jan 2009 22:40:21 +1100 Received: from d23av03.au.ibm.com (loopback [127.0.0.1]) by d23av03.au.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id n0CBdKpG020416 for ; Mon, 12 Jan 2009 22:39:21 +1100 Received: from linux.vnet.ibm.com ([9.124.158.59]) by d23av03.au.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id n0CBdFd4020346 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 12 Jan 2009 22:39:18 +1100 Date: Mon, 12 Jan 2009 17:09:14 +0530 From: Kamalesh Babulal To: mingo@elte.hu Subject: [BUG] 2.6.29-rc1 - Badness at kernel/sched.c:4440 with CONFIG_DEBUG_PREEMPT Message-ID: <20090112113914.GC8409@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.17 (2007-11-01) Cc: Nick Piggin , dhaval@linux.vnet.ibm.com, mel@csn.ul.ie, vatsa@linux.vnet.ibm.com, linux-kernel@vger.kernel.org, linuxppc-dev@ozlabs.org X-BeenThere: linuxppc-dev@ozlabs.org X-Mailman-Version: 2.1.11 Precedence: list Reply-To: Kamalesh Babulal List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@ozlabs.org Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@ozlabs.org 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 [boot]0012 Setup Arch PCI host bridge /pci@800000020000200 ranges: IO 0x00003dffe01f0000..0x00003dffe01fffff -> 0x00000000000f0000 MEM 0x00003c0000000000..0x00003c007fffffff -> 0x0000000080000000 PCI host bridge /pci@800000020000201 ranges: IO 0x00003dffe02f0000..0x00003dffe02fffff -> 0x00000000000f0000 MEM 0x00003c0080000000..0x00003c00ffffffff -> 0x0000000080000000 PCI host bridge /pci@800000020000202 ranges: IO 0x00003dffe03f0000..0x00003dffe03fffff -> 0x00000000000f0000 MEM 0x00003c0100000000..0x00003c017fffffff -> 0x0000000080000000 PCI host bridge /pci@800000020000203 ranges: IO 0x00003dffe04f0000..0x00003dffe04fffff -> 0x00000000000f0000 MEM 0x00003c0180000000..0x00003c01ffffffff -> 0x0000000080000000 EEH: PCI Enhanced I/O Error Handling Enabled PPC64 nvram contains 15360 bytes Zone PFN ranges: DMA 0x00000000 -> 0x000eb000 Normal 0x000eb000 -> 0x000eb000 Movable zone start PFN for each node early_node_map[3] active PFN ranges 1: 0x00000000 -> 0x00008000 0: 0x00008000 -> 0x00078000 1: 0x00078000 -> 0x000eb000 [boot]0015 Setup Done Built 2 zonelists in Node order, mobility grouping on. Total pages: 943128 Policy zone: DMA Kernel command line: console=hvc0 root=LABEL=/ autobench_args: root=/dev/sda5 ABAT:1231758168 [boot]0020 XICS Init [boot]0021 XICS Done PID hash table entries: 4096 (order: 12, 32768 bytes) clocksource: timebase mult[7d0000] shift[22] registered Console: colour dummy device 80x25 console handover: boot [udbg0] -> real [hvc0] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) ------------[ cut here ]------------ Badness at kernel/sched.c:4440 NIP: c000000000508f6c LR: c000000000508f50 CTR: c000000000052ff0 REGS: c00000000ffffc10 TRAP: 0700 Not tainted (2.6.29-rc1-autokern1) MSR: 8000000000029032 CR: 28000042 XER: 00000004 TASK = c00000000076cba0[0] 'swapper' THREAD: c000000000854000 CPU: 0 GPR00: 0000000000000000 c00000000ffffe90 c0000000008562b0 0000000000000001 GPR04: 0000000000000000 00000000fffedb0a 0000000000000100 0000000000000100 GPR08: 0000000000200200 c0000000009320b8 c000000000756520 c0000000008d39b8 GPR12: 0000000048000044 c000000000897300 0000000000000000 0000000002100000 GPR16: c000000000633670 c000000000631e70 0000000000000000 00000000002bc000 GPR20: 0000000002820c80 c000000000720c80 0000000002820ef0 c000000000720ef0 GPR24: 0000000002c00000 0000000002820c80 c000000000857bd0 0000000000000000 GPR28: c000000000854100 c00000000fffc000 c0000000007e8288 0000000000000000 NIP [c000000000508f6c] .sub_preempt_count+0x6c/0xdc LR [c000000000508f50] .sub_preempt_count+0x50/0xdc Call Trace: [c00000000ffffe90] [c00000000ffffea0] 0xc00000000ffffea0 (unreliable) [c00000000fffff10] [c00000000005e73c] ._local_bh_enable+0x94/0xac [c00000000fffff90] [c000000000025e94] .call_do_softirq+0x14/0x24 [c0000000008579a0] [c00000000000cbd4] .do_softirq+0x98/0x100 [c000000000857a40] [c00000000005eeb0] .irq_exit+0x60/0xc8 [c000000000857ac0] [c00000000002322c] .timer_interrupt+0x118/0x15c [c000000000857b60] [c000000000003700] decrementer_common+0x100/0x180 --- Exception: 901 at .vfs_caches_init_early+0x84/0xb4 LR = .vfs_caches_init_early+0x54/0xb4 [c000000000857ee0] [c0000000006e98a4] .start_kernel+0x31c/0x450 [c000000000857f90] [c000000000008368] .start_here_common+0x1c/0x34 Instruction dump: 54000ffe 7c004850 7f801800 40bc0074 4bd794a5 60000000 2fa30000 419e0070 e93e8418 80090000 2f800000 409e0060 <0fe00000> 48000058 79200620 2fa00000 Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) freeing bootmem node 0 freeing bootmem node 1 Memory: 3754756k/3850240k available (7380k kernel code, 112644k reserved, 1148k data, 749k bss, 304k init) SLUB: Genslabs=13, HWalign=128, Order=0-3, MinObjects=0, CPUs=8, Nodes=16 Calibrating delay loop... 1021.95 BogoMIPS (lpj=2043904) Mount-cache hash table entries: 256 Initializing cgroup subsys ns Initializing cgroup subsys cpuacct git-bisect start # good: [4a6908a3a050aacc9c3a2f36b276b46c0629ad91] Linux 2.6.28 git-bisect good 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 # bad: [2150edc6c5cf00f7adb54538b9ea2a3e9cedca3f] Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 git-bisect bad 2150edc6c5cf00f7adb54538b9ea2a3e9cedca3f # bad: [5ed1836814d908f45cafde0e79cb85314ab9d41d] Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 git-bisect bad 5ed1836814d908f45cafde0e79cb85314ab9d41d # good: [54a696bd07c14d3b1192d03ce7269bc59b45209a] Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 git-bisect good 54a696bd07c14d3b1192d03ce7269bc59b45209a # good: [fc10af8e658936f7b2bddd077f7ddcbe1eddc066] vcan: whitespace fixes git-bisect good fc10af8e658936f7b2bddd077f7ddcbe1eddc066 # bad: [6de71484cf9561edb45224f659a9db38b6056d5e] Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6 git-bisect bad 6de71484cf9561edb45224f659a9db38b6056d5e # good: [3c92ec8ae91ecf59d88c798301833d7cf83f2179] Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc git-bisect good 3c92ec8ae91ecf59d88c798301833d7cf83f2179 # bad: [179475a3b46f86e2d06f83e2312218ac3f0cf3a7] Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip git-bisect bad 179475a3b46f86e2d06f83e2312218ac3f0cf3a7 # bad: [cc37d3d20604f3759d269247b022616f710aa52d] Merge branch 'core/futexes' into core/core git-bisect bad cc37d3d20604f3759d269247b022616f710aa52d # bad: [7918baa555140989eeee1270f48533987d48fdba] mutex: __used is needed for function referenced only from inline asm git-bisect bad 7918baa555140989eeee1270f48533987d48fdba # good: [30742d5c2277c325fb0e9d2d817d55a19995fe8f] Revert "lockdep: fix compilation when CONFIG_TRACE_IRQFLAGS_SUPPORT is not set" git-bisect good 30742d5c2277c325fb0e9d2d817d55a19995fe8f # bad: [c7e78cff6b7518212247fb20b1dc6411540dc9af] lockstat: contend with points git-bisect bad c7e78cff6b7518212247fb20b1dc6411540dc9af # good: [9b9b181ce53ef387dfe3df9316bbc641fca13d51] Merge commit 'v2.6.27-rc7' into core/locking git-bisect good 9b9b181ce53ef387dfe3df9316bbc641fca13d51 # bad: [7317d7b87edb41a9135e30be1ec3f7ef817c53dd] sched: improve preempt debugging git-bisect bad 7317d7b87edb41a9135e30be1ec3f7ef817c53dd # good: [6918bc5c830e890681eabb3c6cb6b8d117a52d14] lockstat: fixup signed division git-bisect good 6918bc5c830e890681eabb3c6cb6b8d117a52d14 kernel warning is not seen after reverting the patch. commit 7317d7b87edb41a9135e30be1ec3f7ef817c53dd Author: Nick Piggin Date: Tue Sep 30 20:50:27 2008 +1000 sched: improve preempt debugging This patch helped me out with a problem I recently had.... Basically, when the kernel lock is held, then preempt_count underflow does not get detected until it is released which may be a long time (and arbitrarily, eg at different points it may be rescheduled). If the bkl is released at schedule, the resulting output is actually fairly cryptic... With any other lock that elevates preempt_count, it is illegal to schedule under it (which would get found pretty quickly). bkl allows scheduling with preempt_count elevated, which makes underflows hard to debug. Signed-off-by: Ingo Molnar diff --git a/kernel/sched.c b/kernel/sched.c index 9889080..ec3bd1f 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -4305,7 +4305,7 @@ void __kprobes sub_preempt_count(int val) /* * Underflow? */ - if (DEBUG_LOCKS_WARN_ON(val > preempt_count())) + if (DEBUG_LOCKS_WARN_ON(val > preempt_count() - (!!kernel_locked()))) return; /* * Is the spinlock portion underflowing?