From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935003AbWLEWTG (ORCPT ); Tue, 5 Dec 2006 17:19:06 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S935292AbWLEWTG (ORCPT ); Tue, 5 Dec 2006 17:19:06 -0500 Received: from ogre.sisk.pl ([217.79.144.158]:42960 "EHLO ogre.sisk.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935003AbWLEWTE (ORCPT ); Tue, 5 Dec 2006 17:19:04 -0500 From: "Rafael J. Wysocki" To: Andrew Morton Subject: 2.6.19-rc6-mm2: lockdep unhappy with disable_nonboot_cpus() Date: Tue, 5 Dec 2006 23:14:08 +0100 User-Agent: KMail/1.9.1 Cc: Ingo Molnar , LKML , Pavel Machek MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-2" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200612052314.08840.rjw@sisk.pl> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Hi, When I try to suspend (echo disk > /sys/power/state) an SMP x86-64 box with a lockdep-enabled kernel, I get this (100% of the time): ======================================================= [ INFO: possible circular locking dependency detected ] 2.6.19-rc6-mm2 #62 ------------------------------------------------------- bash/4519 is trying to acquire lock: (&policy->lock){--..}, at: [] mutex_lock+0x25/0x30 but task is already holding lock: (cache_chain_mutex){--..}, at: [] mutex_lock+0x25/0x30 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #3 (cache_chain_mutex){--..}: [] add_lock_to_list+0x8f/0xd0 [] __lock_acquire+0xa9d/0xc20 [] lock_acquire+0x8a/0xc0 [] __mutex_lock_slowpath+0xdd/0x280 [] mutex_lock+0x25/0x30 [] cpuup_callback+0x1e5/0x330 [] notifier_call_chain+0x3f/0x80 [] __raw_notifier_call_chain+0x9/0x10 [] raw_notifier_call_chain+0x11/0x20 [] _cpu_down+0x7f/0x290 [] disable_nonboot_cpus+0x92/0x130 [] prepare_processes+0x1b/0xf0 [] pm_suspend_disk+0xc/0x180 [] enter_state+0x65/0x220 [] state_store+0x7a/0xa0 [] subsys_attr_store+0x24/0x30 [] sysfs_write_file+0xe8/0x120 [] vfs_write+0xdf/0x1a0 [] sys_write+0x50/0x90 [] system_call+0x7e/0x83 [<00002b4b9ff8bcb0>] 0x2b4b9ff8bcb0 [] 0xffffffffffffffff -> #2 (workqueue_mutex){--..}: [] add_lock_to_list+0x8f/0xd0 [] __lock_acquire+0xa9d/0xc20 [] lock_acquire+0x8a/0xc0 [] __mutex_lock_slowpath+0xdd/0x280 [] mutex_lock+0x25/0x30 [] __create_workqueue+0x80/0x1a0 [] cpufreq_governor_dbs+0xd0/0x3b0 [cpufreq_ondemand] [] __cpufreq_governor+0xb5/0x120 [] __cpufreq_set_policy+0x197/0x230 [] store_scaling_governor+0x19c/0x200 [] store+0x57/0x80 [] sysfs_write_file+0xe8/0x120 [] vfs_write+0xdf/0x1a0 [] sys_write+0x50/0x90 [] system_call+0x7e/0x83 [<00002b6437c31cb0>] 0x2b6437c31cb0 [] 0xffffffffffffffff -> #1 (dbs_mutex){--..}: [] add_lock_to_list+0x8f/0xd0 [] __lock_acquire+0xa9d/0xc20 [] lock_acquire+0x8a/0xc0 [] __mutex_lock_slowpath+0xdd/0x280 [] mutex_lock+0x25/0x30 [] cpufreq_governor_dbs+0xae/0x3b0 [cpufreq_ondemand] [] __cpufreq_governor+0xb5/0x120 [] __cpufreq_set_policy+0x197/0x230 [] store_scaling_governor+0x19c/0x200 [] store+0x57/0x80 [] sysfs_write_file+0xe8/0x120 [] vfs_write+0xdf/0x1a0 [] sys_write+0x50/0x90 [] system_call+0x7e/0x83 [<00002b6437c31cb0>] 0x2b6437c31cb0 [] 0xffffffffffffffff -> #0 (&policy->lock){--..}: [] print_circular_bug_tail+0x57/0xb0 [] __lock_acquire+0x984/0xc20 [] lock_acquire+0x8a/0xc0 [] __mutex_lock_slowpath+0xdd/0x280 [] mutex_lock+0x25/0x30 [] cpufreq_driver_target+0x44/0x80 [] cpufreq_cpu_callback+0x64/0x80 [] notifier_call_chain+0x3f/0x80 [] __raw_notifier_call_chain+0x9/0x10 [] raw_notifier_call_chain+0x11/0x20 [] _cpu_down+0x7f/0x290 [] disable_nonboot_cpus+0x92/0x130 [] prepare_processes+0x1b/0xf0 [] pm_suspend_disk+0xc/0x180 [] enter_state+0x65/0x220 [] state_store+0x7a/0xa0 [] subsys_attr_store+0x24/0x30 [] sysfs_write_file+0xe8/0x120 [] vfs_write+0xdf/0x1a0 [] sys_write+0x50/0x90 [] system_call+0x7e/0x83 [<00002b4b9ff8bcb0>] 0x2b4b9ff8bcb0 [] 0xffffffffffffffff other info that might help us debug this: 5 locks held by bash/4519: #0: (pm_mutex){--..}, at: [] enter_state+0x52/0x220 #1: (cpu_add_remove_lock){--..}, at: [] mutex_lock+0x25/0x30 #2: (sched_hotcpu_mutex){--..}, at: [] mutex_lock+0x25/0x30 #3: (workqueue_mutex){--..}, at: [] mutex_lock+0x25/0x30 #4: (cache_chain_mutex){--..}, at: [] mutex_lock+0x25/0x30 stack backtrace: Call Trace: [] dump_trace+0xcd/0x4b0 [] show_trace+0x43/0x70 [] dump_stack+0x15/0x20 [] print_circular_bug_tail+0x98/0xb0 [] __lock_acquire+0x984/0xc20 [] lock_acquire+0x8a/0xc0 [] __mutex_lock_slowpath+0xdd/0x280 [] mutex_lock+0x25/0x30 [] cpufreq_driver_target+0x44/0x80 [] cpufreq_cpu_callback+0x64/0x80 [] notifier_call_chain+0x3f/0x80 [] __raw_notifier_call_chain+0x9/0x10 [] raw_notifier_call_chain+0x11/0x20 [] _cpu_down+0x7f/0x290 [] disable_nonboot_cpus+0x92/0x130 [] prepare_processes+0x1b/0xf0 [] pm_suspend_disk+0xc/0x180 [] enter_state+0x65/0x220 [] state_store+0x7a/0xa0 [] subsys_attr_store+0x24/0x30 [] sysfs_write_file+0xe8/0x120 [] vfs_write+0xdf/0x1a0 [] sys_write+0x50/0x90 [] system_call+0x7e/0x83 [<00002b4b9ff8bcb0>] 5 locks held by bash/4519: #0: (pm_mutex){--..}, at: [] enter_state+0x52/0x220 #1: (cpu_add_remove_lock){--..}, at: [] mutex_lock+0x25/0x30 #2: (sched_hotcpu_mutex){--..}, at: [] mutex_lock+0x25/0x30 #3: (workqueue_mutex){--..}, at: [] mutex_lock+0x25/0x30 #4: (cache_chain_mutex){--..}, at: [] mutex_lock+0x25/0x30 CPU 1 is now offline lockdep: not fixing up alternatives. CPU1 is down Greetings, Rafael -- If you don't have the time to read, you don't have the time or the tools to write. - Stephen King