public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Unbind objects in shrinker only if device is runtime active
@ 2016-03-30 10:11 Mika Kuoppala
  2016-03-30 10:20 ` Chris Wilson
  2016-03-31  7:40 ` ✗ Fi.CI.BAT: failure for " Patchwork
  0 siblings, 2 replies; 11+ messages in thread
From: Mika Kuoppala @ 2016-03-30 10:11 UTC (permalink / raw)
  To: intel-gfx; +Cc: Praveen Paneri

From: Praveen Paneri <praveen.paneri@intel.com>

When the system is running low on memory, gem shrinker is invoked.
In this process objects will be unbounded from GTT and unbinding process
will require access to GTT(GTTADR) and also to fence register potentially.
That requires a resume of gfx device, if suspended, in the shrinker path.
Considering the power leakage due to intermediate resume, perform unbinding
operation only if device is already runtime active.

v2: Using newly implemented intel_runtime_pm_get_if_in_use()

Signed-off-by: Akash Goel <akash.goel@intel.com>
Signed-off-by: Praveen Paneri <praveen.paneri@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_gem_shrinker.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_gem_shrinker.c b/drivers/gpu/drm/i915/i915_gem_shrinker.c
index d3c473ffb90a..3bc292d626ff 100644
--- a/drivers/gpu/drm/i915/i915_gem_shrinker.c
+++ b/drivers/gpu/drm/i915/i915_gem_shrinker.c
@@ -129,6 +129,15 @@ i915_gem_shrink(struct drm_i915_private *dev_priv,
 	i915_gem_retire_requests(dev_priv->dev);
 
 	/*
+	 * Unbinding of objects will require HW access; Let us not wake the
+	 * device just to recover a little memory. If absolutely necessary,
+	 * we will force the wake during oom-notifier.
+	 */
+	if ((flags & I915_SHRINK_BOUND) &&
+	    !intel_runtime_pm_get_if_in_use(dev_priv))
+		flags &= ~I915_SHRINK_BOUND;
+
+	/*
 	 * As we may completely rewrite the (un)bound list whilst unbinding
 	 * (due to retiring requests) we have to strictly process only
 	 * one element of the list at the time, and recheck the list
@@ -188,6 +197,9 @@ i915_gem_shrink(struct drm_i915_private *dev_priv,
 		list_splice(&still_in_list, phase->list);
 	}
 
+	if (flags & I915_SHRINK_BOUND)
+		intel_runtime_pm_put(dev_priv);
+
 	i915_gem_retire_requests(dev_priv->dev);
 
 	return count;
-- 
2.5.0

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

^ permalink raw reply related	[flat|nested] 11+ messages in thread
* Re: [PATCH] drm/i915: Skip shrinking of fenced objects if Gfx is suspended
@ 2015-12-17  7:25 Chris Wilson
  2015-12-24 10:46 ` [PATCH] drm/i915: Unbind objects in shrinker only if device is runtime active Praveen Paneri
  0 siblings, 1 reply; 11+ messages in thread
From: Chris Wilson @ 2015-12-17  7:25 UTC (permalink / raw)
  To: Praveen Paneri; +Cc: intel-gfx, Akash Goel

On Thu, Dec 17, 2015 at 10:59:13AM +0530, Praveen Paneri wrote:
> When the system is running low on memory, gem shrinker is invoked.
> In this process objects will be unbinded from GTT.
> For tiled objects, access to fence registers could be required while
> unbinding them. That requires a resume of gfx device, if suspended,
> in the shrinker path. This intermediate resume could cause power
> leakage.
> To avoid this intermediate resume of gfx device, don't consider
> tiled(fenced) objects for purge in the shrinker path.

Well, you can't unbind anything whilst the device is suspended (GSM is
also hardware access).

Please see the recent intel_runtime_pm_tryget() discussion.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-03-31  7:40 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-30 10:11 [PATCH] drm/i915: Unbind objects in shrinker only if device is runtime active Mika Kuoppala
2016-03-30 10:20 ` Chris Wilson
2016-03-30 10:32   ` Mika Kuoppala
2016-03-31  7:40 ` ✗ Fi.CI.BAT: failure for " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2015-12-17  7:25 [PATCH] drm/i915: Skip shrinking of fenced objects if Gfx is suspended Chris Wilson
2015-12-24 10:46 ` [PATCH] drm/i915: Unbind objects in shrinker only if device is runtime active Praveen Paneri
2015-12-24 11:08   ` kbuild test robot
2015-12-24 12:22   ` Chris Wilson
2015-12-24 14:24     ` Goel, Akash
2015-12-24 14:32       ` Chris Wilson
2015-12-24 14:42         ` Goel, Akash
2015-12-24 14:48           ` Chris Wilson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox