Re: [Intel-gfx] [PATCH v10 2/9] drm/i915: Update GEM suspend/resume flows considering GuC and GEM fences

2017-09-28 Thread Sagar Arun Kamble



On 9/28/2017 5:10 PM, Chris Wilson wrote:

Quoting Sagar Arun Kamble (2017-09-27 10:30:32)

@@ -4607,13 +4611,14 @@ int i915_gem_resume(struct drm_i915_private *dev_priv)
  
 mutex_lock(>struct_mutex);

 i915_gem_restore_gtt_mappings(dev_priv);
+   i915_gem_restore_fences(dev_priv);

Seconded Michal's suggestion, otherwise it looks very clean.
-Chris
This has been updated in the following patch in the latest revision of 
series:

https://patchwork.freedesktop.org/patch/179403/

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


Re: [Intel-gfx] [PATCH v10 2/9] drm/i915: Update GEM suspend/resume flows considering GuC and GEM fences

2017-09-28 Thread Chris Wilson
Quoting Sagar Arun Kamble (2017-09-27 10:30:32)
> @@ -4607,13 +4611,14 @@ int i915_gem_resume(struct drm_i915_private *dev_priv)
>  
> mutex_lock(>struct_mutex);
> i915_gem_restore_gtt_mappings(dev_priv);
> +   i915_gem_restore_fences(dev_priv);

Seconded Michal's suggestion, otherwise it looks very clean.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH v10 2/9] drm/i915: Update GEM suspend/resume flows considering GuC and GEM fences

2017-09-27 Thread Sagar Arun Kamble



On 9/27/2017 9:17 PM, Michal Wajdeczko wrote:
On Wed, 27 Sep 2017 11:30:32 +0200, Sagar Arun Kamble 
 wrote:


This patch moves GuC suspend/resume handlers to corresponding GEM 
handlers

and orders them properly in the runtime and system suspend/resume flows.
i915_gem_restore_fences is GEM resumption task hence it is moved to
i915_gem_resume from i915_restore_state.

v2: Removed documentation of suspend/resume handlers as those are not
interfaces and are just hooks. (Chris)

Signed-off-by: Sagar Arun Kamble 
Cc: Chris Wilson 
Cc: Imre Deak 
Cc: Paulo Zanoni 
Cc: Rodrigo Vivi 
Cc: Michal Wajdeczko 
Cc: Michał Winiarski 
---
 drivers/gpu/drm/i915/i915_drv.c |  7 ---
 drivers/gpu/drm/i915/i915_gem.c | 11 ---
 drivers/gpu/drm/i915/i915_suspend.c |  2 --
 3 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c 
b/drivers/gpu/drm/i915/i915_drv.c

index d0a710d..174a7c5 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -1698,8 +1698,6 @@ static int i915_drm_resume(struct drm_device *dev)
 }
 mutex_unlock(>struct_mutex);
-    intel_guc_resume(dev_priv);
-
 intel_modeset_init_hw(dev);
spin_lock_irq(_priv->irq_lock);
@@ -2504,8 +2502,6 @@ static int intel_runtime_suspend(struct device 
*kdev)

 return ret;
 }
-    intel_guc_suspend(dev_priv);
-
 intel_runtime_pm_disable_interrupts(dev_priv);
ret = 0;
@@ -2522,7 +2518,6 @@ static int intel_runtime_suspend(struct device 
*kdev)

 DRM_ERROR("Runtime suspend failed, disabling it (%d)\n", ret);
 intel_runtime_pm_enable_interrupts(dev_priv);
-    intel_guc_resume(dev_priv);
 i915_gem_runtime_resume(dev_priv);
 enable_rpm_wakeref_asserts(dev_priv);
@@ -2591,8 +2586,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);
diff --git a/drivers/gpu/drm/i915/i915_gem.c 
b/drivers/gpu/drm/i915/i915_gem.c

index 59a88f2..11922af 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2027,6 +2027,8 @@ int i915_gem_runtime_suspend(struct 
drm_i915_private *dev_priv)

 struct drm_i915_gem_object *obj, *on;
 int i;
+    intel_guc_suspend(dev_priv);
+
 /*
  * Only called during RPM suspend. All users of the userfault_list
  * must be holding an RPM wakeref to ensure that this can not
@@ -2077,6 +2079,8 @@ void i915_gem_runtime_resume(struct 
drm_i915_private *dev_priv)

  */
 i915_gem_init_swizzling(dev_priv);
 i915_gem_restore_fences(dev_priv);
