From: Paulo Zanoni <przanoni@gmail.com>
To: intel-gfx@lists.freedesktop.org
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Subject: [PATCH 01/11] drm/i915: Accurately track when we mark the hardware as idle/busy
Date: Fri, 21 Feb 2014 13:52:18 -0300 [thread overview]
Message-ID: <1393001548-2883-2-git-send-email-przanoni@gmail.com> (raw)
In-Reply-To: <1393001548-2883-1-git-send-email-przanoni@gmail.com>
From: Chris Wilson <chris@chris-wilson.co.uk>
We currently call intel_mark_idle() too often, as we do so as a
side-effect of processing the request queue. However, we the calls to
intel_mark_idle() are expected to be paired with a call to
intel_mark_busy() (or else we try to idle the hardware by accessing
registers that are already disabled). Make the idle/busy tracking
explicit to prevent the multiple calls.
v2: From Paulo
- Make it compile
- Drop the __i915_add_request chunk
Reported-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Tested-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
---
drivers/gpu/drm/i915/i915_drv.h | 8 ++++++++
drivers/gpu/drm/i915/intel_display.c | 9 +++++++++
2 files changed, 17 insertions(+)
Chris did not reply to my review comments yet, so I just went and implemented
them. We need at least an ACK form him here before merging.
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 8c64831..a5caa7e 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1124,6 +1124,14 @@ struct i915_gem_mm {
*/
bool interruptible;
+ /**
+ * Is the GPU currently considered idle, or busy executing userspace
+ * requests? Whilst idle, we attempt to power down the hardware and
+ * display clocks. In order to reduce the effect on performance, there
+ * is a slight delay before we do so.
+ */
+ bool busy;
+
/** Bit 6 swizzling required for X tiling */
uint32_t bit_6_swizzle_x;
/** Bit 6 swizzling required for Y tiling */
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index f19e6ea..dd416f2 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -8192,8 +8192,12 @@ void intel_mark_busy(struct drm_device *dev)
{
struct drm_i915_private *dev_priv = dev->dev_private;
+ if (dev_priv->mm.busy)
+ return;
+
hsw_package_c8_gpu_busy(dev_priv);
i915_update_gfx_val(dev_priv);
+ dev_priv->mm.busy = true;
}
void intel_mark_idle(struct drm_device *dev)
@@ -8201,6 +8205,11 @@ void intel_mark_idle(struct drm_device *dev)
struct drm_i915_private *dev_priv = dev->dev_private;
struct drm_crtc *crtc;
+ if (!dev_priv->mm.busy)
+ return;
+
+ dev_priv->mm.busy = false;
+
hsw_package_c8_gpu_idle(dev_priv);
if (!i915.powersave)
--
1.8.5.3
next prev parent reply other threads:[~2014-02-21 16:52 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-21 16:52 [PATCH 00/11] Runtime PM fixes Paulo Zanoni
2014-02-21 16:52 ` Paulo Zanoni [this message]
2014-02-21 16:55 ` [PATCH 01/11] drm/i915: Accurately track when we mark the hardware as idle/busy Chris Wilson
2014-02-21 17:04 ` Paulo Zanoni
2014-02-21 17:27 ` Chris Wilson
2014-02-21 19:34 ` Paulo Zanoni
2014-03-05 13:13 ` Daniel Vetter
2014-03-05 13:15 ` Chris Wilson
2014-02-21 16:52 ` [PATCH 02/11] drm/i915: put runtime PM only at the end of intel_mark_idle Paulo Zanoni
2014-02-21 17:28 ` Jesse Barnes
2014-03-05 13:14 ` Daniel Vetter
2014-02-21 16:52 ` [PATCH 03/11] drm/i915: put runtime PM only when we actually release force_wake Paulo Zanoni
2014-02-21 17:34 ` Jesse Barnes
2014-02-21 20:08 ` Paulo Zanoni
2014-02-21 20:16 ` Jesse Barnes
2014-02-21 20:58 ` Paulo Zanoni
2014-03-05 13:17 ` Daniel Vetter
2014-02-21 16:52 ` [PATCH 04/11] drm/i915: get runtime PM at intel_set_mode Paulo Zanoni
2014-02-21 17:35 ` Jesse Barnes
2014-02-24 11:23 ` Imre Deak
2014-02-24 14:34 ` Paulo Zanoni
2014-02-28 13:07 ` Imre Deak
2014-03-05 13:25 ` Daniel Vetter
2014-03-06 16:30 ` Paulo Zanoni
2014-02-21 16:52 ` [PATCH 05/11] drm/i915: get runtime PM while trying to detect CRT Paulo Zanoni
2014-02-21 17:37 ` Jesse Barnes
2014-02-24 11:33 ` Imre Deak
2014-02-24 14:36 ` Paulo Zanoni
2014-02-21 16:52 ` [PATCH 06/11] drm/i915: get/put runtime PM in more places at i915_debugfs.c Paulo Zanoni
2014-02-21 17:41 ` Jesse Barnes
2014-02-21 17:46 ` Paulo Zanoni
2014-03-05 13:29 ` Daniel Vetter
2014-02-21 16:52 ` [PATCH 07/11] drm/i915: kill dev_priv->pc8.gpu_idle Paulo Zanoni
2014-02-28 13:50 ` Imre Deak
2014-02-28 20:11 ` Paulo Zanoni
2014-03-05 13:31 ` Daniel Vetter
2014-02-21 16:52 ` [PATCH 08/11] drm/i915: call assert_device_not_suspended at gen6_force_wake_work Paulo Zanoni
2014-02-21 18:05 ` Paulo Zanoni
2014-02-28 14:12 ` Imre Deak
2014-02-21 16:52 ` [PATCH 09/11] drm/i915: assert force wake is disabled when we runtime suspend Paulo Zanoni
2014-02-28 14:32 ` Imre Deak
2014-02-21 16:52 ` [PATCH 10/11] drm/i915: don't get/put runtime PM at the debugfs forcewake file Paulo Zanoni
2014-02-28 14:34 ` Imre Deak
2014-03-05 13:41 ` Daniel Vetter
2014-02-21 16:52 ` [PATCH 11/11] drm/i915: assert we're not runtime suspended when writing registers Paulo Zanoni
2014-02-28 15:16 ` Imre Deak
2014-03-05 13:44 ` Daniel Vetter
2014-03-05 13:46 ` Daniel Vetter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1393001548-2883-2-git-send-email-przanoni@gmail.com \
--to=przanoni@gmail.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=paulo.r.zanoni@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox