[Intel-gfx] [PATCH 5/8] drm/i915/gem/ttm: Only call __i915_gem_object_set_pages if needed

Matthew Auld matthew.william.auld at gmail.com
Mon Jul 26 08:08:34 UTC 2021


On Fri, 23 Jul 2021 at 18:22, Jason Ekstrand <jason at jlekstrand.net> wrote:
>
> __i915_ttm_get_pages does two things.  First, it calls ttm_bo_validate()
> to check the given placement and migrate the BO if needed.  Then, it
> updates the GEM object to match, in case the object was migrated.  If
> no migration occured, however, we might still have pages on the GEM
> object in which case we don't need to fetch them from TTM and call
> __i915_gem_object_set_pages.  This hasn't been a problem before because
> the primary user of __i915_ttm_get_pages is __i915_gem_object_get_pages
> which only calls it if the GEM object doesn't have pages.
>
> However, i915_ttm_migrate also uses __i915_ttm_get_pages to do the
> migration so this meant it was unsafe to call on an already populated
> object.  This patch checks i915_gem_object_has_pages() before trying to
> __i915_gem_object_set_pages so i915_ttm_migrate is safe to call, even on
> populated objects.
>
> Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
Reviewed-by: Matthew Auld <matthew.auld at intel.com>


More information about the Intel-gfx mailing list