• Thomas Hellström's avatar
    drm/i915: Reduce the number of objects subject to memcpy recover · a259cc14
    Thomas Hellström authored
    We really only need memcpy restore for objects that affect the
    operability of the migrate context. That is, primarily the page-table
    objects of the migrate VM.
    
    Add an object flag, I915_BO_ALLOC_PM_EARLY for objects that need early
    restores using memcpy and a way to assign LMEM page-table object flags
    to be used by the vms.
    
    Restore objects without this flag with the gpu blitter and only objects
    carrying the flag using TTM memcpy.
    
    Initially mark the migrate, gt, gtt and vgpu vms to use this flag, and
    defer for a later audit which vms actually need it. Most importantly, user-
    allocated vms with pinned page-table objects can be restored using the
    blitter.
    
    Performance-wise memcpy restore is probably as fast as gpu restore if not
    faster, but using gpu restore will help tackling future restrictions in
    mappable LMEM size.
    
    v4:
    - Don't mark the aliasing ppgtt page table flags for early resume, but
      rather the ggtt page table flags as intended. (Matthew Auld)
    - The check for user buffer objects during early resume is pointless, since
      they are never marked I915_BO_ALLOC_PM_EARLY. (Matthew Auld)
    v5:
    - Mark GuC LMEM objects with I915_BO_ALLOC_PM_EARLY to have them restored
      before we fire up the migrate context.
    
    Cc: Matthew Brost <matthew.brost@intel.com>
    Signed-off-by: default avatarThomas Hellström <thomas.hellstrom@linux.intel.com>
    Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210922062527.865433-8-thomas.hellstrom@linux.intel.com
    a259cc14
intel_ggtt.c 38.9 KB