diff mbox series

[v2] drm/dp: Include the AUX CH name in the debug messages

Message ID 20200514184040.20700-1-ville.syrjala@linux.intel.com (mailing list archive)
State New, archived
Headers show
Series [v2] drm/dp: Include the AUX CH name in the debug messages | expand

Commit Message

Ville Syrjälä May 14, 2020, 6:40 p.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

To make it easier to figure out what caused a particular debug
message let's print out aux->name.

v2: Convert drm_dp_send_real_edid_checksum() too

Cc: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
IIRC Sam suggested that I switch to per-device logging functions at the
same time. Sadly that's going to require some amount of actual work:
For i915/amdgpu/nouveau/etc. aux->dev is connector->kdev instead of the
pdev->dev we want, which we could handle by walking up the tree several
levels. However it looks like some of the armish drivers stick pdev->dev
directly into aux->dev so there we don't want to walk up the tree. This
means either one set of drivers will need to change their aux->dev
assignment approach, or we're going to need another device pointer in
there. I didn't even want to look what the bridge drivers put there.
In the meantime I refreshed the original patch which at least lets
us see aux->name...

 drivers/gpu/drm/drm_dp_helper.c | 67 ++++++++++++++++++---------------
 1 file changed, 37 insertions(+), 30 deletions(-)

Comments

Sam Ravnborg May 14, 2020, 7:01 p.m. UTC | #1
Hi Ville.

On Thu, May 14, 2020 at 09:40:40PM +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> To make it easier to figure out what caused a particular debug
> message let's print out aux->name.
> 
> v2: Convert drm_dp_send_real_edid_checksum() too
> 
> Cc: Sam Ravnborg <sam@ravnborg.org>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> IIRC Sam suggested that I switch to per-device logging functions at the
> same time.
I could imagine I did.

> Sadly that's going to require some amount of actual work:
> For i915/amdgpu/nouveau/etc. aux->dev is connector->kdev instead of the
> pdev->dev we want, which we could handle by walking up the tree several
> levels. However it looks like some of the armish drivers stick pdev->dev
> directly into aux->dev so there we don't want to walk up the tree. This
> means either one set of drivers will need to change their aux->dev
> assignment approach, or we're going to need another device pointer in
> there. I didn't even want to look what the bridge drivers put there.
> In the meantime I refreshed the original patch which at least lets
> us see aux->name...

Thanks for the detailed explanation.
Patch is:
Acked-by: Sam Ravnborg <sam@ravnborg.org>

