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: [<bf06ec34>] LinuxLockMutex+0x1c/0x20 [omapdrm_pvr] [ 37.530334] [ 37.530334] but task is already holding lock: [ 37.536468] (psPVRSRVMutex){+.+.+.}, at: [<bf06ec34>] 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: [<c03d0b84>] drm_release+0x34/0x38c [ 37.596557] #1: (psPVRSRVMutex){+.+.+.}, at: [<bf06ec34>] LinuxLockMutex+0x1c/0x20 [omapdrm_pvr] [ 37.606018] [ 37.606018] stack backtrace: [ 37.610626] [<c001a950>] (unwind_backtrace+0x0/0xec) from [<c06e3988>] (dump_stack+0x20/0x24) [ 37.619628] [<c06e3988>] (dump_stack+0x20/0x24) from [<c008e3f8>] (print_deadlock_bug+0xb8/0xe4) [ 37.628906] [<c008e3f8>] (print_deadlock_bug+0xb8/0xe4) from [<c008e584>] (check_deadlock.isra.19+0x160/0x18c) [ 37.639434] [<c008e584>] (check_deadlock.isra.19+0x160/0x18c) from [<c008fc74>] (validate_chain.isra.23+0x4cc/0x51c) [ 37.650543] [<c008fc74>] (validate_chain.isra.23+0x4cc/0x51c) from [<c00909e0>] (__lock_acquire+0x6a0/0x76c) [ 37.660888] [<c00909e0>] (__lock_acquire+0x6a0/0x76c) from [<c00910ec>] (lock_acquire+0x138/0x15c) [ 37.670349] [<c00910ec>] (lock_acquire+0x138/0x15c) from [<c0704f10>] (mutex_lock_nested+0x54/0x38c) [ 37.679962] [<c0704f10>] (mutex_lock_nested+0x54/0x38c) from [<bf06ec34>] (LinuxLockMutex+0x1c/0x20 [omapdrm_pvr]) [ 37.690917] [<bf06ec34>] (LinuxLockMutex+0x1c/0x20 [omapdrm_pvr]) from [<bf06ccbc>] (LinuxMMapPerProcessDisconnect+0x28/0x78 [omapd) [ 37.704132] [<bf06ccbc>] (LinuxMMapPerProcessDisconnect+0x28/0x78 [omapdrm_pvr]) from [<bf06f130>] (OSPerProcessPrivateDataDeInit+0) [ 37.718719] [<bf06f130>] (OSPerProcessPrivateDataDeInit+0x20/0x44 [omapdrm_pvr]) from [<bf07e610>] (BridgedDispatchKM+0x1f8/0x228 [) [ 37.732391] [<bf07e610>] (BridgedDispatchKM+0x1f8/0x228 [omapdrm_pvr]) from [<bf07e804>] (PVRSRVPerProcessDataDisconnect+0x50/0x68 ) [ 37.746154] [<bf07e804>] (PVRSRVPerProcessDataDisconnect+0x50/0x68 [omapdrm_pvr]) from [<bf076d78>] (PVRSRVProcessDisconnect+0x18/0) [ 37.760284] [<bf076d78>] (PVRSRVProcessDisconnect+0x18/0x1c [omapdrm_pvr]) from [<bf06d028>] (PVRSRVRelease+0x5c/0x94 [omapdrm_pvr]) [ 37.772827] [<bf06d028>] (PVRSRVRelease+0x5c/0x94 [omapdrm_pvr]) from [<bf085c98>] (PVRSRVDrmRelease+0x24/0x2c [omapdrm_pvr]) [ 37.784759] [<bf085c98>] (PVRSRVDrmRelease+0x24/0x2c [omapdrm_pvr]) from [<c05006dc>] (dev_postclose+0x58/0x84) [ 37.795410] [<c05006dc>] (dev_postclose+0x58/0x84) from [<c03d0e40>] (drm_release+0x2f0/0x38c) [ 37.804504] [<c03d0e40>] (drm_release+0x2f0/0x38c) from [<c0103114>] (__fput+0xf8/0x1bc) [ 37.813018] [<c0103114>] (__fput+0xf8/0x1bc) from [<c0103218>] (fput+0x40/0x44) [ 37.820709] [<c0103218>] (fput+0x40/0x44) from [<c0100308>] (filp_close+0x80/0x8c) [ 37.828704] [<c0100308>] (filp_close+0x80/0x8c) from [<c01003c8>] (sys_close+0xb4/0xf4) [ 37.837127] [<c01003c8>] (sys_close+0xb4/0xf4) from [<c00130e0>] (ret_fast_syscall+0x0/0x3c)
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] ======= ======= ======= ======= ======= ======= === linaro- lt-omap #5~oneiric1-Ubuntu ------- ------- ------- ------- ------- --- {+.+.+. }, at: [<bf06ec34>] LinuxLockMutex+ 0x1c/0x20 [omapdrm_pvr] {+.+.+. }, at: [<bf06ec34>] LinuxLockMutex+ 0x1c/0x20 [omapdrm_pvr] tex); tex); mutex){ +.+.+.} , at: [<c03d0b84>] drm_release+ 0x34/0x38c {+.+.+. }, at: [<bf06ec34>] LinuxLockMutex+ 0x1c/0x20 [omapdrm_pvr] backtrace+ 0x0/0xec) from [<c06e3988>] (dump_stack+ 0x20/0x24) 0x20/0x24) from [<c008e3f8>] (print_ deadlock_ bug+0xb8/ 0xe4) deadlock_ bug+0xb8/ 0xe4) from [<c008e584>] (check_ deadlock. isra.19+ 0x160/0x18c) deadlock. isra.19+ 0x160/0x18c) from [<c008fc74>] (validate_ chain.isra. 23+0x4cc/ 0x51c) chain.isra. 23+0x4cc/ 0x51c) from [<c00909e0>] (__lock_ acquire+ 0x6a0/0x76c) acquire+ 0x6a0/0x76c) from [<c00910ec>] (lock_acquire+ 0x138/0x15c) 0x138/0x15c) from [<c0704f10>] (mutex_ lock_nested+ 0x54/0x38c) lock_nested+ 0x54/0x38c) from [<bf06ec34>] (LinuxLockMutex +0x1c/0x20 [omapdrm_pvr]) +0x1c/0x20 [omapdrm_pvr]) from [<bf06ccbc>] (LinuxMMapPerPr ocessDisconnect +0x28/0x78 [omapd) ocessDisconnect +0x28/0x78 [omapdrm_pvr]) from [<bf06f130>] (OSPerProcessPr ivateDataDeInit +0) ivateDataDeInit +0x20/0x44 [omapdrm_pvr]) from [<bf07e610>] (BridgedDispatc hKM+0x1f8/ 0x228 [) hKM+0x1f8/ 0x228 [omapdrm_pvr]) from [<bf07e804>] (PVRSRVPerProce ssDataDisconnec t+0x50/ 0x68 ) ssDataDisconnec t+0x50/ 0x68 [omapdrm_pvr]) from [<bf076d78>] (PVRSRVProcessD isconnect+ 0x18/0) isconnect+ 0x18/0x1c [omapdrm_pvr]) from [<bf06d028>] (PVRSRVRelease+ 0x5c/0x94 [omapdrm_pvr]) 0x5c/0x94 [omapdrm_pvr]) from [<bf085c98>] (PVRSRVDrmRelea se+0x24/ 0x2c [omapdrm_pvr]) se+0x24/ 0x2c [omapdrm_pvr]) from [<c05006dc>] (dev_postclose+ 0x58/0x84) 0x58/0x84) from [<c03d0e40>] (drm_release+ 0x2f0/0x38c) 0x2f0/0x38c) from [<c0103114>] (__fput+0xf8/0x1bc) 0x80/0x8c) 0x80/0x8c) from [<c01003c8>] (sys_close+ 0xb4/0xf4) 0xb4/0xf4) from [<c00130e0>] (ret_fast_ syscall+ 0x0/0x3c)
[ 37.499450] [ INFO: possible recursive locking detected ]
[ 37.505157] 3.1.0-1402-
[ 37.510742] -------
[ 37.516418] Xorg/1686 is trying to acquire lock:
[ 37.521270] (psPVRSRVMutex)
[ 37.530334]
[ 37.530334] but task is already holding lock:
[ 37.536468] (psPVRSRVMutex)
[ 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(psPVRSRVMu
[ 37.567321] lock(psPVRSRVMu
[ 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_
[ 37.596557] #1: (psPVRSRVMutex)
[ 37.606018]
[ 37.606018] stack backtrace:
[ 37.610626] [<c001a950>] (unwind_
[ 37.619628] [<c06e3988>] (dump_stack+
[ 37.628906] [<c008e3f8>] (print_
[ 37.639434] [<c008e584>] (check_
[ 37.650543] [<c008fc74>] (validate_
[ 37.660888] [<c00909e0>] (__lock_
[ 37.670349] [<c00910ec>] (lock_acquire+
[ 37.679962] [<c0704f10>] (mutex_
[ 37.690917] [<bf06ec34>] (LinuxLockMutex
[ 37.704132] [<bf06ccbc>] (LinuxMMapPerPr
[ 37.718719] [<bf06f130>] (OSPerProcessPr
[ 37.732391] [<bf07e610>] (BridgedDispatc
[ 37.746154] [<bf07e804>] (PVRSRVPerProce
[ 37.760284] [<bf076d78>] (PVRSRVProcessD
[ 37.772827] [<bf06d028>] (PVRSRVRelease+
[ 37.784759] [<bf085c98>] (PVRSRVDrmRelea
[ 37.795410] [<c05006dc>] (dev_postclose+
[ 37.804504] [<c03d0e40>] (drm_release+
[ 37.813018] [<c0103114>] (__fput+0xf8/0x1bc) from [<c0103218>] (fput+0x40/0x44)
[ 37.820709] [<c0103218>] (fput+0x40/0x44) from [<c0100308>] (filp_close+
[ 37.828704] [<c0100308>] (filp_close+
[ 37.837127] [<c01003c8>] (sys_close+