+
+    intel_guc_resume(dev_priv);
 }
static int i915_gem_object_create_mmap_offset(struct 
drm_i915_gem_object *obj)
@@ -4551,8 +4555,6 @@ int i915_gem_suspend(struct drm_i915_private 
*dev_priv)

 i915_gem_contexts_lost(dev_priv);
 mutex_unlock(>struct_mutex);
-    intel_guc_suspend(dev_priv);
-
cancel_delayed_work_sync(_priv->gpu_error.hangcheck_work);
 cancel_delayed_work_sync(_priv->gt.retire_work);
@@ -4569,6 +4571,8 @@ int i915_gem_suspend(struct drm_i915_private 
*dev_priv)

 if (WARN_ON(!intel_engines_are_idle(dev_priv)))
 i915_gem_set_wedged(dev_priv); /* no hope, discard 
everything */

+    intel_guc_suspend(dev_priv);
+
 /*
  * Neither the BIOS, ourselves or any other kernel
  * expects the system to be in execlists mode on startup,
@@ -4607,13 +4611,14 @@ int i915_gem_resume(struct drm_i915_private 
*dev_priv)

mutex_lock(>struct_mutex);
 i915_gem_restore_gtt_mappings(dev_priv);
+    i915_gem_restore_fences(dev_priv);
/* As we didn't flush the kernel context before suspend, we cannot
  * guarantee that the context image is complete. So let's just 
reset

  * it and start again.
  */
 dev_priv->gt.resume(dev_priv);
-


I would leave that empty line

Sure. Will update.



+    intel_guc_resume(dev_priv);
 mutex_unlock(>struct_mutex);
return 0;
diff --git a/drivers/gpu/drm/i915/i915_suspend.c 
b/drivers/gpu/drm/i915/i915_suspend.c

index 5c86925a..8f3aa4d 100644
--- a/drivers/gpu/drm/i915/i915_suspend.c
+++ b/drivers/gpu/drm/i915/i915_suspend.c
@@ -108,8 +108,6 @@ int i915_restore_state(struct drm_i915_private 
*dev_priv)

mutex_lock(_priv->drm.struct_mutex);
-    i915_gem_restore_fences(dev_priv);
-


And this move of i915_gem_restore_fences() can likely be in separate 
patch


Michal

Ok. Will create separate patch.



 if (IS_GEN4(dev_priv))
 pci_write_config_word(pdev, GCDGMBUS,
   dev_priv->regfile.saveGCDGMBUS);



Re: [Intel-gfx] [PATCH v10 2/9] drm/i915: Update GEM suspend/resume flows considering GuC and GEM fences

2017-09-27 Thread Michal Wajdeczko
On Wed, 27 Sep 2017 11:30:32 +0200, Sagar Arun Kamble  
 wrote:


This patch moves GuC suspend/resume handlers to corresponding GEM  
handlers

and orders them properly in the runtime and system suspend/resume flows.
i915_gem_restore_fences is GEM resumption task hence it is moved to
i915_gem_resume from i915_restore_state.

v2: Removed documentation of suspend/resume handlers as those are not
interfaces and are just hooks. (Chris)

Signed-off-by: Sagar Arun Kamble 
Cc: Chris Wilson 
Cc: Imre Deak 
Cc: Paulo Zanoni 
Cc: Rodrigo Vivi 
Cc: Michal Wajdeczko 
Cc: Michał Winiarski 
---
 drivers/gpu/drm/i915/i915_drv.c |  7 ---
 drivers/gpu/drm/i915/i915_gem.c | 11 ---
 drivers/gpu/drm/i915/i915_suspend.c |  2 --
 3 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c  
b/drivers/gpu/drm/i915/i915_drv.c

index d0a710d..174a7c5 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -1698,8 +1698,6 @@ static int i915_drm_resume(struct drm_device *dev)
}
mutex_unlock(>struct_mutex);
-   intel_guc_resume(dev_priv);
-
intel_modeset_init_hw(dev);
spin_lock_irq(_priv->irq_lock);
@@ -2504,8 +2502,6 @@ static int intel_runtime_suspend(struct device  
*kdev)