> 
>  drivers/gpu/drm/drm_dp_helper.c | 67 ++++++++++++++++++---------------
>  1 file changed, 37 insertions(+), 30 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
> index 43e57632b00a..743ead068a43 100644
> --- a/drivers/gpu/drm/drm_dp_helper.c
> +++ b/drivers/gpu/drm/drm_dp_helper.c
> @@ -257,7 +257,8 @@ static int drm_dp_dpcd_access(struct drm_dp_aux *aux, u8 request,
>  			err = ret;
>  	}
>  
> -	DRM_DEBUG_KMS("Too many retries, giving up. First error: %d\n", err);
> +	DRM_DEBUG_KMS("%s: Too many retries, giving up. First error: %d\n",
> +		      aux->name, err);
>  	ret = err;
>  
>  unlock:
> @@ -376,43 +377,44 @@ bool drm_dp_send_real_edid_checksum(struct drm_dp_aux *aux,
>  
>  	if (drm_dp_dpcd_read(aux, DP_DEVICE_SERVICE_IRQ_VECTOR,
>  			     &auto_test_req, 1) < 1) {
> -		DRM_ERROR("DPCD failed read at register 0x%x\n",
> -			  DP_DEVICE_SERVICE_IRQ_VECTOR);
> +		DRM_ERROR("%s: DPCD failed read at register 0x%x\n",
> +			  aux->name, DP_DEVICE_SERVICE_IRQ_VECTOR);
>  		return false;
>  	}
>  	auto_test_req &= DP_AUTOMATED_TEST_REQUEST;
>  
>  	if (drm_dp_dpcd_read(aux, DP_TEST_REQUEST, &link_edid_read, 1) < 1) {
> -		DRM_ERROR("DPCD failed read at register 0x%x\n",
> -			  DP_TEST_REQUEST);
> +		DRM_ERROR("%s: DPCD failed read at register 0x%x\n",
> +			  aux->name, DP_TEST_REQUEST);
>  		return false;
>  	}
>  	link_edid_read &= DP_TEST_LINK_EDID_READ;
>  
>  	if (!auto_test_req || !link_edid_read) {
> -		DRM_DEBUG_KMS("Source DUT does not support TEST_EDID_READ\n");
> +		DRM_DEBUG_KMS("%s: Source DUT does not support TEST_EDID_READ\n",
> +			      aux->name);
>  		return false;
>  	}
>  
>  	if (drm_dp_dpcd_write(aux, DP_DEVICE_SERVICE_IRQ_VECTOR,
>  			      &auto_test_req, 1) < 1) {
> -		DRM_ERROR("DPCD failed write at register 0x%x\n",
> -			  DP_DEVICE_SERVICE_IRQ_VECTOR);
> +		DRM_ERROR("%s: DPCD failed write at register 0x%x\n",
> +			  aux->name, DP_DEVICE_SERVICE_IRQ_VECTOR);
>  		return false;
>  	}
>  
>  	/* send back checksum for the last edid extension block data */
>  	if (drm_dp_dpcd_write(aux, DP_TEST_EDID_CHECKSUM,
>  			      &real_edid_checksum, 1) < 1) {
> -		DRM_ERROR("DPCD failed write at register 0x%x\n",
> -			  DP_TEST_EDID_CHECKSUM);
> +		DRM_ERROR("%s: DPCD failed write at register 0x%x\n",
> +			  aux->name, DP_TEST_EDID_CHECKSUM);
>  		return false;
>  	}
>  
>  	test_resp |= DP_TEST_EDID_CHECKSUM_WRITE;
>  	if (drm_dp_dpcd_write(aux, DP_TEST_RESPONSE, &test_resp, 1) < 1) {
> -		DRM_ERROR("DPCD failed write at register 0x%x\n",
> -			  DP_TEST_RESPONSE);
> +		DRM_ERROR("%s: DPCD failed write at register 0x%x\n",
> +			  aux->name, DP_TEST_RESPONSE);
>  		return false;
>  	}
>  
> @@ -737,10 +739,11 @@ static int drm_dp_i2c_do_msg(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg)
>  			 * Avoid spamming the kernel log with timeout errors.
>  			 */
>  			if (ret == -ETIMEDOUT)
> -				DRM_DEBUG_KMS_RATELIMITED("transaction timed out\n");
> +				DRM_DEBUG_KMS_RATELIMITED("%s: transaction timed out\n",
> +							  aux->name);
>  			else
> -				DRM_DEBUG_KMS("transaction failed: %d\n", ret);
> -
> +				DRM_DEBUG_KMS("%s: transaction failed: %d\n",
> +					      aux->name, ret);
>  			return ret;
>  		}
>  
> @@ -754,11 +757,12 @@ static int drm_dp_i2c_do_msg(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg)
>  			break;
>  
>  		case DP_AUX_NATIVE_REPLY_NACK:
> -			DRM_DEBUG_KMS("native nack (result=%d, size=%zu)\n", ret, msg->size);
> +			DRM_DEBUG_KMS("%s: native nack (result=%d, size=%zu)\n",
> +				      aux->name, ret, msg->size);
>  			return -EREMOTEIO;
>  
>  		case DP_AUX_NATIVE_REPLY_DEFER:
> -			DRM_DEBUG_KMS("native defer\n");
> +			DRM_DEBUG_KMS("%s: native defer\n", aux->name);
>  			/*
>  			 * We could check for I2C bit rate capabilities and if
>  			 * available adjust this interval. We could also be
> @@ -772,7 +776,8 @@ static int drm_dp_i2c_do_msg(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg)
>  			continue;
>  
>  		default:
> -			DRM_ERROR("invalid native reply %#04x\n", msg->reply);
> +			DRM_ERROR("%s: invalid native reply %#04x\n",
> +				  aux->name, msg->reply);
>  			return -EREMOTEIO;
>  		}
>  
> @@ -787,13 +792,13 @@ static int drm_dp_i2c_do_msg(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg)
>  			return ret;
>  
>  		case DP_AUX_I2C_REPLY_NACK:
> -			DRM_DEBUG_KMS("I2C nack (result=%d, size=%zu)\n",
> -				      ret, msg->size);
> +			DRM_DEBUG_KMS("%s: I2C nack (result=%d, size=%zu)\n",
> +				      aux->name, ret, msg->size);
>  			aux->i2c_nack_count++;
>  			return -EREMOTEIO;
>  
>  		case DP_AUX_I2C_REPLY_DEFER:
> -			DRM_DEBUG_KMS("I2C defer\n");
> +			DRM_DEBUG_KMS("%s: I2C defer\n", aux->name);
>  			/* DP Compliance Test 4.2.2.5 Requirement:
>  			 * Must have at least 7 retries for I2C defers on the
>  			 * transaction to pass this test
> @@ -807,12 +812,13 @@ static int drm_dp_i2c_do_msg(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg)
>  			continue;
>  
>  		default:
> -			DRM_ERROR("invalid I2C reply %#04x\n", msg->reply);
> +			DRM_ERROR("%s: invalid I2C reply %#04x\n",
> +				  aux->name, msg->reply);
>  			return -EREMOTEIO;
>  		}
>  	}
>  
> -	DRM_DEBUG_KMS("too many retries, giving up\n");
> +	DRM_DEBUG_KMS("%s: Too many retries, giving up\n", aux->name);
>  	return -EREMOTEIO;
>  }
>  
> @@ -841,8 +847,8 @@ static int drm_dp_i2c_drain_msg(struct drm_dp_aux *aux, struct drm_dp_aux_msg *o
>  			return err == 0 ? -EPROTO : err;
>  
>  		if (err < msg.size && err < ret) {
> -			DRM_DEBUG_KMS("Partial I2C reply: requested %zu bytes got %d bytes\n",
> -				      msg.size, err);
> +			DRM_DEBUG_KMS("%s: Partial I2C reply: requested %zu bytes got %d bytes\n",
> +				      aux->name, msg.size, err);
>  			ret = err;
>  		}
>  
> @@ -1021,11 +1027,12 @@ static void drm_dp_aux_crc_work(struct work_struct *work)
>  		}
>  
>  		if (ret == -EAGAIN) {
> -			DRM_DEBUG_KMS("Get CRC failed after retrying: %d\n",
> -				      ret);
> +			DRM_DEBUG_KMS("%s: Get CRC failed after retrying: %d\n",
> +				      aux->name, ret);
>  			continue;
>  		} else if (ret) {
> -			DRM_DEBUG_KMS("Failed to get a CRC: %d\n", ret);
> +			DRM_DEBUG_KMS("%s: Failed to get a CRC: %d\n",
> +				      aux->name, ret);
>  			continue;
>  		}
>  
> @@ -1387,8 +1394,8 @@ int drm_dp_read_desc(struct drm_dp_aux *aux, struct drm_dp_desc *desc,
>  
>  	dev_id_len = strnlen(ident->device_id, sizeof(ident->device_id));
>  
> -	DRM_DEBUG_KMS("DP %s: OUI %*phD dev-ID %*pE HW-rev %d.%d SW-rev %d.%d quirks 0x%04x\n",
> -		      is_branch ? "branch" : "sink",
> +	DRM_DEBUG_KMS("%s: DP %s: OUI %*phD dev-ID %*pE HW-rev %d.%d SW-rev %d.%d quirks 0x%04x\n",
> +		      aux->name, is_branch ? "branch" : "sink",
>  		      (int)sizeof(ident->oui), ident->oui,
>  		      dev_id_len, ident->device_id,
>  		      ident->hw_rev >> 4, ident->hw_rev & 0xf,
> -- 
> 2.26.2
diff mbox series

Patch

diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
index 43e57632b00a..743ead068a43 100644
--- a/drivers/gpu/drm/drm_dp_helper.c
+++ b/drivers/gpu/drm/drm_dp_helper.c
@@ -257,7 +257,8 @@  static int drm_dp_dpcd_access(struct drm_dp_aux *aux, u8 request,
 			err = ret;
 	}
 
-	DRM_DEBUG_KMS("Too many retries, giving up. First error: %d\n", err);
+	DRM_DEBUG_KMS("%s: Too many retries, giving up. First error: %d\n",
+		      aux->name, err);
 	ret = err;
 
 unlock:
@@ -376,43 +377,44 @@  bool drm_dp_send_real_edid_checksum(struct drm_dp_aux *aux,
 
 	if (drm_dp_dpcd_read(aux, DP_DEVICE_SERVICE_IRQ_VECTOR,
 			     &auto_test_req, 1) < 1) {
-		DRM_ERROR("DPCD failed read at register 0x%x\n",
-			  DP_DEVICE_SERVICE_IRQ_VECTOR);
+		DRM_ERROR("%s: DPCD failed read at register 0x%x\n",
+			  aux->name, DP_DEVICE_SERVICE_IRQ_VECTOR);
 		return false;
 	}
 	auto_test_req &= DP_AUTOMATED_TEST_REQUEST;
 
 	if (drm_dp_dpcd_read(aux, DP_TEST_REQUEST, &link_edid_read, 1) < 1) {
-		DRM_ERROR("DPCD failed read at register 0x%x\n",
-			  DP_TEST_REQUEST);
+		DRM_ERROR("%s: DPCD failed read at register 0x%x\n",
+			  aux->name, DP_TEST_REQUEST);
 		return false;
 	}
 	link_edid_read &= DP_TEST_LINK_EDID_READ;
 
 	if (!auto_test_req || !link_edid_read) {
-		DRM_DEBUG_KMS("Source DUT does not support TEST_EDID_READ\n");
+		DRM_DEBUG_KMS("%s: Source DUT does not support TEST_EDID_READ\n",
+			      aux->name);
 		return false;
 	}
 
 	if (drm_dp_dpcd_write(aux, DP_DEVICE_SERVICE_IRQ_VECTOR,
 			      &auto_test_req, 1) < 1) {
-		DRM_ERROR("DPCD failed write at register 0x%x\n",
-			  DP_DEVICE_SERVICE_IRQ_VECTOR);
+		DRM_ERROR("%s: DPCD failed write at register 0x%x\n",
+			  aux->name, DP_DEVICE_SERVICE_IRQ_VECTOR);
 		return false;
 	}
 
 	/* send back checksum for the last edid extension block data */
 	if (drm_dp_dpcd_write(aux, DP_TEST_EDID_CHECKSUM,
 			      &real_edid_checksum, 1) < 1) {
-		DRM_ERROR("DPCD failed write at register 0x%x\n",
-			  DP_TEST_EDID_CHECKSUM);
+		DRM_ERROR("%s: DPCD failed write at register 0x%x\n",
+			  aux->name, DP_TEST_EDID_CHECKSUM);
 		return false;
 	}
 
 	test_resp |= DP_TEST_EDID_CHECKSUM_WRITE;
 	if (drm_dp_dpcd_write(aux, DP_TEST_RESPONSE, &test_resp, 1) < 1) {
-		DRM_ERROR("DPCD failed write at register 0x%x\n",
-			  DP_TEST_RESPONSE);
+		DRM_ERROR("%s: DPCD failed write at register 0x%x\n",
+			  aux->name, DP_TEST_RESPONSE);
 		return false;
 	}
 
