Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-gfx] [PATCH] drm/i915/display: Reset message bus after each read/write operation
@ 2023-10-04 10:25 Mika Kahola
  2023-10-04 12:47 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Mika Kahola @ 2023-10-04 10:25 UTC (permalink / raw)
  To: intel-gfx

Every know and then we receive the following error when running
for example IGT test kms_flip.

[drm] *ERROR* PHY G Read 0d80 failed after 3 retries.
[drm] *ERROR* PHY G Write 0d81 failed after 3 retries.

Since the error is sporadic in nature, the patch proposes
to reset the message bus after every successful or unsuccessful
read or write operation. However, testing revealed that this
alone is not sufficient method an additiona delay is also
introduces anything from 200us to 300us. This delay is experimental
value and has no specification to back it up.

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 drivers/gpu/drm/i915/display/intel_cx0_phy.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_cx0_phy.c b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
index abd607b564f1..a71b8a29d6b0 100644
--- a/drivers/gpu/drm/i915/display/intel_cx0_phy.c
+++ b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
@@ -220,9 +220,12 @@ static u8 __intel_cx0_read(struct drm_i915_private *i915, enum port port,
 	/* 3 tries is assumed to be enough to read successfully */
 	for (i = 0; i < 3; i++) {
 		status = __intel_cx0_read_once(i915, port, lane, addr);
+		intel_cx0_bus_reset(i915, port, lane);
 
 		if (status >= 0)
 			return status;
+
+		usleep_range(200, 300);
 	}
 
 	drm_err_once(&i915->drm, "PHY %c Read %04x failed after %d retries.\n",
@@ -299,9 +302,12 @@ static void __intel_cx0_write(struct drm_i915_private *i915, enum port port,
 	/* 3 tries is assumed to be enough to write successfully */
 	for (i = 0; i < 3; i++) {
 		status = __intel_cx0_write_once(i915, port, lane, addr, data, committed);
+		intel_cx0_bus_reset(i915, port, lane);
 
 		if (status == 0)
 			return;
+
+		usleep_range(200, 300);
 	}
 
 	drm_err_once(&i915->drm,
-- 
2.34.1


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

end of thread, other threads:[~2023-10-09 13:20 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-04 10:25 [Intel-gfx] [PATCH] drm/i915/display: Reset message bus after each read/write operation Mika Kahola
2023-10-04 12:47 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
2023-10-04 12:55 ` [Intel-gfx] [PATCH] " Rodrigo Vivi
2023-10-05  7:05   ` Kahola, Mika
2023-10-05 15:13     ` Rodrigo Vivi
2023-10-05 15:32       ` Gustavo Sousa
2023-10-05 15:40       ` Gustavo Sousa
2023-10-05 16:10         ` Rodrigo Vivi
2023-10-06  6:49           ` Kahola, Mika
2023-10-06 11:57             ` Gustavo Sousa
2023-10-06 12:31               ` Kahola, Mika
2023-10-04 17:46 ` [Intel-gfx] ✗ Fi.CI.IGT: failure for " Patchwork

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