[Intel-gfx] [PATCH v2 4/5] drm/i915: Provide more information on DP AUX failures

Lucas De Marchi lucas.demarchi at intel.com
Tue Oct 29 19:33:45 UTC 2019


On Tue, Oct 29, 2019 at 10:31:02AM -0700, Matt Roper wrote:
>We're seeing some failures where an aux transaction still shows as
>'busy' well after the timeout limit that the hardware is supposed to
>enforce.  Improve the error message so that we can see exactly which aux
>channel this error happened on and what the status bits were during this
>case that isn't supposed to happen.
>
>v2:
> - Make timeout a const variable so that the timeout & message will
>   match if we decide to change it in the future.  (Lucas)
> - Don't bother testing intel_dp->aux.name for NULL.  (Lucas)
>
>Cc: Lucas De Marchi <lucas.demarchi at intel.com>
>Signed-off-by: Matt Roper <matthew.d.roper at intel.com>

Reviewed-by: Lucas De Marchi <lucas.demarchi at intel.com>

Lucas De Marchi

>---
> drivers/gpu/drm/i915/display/intel_dp.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
>index 65bab46f7b43..a66f8c39b201 100644
>--- a/drivers/gpu/drm/i915/display/intel_dp.c
>+++ b/drivers/gpu/drm/i915/display/intel_dp.c
>@@ -1179,18 +1179,20 @@ intel_dp_aux_wait_done(struct intel_dp *intel_dp)
> {
> 	struct drm_i915_private *i915 = dp_to_i915(intel_dp);
> 	i915_reg_t ch_ctl = intel_dp->aux_ch_ctl_reg(intel_dp);
>+	const unsigned int timeout_ms = 10;
> 	u32 status;
> 	bool done;
>
> #define C (((status = intel_uncore_read_notrace(&i915->uncore, ch_ctl)) & DP_AUX_CH_CTL_SEND_BUSY) == 0)
> 	done = wait_event_timeout(i915->gmbus_wait_queue, C,
>-				  msecs_to_jiffies_timeout(10));
>+				  msecs_to_jiffies_timeout(timeout_ms));
>
> 	/* just trace the final value */
> 	trace_i915_reg_rw(false, ch_ctl, status, sizeof(status), true);
>
> 	if (!done)
>-		DRM_ERROR("dp aux hw did not signal timeout!\n");
>+		DRM_ERROR("%s did not complete or timeout within %ums (status 0x%08x)\n",
>+			  intel_dp->aux.name, timeout_ms, status);
> #undef C
>
> 	return status;
>-- 
>2.21.0
>
>_______________________________________________
>Intel-gfx mailing list
>Intel-gfx at lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/intel-gfx


More information about the Intel-gfx mailing list