return ret;
}
-   intel_guc_suspend(dev_priv);
-
intel_runtime_pm_disable_interrupts(dev_priv);
ret = 0;
@@ -2522,7 +2518,6 @@ static int intel_runtime_suspend(struct device  
*kdev)

DRM_ERROR("Runtime suspend failed, disabling it (%d)\n", ret);
intel_runtime_pm_enable_interrupts(dev_priv);
-   intel_guc_resume(dev_priv);
i915_gem_runtime_resume(dev_priv);
enable_rpm_wakeref_asserts(dev_priv);
@@ -2591,8 +2586,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);
diff --git a/drivers/gpu/drm/i915/i915_gem.c  
b/drivers/gpu/drm/i915/i915_gem.c

index 59a88f2..11922af 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2027,6 +2027,8 @@ int i915_gem_runtime_suspend(struct  
drm_i915_private *dev_priv)

struct drm_i915_gem_object *obj, *on;
int i;
+   intel_guc_suspend(dev_priv);
+
/*
 * Only called during RPM suspend. All users of the userfault_list
 * must be holding an RPM wakeref to ensure that this can not
@@ -2077,6 +2079,8 @@ void i915_gem_runtime_resume(struct  
drm_i915_private *dev_priv)

 */
i915_gem_init_swizzling(dev_priv);
i915_gem_restore_fences(dev_priv);
+
+   intel_guc_resume(dev_priv);
 }
static int i915_gem_object_create_mmap_offset(struct drm_i915_gem_object  
*obj)
@@ -4551,8 +4555,6 @@ int i915_gem_suspend(struct drm_i915_private  
*dev_priv)

i915_gem_contexts_lost(dev_priv);
mutex_unlock(>struct_mutex);
-   intel_guc_suspend(dev_priv);
-
cancel_delayed_work_sync(_priv->gpu_error.hangcheck_work);
cancel_delayed_work_sync(_priv->gt.retire_work);
@@ -4569,6 +4571,8 @@ int i915_gem_suspend(struct drm_i915_private  
*dev_priv)

if (WARN_ON(!intel_engines_are_idle(dev_priv)))
i915_gem_set_wedged(dev_priv); /* no hope, discard everything */
+   intel_guc_suspend(dev_priv);
+
/*
 * Neither the BIOS, ourselves or any other kernel
 * expects the system to be in execlists mode on startup,
@@ -4607,13 +4611,14 @@ int i915_gem_resume(struct drm_i915_private  
*dev_priv)

mutex_lock(>struct_mutex);
i915_gem_restore_gtt_mappings(dev_priv);
+   i915_gem_restore_fences(dev_priv);
/* As we didn't flush the kernel context before suspend, we cannot
 * guarantee that the context image is complete. So let's just reset
 * it and start again.
 */
dev_priv->gt.resume(dev_priv);
-


I would leave that empty line


+   intel_guc_resume(dev_priv);
mutex_unlock(>struct_mutex);
return 0;
diff --git a/drivers/gpu/drm/i915/i915_suspend.c  
b/drivers/gpu/drm/i915/i915_suspend.c

index 5c86925a..8f3aa4d 100644
--- a/drivers/gpu/drm/i915/i915_suspend.c
+++ b/drivers/gpu/drm/i915/i915_suspend.c
@@ -108,8 +108,6 @@ int i915_restore_state(struct drm_i915_private  
*dev_priv)

mutex_lock(_priv->drm.struct_mutex);
-   i915_gem_restore_fences(dev_priv);
-


And this move of i915_gem_restore_fences() can likely be in separate patch

Michal


if 

[Intel-gfx] [PATCH v10 2/9] drm/i915: Update GEM suspend/resume flows considering GuC and GEM fences

2017-09-27 Thread Sagar Arun Kamble
This patch moves GuC suspend/resume handlers to corresponding GEM handlers
and orders them properly in the runtime and system suspend/resume flows.
i915_gem_restore_fences is GEM resumption task hence it is moved to
i915_gem_resume from i915_restore_state.

v2: Removed documentation of suspend/resume handlers as those are not
interfaces and are just hooks. (Chris)