@@ -737,10 +739,11 @@  static int drm_dp_i2c_do_msg(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg)
 			 * Avoid spamming the kernel log with timeout errors.
 			 */
 			if (ret == -ETIMEDOUT)
-				DRM_DEBUG_KMS_RATELIMITED("transaction timed out\n");
+				DRM_DEBUG_KMS_RATELIMITED("%s: transaction timed out\n",
+							  aux->name);
 			else
-				DRM_DEBUG_KMS("transaction failed: %d\n", ret);
-
+				DRM_DEBUG_KMS("%s: transaction failed: %d\n",
+					      aux->name, ret);
 			return ret;
 		}
 
@@ -754,11 +757,12 @@  static int drm_dp_i2c_do_msg(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg)
 			break;
 
 		case DP_AUX_NATIVE_REPLY_NACK:
-			DRM_DEBUG_KMS("native nack (result=%d, size=%zu)\n", ret, msg->size);
+			DRM_DEBUG_KMS("%s: native nack (result=%d, size=%zu)\n",
+				      aux->name, ret, msg->size);
 			return -EREMOTEIO;
 
 		case DP_AUX_NATIVE_REPLY_DEFER:
-			DRM_DEBUG_KMS("native defer\n");
+			DRM_DEBUG_KMS("%s: native defer\n", aux->name);
 			/*
 			 * We could check for I2C bit rate capabilities and if
 			 * available adjust this interval. We could also be
@@ -772,7 +776,8 @@  static int drm_dp_i2c_do_msg(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg)
 			continue;
 
 		default:
-			DRM_ERROR("invalid native reply %#04x\n", msg->reply);
+			DRM_ERROR("%s: invalid native reply %#04x\n",
+				  aux->name, msg->reply);
 			return -EREMOTEIO;
 		}
 
@@ -787,13 +792,13 @@  static int drm_dp_i2c_do_msg(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg)
 			return ret;
 
 		case DP_AUX_I2C_REPLY_NACK:
-			DRM_DEBUG_KMS("I2C nack (result=%d, size=%zu)\n",
-				      ret, msg->size);
+			DRM_DEBUG_KMS("%s: I2C nack (result=%d, size=%zu)\n",
+				      aux->name, ret, msg->size);
 			aux->i2c_nack_count++;
 			return -EREMOTEIO;
 
 		case DP_AUX_I2C_REPLY_DEFER:
-			DRM_DEBUG_KMS("I2C defer\n");
+			DRM_DEBUG_KMS("%s: I2C defer\n", aux->name);
 			/* DP Compliance Test 4.2.2.5 Requirement:
 			 * Must have at least 7 retries for I2C defers on the
 			 * transaction to pass this test
@@ -807,12 +812,13 @@  static int drm_dp_i2c_do_msg(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg)
 			continue;
 
 		default:
-			DRM_ERROR("invalid I2C reply %#04x\n", msg->reply);
+			DRM_ERROR("%s: invalid I2C reply %#04x\n",
+				  aux->name, msg->reply);
 			return -EREMOTEIO;
 		}
 	}
 
-	DRM_DEBUG_KMS("too many retries, giving up\n");
+	DRM_DEBUG_KMS("%s: Too many retries, giving up\n", aux->name);
 	return -EREMOTEIO;
 }
 
@@ -841,8 +847,8 @@  static int drm_dp_i2c_drain_msg(struct drm_dp_aux *aux, struct drm_dp_aux_msg *o
 			return err == 0 ? -EPROTO : err;
 
 		if (err < msg.size && err < ret) {
-			DRM_DEBUG_KMS("Partial I2C reply: requested %zu bytes got %d bytes\n",
-				      msg.size, err);
+			DRM_DEBUG_KMS("%s: Partial I2C reply: requested %zu bytes got %d bytes\n",
+				      aux->name, msg.size, err);
 			ret = err;
 		}
 
@@ -1021,11 +1027,12 @@  static void drm_dp_aux_crc_work(struct work_struct *work)
 		}
 
 		if (ret == -EAGAIN) {
-			DRM_DEBUG_KMS("Get CRC failed after retrying: %d\n",
-				      ret);
+			DRM_DEBUG_KMS("%s: Get CRC failed after retrying: %d\n",
+				      aux->name, ret);
 			continue;
 		} else if (ret) {
-			DRM_DEBUG_KMS("Failed to get a CRC: %d\n", ret);
+			DRM_DEBUG_KMS("%s: Failed to get a CRC: %d\n",
+				      aux->name, ret);
 			continue;
 		}
 
@@ -1387,8 +1394,8 @@  int drm_dp_read_desc(struct drm_dp_aux *aux, struct drm_dp_desc *desc,
 
 	dev_id_len = strnlen(ident->device_id, sizeof(ident->device_id));
 
-	DRM_DEBUG_KMS("DP %s: OUI %*phD dev-ID %*pE HW-rev %d.%d SW-rev %d.%d quirks 0x%04x\n",
-		      is_branch ? "branch" : "sink",
+	DRM_DEBUG_KMS("%s: DP %s: OUI %*phD dev-ID %*pE HW-rev %d.%d SW-rev %d.%d quirks 0x%04x\n",
+		      aux->name, is_branch ? "branch" : "sink",
 		      (int)sizeof(ident->oui), ident->oui,
 		      dev_id_len, ident->device_id,
 		      ident->hw_rev >> 4, ident->hw_rev & 0xf,