• Matthew Auld's avatar
    drm/xe/bo: handle PL_TT -> PL_TT · 8489f30e
    Matthew Auld authored
    When moving between PL_VRAM <-> PL_SYSTEM we have to have use PL_TT in
    the middle as a temporary resource for the actual copy. In some GL
    workloads it can be seen that once the resource has been moved to the
    PL_TT we might have to bail out of the ttm_bo_validate(), before
    finishing the final hop. If this happens the resource is left as
    TTM_PL_FLAG_TEMPORARY, and when the ttm_bo_validate() is restarted the
    current placement is always seen as incompatible, requiring us to
    complete the move.  However if the BO allows PL_TT as a possible
    placement we can end up attempting a PL_TT -> PL_TT move (like when
    running out of VRAM) which leads to explosions in xe_bo_move(), like
    triggering the XE_BUG_ON(!tile).
    
    Going from TTM_PL_FLAG_TEMPORARY with PL_TT -> PL_VRAM should already
    work as-is, so it looks like we only need to worry about PL_TT -> PL_TT
    and it looks like we can just treat it as a dummy move, since no real
    move is needed.
    Reported-by: default avatarJosé Roberto de Souza <jose.souza@intel.com>
    Signed-off-by: default avatarMatthew Auld <matthew.auld@intel.com>
    Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
    Reviewed-by: default avatarThomas Hellström <thomas.hellstrom@linux.intel.com>
    Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    8489f30e
xe_bo.c 49.6 KB