Signed-off-by: Sagar Arun Kamble 
Cc: Chris Wilson 
Cc: Imre Deak 
Cc: Paulo Zanoni 
Cc: Rodrigo Vivi 
Cc: Michal Wajdeczko 
Cc: Michał Winiarski 
---
 drivers/gpu/drm/i915/i915_drv.c |  7 ---
 drivers/gpu/drm/i915/i915_gem.c | 11 ---
 drivers/gpu/drm/i915/i915_suspend.c |  2 --
 3 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index d0a710d..174a7c5 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -1698,8 +1698,6 @@ static int i915_drm_resume(struct drm_device *dev)
}
mutex_unlock(>struct_mutex);
 
-   intel_guc_resume(dev_priv);
-
intel_modeset_init_hw(dev);
 
spin_lock_irq(_priv->irq_lock);
@@ -2504,8 +2502,6 @@ static int intel_runtime_suspend(struct device *kdev)
return ret;
}
 
-   intel_guc_suspend(dev_priv);
-
intel_runtime_pm_disable_interrupts(dev_priv);
 
ret = 0;
@@ -2522,7 +2518,6 @@ static int intel_runtime_suspend(struct device *kdev)
DRM_ERROR("Runtime suspend failed, disabling it (%d)\n", ret);
intel_runtime_pm_enable_interrupts(dev_priv);
 
-   intel_guc_resume(dev_priv);
i915_gem_runtime_resume(dev_priv);
enable_rpm_wakeref_asserts(dev_priv);
 
@@ -2591,8 +2586,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);
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 59a88f2..11922af 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2027,6 +2027,8 @@ int i915_gem_runtime_suspend(struct drm_i915_private 
*dev_priv)
struct drm_i915_gem_object *obj, *on;
int i;
 
+   intel_guc_suspend(dev_priv);
+
/*
 * Only called during RPM suspend. All users of the userfault_list
 * must be holding an RPM wakeref to ensure that this can not
@@ -2077,6 +2079,8 @@ void i915_gem_runtime_resume(struct drm_i915_private 
*dev_priv)
 */
i915_gem_init_swizzling(dev_priv);
i915_gem_restore_fences(dev_priv);
+
+   intel_guc_resume(dev_priv);
 }
 
 static int i915_gem_object_create_mmap_offset(struct drm_i915_gem_object *obj)
@@ -4551,8 +4555,6 @@ int i915_gem_suspend(struct drm_i915_private *dev_priv)
i915_gem_contexts_lost(dev_priv);
mutex_unlock(>struct_mutex);
 
-   intel_guc_suspend(dev_priv);
-
cancel_delayed_work_sync(_priv->gpu_error.hangcheck_work);
cancel_delayed_work_sync(_priv->gt.retire_work);
 
@@ -4569,6 +4571,8 @@ int i915_gem_suspend(struct drm_i915_private *dev_priv)
if (WARN_ON(!intel_engines_are_idle(dev_priv)))
i915_gem_set_wedged(dev_priv); /* no hope, discard everything */
 
+   intel_guc_suspend(dev_priv);
+
/*
 * Neither the BIOS, ourselves or any other kernel
 * expects the system to be in execlists mode on startup,
@@ -4607,13 +4611,14 @@ int i915_gem_resume(struct drm_i915_private *dev_priv)
 
mutex_lock(>struct_mutex);
i915_gem_restore_gtt_mappings(dev_priv);
+   i915_gem_restore_fences(dev_priv);
 
/* As we didn't flush the kernel context before suspend, we cannot
 * guarantee that the context image is complete. So let's just reset
 * it and start again.
 */
dev_priv->gt.resume(dev_priv);
-
+   intel_guc_resume(dev_priv);
mutex_unlock(>struct_mutex);
 
return 0;
diff --git a/drivers/gpu/drm/i915/i915_suspend.c 
b/drivers/gpu/drm/i915/i915_suspend.c
index 5c86925a..8f3aa4d 100644
--- a/drivers/gpu/drm/i915/i915_suspend.c
+++ b/drivers/gpu/drm/i915/i915_suspend.c
@@ -108,8 +108,6 @@ int i915_restore_state(struct drm_i915_private *dev_priv)
 
mutex_lock(_priv->drm.struct_mutex);
 
-   i915_gem_restore_fences(dev_priv);
-
if (IS_GEN4(dev_priv))
pci_write_config_word(pdev, GCDGMBUS,
  dev_priv->regfile.saveGCDGMBUS);
-- 
1.9.1

___
Intel-gfx