48737a8
From: Rob Clark <robdclark@gmail.com>
48737a8
Date: Mon, 15 Dec 2014 13:56:32 -0500
48737a8
Subject: [PATCH] drm/i915: tame the chattermouth (v2)
48737a8
48737a8
Many distro's have mechanism in place to collect and automatically file
48737a8
bugs for failed WARN()s.  And since i915 has a lot of hw state sanity
48737a8
checks which result in WARN(), it generates quite a lot of noise which
48737a8
is somewhat disconcerting to the end user.
48737a8
48737a8
Separate out the internal hw-is-in-the-state-I-expected checks into
48737a8
I915_STATE_WARN()s and allow configuration via i915.verbose_checks module
48737a8
param about whether this will generate a full blown stacktrace or just
48737a8
DRM_ERROR().  The new moduleparam defaults to true, so by default there
48737a8
is no change in behavior.  And even when disabled, you will still get
48737a8
an error message logged.
48737a8
48737a8
v2: paint the macro names blue, clarify that the default behavior
48737a8
    remains the same as before
48737a8
48737a8
Signed-off-by: Rob Clark <robdclark@gmail.com>
48737a8
Acked-by: Jani Nikula <jani.nikula@intel.com>
48737a8
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
48737a8
Backported-by: Josh Boyer <jwboyer@fedoraproject.org>
48737a8
---
48737a8
 drivers/gpu/drm/i915/i915_drv.h      |  30 ++++++++
48737a8
 drivers/gpu/drm/i915/i915_params.c   |   5 ++
48737a8
 drivers/gpu/drm/i915/intel_display.c | 132 +++++++++++++++++------------------
48737a8
 drivers/gpu/drm/i915/intel_dp.c      |   2 +-
48737a8
 4 files changed, 102 insertions(+), 67 deletions(-)
48737a8
48737a8
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
48737a8
index 346aee828dc3..8ac3d534434e 100644
48737a8
--- a/drivers/gpu/drm/i915/i915_drv.h
48737a8
+++ b/drivers/gpu/drm/i915/i915_drv.h
48737a8
@@ -57,6 +57,35 @@
48737a8
 #define DRIVER_DESC		"Intel Graphics"
48737a8
 #define DRIVER_DATE		"20140905"
48737a8
 
