public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [CI-RESEND 1/3] drm: extra printk() wrapper macros
@ 2016-07-19 12:20 Dave Gordon
  2016-07-19 12:20 ` [CI-RESEND 2/3] drm/i915/guc: downgrade some DRM_ERROR() messages to DRM_WARN() Dave Gordon
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Dave Gordon @ 2016-07-19 12:20 UTC (permalink / raw)
  To: intel-gfx

We had only DRM_INFO() and DRM_ERROR(), whereas the underlying printk()
provides several other useful intermediate levels such as NOTICE and
WARNING. So this patch fills out the set by providing both regular and
once-only macros for each of the levels INFO, NOTICE, and WARNING, using
a common underlying macro that does all the token-pasting.

DRM_ERROR is unchanged, as it's not just a printk wrapper.

v2:
    Fix whitespace, missing ## (Eric Engestrom)

Signed-off-by: Dave Gordon <david.s.gordon@intel.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
---
 include/drm/drmP.h | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index d377865..3669cdd 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -162,6 +162,26 @@ void drm_err(const char *format, ...);
 /** \name Macros to make printk easier */
 /*@{*/
 
+#define _DRM_PRINTK(once, level, fmt, ...)				\
+	do {								\
+		printk##once(KERN_##level "[" DRM_NAME "] " fmt,	\
+			     ##__VA_ARGS__);				\
+	} while (0)
+
+#define DRM_INFO(fmt, ...)						\
+	_DRM_PRINTK(, INFO, fmt, ##__VA_ARGS__)
+#define DRM_NOTE(fmt, ...)						\
+	_DRM_PRINTK(, NOTICE, fmt, ##__VA_ARGS__)
+#define DRM_WARN(fmt, ...)						\
+	_DRM_PRINTK(, WARNING, fmt, ##__VA_ARGS__)
+
+#define DRM_INFO_ONCE(fmt, ...)						\
+	_DRM_PRINTK(_once, INFO, fmt, ##__VA_ARGS__)
+#define DRM_NOTE_ONCE(fmt, ...)						\
+	_DRM_PRINTK(_once, NOTICE, fmt, ##__VA_ARGS__)
+#define DRM_WARN_ONCE(fmt, ...)						\
+	_DRM_PRINTK(_once, WARNING, fmt, ##__VA_ARGS__)
+
 /**
  * Error output.
  *
@@ -187,12 +207,6 @@ void drm_err(const char *format, ...);
 		drm_err(fmt, ##__VA_ARGS__);				\
 })
 
-#define DRM_INFO(fmt, ...)				\
-	printk(KERN_INFO "[" DRM_NAME "] " fmt, ##__VA_ARGS__)
-
-#define DRM_INFO_ONCE(fmt, ...)				\
-	printk_once(KERN_INFO "[" DRM_NAME "] " fmt, ##__VA_ARGS__)
-
 /**
  * Debug output.
  *
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* [CI-RESEND 2/3] drm/i915/guc: downgrade some DRM_ERROR() messages to DRM_WARN()
  2016-07-19 12:20 [CI-RESEND 1/3] drm: extra printk() wrapper macros Dave Gordon
@ 2016-07-19 12:20 ` Dave Gordon
  2016-07-19 14:16   ` Tvrtko Ursulin
  2016-07-19 12:20 ` [CI-RESEND 3/3] drm/i915/guc: revisit GuC loader message levels Dave Gordon
  2016-07-19 13:53 ` ✓ Ro.CI.BAT: success for series starting with [CI-RESEND,1/3] drm: extra printk() wrapper macros Patchwork
  2 siblings, 1 reply; 8+ messages in thread
From: Dave Gordon @ 2016-07-19 12:20 UTC (permalink / raw)
  To: intel-gfx

Where we're going to continue regardless of the problem, rather than
fail, then the message should be a WARNing rather than an ERROR.

Signed-off-by: Dave Gordon <david.s.gordon@intel.com>
---
 drivers/gpu/drm/i915/i915_guc_submission.c | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c
index 2112e02..e299b64 100644
--- a/drivers/gpu/drm/i915/i915_guc_submission.c
+++ b/drivers/gpu/drm/i915/i915_guc_submission.c
@@ -114,10 +114,8 @@ static int host2guc_action(struct intel_guc *guc, u32 *data, u32 len)
 		if (ret != -ETIMEDOUT)
 			ret = -EIO;
 
-		DRM_ERROR("GUC: host2guc action 0x%X failed. ret=%d "
-				"status=0x%08X response=0x%08X\n",
-				data[0], ret, status,
-				I915_READ(SOFT_SCRATCH(15)));
+		DRM_WARN("Action 0x%X failed; ret=%d status=0x%08X response=0x%08X\n",
+			 data[0], ret, status, I915_READ(SOFT_SCRATCH(15)));
 
 		dev_priv->guc.action_fail += 1;
 		dev_priv->guc.action_err = ret;
@@ -553,8 +551,8 @@ static int guc_ring_doorbell(struct i915_guc_client *gc)
 		if (db_ret.db_status == GUC_DOORBELL_DISABLED)
 			break;
 
-		DRM_ERROR("Cookie mismatch. Expected %d, returned %d\n",
-			  db_cmp.cookie, db_ret.cookie);
+		DRM_WARN("Cookie mismatch. Expected %d, found %d\n",
+			 db_cmp.cookie, db_ret.cookie);
 
 		/* update the cookie to newly read cookie from GuC */
 		db_cmp.cookie = db_ret.cookie;
@@ -726,8 +724,8 @@ static void guc_init_doorbell_hw(struct intel_guc *guc)
 	/* Restore to original value */
 	err = guc_update_doorbell_id(guc, client, db_id);
 	if (err)
-		DRM_ERROR("Failed to restore doorbell to %d, err %d\n",
-			db_id, err);
+		DRM_WARN("Failed to restore doorbell to %d, err %d\n",
+			 db_id, err);
 
 	for (i = 0; i < GUC_MAX_DOORBELLS; ++i) {
 		i915_reg_t drbreg = GEN8_DRBREGL(i);
@@ -819,8 +817,6 @@ static void guc_init_doorbell_hw(struct intel_guc *guc)
 	return client;
 
 err:
-	DRM_ERROR("FAILED to create priority %u GuC client!\n", priority);
-
 	guc_client_free(dev_priv, client);
 	return NULL;
 }
@@ -998,7 +994,7 @@ int i915_guc_submission_enable(struct drm_i915_private *dev_priv)
 				  GUC_CTX_PRIORITY_KMD_NORMAL,
 				  dev_priv->kernel_context);
 	if (!client) {
-		DRM_ERROR("Failed to create execbuf guc_client\n");
+		DRM_ERROR("Failed to create normal GuC client!\n");
 		return -ENOMEM;
 	}
 
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* [CI-RESEND 3/3] drm/i915/guc: revisit GuC loader message levels
  2016-07-19 12:20 [CI-RESEND 1/3] drm: extra printk() wrapper macros Dave Gordon
  2016-07-19 12:20 ` [CI-RESEND 2/3] drm/i915/guc: downgrade some DRM_ERROR() messages to DRM_WARN() Dave Gordon
