public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Disable DMC powersaving during GT operations
@ 2017-09-12 12:37 Chris Wilson
  2017-09-12 12:45 ` Tvrtko Ursulin
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Chris Wilson @ 2017-09-12 12:37 UTC (permalink / raw)
  To: intel-gfx

The DMC typifies the worst example of firmware: it overrides system
behaviour and is fubar. When no displays are active, the DMC appears to
continually toggle its control register trying to change display power
states. This in turn has the side effect of slowing down the GT by a few
orders of magntidue, making headless operations intolerably slow.

This seems to affect all machines with dmc (so a byproduct of the dmc
code itself being shared) and severely limits throughput on the CI bxt
and triggers the watchdog for incomplete tests.

Altenative suggestion is to blacklist all DMC firmware until it is
fixed.

References: https://bugs.freedesktop.org/show_bug.cgi?id=100572
Testcase: igt/gem_exec_nop/headless
Suggested-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Imre Deak <imre.deak@intel.com>
---
 drivers/gpu/drm/i915/i915_gem.c         | 3 +++
 drivers/gpu/drm/i915/i915_gem_request.c | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index ba72a4bdaa78..e3236c1d44f0 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -3331,6 +3331,9 @@ i915_gem_idle_work_handler(struct work_struct *work)
 	intel_engines_mark_idle(dev_priv);
 	i915_gem_timelines_mark_idle(dev_priv);
 
+	if (dev_priv->csr.dmc_payload)
+		intel_display_power_put(dev_priv, POWER_DOMAIN_MODESET);
+
 	GEM_BUG_ON(!dev_priv->gt.awake);
 	dev_priv->gt.awake = false;
 	rearm_hangcheck = false;
diff --git a/drivers/gpu/drm/i915/i915_gem_request.c b/drivers/gpu/drm/i915/i915_gem_request.c
index 813a3b546d6e..3c8ebdb5b0b4 100644
--- a/drivers/gpu/drm/i915/i915_gem_request.c
+++ b/drivers/gpu/drm/i915/i915_gem_request.c
@@ -254,6 +254,9 @@ static void mark_busy(struct drm_i915_private *i915)
 	intel_runtime_pm_get_noresume(i915);
 	i915->gt.awake = true;
 
+	if (i915->csr.dmc_payload)
+		intel_display_power_get(i915, POWER_DOMAIN_MODESET);
+
 	intel_enable_gt_powersave(i915);
 	i915_update_gfx_val(i915);
 	if (INTEL_GEN(i915) >= 6)
-- 
2.14.1

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

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

end of thread, other threads:[~2017-09-19 12:22 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-12 12:37 [PATCH] drm/i915: Disable DMC powersaving during GT operations Chris Wilson
2017-09-12 12:45 ` Tvrtko Ursulin
2017-09-12 12:57   ` Tvrtko Ursulin
2017-09-13  9:08     ` Imre Deak
2017-09-12 12:48 ` Chris Wilson
2017-09-18 13:40   ` Joonas Lahtinen
2017-09-19 12:22     ` Tahvanainen, Jari
2017-09-12 13:10 ` ✓ Fi.CI.BAT: success for " Patchwork
2017-09-12 15:55 ` ✗ Fi.CI.IGT: warning " Patchwork

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