drm/i915: Resume GuC before using GEM
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 14 Nov 2017 13:03:00 +0000 (13:03 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 14 Nov 2017 23:50:48 +0000 (23:50 +0000)
Resuming GEM presumes it can talk to hw, in particular to ensure the
kernel context is loaded upon resume for powersaving. If the GuC is
still asleep at this point, we upset the HW. Rearrange the resume such
that we restore the original order of init-hw, resume-guc, use-gem.

Fixes: 37cd33006d02 ("drm/i915: Remove redundant intel_autoenable_gt_powersave()")
References: a1c419941453 ("drm/i915/guc: Add host2guc notification for suspend and resume")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Alex Dai <yu.dai@intel.com>
Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171114130300.25677-2-chris@chris-wilson.co.uk
Reviewed-by: Sagar Arun Kamble <sagar.a.kamble@intel.com>
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/i915_gem.c

index 171b86f37878cee5465b7472663d45d191f08b2b..1ae7031eedaa4835e284bdcdd8f28d335511493f 100644 (file)
@@ -1708,8 +1708,6 @@ static int i915_drm_resume(struct drm_device *dev)
 
        i915_gem_resume(dev_priv);
 
-       intel_guc_resume(dev_priv);
-
        intel_modeset_init_hw(dev);
 
        spin_lock_irq(&dev_priv->irq_lock);
index a7979b74ce21ee79571306905764b1a73ce1e272..bf8fea792048085b9e9de3d711d34c4f5448f71c 100644 (file)
@@ -4852,6 +4852,8 @@ void i915_gem_resume(struct drm_i915_private *i915)
        if (i915_gem_init_hw(i915))
                goto err_wedged;
 
+       intel_guc_resume(i915);
+
        /* Always reload a context for powersaving. */
        if (i915_gem_switch_to_kernel_context(i915))
                goto err_wedged;