@ 2016-07-19 12:20 ` Dave Gordon
  2016-07-19 14:26   ` Tvrtko Ursulin
  2016-07-19 13:53 ` ✓ Ro.CI.BAT: success for series starting with [CI-RESEND,1/3] drm: extra printk() wrapper macros Patchwork
  2 siblings, 1 reply; 8+ messages in thread
From: Dave Gordon @ 2016-07-19 12:20 UTC (permalink / raw)
  To: intel-gfx

Some downgraded from DRM_ERROR() to DRM_WARN() or DRM_NOTE(),
a few upgraded from DRM_INFO() to DRM_NOTE() or DRM_WARN(),
and one eliminated completely.

v2: different permutation of levels :)

Signed-off-by: Dave Gordon <david.s.gordon@intel.com>
---
 drivers/gpu/drm/i915/intel_guc_loader.c | 34 ++++++++++++++++-----------------
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c b/drivers/gpu/drm/i915/intel_guc_loader.c
index 605c696..a2f4fa4 100644
--- a/drivers/gpu/drm/i915/intel_guc_loader.c
+++ b/drivers/gpu/drm/i915/intel_guc_loader.c
@@ -140,12 +140,14 @@ static u32 get_gttype(struct drm_i915_private *dev_priv)
 
 static u32 get_core_family(struct drm_i915_private *dev_priv)
 {
-	switch (INTEL_INFO(dev_priv)->gen) {
+	u32 gen = INTEL_GEN(dev_priv);
+
+	switch (gen) {
 	case 9:
 		return GFXCORE_FAMILY_GEN9;
 
 	default:
-		DRM_ERROR("GUC: unsupported core family\n");
+		DRM_WARN("GEN%d does not support GuC operation\n", gen);
 		return GFXCORE_FAMILY_UNKNOWN;
 	}
 }
@@ -433,7 +435,7 @@ int intel_guc_setup(struct drm_device *dev)
 		goto fail;
 	} else if (*fw_path == '\0') {
 		/* Device has a GuC but we don't know what f/w to load? */
-		DRM_INFO("No GuC firmware known for this platform\n");
+		DRM_WARN("No GuC firmware known for this platform\n");
 		err = -ENODEV;
 		goto fail;
 	}
@@ -471,10 +473,8 @@ int intel_guc_setup(struct drm_device *dev)
 		 * that the state and timing are fairly predictable
 		 */
 		err = i915_reset_guc(dev_priv);
-		if (err) {
-			DRM_ERROR("GuC reset failed: %d\n", err);
+		if (err)
 			goto fail;
-		}
 
 		err = guc_ucode_xfer(dev_priv);
 		if (!err)
@@ -532,15 +532,15 @@ int intel_guc_setup(struct drm_device *dev)
 	else if (err == 0)
 		DRM_INFO("GuC firmware load skipped\n");
 	else if (ret != -EIO)
-		DRM_INFO("GuC firmware load failed: %d\n", err);
+		DRM_NOTE("GuC firmware load failed: %d\n", err);
 	else
-		DRM_ERROR("GuC firmware load failed: %d\n", err);
+		DRM_WARN("GuC firmware load failed: %d\n", err);
 
 	if (i915.enable_guc_submission) {
 		if (fw_path == NULL)
 			DRM_INFO("GuC submission without firmware not supported\n");
 		if (ret == 0)
-			DRM_INFO("Falling back from GuC submission to execlist mode\n");
+			DRM_NOTE("Falling back from GuC submission to execlist mode\n");
 		else
 			DRM_ERROR("GuC init failed: %d\n", ret);
 	}
@@ -571,7 +571,7 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 
 	/* Check the size of the blob before examining buffer contents */
 	if (fw->size < sizeof(struct guc_css_header)) {
-		DRM_ERROR("Firmware header is missing\n");
+		DRM_NOTE("Firmware header is missing\n");
 		goto fail;
 	}
 
@@ -583,7 +583,7 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 		css->key_size_dw - css->exponent_size_dw) * sizeof(u32);
 
 	if (guc_fw->header_size != sizeof(struct guc_css_header)) {
-		DRM_ERROR("CSS header definition mismatch\n");
+		DRM_NOTE("CSS header definition mismatch\n");
 		goto fail;
 	}
 
@@ -593,7 +593,7 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 
 	/* now RSA */
 	if (css->key_size_dw != UOS_RSA_SCRATCH_MAX_COUNT) {
-		DRM_ERROR("RSA key size is bad\n");
+		DRM_NOTE("RSA key size is bad\n");
 		goto fail;
 	}
 	guc_fw->rsa_offset = guc_fw->ucode_offset + guc_fw->ucode_size;
@@ -602,14 +602,14 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 	/* At least, it should have header, uCode and RSA. Size of all three. */
 	size = guc_fw->header_size + guc_fw->ucode_size + guc_fw->rsa_size;
 	if (fw->size < size) {
-		DRM_ERROR("Missing firmware components\n");
+		DRM_NOTE("Missing firmware components\n");
 		goto fail;
 	}
 
 	/* Header and uCode will be loaded to WOPCM. Size of the two. */
 	size = guc_fw->header_size + guc_fw->ucode_size;
 	if (size > guc_wopcm_size(to_i915(dev))) {
-		DRM_ERROR("Firmware is too large to fit in WOPCM\n");
+		DRM_NOTE("Firmware is too large to fit in WOPCM\n");
 		goto fail;
 	}
 
@@ -624,7 +624,7 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 
 	if (guc_fw->guc_fw_major_found != guc_fw->guc_fw_major_wanted ||
 	    guc_fw->guc_fw_minor_found < guc_fw->guc_fw_minor_wanted) {
-		DRM_ERROR("GuC firmware version %d.%d, required %d.%d\n",
+		DRM_NOTE("GuC firmware version %d.%d, required %d.%d\n",
 			guc_fw->guc_fw_major_found, guc_fw->guc_fw_minor_found,
 			guc_fw->guc_fw_major_wanted, guc_fw->guc_fw_minor_wanted);
 		err = -ENOEXEC;
@@ -654,10 +654,10 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 	return;
 
 fail:
+	DRM_WARN("Failed to fetch valid GuC firmware from %s (error %d)\n",
+		 guc_fw->guc_fw_path, err);
 	DRM_DEBUG_DRIVER("GuC fw fetch status FAIL; err %d, fw %p, obj %p\n",
 		err, fw, guc_fw->guc_fw_obj);
-	DRM_ERROR("Failed to fetch GuC firmware from %s (error %d)\n",
-		  guc_fw->guc_fw_path, err);
 
 	mutex_lock(&dev->struct_mutex);
 	obj = guc_fw->guc_fw_obj;
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* ✓ Ro.CI.BAT: success for series starting with [CI-RESEND,1/3] drm: extra printk() wrapper macros
  2016-07-19 12:20 [CI-RESEND 1/3] drm: extra printk() wrapper macros Dave Gordon
  2016-07-19 12:20 ` [CI-RESEND 2/3] drm/i915/guc: downgrade some DRM_ERROR() messages to DRM_WARN() Dave Gordon
  2016-07-19 12:20 ` [CI-RESEND 3/3] drm/i915/guc: revisit GuC loader message levels Dave Gordon
@ 2016-07-19 13:53 ` Patchwork
  2016-07-19 14:49   ` Dave Gordon
  2 siblings, 1 reply; 8+ messages in thread
From: Patchwork @ 2016-07-19 13:53 UTC (permalink / raw)
  To: Dave Gordon; +Cc: intel-gfx

== Series Details ==

Series: series starting with [CI-RESEND,1/3] drm: extra printk() wrapper macros
URL   : https://patchwork.freedesktop.org/series/10036/
State : success

== Summary ==

Series 10036v1 Series without cover letter
http://patchwork.freedesktop.org/api/1.0/series/10036/revisions/1/mbox

Test drv_module_reload_basic:
                dmesg-warn -> PASS       (ro-skl3-i5-6260u)
Test gem_sync:
        Subgroup basic-store-each:
                fail       -> DMESG-FAIL (ro-bdw-i7-5600u)

fi-hsw-i7-4770k  total:243  pass:213  dwarn:0   dfail:0   fail:10  skip:20 
fi-kbl-qkkr      total:243  pass:178  dwarn:27  dfail:1   fail:10  skip:27 
fi-skl-i5-6260u  total:243  pass:222  dwarn:0   dfail:0   fail:9   skip:12 
fi-skl-i7-6700k  total:243  pass:208  dwarn:0   dfail:0   fail:9   skip:26 
fi-snb-i7-2600   total:243  pass:193  dwarn:0   dfail:0   fail:10  skip:40 
ro-bdw-i5-5250u  total:244  pass:217  dwarn:4   dfail:0   fail:10  skip:13 
ro-bdw-i7-5557U  total:244  pass:219  dwarn:1   dfail:0   fail:9   skip:15 
ro-bdw-i7-5600u  total:244  pass:201  dwarn:0   dfail:1   fail:10  skip:32 
ro-bsw-n3050     total:218  pass:173  dwarn:0   dfail:0   fail:2   skip:42 
ro-byt-n2820     total:244  pass:194  dwarn:0   dfail:0   fail:12  skip:38 
ro-hsw-i3-4010u  total:244  pass:209  dwarn:0   dfail:0   fail:11  skip:24 
ro-hsw-i7-4770r  total:244  pass:209  dwarn:0   dfail:0   fail:11  skip:24 
ro-ilk-i7-620lm  total:244  pass:169  dwarn:0   dfail:0   fail:12  skip:63 
ro-ilk1-i5-650   total:239  pass:170  dwarn:0   dfail:0   fail:11  skip:58 
ro-ivb-i7-3770   total:244  pass:200  dwarn:0   dfail:0   fail:11  skip:33 
ro-skl3-i5-6260u total:244  pass:222  dwarn:0   dfail:0   fail:10  skip:12 
ro-snb-i7-2620M  total:244  pass:190  dwarn:0   dfail:0   fail:12  skip:42 

Results at /archive/results/CI_IGT_test/RO_Patchwork_1531/

635555a drm-intel-nightly: 2016y-07m-19d-13h-02m-39s UTC integration manifest
b23d573 drm/i915/guc: revisit GuC loader message levels
950c1a4 drm/i915/guc: downgrade some DRM_ERROR() messages to DRM_WARN()
5e8e33b drm: extra printk() wrapper macros

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [CI-RESEND 2/3] drm/i915/guc: downgrade some DRM_ERROR() messages to DRM_WARN()
  2016-07-19 12:20 ` [CI-RESEND 2/3] drm/i915/guc: downgrade some DRM_ERROR() messages to DRM_WARN() Dave Gordon
