Dave Airlie wrote:
> =============================================                                 
>   
> [ INFO: possible recursive locking detected ]                                 
>   
> 2.6.24-0.123.rc6.fc9 #1                                                       
>   
> ---------------------------------------------                                 
>   
> glxgears/2563 is trying to acquire lock:                                      
>   
>  (&bo->mutex){--..}, at: [<f8b42838>] drm_bo_mem_space+0x27a/0x356 [drm]      
>   
>                                                                               
>   
> but task is already holding lock:                                             
>   
>  (&bo->mutex){--..}, at: [<f8b42dff>] drm_bo_do_validate+0x26/0x9c [drm]      
>   
>                                                                               
>   
> other info that might help us debug this:                                     
>   
> 3 locks held by glxgears/2563:                                                
>  
> ]
>  #0:  (&dev_priv->cmdbuf_mutex){--..}, at: [<f8dfcaa2>] 
> i915_execbuffer+0x104/0 
>  #1:  (&bo->mutex){--..}, at: [<f8b42dff>] drm_bo_do_validate+0x26/0x9c 
> [drm]  ]
>  #2:  (&dev->bm.evict_mutex){--..}, at: [<f8b42986>] 
> drm_bo_move_buffer+0x72/0x 
> stack backtrace:
> Pid: 10655, comm: glxgears Not tainted 2.6.24-0.123.rc6.fc9 #1
>  [<c040649a>] show_trace_log_lvl+0x1a/0x2f
>  [<c0406d55>] show_trace+0x12/0x14
>  [<c0407075>] dump_stack+0x6c/0x72
>  [<c044cee3>] __lock_acquire+0x815/0xb5f
>  [<c044d625>] lock_acquire+0x7b/0x9e
>  [<c063cd1b>] mutex_lock_nested+0xec/0x282
>  [<f9016838>] drm_bo_mem_space+0x27a/0x356 [drm]
>  [<f90169bc>] drm_bo_move_buffer+0xa8/0x17b [drm]
>  [<f9016c27>] drm_buffer_object_validate+0x198/0x34a [drm]
>  [<f9016e50>] drm_bo_do_validate+0x77/0x9c [drm]
>  [<f9016f0f>] drm_bo_handle_validate+0x9a/0xc2 [drm]
>  [<f8b4c898>] i915_validate_buffer_list+0x24f/0x36d [i915]
>  [<f8b4db18>] i915_execbuffer+0x17a/0x356 [i915]
>  [<f900c457>] drm_unlocked_ioctl+0x1d3/0x257 [drm]
>  [<f900c4ea>] drm_ioctl+0xf/0x11 [drm]
>  [<c049ce94>] do_ioctl+0x50/0x67
>  [<c049d0f4>] vfs_ioctl+0x249/0x25c
>  [<c049d149>] sys_ioctl+0x42/0x5d
>  [<c0405252>] syscall_call+0x7/0xb
>                                                     
>
> it looks like we can get into drm_bo_mem_force_space, while holding a 
> bo->mutex, then it might be possible to iterate the lru and find the 
> current bo and lock it again.. now something else might stop this but the 
> lockdep may need to be thought about it..
>
> Dave.
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> --
> _______________________________________________
> Dri-devel mailing list
> Dri-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/dri-devel
>   
Dave,
We've seen this on occasions before but never been able to track it 
down, so if you
have a reliable way to reproduce it would be super.

When drm_bo_mem_space() is called for a buffer, that buffer should no 
longer be on the lru lists,
but it is obvious from the error message it's trying to evict itself.

/Thomas






-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to