• Thomas Hellström's avatar
    drm/ttm: Provide a generic LRU walker helper · da966b82
    Thomas Hellström authored
    Provide a generic LRU walker in TTM, in the spirit of drm_gem_lru_scan()
    but building on the restartable TTM LRU functionality.
    
    The LRU walker optionally supports locking objects as part of
    a ww mutex locking transaction, to mimic to some extent the
    current functionality in ttm. However any -EDEADLK return
    is converted to -ENOSPC and then to -ENOMEM before reaching
    the driver, so that the driver will need to backoff and possibly retry
    without being able to keep the ticket.
    
    v3:
    - Move the helper to core ttm.
    - Remove the drm_exec usage from it for now, it will be
      reintroduced later in the series.
    v4:
    - Handle the -EALREADY case if ticketlocking.
    v6:
    - Some cleanup and added code comments (Matthew Brost)
    - Clarified the ticketlock in the commit message (Matthew Brost)
    v7:
    - Use s64 rather than long for the target and progress
      (Christian König)
    - Update documentation to not encourage using pages as a
      progress measure. (Christian König)
    - Remove cond_resched(). (Christian König)
    
    Cc: Christian König <christian.koenig@amd.com>
    Cc: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com>
    Cc: Matthew Brost <matthew.brost@intel.com>
    Cc: <dri-devel@lists.freedesktop.org>
    Signed-off-by: default avatarThomas Hellström <thomas.hellstrom@linux.intel.com>
    Reviewed-by: Matthew Brost <matthew.brost@intel.com> #v6
    Link: https://patchwork.freedesktop.org/patch/msgid/20240705153206.68526-6-thomas.hellstrom@linux.intel.comSigned-off-by: default avatarChristian König <christian.koenig@amd.com>
    da966b82
ttm_bo_util.c 24.6 KB