Skip to content

Commit

Permalink
drm/i915: Lazily migrate the objects after hibernation
Browse files Browse the repository at this point in the history
Now that we mark the object domains for having been restored from the
hibernation image, we not need to flush everything during resume and
can instead rely on the normal domain tracking to flush only when
required. The only caveat here are objects that are pinned for use by
the hardware, whose contents must be coherent for when the device
resumes reading from then (shortly afterwards with the driver assuming
the objects are in the correct domain).

References: https://bugs.freedesktop.org/show_bug.cgi?id=94722
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Imre Deak <imre.deak@intel.com>
Cc: David Weinehall <david.weinehall@intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Tested-by: David Weinehall <david.weinehall@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1463207195-22076-3-git-send-email-chris@chris-wilson.co.uk
  • Loading branch information
Chris Wilson committed May 14, 2016
1 parent 461fb99 commit 975f7ff
Showing 1 changed file with 2 additions and 6 deletions.
8 changes: 2 additions & 6 deletions drivers/gpu/drm/i915/i915_gem_gtt.c
Original file line number Diff line number Diff line change
Expand Up @@ -3245,7 +3245,6 @@ void i915_gem_restore_gtt_mappings(struct drm_device *dev)
struct i915_ggtt *ggtt = &dev_priv->ggtt;
struct drm_i915_gem_object *obj;
struct i915_vma *vma;
bool flush;

i915_check_and_clear_faults(dev_priv);

Expand All @@ -3255,19 +3254,16 @@ void i915_gem_restore_gtt_mappings(struct drm_device *dev)

/* Cache flush objects bound into GGTT and rebind them. */
list_for_each_entry(obj, &dev_priv->mm.bound_list, global_list) {
flush = false;
list_for_each_entry(vma, &obj->vma_list, obj_link) {
if (vma->vm != &ggtt->base)
continue;

WARN_ON(i915_vma_bind(vma, obj->cache_level,
PIN_UPDATE));

flush = true;
}

if (flush)
i915_gem_clflush_object(obj, obj->pin_display);
if (obj->pin_display)
WARN_ON(i915_gem_object_set_to_gtt_domain(obj, false));
}

if (INTEL_INFO(dev)->gen >= 8) {
Expand Down

0 comments on commit 975f7ff

Please sign in to comment.