• N
    drm/amdgpu: simplify reservation handling during buffer creation · 59c66c91
    Nicolai Hähnle 提交于
    By using ttm_bo_init_reserved instead of the manual initialization of
    the reservation object, the reservation lock will be properly unlocked
    and destroyed when the TTM BO initialization fails.
    
    Actual deadlocks caused by the missing unlock should have been fixed
    by "drm/ttm: never add BO that failed to validate to the LRU list",
    superseding the flawed fix in commit 38fc4856 ("drm/amdgpu: fix
    a potential deadlock in amdgpu_bo_create_restricted()").
    
    This change fixes remaining recursive locking errors that can be seen
    with lock debugging enabled, and avoids the error of freeing a locked
    mutex.
    
    As an additional minor bonus, buffers created with resv == NULL and
    the AMDGPU_GEM_CREATE_VRAM_CLEARED flag are now only added to the
    global LRU list after the fill commands have been issued.
    
    v2: use amdgpu_bo_unreserve instead of ttm_bo_unreserve
    
    Fixes: 12a852219583 ("drm/amdgpu: improve AMDGPU_GEM_CREATE_VRAM_CLEARED handling (v2)")
    Signed-off-by: NNicolai Hähnle <nicolai.haehnle@amd.com>
    Reviewed-by: NChristian König <christian.koenig@amd.com>
    Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
    59c66c91
amdgpu_object.c 24.7 KB