48737a8
+/* Use I915_STATE_WARN(x) and I915_STATE_WARN_ON() (rather than WARN() and
48737a8
+ * WARN_ON()) for hw state sanity checks to check for unexpected conditions
48737a8
+ * which may not necessarily be a user visible problem.  This will either
48737a8
+ * WARN() or DRM_ERROR() depending on the verbose_checks moduleparam, to
48737a8
+ * enable distros and users to tailor their preferred amount of i915 abrt
48737a8
+ * spam.
48737a8
+ */
48737a8
+#define I915_STATE_WARN(condition, format...) ({			\
48737a8
+	int __ret_warn_on = !!(condition);				\
48737a8
+	if (unlikely(__ret_warn_on)) {					\
48737a8
+		if (i915.verbose_state_checks)				\
48737a8
+			__WARN_printf(format);				\
48737a8
+		else 							\
48737a8
+			DRM_ERROR(format);				\
48737a8
+	}								\
48737a8
+	unlikely(__ret_warn_on);					\
48737a8
+})
48737a8
+
48737a8
+#define I915_STATE_WARN_ON(condition) ({				\
48737a8
+	int __ret_warn_on = !!(condition);				\
48737a8
+	if (unlikely(__ret_warn_on)) {					\
48737a8
+		if (i915.verbose_state_checks)				\
48737a8
+			__WARN_printf("WARN_ON(" #condition ")\n");	\
48737a8
+		else 							\
48737a8
+			DRM_ERROR("WARN_ON(" #condition ")\n");		\
48737a8
+	}								\
48737a8
+	unlikely(__ret_warn_on);					\
48737a8
+})
48737a8
+
48737a8
 enum pipe {
48737a8
 	INVALID_PIPE = -1,
48737a8
 	PIPE_A = 0,
48737a8
@@ -2222,6 +2251,7 @@ struct i915_params {
48737a8
 	bool disable_vtd_wa;
48737a8
 	int use_mmio_flip;
48737a8
 	bool mmio_debug;
48737a8
+	bool verbose_state_checks;
48737a8
 };
48737a8
 extern struct i915_params i915 __read_mostly;
48737a8
 
48737a8
diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
48737a8
index c91cb2033cc5..db07153b693f 100644
48737a8
--- a/drivers/gpu/drm/i915/i915_params.c
48737a8
+++ b/drivers/gpu/drm/i915/i915_params.c
48737a8
@@ -51,6 +51,7 @@ struct i915_params i915 __read_mostly = {
48737a8
 	.disable_vtd_wa = 0,
48737a8
 	.use_mmio_flip = 0,
48737a8
 	.mmio_debug = 0,
48737a8
+	.verbose_state_checks = 1,
48737a8
 };
48737a8
 
48737a8
 module_param_named(modeset, i915.modeset, int, 0400);
48737a8
@@ -173,3 +174,7 @@ module_param_named(mmio_debug, i915.mmio_debug, bool, 0600);
48737a8
 MODULE_PARM_DESC(mmio_debug,
48737a8
 	"Enable the MMIO debug code (default: false). This may negatively "
48737a8
 	"affect performance.");
48737a8
+
48737a8
+module_param_named(verbose_state_checks, i915.verbose_state_checks, bool, 0600);
48737a8
+MODULE_PARM_DESC(verbose_state_checks,
48737a8
+	"Enable verbose logs (ie. WARN_ON()) in case of unexpected hw state conditions.");
48737a8
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
48737a8
index cadc3bcf1de2..752dbe7ff017 100644
48737a8
--- a/drivers/gpu/drm/i915/intel_display.c
48737a8
+++ b/drivers/gpu/drm/i915/intel_display.c
48737a8
@@ -1060,7 +1060,7 @@ void assert_pll(struct drm_i915_private *dev_priv,
48737a8
 	reg = DPLL(pipe);
48737a8
 	val = I915_READ(reg);
48737a8
 	cur_state = !!(val & DPLL_VCO_ENABLE);
48737a8
-	WARN(cur_state != state,
48737a8
+	I915_STATE_WARN(cur_state != state,
48737a8
 	     "PLL state assertion failure (expected %s, current %s)\n",
48737a8
 	     state_string(state), state_string(cur_state));
48737a8
 }
48737a8
@@ -1076,7 +1076,7 @@ static void assert_dsi_pll(struct drm_i915_private *dev_priv, bool state)
48737a8
 	mutex_unlock(&dev_priv->dpio_lock);
48737a8
 
48737a8
 	cur_state = val & DSI_PLL_VCO_EN;
48737a8
-	WARN(cur_state != state,
48737a8
+	I915_STATE_WARN(cur_state != state,
48737a8
 	     "DSI PLL state assertion failure (expected %s, current %s)\n",
48737a8
 	     state_string(state), state_string(cur_state));
48737a8
 }
48737a8
@@ -1107,7 +1107,7 @@ void assert_shared_dpll(struct drm_i915_private *dev_priv,
48737a8
 		return;
48737a8
 
48737a8
 	cur_state = pll->get_hw_state(dev_priv, pll, &hw_state);
48737a8
-	WARN(cur_state != state,
48737a8
+	I915_STATE_WARN(cur_state != state,
48737a8
 	     "%s assertion failure (expected %s, current %s)\n",
48737a8
 	     pll->name, state_string(state), state_string(cur_state));
48737a8
 }
48737a8
@@ -1131,7 +1131,7 @@ static void assert_fdi_tx(struct drm_i915_private *dev_priv,
48737a8
 		val = I915_READ(reg);
48737a8
 		cur_state = !!(val & FDI_TX_ENABLE);
48737a8
 	}
48737a8
-	WARN(cur_state != state,
48737a8
+	I915_STATE_WARN(cur_state != state,
48737a8
 	     "FDI TX state assertion failure (expected %s, current %s)\n",
48737a8
 	     state_string(state), state_string(cur_state));
48737a8
 }
48737a8
@@ -1148,7 +1148,7 @@ static void assert_fdi_rx(struct drm_i915_private *dev_priv,
48737a8
 	reg = FDI_RX_CTL(pipe);
48737a8
 	val = I915_READ(reg);
48737a8
 	cur_state = !!(val & FDI_RX_ENABLE);
48737a8
-	WARN(cur_state != state,
48737a8
+	I915_STATE_WARN(cur_state != state,
48737a8
 	     "FDI RX state assertion failure (expected %s, current %s)\n",
48737a8
 	     state_string(state), state_string(cur_state));
48737a8
 }
48737a8
@@ -1171,7 +1171,7 @@ static void assert_fdi_tx_pll_enabled(struct drm_i915_private *dev_priv,
48737a8
 
48737a8
 	reg = FDI_TX_CTL(pipe);
48737a8
 	val = I915_READ(reg);
48737a8
-	WARN(!(val & FDI_TX_PLL_ENABLE), "FDI TX PLL assertion failure, should be active but is disabled\n");
48737a8
+	I915_STATE_WARN(!(val & FDI_TX_PLL_ENABLE), "FDI TX PLL assertion failure, should be active but is disabled\n");
48737a8
 }
48737a8
 
48737a8
 void assert_fdi_rx_pll(struct drm_i915_private *dev_priv,
48737a8
@@ -1184,7 +1184,7 @@ void assert_fdi_rx_pll(struct drm_i915_private *dev_priv,
48737a8
 	reg = FDI_RX_CTL(pipe);
48737a8
 	val = I915_READ(reg);
48737a8
 	cur_state = !!(val & FDI_RX_PLL_ENABLE);
48737a8
-	WARN(cur_state != state,
48737a8
+	I915_STATE_WARN(cur_state != state,
48737a8
 	     "FDI RX PLL assertion failure (expected %s, current %s)\n",
48737a8
 	     state_string(state), state_string(cur_state));
48737a8
 }
48737a8
@@ -1226,7 +1226,7 @@ static void assert_panel_unlocked(struct drm_i915_private *dev_priv,
48737a8
 	    ((val & PANEL_UNLOCK_MASK) == PANEL_UNLOCK_REGS))
48737a8
 		locked = false;
48737a8
 
48737a8
-	WARN(panel_pipe == pipe && locked,
48737a8
+	I915_STATE_WARN(panel_pipe == pipe && locked,
48737a8
 	     "panel assertion failure, pipe %c regs locked\n",
48737a8
 	     pipe_name(pipe));
48737a8
 }
48737a8
@@ -1242,7 +1242,7 @@ static void assert_cursor(struct drm_i915_private *dev_priv,
48737a8
 	else
48737a8
 		cur_state = I915_READ(CURCNTR(pipe)) & CURSOR_MODE;
48737a8
 
48737a8
-	WARN(cur_state != state,
48737a8
+	I915_STATE_WARN(cur_state != state,
48737a8
 	     "cursor on pipe %c assertion failure (expected %s, current %s)\n",
48737a8
 	     pipe_name(pipe), state_string(state), state_string(cur_state));
48737a8
 }
48737a8
@@ -1272,7 +1272,7 @@ void assert_pipe(struct drm_i915_private *dev_priv,
48737a8
 		cur_state = !!(val & PIPECONF_ENABLE);
48737a8
 	}
48737a8
 
48737a8
-	WARN(cur_state != state,
48737a8
+	I915_STATE_WARN(cur_state != state,
48737a8
 	     "pipe %c assertion failure (expected %s, current %s)\n",
48737a8
 	     pipe_name(pipe), state_string(state), state_string(cur_state));
48737a8
 }
48737a8
@@ -1287,7 +1287,7 @@ static void assert_plane(struct drm_i915_private *dev_priv,
48737a8
 	reg = DSPCNTR(plane);
48737a8
 	val = I915_READ(reg);
48737a8
 	cur_state = !!(val & DISPLAY_PLANE_ENABLE);
48737a8
-	WARN(cur_state != state,
48737a8
+	I915_STATE_WARN(cur_state != state,
48737a8
 	     "plane %c assertion failure (expected %s, current %s)\n",
48737a8
 	     plane_name(plane), state_string(state), state_string(cur_state));
48737a8
 }
48737a8
@@ -1307,7 +1307,7 @@ static void assert_planes_disabled(struct drm_i915_private *dev_priv,
48737a8
 	if (INTEL_INFO(dev)->gen >= 4) {
48737a8
 		reg = DSPCNTR(pipe);
48737a8
 		val = I915_READ(reg);
48737a8
-		WARN(val & DISPLAY_PLANE_ENABLE,
48737a8
+		I915_STATE_WARN(val & DISPLAY_PLANE_ENABLE,
48737a8
 		     "plane %c assertion failure, should be disabled but not\n",
48737a8
 		     plane_name(pipe));
48737a8
 		return;
48737a8
@@ -1319,7 +1319,7 @@ static void assert_planes_disabled(struct drm_i915_private *dev_priv,
48737a8
 		val = I915_READ(reg);
48737a8
 		cur_pipe = (val & DISPPLANE_SEL_PIPE_MASK) >>
48737a8
 			DISPPLANE_SEL_PIPE_SHIFT;
48737a8
-		WARN((val & DISPLAY_PLANE_ENABLE) && pipe == cur_pipe,
48737a8
+		I915_STATE_WARN((val & DISPLAY_PLANE_ENABLE) && pipe == cur_pipe,
48737a8
 		     "plane %c assertion failure, should be off on pipe %c but is still active\n",
48737a8
 		     plane_name(i), pipe_name(pipe));
48737a8
 	}
48737a8
@@ -1336,20 +1336,20 @@ static void assert_sprites_disabled(struct drm_i915_private *dev_priv,
48737a8
 		for_each_sprite(pipe, sprite) {
48737a8
 			reg = SPCNTR(pipe, sprite);
48737a8
 			val = I915_READ(reg);
48737a8
-			WARN(val & SP_ENABLE,
48737a8
+			I915_STATE_WARN(val & SP_ENABLE,
48737a8
 			     "sprite %c assertion failure, should be off on pipe %c but is still active\n",
48737a8
 			     sprite_name(pipe, sprite), pipe_name(pipe));
48737a8
 		}
48737a8
 	} else if (INTEL_INFO(dev)->gen >= 7) {
48737a8
 		reg = SPRCTL(pipe);
48737a8
 		val = I915_READ(reg);
48737a8
-		WARN(val & SPRITE_ENABLE,
48737a8
+		I915_STATE_WARN(val & SPRITE_ENABLE,
48737a8
 		     "sprite %c assertion failure, should be off on pipe %c but is still active\n",
48737a8
 		     plane_name(pipe), pipe_name(pipe));
48737a8
 	} else if (INTEL_INFO(dev)->gen >= 5) {
48737a8
 		reg = DVSCNTR(pipe);
48737a8
 		val = I915_READ(reg);
48737a8
-		WARN(val & DVS_ENABLE,
48737a8
+		I915_STATE_WARN(val & DVS_ENABLE,
48737a8
 		     "sprite %c assertion failure, should be off on pipe %c but is still active\n",
48737a8
 		     plane_name(pipe), pipe_name(pipe));
48737a8
 	}
48737a8
@@ -1357,7 +1357,7 @@ static void assert_sprites_disabled(struct drm_i915_private *dev_priv,
48737a8
 
48737a8
 static void assert_vblank_disabled(struct drm_crtc *crtc)
48737a8
 {
48737a8
-	if (WARN_ON(drm_crtc_vblank_get(crtc) == 0))
48737a8
+	if (I915_STATE_WARN_ON(drm_crtc_vblank_get(crtc) == 0))
48737a8
 		drm_crtc_vblank_put(crtc);
48737a8
 }
48737a8
 
48737a8
@@ -1366,12 +1366,12 @@ static void ibx_assert_pch_refclk_enabled(struct drm_i915_private *dev_priv)
48737a8
 	u32 val;
48737a8
 	bool enabled;
48737a8
 
48737a8
-	WARN_ON(!(HAS_PCH_IBX(dev_priv->dev) || HAS_PCH_CPT(dev_priv->dev)));
48737a8
+	I915_STATE_WARN_ON(!(HAS_PCH_IBX(dev_priv->dev) || HAS_PCH_CPT(dev_priv->dev)));
48737a8
 
48737a8
 	val = I915_READ(PCH_DREF_CONTROL);
48737a8
 	enabled = !!(val & (DREF_SSC_SOURCE_MASK | DREF_NONSPREAD_SOURCE_MASK |
48737a8
 			    DREF_SUPERSPREAD_SOURCE_MASK));
48737a8
-	WARN(!enabled, "PCH refclk assertion failure, should be active but is disabled\n");
48737a8
+	I915_STATE_WARN(!enabled, "PCH refclk assertion failure, should be active but is disabled\n");
48737a8
 }
48737a8
 
48737a8
 static void assert_pch_transcoder_disabled(struct drm_i915_private *dev_priv,
48737a8
@@ -1384,7 +1384,7 @@ static void assert_pch_transcoder_disabled(struct drm_i915_private *dev_priv,
48737a8
 	reg = PCH_TRANSCONF(pipe);
48737a8
 	val = I915_READ(reg);
48737a8
 	enabled = !!(val & TRANS_ENABLE);
48737a8
-	WARN(enabled,
48737a8
+	I915_STATE_WARN(enabled,
48737a8
 	     "transcoder assertion failed, should be off on pipe %c but is still active\n",
48737a8
 	     pipe_name(pipe));
48737a8
 }
48737a8
@@ -1464,11 +1464,11 @@ static void assert_pch_dp_disabled(struct drm_i915_private *dev_priv,
48737a8
 				   enum pipe pipe, int reg, u32 port_sel)
48737a8
 {
48737a8
 	u32 val = I915_READ(reg);
48737a8
-	WARN(dp_pipe_enabled(dev_priv, pipe, port_sel, val),
48737a8
+	I915_STATE_WARN(dp_pipe_enabled(dev_priv, pipe, port_sel, val),
48737a8
 	     "PCH DP (0x%08x) enabled on transcoder %c, should be disabled\n",
48737a8
 	     reg, pipe_name(pipe));
48737a8
 
48737a8
-	WARN(HAS_PCH_IBX(dev_priv->dev) && (val & DP_PORT_EN) == 0
48737a8
+	I915_STATE_WARN(HAS_PCH_IBX(dev_priv->dev) && (val & DP_PORT_EN) == 0
48737a8
 	     && (val & DP_PIPEB_SELECT),
48737a8
 	     "IBX PCH dp port still using transcoder B\n");
48737a8
 }
48737a8
@@ -1477,11 +1477,11 @@ static void assert_pch_hdmi_disabled(struct drm_i915_private *dev_priv,
48737a8
 				     enum pipe pipe, int reg)
48737a8
 {
48737a8
 	u32 val = I915_READ(reg);
48737a8
-	WARN(hdmi_pipe_enabled(dev_priv, pipe, val),
48737a8
+	I915_STATE_WARN(hdmi_pipe_enabled(dev_priv, pipe, val),
48737a8
 	     "PCH HDMI (0x%08x) enabled on transcoder %c, should be disabled\n",
48737a8
 	     reg, pipe_name(pipe));
48737a8
 
48737a8
-	WARN(HAS_PCH_IBX(dev_priv->dev) && (val & SDVO_ENABLE) == 0
48737a8
+	I915_STATE_WARN(HAS_PCH_IBX(dev_priv->dev) && (val & SDVO_ENABLE) == 0
48737a8
 	     && (val & SDVO_PIPE_B_SELECT),
48737a8
 	     "IBX PCH hdmi port still using transcoder B\n");
48737a8
 }
48737a8
@@ -1498,13 +1498,13 @@ static void assert_pch_ports_disabled(struct drm_i915_private *dev_priv,
48737a8
 
48737a8
 	reg = PCH_ADPA;
48737a8
 	val = I915_READ(reg);
48737a8
-	WARN(adpa_pipe_enabled(dev_priv, pipe, val),
48737a8
+	I915_STATE_WARN(adpa_pipe_enabled(dev_priv, pipe, val),
48737a8
 	     "PCH VGA enabled on transcoder %c, should be disabled\n",
48737a8
 	     pipe_name(pipe));
48737a8
 
48737a8
 	reg = PCH_LVDS;
48737a8
 	val = I915_READ(reg);
48737a8
-	WARN(lvds_pipe_enabled(dev_priv, pipe, val),
48737a8
+	I915_STATE_WARN(lvds_pipe_enabled(dev_priv, pipe, val),
48737a8
 	     "PCH LVDS enabled on transcoder %c, should be disabled\n",
48737a8
 	     pipe_name(pipe));
48737a8
 
48737a8
@@ -5152,25 +5152,25 @@ static void intel_connector_check_state(struct intel_connector *connector)
48737a8
 		if (connector->mst_port)
48737a8
 			return;
48737a8
 
48737a8
-		WARN(connector->base.dpms == DRM_MODE_DPMS_OFF,
48737a8
+		I915_STATE_WARN(connector->base.dpms == DRM_MODE_DPMS_OFF,
48737a8
 		     "wrong connector dpms state\n");
48737a8
-		WARN(connector->base.encoder != &encoder->base,
48737a8
+		I915_STATE_WARN(connector->base.encoder != &encoder->base,
48737a8
 		     "active connector not linked to encoder\n");
48737a8
 
48737a8
 		if (encoder) {
48737a8
-			WARN(!encoder->connectors_active,
48737a8
+			I915_STATE_WARN(!encoder->connectors_active,
48737a8
 			     "encoder->connectors_active not set\n");
48737a8
 
48737a8
 			encoder_enabled = encoder->get_hw_state(encoder, &pipe);
48737a8
-			WARN(!encoder_enabled, "encoder not enabled\n");
48737a8
-			if (WARN_ON(!encoder->base.crtc))
48737a8
+			I915_STATE_WARN(!encoder_enabled, "encoder not enabled\n");
48737a8
+			if (I915_STATE_WARN_ON(!encoder->base.crtc))
48737a8
 				return;
48737a8
 
48737a8
 			crtc = encoder->base.crtc;
48737a8
 
48737a8
-			WARN(!crtc->enabled, "crtc not enabled\n");
48737a8
-			WARN(!to_intel_crtc(crtc)->active, "crtc not active\n");
48737a8
-			WARN(pipe != to_intel_crtc(crtc)->pipe,
48737a8
+			I915_STATE_WARN(!crtc->enabled, "crtc not enabled\n");
48737a8
+			I915_STATE_WARN(!to_intel_crtc(crtc)->active, "crtc not active\n");
48737a8
+			I915_STATE_WARN(pipe != to_intel_crtc(crtc)->pipe,
48737a8
 			     "encoder active on the wrong pipe\n");
48737a8
 		}
48737a8
 	}
48737a8
@@ -7523,24 +7523,24 @@ static void assert_can_disable_lcpll(struct drm_i915_private *dev_priv)
48737a8
 	struct intel_crtc *crtc;
48737a8
 
48737a8
 	for_each_intel_crtc(dev, crtc)
48737a8
-		WARN(crtc->active, "CRTC for pipe %c enabled\n",
48737a8
+		I915_STATE_WARN(crtc->active, "CRTC for pipe %c enabled\n",
48737a8
 		     pipe_name(crtc->pipe));
48737a8
 
48737a8
-	WARN(I915_READ(HSW_PWR_WELL_DRIVER), "Power well on\n");
48737a8
-	WARN(I915_READ(SPLL_CTL) & SPLL_PLL_ENABLE, "SPLL enabled\n");
48737a8
-	WARN(I915_READ(WRPLL_CTL1) & WRPLL_PLL_ENABLE, "WRPLL1 enabled\n");
48737a8
-	WARN(I915_READ(WRPLL_CTL2) & WRPLL_PLL_ENABLE, "WRPLL2 enabled\n");
48737a8
-	WARN(I915_READ(PCH_PP_STATUS) & PP_ON, "Panel power on\n");
48737a8
-	WARN(I915_READ(BLC_PWM_CPU_CTL2) & BLM_PWM_ENABLE,
48737a8
+	I915_STATE_WARN(I915_READ(HSW_PWR_WELL_DRIVER), "Power well on\n");
48737a8
+	I915_STATE_WARN(I915_READ(SPLL_CTL) & SPLL_PLL_ENABLE, "SPLL enabled\n");
48737a8
+	I915_STATE_WARN(I915_READ(WRPLL_CTL1) & WRPLL_PLL_ENABLE, "WRPLL1 enabled\n");
48737a8
+	I915_STATE_WARN(I915_READ(WRPLL_CTL2) & WRPLL_PLL_ENABLE, "WRPLL2 enabled\n");
48737a8
+	I915_STATE_WARN(I915_READ(PCH_PP_STATUS) & PP_ON, "Panel power on\n");
48737a8
+	I915_STATE_WARN(I915_READ(BLC_PWM_CPU_CTL2) & BLM_PWM_ENABLE,
48737a8
 	     "CPU PWM1 enabled\n");
48737a8
 	if (IS_HASWELL(dev))
48737a8
-		WARN(I915_READ(HSW_BLC_PWM2_CTL) & BLM_PWM_ENABLE,
48737a8
+		I915_STATE_WARN(I915_READ(HSW_BLC_PWM2_CTL) & BLM_PWM_ENABLE,
48737a8
 		     "CPU PWM2 enabled\n");
48737a8
-	WARN(I915_READ(BLC_PWM_PCH_CTL1) & BLM_PCH_PWM_ENABLE,
48737a8
+	I915_STATE_WARN(I915_READ(BLC_PWM_PCH_CTL1) & BLM_PCH_PWM_ENABLE,
48737a8
 	     "PCH PWM1 enabled\n");
48737a8
-	WARN(I915_READ(UTIL_PIN_CTL) & UTIL_PIN_ENABLE,
48737a8
+	I915_STATE_WARN(I915_READ(UTIL_PIN_CTL) & UTIL_PIN_ENABLE,
48737a8
 	     "Utility pin enabled\n");
48737a8
-	WARN(I915_READ(PCH_GTC_CTL) & PCH_GTC_ENABLE, "PCH GTC enabled\n");
48737a8
+	I915_STATE_WARN(I915_READ(PCH_GTC_CTL) & PCH_GTC_ENABLE, "PCH GTC enabled\n");
48737a8
 
48737a8
 	/*
48737a8
 	 * In theory we can still leave IRQs enabled, as long as only the HPD
48737a8
@@ -7548,7 +7548,7 @@ static void assert_can_disable_lcpll(struct drm_i915_private *dev_priv)
48737a8
 	 * gen-specific and since we only disable LCPLL after we fully disable
48737a8
 	 * the interrupts, the check below should be enough.
48737a8
 	 */
48737a8
-	WARN(intel_irqs_enabled(dev_priv), "IRQs enabled\n");
48737a8
+	I915_STATE_WARN(intel_irqs_enabled(dev_priv), "IRQs enabled\n");
48737a8
 }
48737a8
 
48737a8
 static uint32_t hsw_read_dcomp(struct drm_i915_private *dev_priv)
48737a8
@@ -10838,7 +10838,7 @@ check_connector_state(struct drm_device *dev)
48737a8
 		 * ->get_hw_state callbacks. */
48737a8
 		intel_connector_check_state(connector);
48737a8
 
48737a8
-		WARN(&connector->new_encoder->base != connector->base.encoder,
48737a8
+		I915_STATE_WARN(&connector->new_encoder->base != connector->base.encoder,
48737a8
 		     "connector's staged encoder doesn't match current encoder\n");
48737a8
 	}
48737a8
 }
48737a8
@@ -10858,9 +10858,9 @@ check_encoder_state(struct drm_device *dev)
48737a8
 			      encoder->base.base.id,
48737a8
 			      encoder->base.name);
48737a8
 
48737a8
-		WARN(&encoder->new_crtc->base != encoder->base.crtc,
48737a8
+		I915_STATE_WARN(&encoder->new_crtc->base != encoder->base.crtc,
48737a8
 		     "encoder's stage crtc doesn't match current crtc\n");
48737a8
-		WARN(encoder->connectors_active && !encoder->base.crtc,
48737a8
+		I915_STATE_WARN(encoder->connectors_active && !encoder->base.crtc,
48737a8
 		     "encoder's active_connectors set, but no crtc\n");
48737a8
 
48737a8
 		list_for_each_entry(connector, &dev->mode_config.connector_list,
48737a8
@@ -10879,19 +10879,19 @@ check_encoder_state(struct drm_device *dev)
48737a8
 		if (!enabled && encoder->base.encoder_type == DRM_MODE_ENCODER_DPMST)
48737a8
 			continue;
48737a8
 
48737a8
-		WARN(!!encoder->base.crtc != enabled,
48737a8
+		I915_STATE_WARN(!!encoder->base.crtc != enabled,
48737a8
 		     "encoder's enabled state mismatch "
48737a8
 		     "(expected %i, found %i)\n",
48737a8
 		     !!encoder->base.crtc, enabled);
48737a8
-		WARN(active && !encoder->base.crtc,
48737a8
+		I915_STATE_WARN(active && !encoder->base.crtc,
48737a8
 		     "active encoder with no crtc\n");
48737a8
 
48737a8
-		WARN(encoder->connectors_active != active,
48737a8
+		I915_STATE_WARN(encoder->connectors_active != active,
48737a8
 		     "encoder's computed active state doesn't match tracked active state "
48737a8
 		     "(expected %i, found %i)\n", active, encoder->connectors_active);
48737a8
 
48737a8
 		active = encoder->get_hw_state(encoder, &pipe);
48737a8
-		WARN(active != encoder->connectors_active,
48737a8
+		I915_STATE_WARN(active != encoder->connectors_active,
48737a8
 		     "encoder's hw state doesn't match sw tracking "
48737a8
 		     "(expected %i, found %i)\n",
48737a8
 		     encoder->connectors_active, active);
48737a8
@@ -10900,7 +10900,7 @@ check_encoder_state(struct drm_device *dev)
48737a8
 			continue;
48737a8
 
48737a8
 		tracked_pipe = to_intel_crtc(encoder->base.crtc)->pipe;
48737a8
-		WARN(active && pipe != tracked_pipe,
48737a8
+		I915_STATE_WARN(active && pipe != tracked_pipe,
48737a8
 		     "active encoder's pipe doesn't match"
48737a8
 		     "(expected %i, found %i)\n",
48737a8
 		     tracked_pipe, pipe);
48737a8
@@ -10925,7 +10925,7 @@ check_crtc_state(struct drm_device *dev)
48737a8
 		DRM_DEBUG_KMS("[CRTC:%d]\n",
48737a8
 			      crtc->base.base.id);
48737a8
 
48737a8
-		WARN(crtc->active && !crtc->base.enabled,
48737a8
+		I915_STATE_WARN(crtc->active && !crtc->base.enabled,
48737a8
 		     "active crtc, but not enabled in sw tracking\n");
48737a8
 
48737a8
 		for_each_intel_encoder(dev, encoder) {
48737a8
@@ -10936,10 +10936,10 @@ check_crtc_state(struct drm_device *dev)
48737a8
 				active = true;
48737a8
 		}
48737a8
 
48737a8
-		WARN(active != crtc->active,
48737a8
+		I915_STATE_WARN(active != crtc->active,
48737a8
 		     "crtc's computed active state doesn't match tracked active state "
48737a8
 		     "(expected %i, found %i)\n", active, crtc->active);
48737a8
-		WARN(enabled != crtc->base.enabled,
48737a8
+		I915_STATE_WARN(enabled != crtc->base.enabled,
48737a8
 		     "crtc's computed enabled state doesn't match tracked enabled state "
48737a8
 		     "(expected %i, found %i)\n", enabled, crtc->base.enabled);
48737a8
 
48737a8
@@ -10959,13 +10959,13 @@ check_crtc_state(struct drm_device *dev)
48737a8
 				encoder->get_config(encoder, &pipe_config);
48737a8
 		}
48737a8
 
48737a8
-		WARN(crtc->active != active,
48737a8
+		I915_STATE_WARN(crtc->active != active,
48737a8
 		     "crtc active state doesn't match with hw state "
48737a8
 		     "(expected %i, found %i)\n", crtc->active, active);
48737a8
 
48737a8
 		if (active &&
48737a8
 		    !intel_pipe_config_compare(dev, &crtc->config, &pipe_config)) {
48737a8
-			WARN(1, "pipe state doesn't match!\n");
48737a8
+			I915_STATE_WARN(1, "pipe state doesn't match!\n");
48737a8
 			intel_dump_pipe_config(crtc, &pipe_config,
48737a8
 					       "[hw state]");
48737a8
 			intel_dump_pipe_config(crtc, &crtc->config,
48737a8
@@ -10993,14 +10993,14 @@ check_shared_dpll_state(struct drm_device *dev)
48737a8
 
48737a8
 		active = pll->get_hw_state(dev_priv, pll, &dpll_hw_state);
48737a8
 
48737a8
-		WARN(pll->active > pll->refcount,
48737a8
+		I915_STATE_WARN(pll->active > pll->refcount,
48737a8
 		     "more active pll users than references: %i vs %i\n",
48737a8
 		     pll->active, pll->refcount);
48737a8
-		WARN(pll->active && !pll->on,
48737a8
+		I915_STATE_WARN(pll->active && !pll->on,
48737a8
 		     "pll in active use but not on in sw tracking\n");
48737a8
-		WARN(pll->on && !pll->active,
48737a8
+		I915_STATE_WARN(pll->on && !pll->active,
48737a8
 		     "pll in on but not on in use in sw tracking\n");
48737a8
-		WARN(pll->on != active,
48737a8
+		I915_STATE_WARN(pll->on != active,
48737a8
 		     "pll on state mismatch (expected %i, found %i)\n",
48737a8
 		     pll->on, active);
48737a8
 
48737a8
@@ -11010,14 +11010,14 @@ check_shared_dpll_state(struct drm_device *dev)
48737a8
 			if (crtc->active && intel_crtc_to_shared_dpll(crtc) == pll)
48737a8
 				active_crtcs++;
48737a8
 		}
48737a8
-		WARN(pll->active != active_crtcs,
48737a8
+		I915_STATE_WARN(pll->active != active_crtcs,
48737a8
 		     "pll active crtcs mismatch (expected %i, found %i)\n",
48737a8
 		     pll->active, active_crtcs);
48737a8
-		WARN(pll->refcount != enabled_crtcs,
48737a8
+		I915_STATE_WARN(pll->refcount != enabled_crtcs,
48737a8
 		     "pll enabled crtcs mismatch (expected %i, found %i)\n",
48737a8
 		     pll->refcount, enabled_crtcs);
48737a8
 
48737a8
-		WARN(pll->on && memcmp(&pll->hw_state, &dpll_hw_state,
48737a8
+		I915_STATE_WARN(pll->on && memcmp(&pll->hw_state, &dpll_hw_state,
48737a8
 				       sizeof(dpll_hw_state)),
48737a8
 		     "pll hw state mismatch\n");
48737a8
 	}
48737a8
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
48737a8
index 4bcd91757321..4b5d6c5ee544 100644
48737a8
--- a/drivers/gpu/drm/i915/intel_dp.c
48737a8
+++ b/drivers/gpu/drm/i915/intel_dp.c
48737a8
@@ -1501,7 +1501,7 @@ static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync)
48737a8
 	if (!is_edp(intel_dp))
48737a8
 		return;
48737a8
 
48737a8
-	WARN(!intel_dp->want_panel_vdd, "eDP VDD not forced on");
48737a8
+	I915_STATE_WARN(!intel_dp->want_panel_vdd, "eDP VDD not forced on");
48737a8
 
48737a8
 	intel_dp->want_panel_vdd = false;
48737a8
 
48737a8
-- 
48737a8
2.1.0
48737a8