From: Venkata Ramana Nayana <venkata.ramana.nay...@intel.com>

In suspend mode use blitter eviction before disable the runtime
interrupts and in resume use blitter after the gem resume happens.

Signed-off-by: Venkata Ramana Nayana <venkata.ramana.nay...@intel.com>
Cc: Prathap Kumar Valsan <prathap.kumar.val...@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.c | 36 +++++++++++++--------------------
 1 file changed, 14 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 7115f4db5043..eb5383e4a30b 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -1110,13 +1110,6 @@ static int intel_dmem_evict_buffers(struct drm_device 
*dev, bool in_suspend)
        struct intel_memory_region *mem;
        int id, ret = 0;
 
-       /*
-        * FIXME: Presently using memcpy,
-        * will replace with blitter once
-        * fix the issues.
-        */
-       i915->params.enable_eviction = 1;
-
        for_each_memory_region(mem, i915, id) {
                struct list_head still_in_list;
                INIT_LIST_HEAD(&still_in_list);
@@ -1173,7 +1166,6 @@ static int intel_dmem_evict_buffers(struct drm_device 
*dev, bool in_suspend)
                        mutex_unlock(&mem->objects.lock);
                }
        }
-       i915->params.enable_eviction = 3;
        return ret;
 }
 
@@ -1235,6 +1227,18 @@ static int i915_drm_suspend(struct drm_device *dev)
 
        intel_dp_mst_suspend(dev_priv);
 
+       if (HAS_LMEM(dev_priv)) {
+               ret = intel_dmem_evict_buffers(dev, true);
+               if (ret)
+                       return ret;
+
+               i915_teardown_blt_windows(dev_priv);
+
+               ret = i915_gem_suspend_ppgtt_mappings(dev_priv);
+               if (ret)
+                       return ret;
+       }
+
        intel_runtime_pm_disable_interrupts(dev_priv);
        intel_hpd_cancel_work(dev_priv);
 
@@ -1251,18 +1255,6 @@ static int i915_drm_suspend(struct drm_device *dev)
 
        intel_fbdev_set_suspend(dev, FBINFO_STATE_SUSPENDED, true);
 
-       if (HAS_LMEM(dev_priv)) {
-               ret = intel_dmem_evict_buffers(dev, true);
-               if (ret)
-                       return ret;
-
-               i915_teardown_blt_windows(dev_priv);
-
-               ret = i915_gem_suspend_ppgtt_mappings(dev_priv);
-               if (ret)
-                       return ret;
-       }
-
        dev_priv->suspend_count++;
 
        intel_csr_ucode_suspend(dev_priv);
@@ -1418,6 +1410,8 @@ static int i915_drm_resume(struct drm_device *dev)
 
        drm_mode_config_reset(dev);
 
+       i915_gem_resume(dev_priv);
+
        if (HAS_LMEM(dev_priv)) {
                i915_gem_restore_ppgtt_mappings(dev_priv);
 
@@ -1430,8 +1424,6 @@ static int i915_drm_resume(struct drm_device *dev)
                        DRM_ERROR("i915_resume:i915_gem_object_pin_pages failed 
with err=%d\n", ret);
        }
 
-       i915_gem_resume(dev_priv);
-
        intel_modeset_init_hw(dev_priv);
        intel_init_clock_gating(dev_priv);
        intel_hpd_init(dev_priv);
-- 
2.26.2

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to