Here is the calling sequence before it gets to that error. Looks like it really is not able to allocate any more memory in some cases.
radeon_bo_list_validate(): r = ttm_bo_validate(&bo->tbo, &bo->placement, true, false);
ttm_bo_validate(): ret = ttm_bo_move_buffer(bo, placement, interruptible, no_wait);
ttm_bo_move_buffer(): spin_lock(&bo->lock); ret = ttm_bo_wait(bo, false, interruptible, no_wait); spin_unlock(&bo->lock);
ttm_bo_wait(): ret = driver->sync_obj_wait(sync_obj, sync_obj_arg, lazy, interruptible); @sync_obj_wait: See ttm_fence_api.h not found.
since radeon driver is in use, and these functions are setup by the driver. sync_obj_wait maps to radeon_sync_obj_wait.
radeon_sync_obj_wait(): return radeon_fence_wait((struct radeon_fence *)sync_obj, interruptible);
radeon_fence_wait(): returns a negative number when a lot of windows are open.
Here is the calling sequence before it gets to that error. Looks like it really is not able to allocate any more memory in some cases.
radeon_ bo_list_ validate( ): validate( &bo->tbo, &bo->placement, true, false);
r = ttm_bo_
ttm_bo_validate(): move_buffer( bo, placement, interruptible, no_wait);
ret = ttm_bo_
ttm_bo_ move_buffer( ):
spin_lock( &bo->lock) ;
spin_unlock( &bo->lock) ;
ret = ttm_bo_wait(bo, false, interruptible, no_wait);
ttm_bo_wait(): >sync_obj_ wait(sync_ obj, sync_obj_arg, lazy, interruptible);
ret = driver-
@sync_obj_wait: See ttm_fence_api.h not found.
since radeon driver is in use, and these functions are setup by sync_obj_ wait.
the driver. sync_obj_wait maps to radeon_
radeon_ sync_obj_ wait(): fence_wait( (struct radeon_fence *)sync_obj, interruptible);
return radeon_
radeon_ fence_wait( ): returns a negative number when a lot of windows are open.