drm/i915: Restore GTT mapping first upon resume
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 8 Dec 2010 14:26:19 +0000 (14:26 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 9 Dec 2010 19:46:23 +0000 (19:46 +0000)
As suggested by Daniel Vetter, this is a safeguard should any of the
registers cause reference to PTE entries.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/i915_drv.c

index ad28b21f4d033f2d735ce0d5b091abd6822590e5..2be344a8e93b3db7910e24eabb4f14a279eda1cc 100644 (file)
@@ -304,13 +304,18 @@ static int i915_drm_thaw(struct drm_device *dev)
        struct drm_i915_private *dev_priv = dev->dev_private;
        int error = 0;
 
+       if (drm_core_check_feature(dev, DRIVER_MODESET)) {
+               mutex_lock(&dev->struct_mutex);
+               i915_gem_restore_gtt_mappings(dev);
+               mutex_unlock(&dev->struct_mutex);
+       }
+
        i915_restore_state(dev);
        intel_opregion_setup(dev);
 
        /* KMS EnterVT equivalent */
        if (drm_core_check_feature(dev, DRIVER_MODESET)) {
                mutex_lock(&dev->struct_mutex);
-               i915_gem_restore_gtt_mappings(dev);
                dev_priv->mm.suspended = 0;
 
                error = i915_gem_init_ringbuffer(dev);