All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paulo Zanoni <przanoni@gmail.com>
To: intel-gfx@lists.freedesktop.org
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Subject: [PATCH 6/7] drm/i915: fix WARNs when reading DDI state while suspended
Date: Tue,  1 Apr 2014 14:55:12 -0300	[thread overview]
Message-ID: <1396374913-2030-7-git-send-email-przanoni@gmail.com> (raw)
In-Reply-To: <1396374913-2030-1-git-send-email-przanoni@gmail.com>

From: Paulo Zanoni <paulo.r.zanoni@intel.com>

If runtime PM is enabled and we unset all modes, we will runtime
suspend after __intel_set_mode() , then function
intel_modeset_check_state() will try to read the HW state while it is
suspended and trigger lots of WARNs because it shouldn't be reading
registers.

So on this patch we make intel_ddi_connector_get_hw_state() return
false in case the power domain is disabled, and we also make
intel_display_power_enabled() return false in case the device is
suspended. Notice that we can't just use
intel_display_power_enabled_sw() because while the driver is being
initialized the power domain refcounts are not reflecting the real
state of the hardware.

Just for reference, I have previously published an alternate patch for
this problem, called "drm/i915: get runtime PM at intel_set_mode".

Testcase: igt/pm_pc8
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
---
 drivers/gpu/drm/i915/intel_ddi.c | 5 +++++
 drivers/gpu/drm/i915/intel_pm.c  | 3 +++
 2 files changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 070bf2e..0ad4e96 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -1108,8 +1108,13 @@ bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector)
 	enum port port = intel_ddi_get_encoder_port(intel_encoder);
 	enum pipe pipe = 0;
 	enum transcoder cpu_transcoder;
+	enum intel_display_power_domain power_domain;
 	uint32_t tmp;
 
+	power_domain = intel_display_port_power_domain(intel_encoder);
+	if (!intel_display_power_enabled(dev_priv, power_domain))
+		return false;
+
 	if (!intel_encoder->get_hw_state(intel_encoder, &pipe))
 		return false;
 
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 38a68ce..299701a 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -5253,6 +5253,9 @@ bool intel_display_power_enabled(struct drm_i915_private *dev_priv,
 	bool is_enabled;
 	int i;
 
+	if (dev_priv->pm.suspended)
+		return false;
+
 	power_domains = &dev_priv->power_domains;
 
 	is_enabled = true;
-- 
1.8.5.3

  parent reply	other threads:[~2014-04-01 17:55 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-01 17:55 [PATCH 0/7] Runtime PM fixes (resend) Paulo Zanoni
2014-04-01 17:55 ` [PATCH 1/7] drm/i915: don't schedule force_wake_timer at gen6_read Paulo Zanoni
2014-04-01 17:55 ` [PATCH 2/7] drm/i915: get runtime PM at i915_reg_read_ioctl Paulo Zanoni
2014-04-01 17:55 ` [PATCH 3/7] drm/i915: don't read pp_ctrl_reg if we're suspended Paulo Zanoni
2014-04-01 20:37   ` Daniel Vetter
2014-04-01 20:48     ` Paulo Zanoni
2014-04-01 20:52       ` Daniel Vetter
2014-04-01 21:04         ` Paulo Zanoni
2014-04-01 21:36           ` Imre Deak
2014-04-01 21:42             ` Imre Deak
2014-04-01 22:07               ` Daniel Vetter
2014-04-01 22:35                 ` Imre Deak
2014-04-02  7:16                   ` Daniel Vetter
2014-04-01 17:55 ` [PATCH 4/7] drm/i915: get runtime PM at i915_display_info Paulo Zanoni
2014-04-01 17:55 ` [PATCH 5/7] drm/i915: don't read cursor registers on powered down pipes Paulo Zanoni
2014-04-01 17:55 ` Paulo Zanoni [this message]
2014-04-01 17:55 ` [PATCH 7/7] drm/i915: don't get/put runtime PM at the debugfs forcewake file Paulo Zanoni
2014-04-01 20:45 ` [PATCH 0/7] Runtime PM fixes (resend) 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=1396374913-2030-7-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.