Dave, dri guys, Could you take a look at this circular dependency please (below)? I observe it when suspending laptop with radeon drm loaded and with lockdep enabled. It seems that the root of the problem is that various vm ops such as drm_vm_open, drm_mmap) are called with mm semaphore taken, and take dev->struct_mutex. On the other hand, drm_rmmap_locked is called with dev->struct_mutex, and calls mtrr_del which depends on mm semaphore indirectly.
What do you think? Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=12574 Subject : possible circular locking dependency detected Submitter : Michael S. Tsirkin <[email protected]> Date : 2009-01-29 11:35 (11 days old) /var/log/message dump below. ======================================================= [ INFO: possible circular locking dependency detected ] 2.6.29-rc4-mst-debug #95 ------------------------------------------------------- sleep.sh/6730 is trying to acquire lock: (&per_cpu(cpu_policy_rwsem, cpu)){----}, at: [<c02c0da1>] lock_policy_rwsem_write+0x31/0x70 but task is already holding lock: (&cpu_hotplug.lock){--..}, at: [<c012d89a>] cpu_hotplug_begin+0x1a/0x50 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #6 (&cpu_hotplug.lock){--..}: [<c0152221>] validate_chain+0xb51/0x1150 [<c0152a66>] __lock_acquire+0x246/0xa50 [<c01532d0>] lock_acquire+0x60/0x80 [<c0366c5d>] mutex_lock_nested+0x9d/0x2e0 [<c012d8fc>] get_online_cpus+0x2c/0x40 [<c010d96f>] mtrr_del_page+0x2f/0x160 [<c010dada>] mtrr_del+0x3a/0x50 [<f851a342>] drm_rmmap_locked+0xc2/0x180 [drm] [<f8521d31>] drm_master_destroy+0x151/0x160 [drm] [<c022a37c>] kref_put+0x2c/0x80 [<f8521af2>] drm_master_put+0x12/0x20 [drm] [<f851dd1b>] drm_release+0x25b/0x4a0 [drm] [<c019781d>] __fput+0xbd/0x1d0 [<c0197c09>] fput+0x19/0x20 [<c0194a47>] filp_close+0x47/0x70 [<c0194ada>] sys_close+0x6a/0xc0 [<c0103215>] sysenter_do_call+0x12/0x35 [<ffffffff>] 0xffffffff -> #5 (&dev->struct_mutex){--..}: [<c0152221>] validate_chain+0xb51/0x1150 [<c0152a66>] __lock_acquire+0x246/0xa50 [<c01532d0>] lock_acquire+0x60/0x80 [<c0366c5d>] mutex_lock_nested+0x9d/0x2e0 [<f8522add>] drm_vm_open+0x2d/0x50 [drm] [<c012a397>] dup_mm+0x227/0x310 [<c012b22f>] copy_process+0xd7f/0x1020 [<c012b5e8>] do_fork+0x78/0x320 [<c01017ef>] sys_clone+0x2f/0x40 [<c0103215>] sysenter_do_call+0x12/0x35 [<ffffffff>] 0xffffffff -> #4 (&mm->mmap_sem/1){--..}: [<c0152221>] validate_chain+0xb51/0x1150 [<c0152a66>] __lock_acquire+0x246/0xa50 [<c01532d0>] lock_acquire+0x60/0x80 [<c01441e8>] down_write_nested+0x48/0x70 [<c012a238>] dup_mm+0xc8/0x310 [<c012b22f>] copy_process+0xd7f/0x1020 [<c012b5e8>] do_fork+0x78/0x320 [<c01017ef>] sys_clone+0x2f/0x40 [<c0103292>] syscall_call+0x7/0xb [<ffffffff>] 0xffffffff -> #3 (&mm->mmap_sem){----}: [<c0152221>] validate_chain+0xb51/0x1150 [<c0152a66>] __lock_acquire+0x246/0xa50 [<c01532d0>] lock_acquire+0x60/0x80 [<c0183d73>] might_fault+0x73/0x90 [<c022f633>] copy_to_user+0x33/0x60 [<c01a3975>] filldir64+0xb5/0xe0 [<c01e0c2f>] sysfs_readdir+0x11f/0x1f0 [<c01a3b0d>] vfs_readdir+0x8d/0xb0 [<c01a3b99>] sys_getdents64+0x69/0xc0 [<c0103292>] syscall_call+0x7/0xb [<ffffffff>] 0xffffffff -> #2 (sysfs_mutex){--..}: [<c0152221>] validate_chain+0xb51/0x1150 [<c0152a66>] __lock_acquire+0x246/0xa50 [<c01532d0>] lock_acquire+0x60/0x80 [<c0366c5d>] mutex_lock_nested+0x9d/0x2e0 [<c01e0f0c>] sysfs_addrm_start+0x2c/0xb0 [<c01e14a0>] create_dir+0x40/0x90 [<c01e1556>] sysfs_create_subdir+0x16/0x20 [<c01e2770>] internal_create_group+0x50/0x1a0 [<c01e28ec>] sysfs_create_group+0xc/0x10 [<f81674fc>] cpufreq_stat_notifier_policy+0x9c/0x230 [cpufreq_stats] [<c036b007>] notifier_call_chain+0x37/0x80 [<c0144d24>] __blocking_notifier_call_chain+0x44/0x60 [<c0144d5a>] blocking_notifier_call_chain+0x1a/0x20 [<c02c0226>] __cpufreq_set_policy+0xd6/0x230 [<c02c14a8>] cpufreq_add_dev+0x4e8/0x6b0 [<c029d5a5>] sysdev_driver_register+0x75/0x130 [<c02bff55>] cpufreq_register_driver+0xb5/0x1c0 [<f808b0bd>] uinput_destroy_device+0x4d/0x60 [uinput] [<c010111a>] do_one_initcall+0x2a/0x160 [<c015bdf5>] sys_init_module+0x85/0x1b0 [<c0103215>] sysenter_do_call+0x12/0x35 [<ffffffff>] 0xffffffff -> #1 ((cpufreq_policy_notifier_list).rwsem){----}: [<c0152221>] validate_chain+0xb51/0x1150 [<c0152a66>] __lock_acquire+0x246/0xa50 [<c01532d0>] lock_acquire+0x60/0x80 [<c0367441>] down_read+0x41/0x60 [<c0144d0a>] __blocking_notifier_call_chain+0x2a/0x60 [<c0144d5a>] blocking_notifier_call_chain+0x1a/0x20 [<c02c1165>] cpufreq_add_dev+0x1a5/0x6b0 [<c029d5a5>] sysdev_driver_register+0x75/0x130 [<c02bff55>] cpufreq_register_driver+0xb5/0x1c0 [<f808b0bd>] uinput_destroy_device+0x4d/0x60 [uinput] [<c010111a>] do_one_initcall+0x2a/0x160 [<c015bdf5>] sys_init_module+0x85/0x1b0 [<c0103215>] sysenter_do_call+0x12/0x35 [<ffffffff>] 0xffffffff -> #0 (&per_cpu(cpu_policy_rwsem, cpu)){----}: [<c0151cbb>] validate_chain+0x5eb/0x1150 [<c0152a66>] __lock_acquire+0x246/0xa50 [<c01532d0>] lock_acquire+0x60/0x80 [<c03674a1>] down_write+0x41/0x60 [<c02c0da1>] lock_policy_rwsem_write+0x31/0x70 [<c03655a5>] cpufreq_cpu_callback+0x45/0x80 [<c036b007>] notifier_call_chain+0x37/0x80 [<c0144b49>] __raw_notifier_call_chain+0x19/0x20 [<c03574c9>] _cpu_down+0x79/0x280 [<c012da5c>] disable_nonboot_cpus+0x7c/0x100 [<c015cac5>] suspend_devices_and_enter+0xd5/0x170 [<c015cd40>] enter_state+0x1b0/0x1c0 [<c015cddf>] state_store+0x8f/0xd0 [<c0228cf4>] kobj_attr_store+0x24/0x30 [<c01e02d2>] sysfs_write_file+0xa2/0x100 [<c0196e89>] vfs_write+0x99/0x130 [<c01973cd>] sys_write+0x3d/0x70 [<c0103215>] sysenter_do_call+0x12/0x35 [<ffffffff>] 0xffffffff other info that might help us debug this: 4 locks held by sleep.sh/6730: #0: (&buffer->mutex){--..}, at: [<c01e025b>] sysfs_write_file+0x2b/0x100 #1: (pm_mutex){--..}, at: [<c015cbdb>] enter_state+0x4b/0x1c0 #2: (cpu_add_remove_lock){--..}, at: [<c012d83f>] cpu_maps_update_begin+0xf/0x20 #3: (&cpu_hotplug.lock){--..}, at: [<c012d89a>] cpu_hotplug_begin+0x1a/0x50 stack backtrace: Pid: 6730, comm: sleep.sh Not tainted 2.6.29-rc4-mst-debug #95 Call Trace: [<c015166c>] print_circular_bug_tail+0x7c/0xe0 [<c0151cbb>] validate_chain+0x5eb/0x1150 [<c0152a66>] __lock_acquire+0x246/0xa50 [<c013cf1e>] ? __cancel_work_timer+0x2e/0x190 [<c01532d0>] lock_acquire+0x60/0x80 [<c02c0da1>] ? lock_policy_rwsem_write+0x31/0x70 [<c03674a1>] down_write+0x41/0x60 [<c02c0da1>] ? lock_policy_rwsem_write+0x31/0x70 [<c02c0da1>] lock_policy_rwsem_write+0x31/0x70 [<c03655a5>] cpufreq_cpu_callback+0x45/0x80 [<c036b007>] notifier_call_chain+0x37/0x80 [<c0144b49>] __raw_notifier_call_chain+0x19/0x20 [<c03574c9>] _cpu_down+0x79/0x280 [<c012d83f>] ? cpu_maps_update_begin+0xf/0x20 [<c012da5c>] disable_nonboot_cpus+0x7c/0x100 [<c02531cb>] ? acpi_disable_all_gpes+0x25/0x2a [<c015cac5>] suspend_devices_and_enter+0xd5/0x170 [<c015cd40>] enter_state+0x1b0/0x1c0 [<c015cddf>] state_store+0x8f/0xd0 [<c015cd50>] ? state_store+0x0/0xd0 [<c0228cf4>] kobj_attr_store+0x24/0x30 [<c01e02d2>] sysfs_write_file+0xa2/0x100 [<c0196e89>] vfs_write+0x99/0x130 [<c0103247>] ? sysenter_exit+0xf/0x18 [<c01e0230>] ? sysfs_write_file+0x0/0x100 [<c01973cd>] sys_write+0x3d/0x70 [<c0103215>] sysenter_do_call+0x12/0x35 -- MST ------------------------------------------------------------------------------ Create and Deploy Rich Internet Apps outside the browser with Adobe(R)AIR(TM) software. With Adobe AIR, Ajax developers can use existing skills and code to build responsive, highly engaging applications that combine the power of local resources and data with the reach of the web. Download the Adobe AIR SDK and Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com -- _______________________________________________ Dri-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/dri-devel
