Skip to content

Commit

Permalink
drm/i915/guc: Enable interrupts before resuming GuC during runtime re…
Browse files Browse the repository at this point in the history
…sume

GuC log streaming needs interrupts enabled prior to GuC resume but
runtime pm interrupt setup was happening post GuC resume. Fix it.
While at it, fix the unwinding of steps in the runtime suspend path.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104695
Signed-off-by: Sagar Arun Kamble <[email protected]>
Cc: Chris Wilson <[email protected]>
Cc: Michal Wajdeczko <[email protected]>
Cc: Michał Winiarski <[email protected]>
Cc: Joonas Lahtinen <[email protected]>
Cc: Marta Lofstedt <[email protected]>
Reviewed-by: Chris Wilson <[email protected]>
Signed-off-by: Chris Wilson <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
  • Loading branch information
Sagar Arun Kamble authored and ickle committed Jan 24, 2018
1 parent 1be333d commit 1ed21cb
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions drivers/gpu/drm/i915/i915_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -2600,6 +2600,11 @@ static int intel_runtime_suspend(struct device *kdev)

intel_runtime_pm_enable_interrupts(dev_priv);

intel_guc_resume(dev_priv);

i915_gem_init_swizzling(dev_priv);
i915_gem_restore_fences(dev_priv);

enable_rpm_wakeref_asserts(dev_priv);

return ret;
Expand Down Expand Up @@ -2665,8 +2670,6 @@ static int intel_runtime_resume(struct device *kdev)
if (intel_uncore_unclaimed_mmio(dev_priv))
DRM_DEBUG_DRIVER("Unclaimed access during suspend, bios?\n");

intel_guc_resume(dev_priv);

if (IS_GEN9_LP(dev_priv)) {
bxt_disable_dc9(dev_priv);
bxt_display_core_init(dev_priv, true);
Expand All @@ -2681,15 +2684,17 @@ static int intel_runtime_resume(struct device *kdev)

intel_uncore_runtime_resume(dev_priv);

intel_runtime_pm_enable_interrupts(dev_priv);

intel_guc_resume(dev_priv);

/*
* No point of rolling back things in case of an error, as the best
* we can do is to hope that things will still work (and disable RPM).
*/
i915_gem_init_swizzling(dev_priv);
i915_gem_restore_fences(dev_priv);

intel_runtime_pm_enable_interrupts(dev_priv);

/*
* On VLV/CHV display interrupts are part of the display
* power well, so hpd is reinitialized from there. For
Expand Down

0 comments on commit 1ed21cb

Please sign in to comment.