Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753428Ab0KUN3s (ORCPT ); Sun, 21 Nov 2010 08:29:48 -0500 Received: from mx1.riseup.net ([204.13.164.18]:33249 "EHLO mx1.riseup.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753083Ab0KUN3r (ORCPT ); Sun, 21 Nov 2010 08:29:47 -0500 X-Greylist: delayed 1252 seconds by postgrey-1.27 at vger.kernel.org; Sun, 21 Nov 2010 08:29:47 EST From: Francisco Jerez To: Arun Bhanu Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, David Airlie , Ben Skeggs , Dave Airlie , Marcin =?utf-8?Q?Ko=C5=9Bcielnicki?= Subject: Re: [BUG?] [Nouveau] INFO: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected References: <20101121110758.GA4267@deepthought.bhanu.net> Date: Sun, 21 Nov 2010 14:08:34 +0100 In-Reply-To: <20101121110758.GA4267@deepthought.bhanu.net> (Arun Bhanu's message of "Sun, 21 Nov 2010 19:07:58 +0800") Message-ID: <87tyjaq0x9.fsf@riseup.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 20514 Lines: 417 --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Arun Bhanu writes: > I am seeing the following in kernel log messages every time I reboot. > I am running 2.6.37-rc2. > (commit 589136bfa784a4558b397f017ca2f06f0ca9080e). > > Please let me know if you need more info or want me to test any > patches. > > [ 1043.994049] =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > [ 1043.995596] [ INFO: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected= ] > [ 1043.996203] 2.6.37-rc2-ab3-589136bfa784a4558b397f017ca2f06f0ca9080e+ #2 > [ 1043.996817] ------------------------------------------------------ > [ 1043.997432] Xorg/2097 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire: > [ 1043.998038] (&(&dev_priv->ramin_lock)->rlock){+.+...}, at: [] nouveau_gpuobj_del+0xb8/0xe2 [nouveau] > [ 1043.998658]=20 > [ 1043.998658] and this task is already holding: > [ 1043.999891] (&(&ramht->lock)->rlock){-.....}, at: [] nouvea= u_ramht_remove+0x23/0x3e [nouveau] > [ 1043.999906] which would create a new lock dependency: > [ 1043.999907] (&(&ramht->lock)->rlock){-.....} -> (&(&dev_priv->ramin_l= ock)->rlock){+.+...} > [ 1043.999913]=20 > [ 1043.999913] but this new dependency connects a HARDIRQ-irq-safe lock: > [ 1043.999914] (&(&ramht->lock)->rlock){-.....} > [ 1043.999916] ... which became HARDIRQ-irq-safe at: > [ 1043.999917] [] __lock_acquire+0x27a/0xc06 > [ 1043.999921] [] lock_acquire+0xbc/0xdc > [ 1043.999923] [] _raw_spin_lock_irqsave+0x48/0x78 > [ 1043.999927] [] nouveau_ramht_find+0x29/0x6d [nouveau] > [ 1043.999941] [] nouveau_irq_handler+0x16a/0x17aa [nouveau] > [ 1043.999953] [] handle_IRQ_event+0x51/0x10f > [ 1043.999956] [] handle_fasteoi_irq+0x95/0xcc > [ 1043.999959]=20 > [ 1043.999960] to a HARDIRQ-irq-unsafe lock: > [ 1043.999961] (&(&dev_priv->ramin_lock)->rlock){+.+...} > [ 1043.999962] ... which became HARDIRQ-irq-unsafe at: > [ 1043.999963] ... [] __lock_acquire+0x2ee/0xc06 > [ 1043.999966] [] lock_acquire+0xbc/0xdc > [ 1043.999968] [] _raw_spin_lock+0x3b/0x68 > [ 1043.999970] [] nouveau_gpuobj_new+0x129/0x39b [nouveau] > [ 1043.999981] [] nv50_instmem_init+0x11a/0x7db [nouveau] > [ 1043.999996] [] nouveau_card_init+0xeda/0x1214 [nouveau] > [ 1044.000007] [] nouveau_load+0x6e7/0x73e [nouveau] > [ 1044.000017] [] drm_get_pci_dev+0x165/0x257 [drm] > [ 1044.000029] [] nouveau_pci_probe+0x12/0x14 [nouveau] > [ 1044.000043] [] local_pci_probe+0x34/0x5f > [ 1044.000046] [] pci_device_probe+0x4d/0x70 > [ 1044.000048] [] driver_probe_device+0x119/0x1e9 > [ 1044.000052] [] __driver_attach+0x44/0x60 > [ 1044.000053] [] bus_for_each_dev+0x42/0x65 > [ 1044.000055] [] driver_attach+0x1e/0x20 > [ 1044.000057] [] bus_add_driver+0xc0/0x218 > [ 1044.000059] [] driver_register+0x84/0xe3 > [ 1044.000061] [] __pci_register_driver+0x51/0xae > [ 1044.000063] [] drm_pci_init+0x37/0x96 [drm] > [ 1044.000074] [] drm_init+0x5c/0x5e [drm] > [ 1044.000083] [] 0xf08e4042 > [ 1044.000086] [] do_one_initcall+0x8c/0x146 > [ 1044.000088] [] sys_init_module+0x12e9/0x1486 > [ 1044.000091] [] sysenter_do_call+0x12/0x38 > [ 1044.000094]=20 > [ 1044.000095] other info that might help us debug this: > [ 1044.000096]=20 > [ 1044.000097] 2 locks held by Xorg/2097: > [ 1044.000098] #0: (drm_global_mutex){+.+.+.}, at: [] drm_ioc= tl+0x2f1/0x3c5 [drm] > [ 1044.000107] #1: (&(&ramht->lock)->rlock){-.....}, at: [] n= ouveau_ramht_remove+0x23/0x3e [nouveau] > [ 1044.000123]=20 > [ 1044.000123] the dependencies between HARDIRQ-irq-safe lock and the hol= ding lock: > [ 1044.000147] -> (&(&ramht->lock)->rlock){-.....} ops: 61 { > [ 1044.000149] IN-HARDIRQ-W at: > [ 1044.000150] [] __lock= _acquire+0x27a/0xc06 > [ 1044.000154] [] lock_a= cquire+0xbc/0xdc > [ 1044.000156] [] _raw_s= pin_lock_irqsave+0x48/0x78 > [ 1044.000159] [] nouvea= u_ramht_find+0x29/0x6d [nouveau] > [ 1044.000173] [] nouvea= u_irq_handler+0x16a/0x17aa [nouveau] > [ 1044.000186] [] handle= _IRQ_event+0x51/0x10f > [ 1044.000189] [] handle= _fasteoi_irq+0x95/0xcc > [ 1044.000192] INITIAL USE at: > [ 1044.000193] [] __lock_= acquire+0x362/0xc06 > [ 1044.000196] [] lock_ac= quire+0xbc/0xdc > [ 1044.000199] [] _raw_sp= in_lock_irqsave+0x48/0x78 > [ 1044.000201] [] nouveau= _ramht_find+0x29/0x6d [nouveau] > [ 1044.000216] [] nouveau= _ramht_insert+0x39/0x2dd [nouveau] > [ 1044.000230] [] nv50_ev= o_dmaobj_new.clone.4+0xe7/0xfd [nouveau] > [ 1044.000246] [] nv50_di= splay_create+0x289/0x5bd [nouveau] > [ 1044.000262] [] nouveau= _card_init+0xf7b/0x1214 [nouveau] > [ 1044.000273] [] nouveau= _load+0x6e7/0x73e [nouveau] > [ 1044.000284] [] drm_get= _pci_dev+0x165/0x257 [drm] > [ 1044.000295] [] nouveau= _pci_probe+0x12/0x14 [nouveau] > [ 1044.000308] [] local_p= ci_probe+0x34/0x5f > [ 1044.000311] [] pci_dev= ice_probe+0x4d/0x70 > [ 1044.000313] [] driver_= probe_device+0x119/0x1e9 > [ 1044.000315] [] __drive= r_attach+0x44/0x60 > [ 1044.000318] [] bus_for= _each_dev+0x42/0x65 > [ 1044.000320] [] driver_= attach+0x1e/0x20 > [ 1044.000323] [] bus_add= _driver+0xc0/0x218 > [ 1044.000325] [] driver_= register+0x84/0xe3 > [ 1044.000327] [] __pci_r= egister_driver+0x51/0xae > [ 1044.000329] [] drm_pci= _init+0x37/0x96 [drm] > [ 1044.000341] [] drm_ini= t+0x5c/0x5e [drm] > [ 1044.000351] [] 0xf08e4= 042 > [ 1044.000354] [] do_one_= initcall+0x8c/0x146 > [ 1044.000356] [] sys_ini= t_module+0x12e9/0x1486 > [ 1044.000360] [] sysente= r_do_call+0x12/0x38 > [ 1044.000362] } > [ 1044.000363] ... key at: [] __key.34354+0x0/0xfffeefd6 = [nouveau] > [ 1044.000373] ... acquired at: > [ 1044.000374] [] check_irq_usage+0x40/0x86 > [ 1044.000376] [] __lock_acquire+0x99f/0xc06 > [ 1044.000379] [] lock_acquire+0xbc/0xdc > [ 1044.000381] [] _raw_spin_lock+0x3b/0x68 > [ 1044.000382] [] nouveau_gpuobj_del+0xb8/0xe2 [nouveau] > [ 1044.000393] [] kref_put+0x39/0x42 > [ 1044.000396] [] nouveau_gpuobj_ref+0x2d/0x33 [nouveau] > [ 1044.000407] [] nouveau_ramht_remove_locked+0x50/0x1d7 [no= uveau] > [ 1044.000422] [] nouveau_ramht_remove+0x2f/0x3e [nouveau] > [ 1044.000436] [] nouveau_ioctl_gpuobj_free+0x89/0x93 [nouve= au] > [ 1044.000447] [] drm_ioctl+0x305/0x3c5 [drm] > [ 1044.000456] [] do_vfs_ioctl+0x591/0x5c2 > [ 1044.000459] [] sys_ioctl+0x48/0x69 > [ 1044.000461] [] sysenter_do_call+0x12/0x38 > [ 1044.000463]=20 > [ 1044.000464]=20 > [ 1044.000464] the dependencies between the lock to be acquired and HARDI= RQ-irq-unsafe lock: > [ 1044.000486] -> (&(&dev_priv->ramin_lock)->rlock){+.+...} ops: 20682 { > [ 1044.000489] HARDIRQ-ON-W at: > [ 1044.000490] [] __lock= _acquire+0x2ee/0xc06 > [ 1044.000492] [] lock_a= cquire+0xbc/0xdc > [ 1044.000495] [] _raw_s= pin_lock+0x3b/0x68 > [ 1044.000498] [] nouvea= u_gpuobj_new+0x129/0x39b [nouveau] > [ 1044.000509] [] nv50_i= nstmem_init+0x11a/0x7db [nouveau] > [ 1044.000524] [] nouvea= u_card_init+0xeda/0x1214 [nouveau] > [ 1044.000536] [] nouvea= u_load+0x6e7/0x73e [nouveau] > [ 1044.000546] [] drm_ge= t_pci_dev+0x165/0x257 [drm] > [ 1044.000557] [] nouvea= u_pci_probe+0x12/0x14 [nouveau] > [ 1044.000571] [] local_= pci_probe+0x34/0x5f > [ 1044.000574] [] pci_de= vice_probe+0x4d/0x70 > [ 1044.000577] [] driver= _probe_device+0x119/0x1e9 > [ 1044.000579] [] __driv= er_attach+0x44/0x60 > [ 1044.000581] [] bus_fo= r_each_dev+0x42/0x65 > [ 1044.000585] [] driver= _attach+0x1e/0x20 > [ 1044.000587] [] bus_ad= d_driver+0xc0/0x218 > [ 1044.000589] [] driver= _register+0x84/0xe3 > [ 1044.000591] [] __pci_= register_driver+0x51/0xae > [ 1044.000595] [] drm_pc= i_init+0x37/0x96 [drm] > [ 1044.000606] [] drm_in= it+0x5c/0x5e [drm] > [ 1044.000615] [] 0xf08e= 4042 > [ 1044.000617] [] do_one= _initcall+0x8c/0x146 > [ 1044.000621] [] sys_in= it_module+0x12e9/0x1486 > [ 1044.000624] [] sysent= er_do_call+0x12/0x38 > [ 1044.000626] SOFTIRQ-ON-W at: > [ 1044.000627] [] __lock= _acquire+0x30d/0xc06 > [ 1044.000630] [] lock_a= cquire+0xbc/0xdc > [ 1044.000633] [] _raw_s= pin_lock+0x3b/0x68 > [ 1044.000636] [] nouvea= u_gpuobj_new+0x129/0x39b [nouveau] > [ 1044.000646] [] nv50_i= nstmem_init+0x11a/0x7db [nouveau] > [ 1044.000662] [] nouvea= u_card_init+0xeda/0x1214 [nouveau] > [ 1044.000672] [] nouvea= u_load+0x6e7/0x73e [nouveau] > [ 1044.000682] [] drm_ge= t_pci_dev+0x165/0x257 [drm] > [ 1044.000693] [] nouvea= u_pci_probe+0x12/0x14 [nouveau] > [ 1044.000707] [] local_= pci_probe+0x34/0x5f > [ 1044.000710] [] pci_de= vice_probe+0x4d/0x70 > [ 1044.000712] [] driver= _probe_device+0x119/0x1e9 > [ 1044.000715] [] __driv= er_attach+0x44/0x60 > [ 1044.000717] [] bus_fo= r_each_dev+0x42/0x65 > [ 1044.000720] [] driver= _attach+0x1e/0x20 > [ 1044.000722] [] bus_ad= d_driver+0xc0/0x218 > [ 1044.000724] [] driver= _register+0x84/0xe3 > [ 1044.000726] [] __pci_= register_driver+0x51/0xae > [ 1044.000729] [] drm_pc= i_init+0x37/0x96 [drm] > [ 1044.000740] [] drm_in= it+0x5c/0x5e [drm] > [ 1044.000750] [] 0xf08e= 4042 > [ 1044.000755] [] do_one= _initcall+0x8c/0x146 > [ 1044.000760] [] sys_in= it_module+0x12e9/0x1486 > [ 1044.000762] [] sysent= er_do_call+0x12/0x38 > [ 1044.000765] INITIAL USE at: > [ 1044.000766] [] __lock_= acquire+0x362/0xc06 > [ 1044.000769] [] lock_ac= quire+0xbc/0xdc > [ 1044.000772] [] _raw_sp= in_lock+0x3b/0x68 > [ 1044.000775] [] nouveau= _gpuobj_new+0x129/0x39b [nouveau] > [ 1044.000786] [] nv50_in= stmem_init+0x11a/0x7db [nouveau] > [ 1044.000801] [] nouveau= _card_init+0xeda/0x1214 [nouveau] > [ 1044.000811] [] nouveau= _load+0x6e7/0x73e [nouveau] > [ 1044.000821] [] drm_get= _pci_dev+0x165/0x257 [drm] > [ 1044.000832] [] nouveau= _pci_probe+0x12/0x14 [nouveau] > [ 1044.000845] [] local_p= ci_probe+0x34/0x5f > [ 1044.000848] [] pci_dev= ice_probe+0x4d/0x70 > [ 1044.000851] [] driver_= probe_device+0x119/0x1e9 > [ 1044.000854] [] __drive= r_attach+0x44/0x60 > [ 1044.000856] [] bus_for= _each_dev+0x42/0x65 > [ 1044.000858] [] driver_= attach+0x1e/0x20 > [ 1044.000861] [] bus_add= _driver+0xc0/0x218 > [ 1044.000864] [] driver_= register+0x84/0xe3 > [ 1044.000866] [] __pci_r= egister_driver+0x51/0xae > [ 1044.000868] [] drm_pci= _init+0x37/0x96 [drm] > [ 1044.000879] [] drm_ini= t+0x5c/0x5e [drm] > [ 1044.000887] [] 0xf08e4= 042 > [ 1044.000891] [] do_one_= initcall+0x8c/0x146 > [ 1044.000893] [] sys_ini= t_module+0x12e9/0x1486 > [ 1044.000896] [] sysente= r_do_call+0x12/0x38 > [ 1044.000899] } > [ 1044.000900] ... key at: [] __key.34274+0x0/0xfffef00a = [nouveau] > [ 1044.000910] ... acquired at: > [ 1044.000911] [] check_irq_usage+0x40/0x86 > [ 1044.000914] [] __lock_acquire+0x99f/0xc06 > [ 1044.000916] [] lock_acquire+0xbc/0xdc > [ 1044.000918] [] _raw_spin_lock+0x3b/0x68 > [ 1044.000920] [] nouveau_gpuobj_del+0xb8/0xe2 [nouveau] > [ 1044.000930] [] kref_put+0x39/0x42 > [ 1044.000932] [] nouveau_gpuobj_ref+0x2d/0x33 [nouveau] > [ 1044.000942] [] nouveau_ramht_remove_locked+0x50/0x1d7 [no= uveau] > [ 1044.000956] [] nouveau_ramht_remove+0x2f/0x3e [nouveau] > [ 1044.000970] [] nouveau_ioctl_gpuobj_free+0x89/0x93 [nouve= au] > [ 1044.000980] [] drm_ioctl+0x305/0x3c5 [drm] > [ 1044.000988] [] do_vfs_ioctl+0x591/0x5c2 > [ 1044.000991] [] sys_ioctl+0x48/0x69 > [ 1044.000993] [] sysenter_do_call+0x12/0x38 > [ 1044.000995]=20 > [ 1044.000995]=20 > [ 1044.000996] stack backtrace: > [ 1044.000998] Pid: 2097, comm: Xorg Not tainted 2.6.37-rc2-ab3-589136bfa= 784a4558b397f017ca2f06f0ca9080e+ #2 > [ 1044.000999] Call Trace: > [ 1044.001002] [] ? printk+0x2d/0x34 > [ 1044.001005] [] check_usage+0x2d9/0x2e6 > [ 1044.001007] [] ? mark_lock+0x26/0x1bb > [ 1044.001011] [] ? sched_clock+0x8/0xb > [ 1044.001013] [] check_irq_usage+0x40/0x86 > [ 1044.001016] [] __lock_acquire+0x99f/0xc06 > [ 1044.001018] [] ? register_lock_class+0x17/0x2a1 > [ 1044.001030] [] ? nouveau_gpuobj_del+0xb8/0xe2 [nouveau] > [ 1044.001032] [] lock_acquire+0xbc/0xdc > [ 1044.001043] [] ? nouveau_gpuobj_del+0xb8/0xe2 [nouveau] > [ 1044.001046] [] _raw_spin_lock+0x3b/0x68 > [ 1044.001057] [] ? nouveau_gpuobj_del+0xb8/0xe2 [nouveau] > [ 1044.001068] [] nouveau_gpuobj_del+0xb8/0xe2 [nouveau] > [ 1044.001071] [] ? local_clock+0x32/0x49 > [ 1044.001082] [] ? nouveau_gpuobj_del+0x0/0xe2 [nouveau] > [ 1044.001084] [] kref_put+0x39/0x42 > [ 1044.001095] [] nouveau_gpuobj_ref+0x2d/0x33 [nouveau] > [ 1044.001110] [] nouveau_ramht_remove_locked+0x50/0x1d7 [nouv= eau] > [ 1044.001125] [] nouveau_ramht_remove+0x2f/0x3e [nouveau] > [ 1044.001136] [] nouveau_ioctl_gpuobj_free+0x89/0x93 [nouveau] > [ 1044.001139] [] ? mutex_lock_nested+0x3b/0x40 > [ 1044.001149] [] drm_ioctl+0x305/0x3c5 [drm] > [ 1044.001162] [] ? nouveau_ioctl_gpuobj_free+0x0/0x93 [nouvea= u] > [ 1044.001166] [] ? native_sched_clock+0x4d/0x52 > [ 1044.001168] [] ? sched_clock+0x8/0xb > [ 1044.001170] [] ? sched_clock_cpu+0x42/0x14d > [ 1044.001173] [] ? _raw_spin_lock+0x61/0x68 > [ 1044.001175] [] ? trace_hardirqs_off+0xb/0xd > [ 1044.001177] [] ? local_clock+0x32/0x49 > [ 1044.001180] [] ? lock_release_holdtime+0x30/0xb5 > [ 1044.001189] [] ? drm_ioctl+0x0/0x3c5 [drm] > [ 1044.001191] [] do_vfs_ioctl+0x591/0x5c2 > [ 1044.001195] [] ? up_read+0x22/0x25 > [ 1044.001198] [] ? do_page_fault+0x330/0x36e > [ 1044.001200] [] ? lock_is_held+0x70/0x78 > [ 1044.001202] [] ? fcheck_files+0xab/0xdc > [ 1044.001204] [] ? fget_light+0x2f/0x6d > [ 1044.001206] [] sys_ioctl+0x48/0x69 > [ 1044.001209] [] sysenter_do_call+0x12/0x38 > [ 1044.001822] [drm] nouveau 0000:08:00.0: nouveau_channel_free: freeing = fifo 2 > > -Arun This should be already fixed in Linus' kernel tree. --=-=-=-- --==-=-= Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iF4EAREIAAYFAkzpGdIACgkQg5k4nX1Sv1t0SgEAh5w80qVbpbE9Sb9lIKcgW3DN KUcra+H+4vLX0i/uBCIBAJJtPeIQwh9I+ADTDn8GWRfw3XlN5Wp5Nu747Rk1Q6yH =Hm+N -----END PGP SIGNATURE----- --==-=-=-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/