@ 2016-07-19 14:16   ` Tvrtko Ursulin
  0 siblings, 0 replies; 8+ messages in thread
From: Tvrtko Ursulin @ 2016-07-19 14:16 UTC (permalink / raw)
  To: Dave Gordon, intel-gfx


On 19/07/16 13:20, Dave Gordon wrote:
> Where we're going to continue regardless of the problem, rather than
> fail, then the message should be a WARNing rather than an ERROR.
>
> Signed-off-by: Dave Gordon <david.s.gordon@intel.com>
> ---
>   drivers/gpu/drm/i915/i915_guc_submission.c | 18 +++++++-----------
>   1 file changed, 7 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c
> index 2112e02..e299b64 100644
> --- a/drivers/gpu/drm/i915/i915_guc_submission.c
> +++ b/drivers/gpu/drm/i915/i915_guc_submission.c
> @@ -114,10 +114,8 @@ static int host2guc_action(struct intel_guc *guc, u32 *data, u32 len)
>   		if (ret != -ETIMEDOUT)
>   			ret = -EIO;
>
> -		DRM_ERROR("GUC: host2guc action 0x%X failed. ret=%d "
> -				"status=0x%08X response=0x%08X\n",
> -				data[0], ret, status,
> -				I915_READ(SOFT_SCRATCH(15)));
> +		DRM_WARN("Action 0x%X failed; ret=%d status=0x%08X response=0x%08X\n",
> +			 data[0], ret, status, I915_READ(SOFT_SCRATCH(15)));
>
>   		dev_priv->guc.action_fail += 1;
>   		dev_priv->guc.action_err = ret;
> @@ -553,8 +551,8 @@ static int guc_ring_doorbell(struct i915_guc_client *gc)
>   		if (db_ret.db_status == GUC_DOORBELL_DISABLED)
>   			break;
>
> -		DRM_ERROR("Cookie mismatch. Expected %d, returned %d\n",
> -			  db_cmp.cookie, db_ret.cookie);
> +		DRM_WARN("Cookie mismatch. Expected %d, found %d\n",
> +			 db_cmp.cookie, db_ret.cookie);
>
>   		/* update the cookie to newly read cookie from GuC */
>   		db_cmp.cookie = db_ret.cookie;
> @@ -726,8 +724,8 @@ static void guc_init_doorbell_hw(struct intel_guc *guc)
>   	/* Restore to original value */
>   	err = guc_update_doorbell_id(guc, client, db_id);
>   	if (err)
> -		DRM_ERROR("Failed to restore doorbell to %d, err %d\n",
> -			db_id, err);
> +		DRM_WARN("Failed to restore doorbell to %d, err %d\n",
> +			 db_id, err);
>
>   	for (i = 0; i < GUC_MAX_DOORBELLS; ++i) {
>   		i915_reg_t drbreg = GEN8_DRBREGL(i);
> @@ -819,8 +817,6 @@ static void guc_init_doorbell_hw(struct intel_guc *guc)
>   	return client;
>
>   err:
> -	DRM_ERROR("FAILED to create priority %u GuC client!\n", priority);
> -
>   	guc_client_free(dev_priv, client);
>   	return NULL;
>   }
> @@ -998,7 +994,7 @@ int i915_guc_submission_enable(struct drm_i915_private *dev_priv)
>   				  GUC_CTX_PRIORITY_KMD_NORMAL,
>   				  dev_priv->kernel_context);
>   	if (!client) {
> -		DRM_ERROR("Failed to create execbuf guc_client\n");
> +		DRM_ERROR("Failed to create normal GuC client!\n");
>   		return -ENOMEM;
>   	}
>
>

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Regards,

Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [CI-RESEND 3/3] drm/i915/guc: revisit GuC loader message levels
  2016-07-19 12:20 ` [CI-RESEND 3/3] drm/i915/guc: revisit GuC loader message levels Dave Gordon
