Is there any solution for PVR GPU's deadlock issue? I am troubled by this issue from linaro ubuntu 11.07 to latest lianro ubuntu 11.11 on Pandaborad. The video output of Pandaboard always worked incorrectly. [ 37.492187] ============================================= [ 37.499450] [ INFO: possible recursive locking detected ] [ 37.505157] 3.1.0-1402-linaro-lt-omap #5~oneiric1-Ubuntu [ 37.510742] --------------------------------------------- [ 37.516418] Xorg/1686 is trying to acquire lock: [ 37.521270] (psPVRSRVMutex){+.+.+.}, at: [] LinuxLockMutex+0x1c/0x20 [omapdrm_pvr] [ 37.530334] [ 37.530334] but task is already holding lock: [ 37.536468] (psPVRSRVMutex){+.+.+.}, at: [] LinuxLockMutex+0x1c/0x20 [omapdrm_pvr] [ 37.545471] [ 37.545471] other info that might help us debug this: [ 37.552337] Possible unsafe locking scenario: [ 37.552368] [ 37.558593] CPU0 [ 37.561157] ---- [ 37.563720] lock(psPVRSRVMutex); [ 37.567321] lock(psPVRSRVMutex); [ 37.570892] [ 37.570922] *** DEADLOCK *** [ 37.570922] [ 37.577148] May be due to missing lock nesting notation [ 37.577148] [ 37.584320] 2 locks held by Xorg/1686: [ 37.588256] #0: (drm_global_mutex){+.+.+.}, at: [] drm_release+0x34/0x38c [ 37.596557] #1: (psPVRSRVMutex){+.+.+.}, at: [] LinuxLockMutex+0x1c/0x20 [omapdrm_pvr] [ 37.606018] [ 37.606018] stack backtrace: [ 37.610626] [] (unwind_backtrace+0x0/0xec) from [] (dump_stack+0x20/0x24) [ 37.619628] [] (dump_stack+0x20/0x24) from [] (print_deadlock_bug+0xb8/0xe4) [ 37.628906] [] (print_deadlock_bug+0xb8/0xe4) from [] (check_deadlock.isra.19+0x160/0x18c) [ 37.639434] [] (check_deadlock.isra.19+0x160/0x18c) from [] (validate_chain.isra.23+0x4cc/0x51c) [ 37.650543] [] (validate_chain.isra.23+0x4cc/0x51c) from [] (__lock_acquire+0x6a0/0x76c) [ 37.660888] [] (__lock_acquire+0x6a0/0x76c) from [] (lock_acquire+0x138/0x15c) [ 37.670349] [] (lock_acquire+0x138/0x15c) from [] (mutex_lock_nested+0x54/0x38c) [ 37.679962] [] (mutex_lock_nested+0x54/0x38c) from [] (LinuxLockMutex+0x1c/0x20 [omapdrm_pvr]) [ 37.690917] [] (LinuxLockMutex+0x1c/0x20 [omapdrm_pvr]) from [] (LinuxMMapPerProcessDisconnect+0x28/0x78 [omapd) [ 37.704132] [] (LinuxMMapPerProcessDisconnect+0x28/0x78 [omapdrm_pvr]) from [] (OSPerProcessPrivateDataDeInit+0) [ 37.718719] [] (OSPerProcessPrivateDataDeInit+0x20/0x44 [omapdrm_pvr]) from [] (BridgedDispatchKM+0x1f8/0x228 [) [ 37.732391] [] (BridgedDispatchKM+0x1f8/0x228 [omapdrm_pvr]) from [] (PVRSRVPerProcessDataDisconnect+0x50/0x68 ) [ 37.746154] [] (PVRSRVPerProcessDataDisconnect+0x50/0x68 [omapdrm_pvr]) from [] (PVRSRVProcessDisconnect+0x18/0) [ 37.760284] [] (PVRSRVProcessDisconnect+0x18/0x1c [omapdrm_pvr]) from [] (PVRSRVRelease+0x5c/0x94 [omapdrm_pvr]) [ 37.772827] [] (PVRSRVRelease+0x5c/0x94 [omapdrm_pvr]) from [] (PVRSRVDrmRelease+0x24/0x2c [omapdrm_pvr]) [ 37.784759] [] (PVRSRVDrmRelease+0x24/0x2c [omapdrm_pvr]) from [] (dev_postclose+0x58/0x84) [ 37.795410] [] (dev_postclose+0x58/0x84) from [] (drm_release+0x2f0/0x38c) [ 37.804504] [] (drm_release+0x2f0/0x38c) from [] (__fput+0xf8/0x1bc) [ 37.813018] [] (__fput+0xf8/0x1bc) from [] (fput+0x40/0x44) [ 37.820709] [] (fput+0x40/0x44) from [] (filp_close+0x80/0x8c) [ 37.828704] [] (filp_close+0x80/0x8c) from [] (sys_close+0xb4/0xf4) [ 37.837127] [] (sys_close+0xb4/0xf4) from [] (ret_fast_syscall+0x0/0x3c)