[PATCH v1] Try not to account crc if fifo underrun was reported, to check if this affect fdo #103184 for pnv platform.

Stanislav Lisovskiy stanislav.lisovskiy at intel.com
Wed Sep 12 11:58:27 UTC 2018


---
 drivers/gpu/drm/i915/i915_irq.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 10f28a2ee2e6..6d57afe82512 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1958,6 +1958,7 @@ static void i915_pipestat_irq_handler(struct drm_i915_private *dev_priv,
 {
 	bool blc_event = false;
 	enum pipe pipe;
+	bool was_underrun = false;
 
 	for_each_pipe(dev_priv, pipe) {
 		if (pipe_stats[pipe] & PIPE_VBLANK_INTERRUPT_STATUS)
@@ -1966,11 +1967,14 @@ static void i915_pipestat_irq_handler(struct drm_i915_private *dev_priv,
 		if (pipe_stats[pipe] & PIPE_LEGACY_BLC_EVENT_STATUS)
 			blc_event = true;
 
-		if (pipe_stats[pipe] & PIPE_CRC_DONE_INTERRUPT_STATUS)
-			i9xx_pipe_crc_irq_handler(dev_priv, pipe);
-
-		if (pipe_stats[pipe] & PIPE_FIFO_UNDERRUN_STATUS)
+		if (pipe_stats[pipe] & PIPE_FIFO_UNDERRUN_STATUS) {
 			intel_cpu_fifo_underrun_irq_handler(dev_priv, pipe);
+			was_underrun = true;
+		}
+
+		if (pipe_stats[pipe] & PIPE_CRC_DONE_INTERRUPT_STATUS)
+			if (!was_underrun)
+				i9xx_pipe_crc_irq_handler(dev_priv, pipe);
 	}
 
 	if (blc_event || (iir & I915_ASLE_INTERRUPT))
-- 
2.17.0



More information about the Intel-gfx-trybot mailing list