@ 2016-07-19 14:26   ` Tvrtko Ursulin
  2016-07-19 16:03     ` Dave Gordon
  0 siblings, 1 reply; 8+ messages in thread
From: Tvrtko Ursulin @ 2016-07-19 14:26 UTC (permalink / raw)
  To: Dave Gordon, intel-gfx


On 19/07/16 13:20, Dave Gordon wrote:
> Some downgraded from DRM_ERROR() to DRM_WARN() or DRM_NOTE(),
> a few upgraded from DRM_INFO() to DRM_NOTE() or DRM_WARN(),
> and one eliminated completely.
>
> v2: different permutation of levels :)
>
> Signed-off-by: Dave Gordon <david.s.gordon@intel.com>
> ---
>   drivers/gpu/drm/i915/intel_guc_loader.c | 34 ++++++++++++++++-----------------
>   1 file changed, 17 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c b/drivers/gpu/drm/i915/intel_guc_loader.c
> index 605c696..a2f4fa4 100644
> --- a/drivers/gpu/drm/i915/intel_guc_loader.c
> +++ b/drivers/gpu/drm/i915/intel_guc_loader.c
> @@ -140,12 +140,14 @@ static u32 get_gttype(struct drm_i915_private *dev_priv)
>
>   static u32 get_core_family(struct drm_i915_private *dev_priv)
>   {
> -	switch (INTEL_INFO(dev_priv)->gen) {
> +	u32 gen = INTEL_GEN(dev_priv);
> +
> +	switch (gen) {
>   	case 9:
>   		return GFXCORE_FAMILY_GEN9;
>
>   	default:
> -		DRM_ERROR("GUC: unsupported core family\n");
> +		DRM_WARN("GEN%d does not support GuC operation\n", gen);

This looks more like a WARN_ON condition to me, something developers 
need to notice extremely easily in development and will never happen in 
deployment.

>   		return GFXCORE_FAMILY_UNKNOWN;
>   	}
>   }
> @@ -433,7 +435,7 @@ int intel_guc_setup(struct drm_device *dev)
>   		goto fail;
>   	} else if (*fw_path == '\0') {
>   		/* Device has a GuC but we don't know what f/w to load? */
> -		DRM_INFO("No GuC firmware known for this platform\n");
> +		DRM_WARN("No GuC firmware known for this platform\n");

This looks the same to me (WARN_ON), it can only happen if someone 
messes up things in development.

>   		err = -ENODEV;
>   		goto fail;
>   	}
> @@ -471,10 +473,8 @@ int intel_guc_setup(struct drm_device *dev)
>   		 * that the state and timing are fairly predictable
>   		 */
>   		err = i915_reset_guc(dev_priv);
> -		if (err) {
> -			DRM_ERROR("GuC reset failed: %d\n", err);
> +		if (err)
>   			goto fail;
> -		}
>
>   		err = guc_ucode_xfer(dev_priv);
>   		if (!err)
> @@ -532,15 +532,15 @@ int intel_guc_setup(struct drm_device *dev)
>   	else if (err == 0)
>   		DRM_INFO("GuC firmware load skipped\n");
>   	else if (ret != -EIO)
> -		DRM_INFO("GuC firmware load failed: %d\n", err);
> +		DRM_NOTE("GuC firmware load failed: %d\n", err);
>   	else
> -		DRM_ERROR("GuC firmware load failed: %d\n", err);
> +		DRM_WARN("GuC firmware load failed: %d\n", err);
>
>   	if (i915.enable_guc_submission) {
>   		if (fw_path == NULL)
>   			DRM_INFO("GuC submission without firmware not supported\n");
>   		if (ret == 0)
> -			DRM_INFO("Falling back from GuC submission to execlist mode\n");
> +			DRM_NOTE("Falling back from GuC submission to execlist mode\n");
>   		else
>   			DRM_ERROR("GuC init failed: %d\n", ret);
>   	}
> @@ -571,7 +571,7 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
>
>   	/* Check the size of the blob before examining buffer contents */
>   	if (fw->size < sizeof(struct guc_css_header)) {
> -		DRM_ERROR("Firmware header is missing\n");
> +		DRM_NOTE("Firmware header is missing\n");
>   		goto fail;
>   	}
>
> @@ -583,7 +583,7 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
>   		css->key_size_dw - css->exponent_size_dw) * sizeof(u32);
>
>   	if (guc_fw->header_size != sizeof(struct guc_css_header)) {
> -		DRM_ERROR("CSS header definition mismatch\n");
> +		DRM_NOTE("CSS header definition mismatch\n");
>   		goto fail;
>   	}
>
> @@ -593,7 +593,7 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
>
>   	/* now RSA */
>   	if (css->key_size_dw != UOS_RSA_SCRATCH_MAX_COUNT) {
> -		DRM_ERROR("RSA key size is bad\n");
> +		DRM_NOTE("RSA key size is bad\n");
>   		goto fail;
>   	}
>   	guc_fw->rsa_offset = guc_fw->ucode_offset + guc_fw->ucode_size;
> @@ -602,14 +602,14 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
>   	/* At least, it should have header, uCode and RSA. Size of all three. */
>   	size = guc_fw->header_size + guc_fw->ucode_size + guc_fw->rsa_size;
>   	if (fw->size < size) {
> -		DRM_ERROR("Missing firmware components\n");
> +		DRM_NOTE("Missing firmware components\n");
>   		goto fail;
>   	}
>
>   	/* Header and uCode will be loaded to WOPCM. Size of the two. */
>   	size = guc_fw->header_size + guc_fw->ucode_size;
>   	if (size > guc_wopcm_size(to_i915(dev))) {
> -		DRM_ERROR("Firmware is too large to fit in WOPCM\n");
> +		DRM_NOTE("Firmware is too large to fit in WOPCM\n");
>   		goto fail;
>   	}
>
> @@ -624,7 +624,7 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
>
>   	if (guc_fw->guc_fw_major_found != guc_fw->guc_fw_major_wanted ||
>   	    guc_fw->guc_fw_minor_found < guc_fw->guc_fw_minor_wanted) {
> -		DRM_ERROR("GuC firmware version %d.%d, required %d.%d\n",
> +		DRM_NOTE("GuC firmware version %d.%d, required %d.%d\n",
>   			guc_fw->guc_fw_major_found, guc_fw->guc_fw_minor_found,
>   			guc_fw->guc_fw_major_wanted, guc_fw->guc_fw_minor_wanted);
>   		err = -ENOEXEC;
> @@ -654,10 +654,10 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
>   	return;
>
>   fail:
> +	DRM_WARN("Failed to fetch valid GuC firmware from %s (error %d)\n",
> +		 guc_fw->guc_fw_path, err);
>   	DRM_DEBUG_DRIVER("GuC fw fetch status FAIL; err %d, fw %p, obj %p\n",
>   		err, fw, guc_fw->guc_fw_obj);

As commented before, I would tidy these two into one while dropping the 
uninteresting debug like object pointe and fw name pointer.

> -	DRM_ERROR("Failed to fetch GuC firmware from %s (error %d)\n",
> -		  guc_fw->guc_fw_path, err);
>
>   	mutex_lock(&dev->struct_mutex);
>   	obj = guc_fw->guc_fw_obj;
>

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Also, you can keep it if you decide to act on my suggestions from above.

Regards,

Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: ✓ Ro.CI.BAT: success for series starting with [CI-RESEND,1/3] drm: extra printk() wrapper macros
  2016-07-19 13:53 ` ✓ Ro.CI.BAT: success for series starting with [CI-RESEND,1/3] drm: extra printk() wrapper macros Patchwork
@ 2016-07-19 14:49   ` Dave Gordon
  0 siblings, 0 replies; 8+ messages in thread
From: Dave Gordon @ 2016-07-19 14:49 UTC (permalink / raw)
  To: intel-gfx

On 19/07/16 14:53, Patchwork wrote:
> == Series Details ==
>
> Series: series starting with [CI-RESEND,1/3] drm: extra printk() wrapper macros
> URL   : https://patchwork.freedesktop.org/series/10036/
> State : success
>
> == Summary ==
>
> Series 10036v1 Series without cover letter
> http://patchwork.freedesktop.org/api/1.0/series/10036/revisions/1/mbox
>
> Test drv_module_reload_basic:
>                  dmesg-warn -> PASS       (ro-skl3-i5-6260u)
> Test gem_sync:
>          Subgroup basic-store-each:
>                  fail       -> DMESG-FAIL (ro-bdw-i7-5600u)

This is (now) Bug 96974
https://bugs.freedesktop.org/show_bug.cgi?id=96974
[BAT BDW] gem_sync / basic-store-each fails sporadically

I filed this too, but Villa beat me by a couple of minutes,
so my bug 96975 is now a dup of 96974.

Maybe we should get another identical machine and see whether
the results are consistent, 'cos the other BDWs aren't showing
this at all.

.Dave.

> fi-hsw-i7-4770k  total:243  pass:213  dwarn:0   dfail:0   fail:10  skip:20
> fi-kbl-qkkr      total:243  pass:178  dwarn:27  dfail:1   fail:10  skip:27
> fi-skl-i5-6260u  total:243  pass:222  dwarn:0   dfail:0   fail:9   skip:12
> fi-skl-i7-6700k  total:243  pass:208  dwarn:0   dfail:0   fail:9   skip:26
> fi-snb-i7-2600   total:243  pass:193  dwarn:0   dfail:0   fail:10  skip:40
> ro-bdw-i5-5250u  total:244  pass:217  dwarn:4   dfail:0   fail:10  skip:13
> ro-bdw-i7-5557U  total:244  pass:219  dwarn:1   dfail:0   fail:9   skip:15
> ro-bdw-i7-5600u  total:244  pass:201  dwarn:0   dfail:1   fail:10  skip:32
> ro-bsw-n3050     total:218  pass:173  dwarn:0   dfail:0   fail:2   skip:42
> ro-byt-n2820     total:244  pass:194  dwarn:0   dfail:0   fail:12  skip:38
> ro-hsw-i3-4010u  total:244  pass:209  dwarn:0   dfail:0   fail:11  skip:24
> ro-hsw-i7-4770r  total:244  pass:209  dwarn:0   dfail:0   fail:11  skip:24
> ro-ilk-i7-620lm  total:244  pass:169  dwarn:0   dfail:0   fail:12  skip:63
> ro-ilk1-i5-650   total:239  pass:170  dwarn:0   dfail:0   fail:11  skip:58
> ro-ivb-i7-3770   total:244  pass:200  dwarn:0   dfail:0   fail:11  skip:33
> ro-skl3-i5-6260u total:244  pass:222  dwarn:0   dfail:0   fail:10  skip:12
> ro-snb-i7-2620M  total:244  pass:190  dwarn:0   dfail:0   fail:12  skip:42
>
> Results at /archive/results/CI_IGT_test/RO_Patchwork_1531/
>
> 635555a drm-intel-nightly: 2016y-07m-19d-13h-02m-39s UTC integration manifest
> b23d573 drm/i915/guc: revisit GuC loader message levels
> 950c1a4 drm/i915/guc: downgrade some DRM_ERROR() messages to DRM_WARN()
> 5e8e33b drm: extra printk() wrapper macros
>

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [CI-RESEND 3/3] drm/i915/guc: revisit GuC loader message levels
  2016-07-19 14:26   ` Tvrtko Ursulin
@ 2016-07-19 16:03     ` Dave Gordon
  0 siblings, 0 replies; 8+ messages in thread
From: Dave Gordon @ 2016-07-19 16:03 UTC (permalink / raw)
  To: Tvrtko Ursulin, intel-gfx

On 19/07/16 15:26, Tvrtko Ursulin wrote:
>
> On 19/07/16 13:20, Dave Gordon wrote:
>> Some downgraded from DRM_ERROR() to DRM_WARN() or DRM_NOTE(),
>> a few upgraded from DRM_INFO() to DRM_NOTE() or DRM_WARN(),
>> and one eliminated completely.
>>
>> v2: different permutation of levels :)
>>
>> Signed-off-by: Dave Gordon <david.s.gordon@intel.com>
>> ---
>>   drivers/gpu/drm/i915/intel_guc_loader.c | 34
>> ++++++++++++++++-----------------
>>   1 file changed, 17 insertions(+), 17 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c
>> b/drivers/gpu/drm/i915/intel_guc_loader.c
>> index 605c696..a2f4fa4 100644
>> --- a/drivers/gpu/drm/i915/intel_guc_loader.c
>> +++ b/drivers/gpu/drm/i915/intel_guc_loader.c
>> @@ -140,12 +140,14 @@ static u32 get_gttype(struct drm_i915_private
>> *dev_priv)
>>
>>   static u32 get_core_family(struct drm_i915_private *dev_priv)
>>   {
>> -    switch (INTEL_INFO(dev_priv)->gen) {
>> +    u32 gen = INTEL_GEN(dev_priv);
>> +
>> +    switch (gen) {
>>       case 9:
>>           return GFXCORE_FAMILY_GEN9;
>>
>>       default:
>> -        DRM_ERROR("GUC: unsupported core family\n");
>> +        DRM_WARN("GEN%d does not support GuC operation\n", gen);
>
> This looks more like a WARN_ON condition to me, something developers
> need to notice extremely easily in development and will never happen in
> deployment.

OK; the check in the caller below should have prevented us reaching this 
code if the hardware ID isn't known to the driver. Changed to WARN(1, ...).

>>           return GFXCORE_FAMILY_UNKNOWN;
>>       }
>>   }
>> @@ -433,7 +435,7 @@ int intel_guc_setup(struct drm_device *dev)
>>           goto fail;
>>       } else if (*fw_path == '\0') {
>>           /* Device has a GuC but we don't know what f/w to load? */
>> -        DRM_INFO("No GuC firmware known for this platform\n");
>> +        DRM_WARN("No GuC firmware known for this platform\n");
>
> This looks the same to me (WARN_ON), it can only happen if someone
> messes up things in development.

Maybe. This is the outer check that protects the code above, and as such 
it's the first place we report unrecognised hardware. But we don't want 
to prevent the driver from working (via fallback to execlists) so 
developers can at least boot new hardware and not just get a blank 
screen. So a WARNING of some type is right, but does the stack trace 
from WARN() add any value? If not -- and I think not -- DRM_WARN() is 
what we want.

>>           err = -ENODEV;
>>           goto fail;
>>       }
>> @@ -471,10 +473,8 @@ int intel_guc_setup(struct drm_device *dev)
>>            * that the state and timing are fairly predictable
>>            */
>>           err = i915_reset_guc(dev_priv);
>> -        if (err) {
>> -            DRM_ERROR("GuC reset failed: %d\n", err);
>> +        if (err)
>>               goto fail;
>> -        }
>>
>>           err = guc_ucode_xfer(dev_priv);
>>           if (!err)
>> @@ -532,15 +532,15 @@ int intel_guc_setup(struct drm_device *dev)
>>       else if (err == 0)
>>           DRM_INFO("GuC firmware load skipped\n");
>>       else if (ret != -EIO)
>> -        DRM_INFO("GuC firmware load failed: %d\n", err);
>> +        DRM_NOTE("GuC firmware load failed: %d\n", err);
>>       else
>> -        DRM_ERROR("GuC firmware load failed: %d\n", err);
>> +        DRM_WARN("GuC firmware load failed: %d\n", err);
>>
>>       if (i915.enable_guc_submission) {
>>           if (fw_path == NULL)
>>               DRM_INFO("GuC submission without firmware not
>> supported\n");
>>           if (ret == 0)
>> -            DRM_INFO("Falling back from GuC submission to execlist
>> mode\n");
>> +            DRM_NOTE("Falling back from GuC submission to execlist
>> mode\n");
>>           else
>>               DRM_ERROR("GuC init failed: %d\n", ret);
>>       }
>> @@ -571,7 +571,7 @@ static void guc_fw_fetch(struct drm_device *dev,
>> struct intel_guc_fw *guc_fw)
>>
>>       /* Check the size of the blob before examining buffer contents */
>>       if (fw->size < sizeof(struct guc_css_header)) {
>> -        DRM_ERROR("Firmware header is missing\n");
>> +        DRM_NOTE("Firmware header is missing\n");
>>           goto fail;
>>       }
>>
>> @@ -583,7 +583,7 @@ static void guc_fw_fetch(struct drm_device *dev,
>> struct intel_guc_fw *guc_fw)
>>           css->key_size_dw - css->exponent_size_dw) * sizeof(u32);
>>
>>       if (guc_fw->header_size != sizeof(struct guc_css_header)) {
>> -        DRM_ERROR("CSS header definition mismatch\n");
>> +        DRM_NOTE("CSS header definition mismatch\n");
>>           goto fail;
>>       }
>>
>> @@ -593,7 +593,7 @@ static void guc_fw_fetch(struct drm_device *dev,
>> struct intel_guc_fw *guc_fw)
>>
>>       /* now RSA */
>>       if (css->key_size_dw != UOS_RSA_SCRATCH_MAX_COUNT) {
>> -        DRM_ERROR("RSA key size is bad\n");
>> +        DRM_NOTE("RSA key size is bad\n");
>>           goto fail;
>>       }
>>       guc_fw->rsa_offset = guc_fw->ucode_offset + guc_fw->ucode_size;
>> @@ -602,14 +602,14 @@ static void guc_fw_fetch(struct drm_device *dev,
>> struct intel_guc_fw *guc_fw)
>>       /* At least, it should have header, uCode and RSA. Size of all
>> three. */
>>       size = guc_fw->header_size + guc_fw->ucode_size + guc_fw->rsa_size;
>>       if (fw->size < size) {
>> -        DRM_ERROR("Missing firmware components\n");
>> +        DRM_NOTE("Missing firmware components\n");
>>           goto fail;
>>       }
>>
>>       /* Header and uCode will be loaded to WOPCM. Size of the two. */
>>       size = guc_fw->header_size + guc_fw->ucode_size;
>>       if (size > guc_wopcm_size(to_i915(dev))) {
>> -        DRM_ERROR("Firmware is too large to fit in WOPCM\n");
>> +        DRM_NOTE("Firmware is too large to fit in WOPCM\n");
>>           goto fail;
>>       }
>>
>> @@ -624,7 +624,7 @@ static void guc_fw_fetch(struct drm_device *dev,
>> struct intel_guc_fw *guc_fw)
>>
>>       if (guc_fw->guc_fw_major_found != guc_fw->guc_fw_major_wanted ||
>>           guc_fw->guc_fw_minor_found < guc_fw->guc_fw_minor_wanted) {
>> -        DRM_ERROR("GuC firmware version %d.%d, required %d.%d\n",
>> +        DRM_NOTE("GuC firmware version %d.%d, required %d.%d\n",
>>               guc_fw->guc_fw_major_found, guc_fw->guc_fw_minor_found,
>>               guc_fw->guc_fw_major_wanted, guc_fw->guc_fw_minor_wanted);
>>           err = -ENOEXEC;
>> @@ -654,10 +654,10 @@ static void guc_fw_fetch(struct drm_device *dev,
>> struct intel_guc_fw *guc_fw)
>>       return;
>>
>>   fail:
>> +    DRM_WARN("Failed to fetch valid GuC firmware from %s (error %d)\n",
>> +         guc_fw->guc_fw_path, err);
>>       DRM_DEBUG_DRIVER("GuC fw fetch status FAIL; err %d, fw %p, obj
>> %p\n",
>>           err, fw, guc_fw->guc_fw_obj);
>
> As commented before, I would tidy these two into one while dropping the
> uninteresting debug like object pointe and fw name pointer.

Can't be done. User/admin doesn't want to see internal details, 
developer needs them. The pointers are important not so much for their 
specific values but for NULL/non-NULL -- for debugging we like to know 
whether we hit a lookup error or an allocation failure, or something 
else. So two different messages for two different audiences.

.Dave.

>> -    DRM_ERROR("Failed to fetch GuC firmware from %s (error %d)\n",
>> -          guc_fw->guc_fw_path, err);
>>
>>       mutex_lock(&dev->struct_mutex);
>>       obj = guc_fw->guc_fw_obj;
>
> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> Also, you can keep it if you decide to act on my suggestions from above.
>
> Regards,
> Tvrtko

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

end of thread, other threads:[~2016-07-19 16:04 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-19 12:20 [CI-RESEND 1/3] drm: extra printk() wrapper macros Dave Gordon
2016-07-19 12:20 ` [CI-RESEND 2/3] drm/i915/guc: downgrade some DRM_ERROR() messages to DRM_WARN() Dave Gordon
2016-07-19 14:16   ` Tvrtko Ursulin
2016-07-19 12:20 ` [CI-RESEND 3/3] drm/i915/guc: revisit GuC loader message levels Dave Gordon
2016-07-19 14:26   ` Tvrtko Ursulin
2016-07-19 16:03     ` Dave Gordon
2016-07-19 13:53 ` ✓ Ro.CI.BAT: success for series starting with [CI-RESEND,1/3] drm: extra printk() wrapper macros Patchwork
2016-07-19 14:49   ` Dave Gordon

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