• Chris Wilson's avatar
    drm/i915: Do not call retire_requests from wait_for_rendering · c8725f3d
    Chris Wilson authored
    A common issue we have is that retiring requests causes recursion
    through GTT manipulation or page table manipulation which we can only
    handle at very specific points. However, to maintain internal
    consistency (enforced through our sanity checks on write_domain at
    various points in the GEM object lifecycle) we do need to retire the
    object prior to marking it with a new write_domain, and also clear the
    write_domain for the implicit flush following a batch.
    
    Note that this then allows the unbound objects to still be on the active
    lists, and so care must be taken when removing objects from unbound lists
    (similar to the caveats we face processing the bound lists).
    
    v2: Fix i915_gem_shrink_all() to handle updated object lifetime rules,
    by refactoring it to call into __i915_gem_shrink().
    
    v3: Missed an object-retire prior to changing cache domains in
    i915_gem_object_set_cache_leve()
    
    v4: Rebase
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Tested-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: default avatarBrad Volkin <bradley.d.volkin@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    c8725f3d
i915_gem.c 129 KB