Comment 63 for bug 507148

Revision history for this message
Manoj Iyer (manjo) wrote :

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.