[Intel-gfx] [CI 2/8] pm-complete

Chris Wilson chris at chris-wilson.co.uk
Wed May 18 09:50:41 UTC 2016


---
 drivers/gpu/drm/i915/i915_drv.c | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index dba03c026151..4f6de54c14fa 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -731,6 +731,10 @@ int i915_suspend_switcheroo(struct drm_device *dev, pm_message_t state)
 	return i915_drm_suspend_late(dev, false);
 }
 
+static void i915_drm_complete(struct drm_device *dev)
+{
+}
+
 static int i915_drm_resume(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -905,7 +909,12 @@ int i915_resume_switcheroo(struct drm_device *dev)
 	if (ret)
 		return ret;
 
-	return i915_drm_resume(dev);
+	ret = i915_drm_resume(dev);
+	if (ret)
+		return ret;
+
+	i915_drm_complete(dev);
+	return 0;
 }
 
 /**
@@ -1115,6 +1124,16 @@ static int i915_pm_resume(struct device *dev)
 	return i915_drm_resume(drm_dev);
 }
 
+static void i915_pm_complete(struct device *dev)
+{
+	struct drm_device *drm_dev = dev_to_i915(dev)->dev;
+
+	if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF)
+		return;
+
+	i915_drm_complete(drm_dev);
+}
+
 /* freeze: before creating the hibernation_image */
 static int i915_pm_freeze(struct device *dev)
 {
@@ -1696,6 +1715,7 @@ static const struct dev_pm_ops i915_pm_ops = {
 	.suspend_late = i915_pm_suspend_late,
 	.resume_early = i915_pm_resume_early,
 	.resume = i915_pm_resume,
+	.complete = i915_pm_complete,
 
 	/*
 	 * S4 event handlers
-- 
2.8.1



More information about the Intel-gfx mailing list