Netdev List
 help / color / mirror / Atom feed
* [PATCH v2 0/4] DRM RAS Fixes
@ 2026-05-23  5:00 Raag Jadav
  2026-05-23  5:00 ` [PATCH v2 1/4] drm/ras: Cancel and free message on get counter failure Raag Jadav
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Raag Jadav @ 2026-05-23  5:00 UTC (permalink / raw)
  To: intel-xe, dri-devel, netdev
  Cc: rodrigo.vivi, riana.tauro, dev, airlied, simona, kuba, Raag Jadav

Detailed description in commit message.

v2: Use goto (Riana)
    Retain info as NULL on failure (Riana)

Raag Jadav (4):
  drm/ras: Cancel and free message on get counter failure
  drm/xe/drm_ras: Make counter allocation drm managed
  drm/xe/drm_ras: Add per node cleanup action
  drm/xe/hw_error: Use HW_ERR prefix in log

 drivers/gpu/drm/drm_ras.c        | 19 +++++-----
 drivers/gpu/drm/xe/xe_drm_ras.c  | 62 +++++++++++++-------------------
 drivers/gpu/drm/xe/xe_hw_error.c | 12 +++----
 3 files changed, 41 insertions(+), 52 deletions(-)

-- 
2.43.0


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

* [PATCH v2 1/4] drm/ras: Cancel and free message on get counter failure
  2026-05-23  5:00 [PATCH v2 0/4] DRM RAS Fixes Raag Jadav
@ 2026-05-23  5:00 ` Raag Jadav
  2026-05-25  9:53   ` Tauro, Riana
  2026-05-23  5:00 ` [PATCH v2 2/4] drm/xe/drm_ras: Make counter allocation drm managed Raag Jadav
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 10+ messages in thread
From: Raag Jadav @ 2026-05-23  5:00 UTC (permalink / raw)
  To: intel-xe, dri-devel, netdev
  Cc: rodrigo.vivi, riana.tauro, dev, airlied, simona, kuba, Raag Jadav

doit_reply_value() directly returns on get counter failure, which results
in stale sk_buff and genetlink header that aren't cleaned up. Fix it and
while at it, consolidate error handling using goto.

Fixes: c36218dc49f5 ("drm/ras: Introduce the DRM RAS infrastructure over generic netlink")
Signed-off-by: Raag Jadav <raag.jadav@intel.com>
---
v2: Use goto (Riana)
---
 drivers/gpu/drm/drm_ras.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/drm_ras.c b/drivers/gpu/drm/drm_ras.c
index d6eab29a1394..467a169026fc 100644
--- a/drivers/gpu/drm/drm_ras.c
+++ b/drivers/gpu/drm/drm_ras.c
@@ -201,25 +201,28 @@ static int doit_reply_value(struct genl_info *info, u32 node_id,
 
 	hdr = genlmsg_iput(msg, info);
 	if (!hdr) {
-		nlmsg_free(msg);
-		return -EMSGSIZE;
+		ret = -EMSGSIZE;
+		goto free_msg;
 	}
 
 	ret = get_node_error_counter(node_id, error_id,
 				     &error_name, &value);
 	if (ret)
-		return ret;
+		goto cancel_msg;
 
 	ret = msg_reply_value(msg, error_id, error_name, value);
-	if (ret) {
-		genlmsg_cancel(msg, hdr);
-		nlmsg_free(msg);
-		return ret;
-	}
+	if (ret)
+		goto cancel_msg;
 
 	genlmsg_end(msg, hdr);
 
 	return genlmsg_reply(msg, info);
+
+cancel_msg:
+	genlmsg_cancel(msg, hdr);
+free_msg:
+	nlmsg_free(msg);
+	return ret;
 }
 
 /**
-- 
2.43.0


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

* [PATCH v2 2/4] drm/xe/drm_ras: Make counter allocation drm managed
  2026-05-23  5:00 [PATCH v2 0/4] DRM RAS Fixes Raag Jadav
  2026-05-23  5:00 ` [PATCH v2 1/4] drm/ras: Cancel and free message on get counter failure Raag Jadav
@ 2026-05-23  5:00 ` Raag Jadav
  2026-05-23  5:00 ` [PATCH v2 3/4] drm/xe/drm_ras: Add per node cleanup action Raag Jadav
  2026-05-23  5:00 ` [PATCH v2 4/4] drm/xe/hw_error: Use HW_ERR prefix in log Raag Jadav
  3 siblings, 0 replies; 10+ messages in thread
From: Raag Jadav @ 2026-05-23  5:00 UTC (permalink / raw)
  To: intel-xe, dri-devel, netdev
  Cc: rodrigo.vivi, riana.tauro, dev, airlied, simona, kuba, Raag Jadav

cleanup_node_param() is not registered in case of counter allocation
failure, which results in stale memory of previous node that isn't
cleaned up on unwind. Fix this using drm managed allocation, which is
guaranteed to be cleaned up on unwind.

Fixes: b40db12b542f ("drm/xe/xe_drm_ras: Add support for XE DRM RAS")
Signed-off-by: Raag Jadav <raag.jadav@intel.com>
---
v2: Retain info as NULL on failure (Riana)
---
 drivers/gpu/drm/xe/xe_drm_ras.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_drm_ras.c b/drivers/gpu/drm/xe/xe_drm_ras.c
index c21c8b428de6..c1d5ac198a7c 100644
--- a/drivers/gpu/drm/xe/xe_drm_ras.c
+++ b/drivers/gpu/drm/xe/xe_drm_ras.c
@@ -80,7 +80,7 @@ static struct xe_drm_ras_counter *allocate_and_copy_counters(struct xe_device *x
 	struct xe_drm_ras_counter *counter;
 	int i;
 
-	counter = kcalloc(DRM_XE_RAS_ERR_COMP_MAX, sizeof(*counter), GFP_KERNEL);
+	counter = drmm_kcalloc(&xe->drm, DRM_XE_RAS_ERR_COMP_MAX, sizeof(*counter), GFP_KERNEL);
 	if (!counter)
 		return ERR_PTR(-ENOMEM);
 
@@ -135,7 +135,6 @@ static void cleanup_node_param(struct xe_drm_ras *ras, const enum drm_xe_ras_err
 {
 	struct drm_ras_node *node = &ras->node[severity];
 
-	kfree(ras->info[severity]);
 	ras->info[severity] = NULL;
 
 	kfree(node->device_name);
-- 
2.43.0


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

* [PATCH v2 3/4] drm/xe/drm_ras: Add per node cleanup action
  2026-05-23  5:00 [PATCH v2 0/4] DRM RAS Fixes Raag Jadav
  2026-05-23  5:00 ` [PATCH v2 1/4] drm/ras: Cancel and free message on get counter failure Raag Jadav
  2026-05-23  5:00 ` [PATCH v2 2/4] drm/xe/drm_ras: Make counter allocation drm managed Raag Jadav
@ 2026-05-23  5:00 ` Raag Jadav
  2026-06-01  9:13   ` Tauro, Riana
  2026-05-23  5:00 ` [PATCH v2 4/4] drm/xe/hw_error: Use HW_ERR prefix in log Raag Jadav
  3 siblings, 1 reply; 10+ messages in thread
From: Raag Jadav @ 2026-05-23  5:00 UTC (permalink / raw)
  To: intel-xe, dri-devel, netdev
  Cc: rodrigo.vivi, riana.tauro, dev, airlied, simona, kuba, Raag Jadav

cleanup_node_param() is not registered for previous node in case of counter
allocation failure, which results in stale memory of previous node that
isn't cleaned up on unwind. Add per node cleanup action which guarantees
cleanup on unwind and also simplifies the cleanup logic.

Fixes: b40db12b542f ("drm/xe/xe_drm_ras: Add support for XE DRM RAS")
Signed-off-by: Raag Jadav <raag.jadav@intel.com>
---
 drivers/gpu/drm/xe/xe_drm_ras.c | 59 +++++++++++++--------------------
 1 file changed, 23 insertions(+), 36 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_drm_ras.c b/drivers/gpu/drm/xe/xe_drm_ras.c
index c1d5ac198a7c..b901976203fc 100644
--- a/drivers/gpu/drm/xe/xe_drm_ras.c
+++ b/drivers/gpu/drm/xe/xe_drm_ras.c
@@ -131,53 +131,46 @@ static int assign_node_params(struct xe_device *xe, struct drm_ras_node *node,
 	return 0;
 }
 
-static void cleanup_node_param(struct xe_drm_ras *ras, const enum drm_xe_ras_error_severity severity)
+static void cleanup_node_param(struct drm_ras_node *node)
 {
-	struct drm_ras_node *node = &ras->node[severity];
-
-	ras->info[severity] = NULL;
-
 	kfree(node->device_name);
 	node->device_name = NULL;
 }
 
+static void cleanup_node(struct drm_device *drm, void *node)
+{
+	drm_ras_node_unregister(node);
+	cleanup_node_param(node);
+}
+
 static int register_nodes(struct xe_device *xe)
 {
 	struct xe_drm_ras *ras = &xe->ras;
-	int i;
+	struct drm_ras_node *node;
+	int i, ret;
 
 	for_each_error_severity(i) {
-		struct drm_ras_node *node = &ras->node[i];
-		int ret;
+		node = &ras->node[i];
 
 		ret = assign_node_params(xe, node, i);
-		if (ret) {
-			cleanup_node_param(ras, i);
-			return ret;
-		}
+		if (ret)
+			break;
 
 		ret = drm_ras_node_register(node);
-		if (ret) {
-			cleanup_node_param(ras, i);
-			return ret;
-		}
-	}
-
-	return 0;
-}
-
-static void xe_drm_ras_unregister_nodes(struct drm_device *device, void *arg)
-{
-	struct xe_device *xe = arg;
-	struct xe_drm_ras *ras = &xe->ras;
-	int i;
+		if (ret)
+			break;
 
-	for_each_error_severity(i) {
-		struct drm_ras_node *node = &ras->node[i];
+		ret = drmm_add_action_or_reset(&xe->drm, cleanup_node, node);
+		if (ret)
+			break;
+	}
 
-		drm_ras_node_unregister(node);
-		cleanup_node_param(ras, i);
+	if (ret) {
+		cleanup_node_param(node);
+		ras->info[i] = NULL;
 	}
+
+	return ret;
 }
 
 /**
@@ -206,11 +199,5 @@ int xe_drm_ras_init(struct xe_device *xe)
 		return err;
 	}
 
-	err = drmm_add_action_or_reset(&xe->drm, xe_drm_ras_unregister_nodes, xe);
-	if (err) {
-		drm_err(&xe->drm, "Failed to add action for Xe DRM RAS (%pe)\n", ERR_PTR(err));
-		return err;
-	}
-
 	return 0;
 }
-- 
2.43.0


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

* [PATCH v2 4/4] drm/xe/hw_error: Use HW_ERR prefix in log
  2026-05-23  5:00 [PATCH v2 0/4] DRM RAS Fixes Raag Jadav
                   ` (2 preceding siblings ...)
  2026-05-23  5:00 ` [PATCH v2 3/4] drm/xe/drm_ras: Add per node cleanup action Raag Jadav
@ 2026-05-23  5:00 ` Raag Jadav
  2026-06-01  9:19   ` Tauro, Riana
  2026-06-01 11:13   ` Michal Wajdeczko
  3 siblings, 2 replies; 10+ messages in thread
From: Raag Jadav @ 2026-05-23  5:00 UTC (permalink / raw)
  To: intel-xe, dri-devel, netdev
  Cc: rodrigo.vivi, riana.tauro, dev, airlied, simona, kuba, Raag Jadav

Hardware errors should be logged with HW_ERR prefix. Make them
consistent with existing logs.

Fixes: 01aab7e1c9d4 ("drm/xe/xe_hw_error: Add support for PVC SoC errors")
Signed-off-by: Raag Jadav <raag.jadav@intel.com>
---
 drivers/gpu/drm/xe/xe_hw_error.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_hw_error.c b/drivers/gpu/drm/xe/xe_hw_error.c
index 5135e8e4093f..4b72959b2276 100644
--- a/drivers/gpu/drm/xe/xe_hw_error.c
+++ b/drivers/gpu/drm/xe/xe_hw_error.c
@@ -223,9 +223,9 @@ static void log_hw_error(struct xe_tile *tile, const char *name,
 	struct xe_device *xe = tile_to_xe(tile);
 
 	if (severity == DRM_XE_RAS_ERR_SEV_CORRECTABLE)
-		drm_warn(&xe->drm, "%s %s detected\n", name, severity_str);
+		drm_warn(&xe->drm, HW_ERR "%s %s detected\n", name, severity_str);
 	else
-		drm_err_ratelimited(&xe->drm, "%s %s detected\n", name, severity_str);
+		drm_err_ratelimited(&xe->drm, HW_ERR "%s %s detected\n", name, severity_str);
 }
 
 static void log_gt_err(struct xe_tile *tile, const char *name, int i, u32 err,
@@ -235,10 +235,10 @@ static void log_gt_err(struct xe_tile *tile, const char *name, int i, u32 err,
 	struct xe_device *xe = tile_to_xe(tile);
 
 	if (severity == DRM_XE_RAS_ERR_SEV_CORRECTABLE)
-		drm_warn(&xe->drm, "%s %s detected, ERROR_STAT_GT_VECTOR%d:0x%08x\n",
+		drm_warn(&xe->drm, HW_ERR "%s %s detected, ERROR_STAT_GT_VECTOR%d:0x%08x\n",
 			 name, severity_str, i, err);
 	else
-		drm_err_ratelimited(&xe->drm, "%s %s detected, ERROR_STAT_GT_VECTOR%d:0x%08x\n",
+		drm_err_ratelimited(&xe->drm, HW_ERR "%s %s detected, ERROR_STAT_GT_VECTOR%d:0x%08x\n",
 				    name, severity_str, i, err);
 }
 
@@ -255,9 +255,9 @@ static void log_soc_error(struct xe_tile *tile, const char * const *reg_info,
 
 	if (strcmp(name, "Undefined")) {
 		if (severity == DRM_XE_RAS_ERR_SEV_CORRECTABLE)
-			drm_warn(&xe->drm, "%s SOC %s detected", name, severity_str);
+			drm_warn(&xe->drm, HW_ERR "%s SOC %s detected", name, severity_str);
 		else
-			drm_err_ratelimited(&xe->drm, "%s SOC %s detected", name, severity_str);
+			drm_err_ratelimited(&xe->drm, HW_ERR "%s SOC %s detected", name, severity_str);
 		atomic_inc(&info[index].counter);
 	}
 }
-- 
2.43.0


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

* Re: [PATCH v2 1/4] drm/ras: Cancel and free message on get counter failure
  2026-05-23  5:00 ` [PATCH v2 1/4] drm/ras: Cancel and free message on get counter failure Raag Jadav
@ 2026-05-25  9:53   ` Tauro, Riana
  0 siblings, 0 replies; 10+ messages in thread
From: Tauro, Riana @ 2026-05-25  9:53 UTC (permalink / raw)
  To: Raag Jadav, intel-xe, dri-devel, netdev
  Cc: rodrigo.vivi, dev, airlied, simona, kuba


On 5/23/2026 10:30 AM, Raag Jadav wrote:
> doit_reply_value() directly returns on get counter failure, which results
> in stale sk_buff and genetlink header that aren't cleaned up. Fix it and
> while at it, consolidate error handling using goto.
>
> Fixes: c36218dc49f5 ("drm/ras: Introduce the DRM RAS infrastructure over generic netlink")
> Signed-off-by: Raag Jadav <raag.jadav@intel.com>

Reviewed-by: Riana Tauro <riana.tauro@intel.com>

> ---
> v2: Use goto (Riana)
> ---
>   drivers/gpu/drm/drm_ras.c | 19 +++++++++++--------
>   1 file changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_ras.c b/drivers/gpu/drm/drm_ras.c
> index d6eab29a1394..467a169026fc 100644
> --- a/drivers/gpu/drm/drm_ras.c
> +++ b/drivers/gpu/drm/drm_ras.c
> @@ -201,25 +201,28 @@ static int doit_reply_value(struct genl_info *info, u32 node_id,
>   
>   	hdr = genlmsg_iput(msg, info);
>   	if (!hdr) {
> -		nlmsg_free(msg);
> -		return -EMSGSIZE;
> +		ret = -EMSGSIZE;
> +		goto free_msg;
>   	}
>   
>   	ret = get_node_error_counter(node_id, error_id,
>   				     &error_name, &value);
>   	if (ret)
> -		return ret;
> +		goto cancel_msg;
>   
>   	ret = msg_reply_value(msg, error_id, error_name, value);
> -	if (ret) {
> -		genlmsg_cancel(msg, hdr);
> -		nlmsg_free(msg);
> -		return ret;
> -	}
> +	if (ret)
> +		goto cancel_msg;
>   
>   	genlmsg_end(msg, hdr);
>   
>   	return genlmsg_reply(msg, info);
> +
> +cancel_msg:
> +	genlmsg_cancel(msg, hdr);
> +free_msg:
> +	nlmsg_free(msg);
> +	return ret;
>   }
>   
>   /**

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

* Re: [PATCH v2 3/4] drm/xe/drm_ras: Add per node cleanup action
  2026-05-23  5:00 ` [PATCH v2 3/4] drm/xe/drm_ras: Add per node cleanup action Raag Jadav
@ 2026-06-01  9:13   ` Tauro, Riana
  0 siblings, 0 replies; 10+ messages in thread
From: Tauro, Riana @ 2026-06-01  9:13 UTC (permalink / raw)
  To: Raag Jadav, intel-xe, dri-devel, netdev
  Cc: rodrigo.vivi, dev, airlied, simona, kuba


On 5/23/2026 10:30 AM, Raag Jadav wrote:
> cleanup_node_param() is not registered for previous node in case of counter
> allocation failure, which results in stale memory of previous node that
> isn't cleaned up on unwind. Add per node cleanup action which guarantees
> cleanup on unwind and also simplifies the cleanup logic.
>
> Fixes: b40db12b542f ("drm/xe/xe_drm_ras: Add support for XE DRM RAS")
> Signed-off-by: Raag Jadav <raag.jadav@intel.com>
> ---
>   drivers/gpu/drm/xe/xe_drm_ras.c | 59 +++++++++++++--------------------
>   1 file changed, 23 insertions(+), 36 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_drm_ras.c b/drivers/gpu/drm/xe/xe_drm_ras.c
> index c1d5ac198a7c..b901976203fc 100644
> --- a/drivers/gpu/drm/xe/xe_drm_ras.c
> +++ b/drivers/gpu/drm/xe/xe_drm_ras.c
> @@ -131,53 +131,46 @@ static int assign_node_params(struct xe_device *xe, struct drm_ras_node *node,
>   	return 0;
>   }
>   
> -static void cleanup_node_param(struct xe_drm_ras *ras, const enum drm_xe_ras_error_severity severity)
> +static void cleanup_node_param(struct drm_ras_node *node)
>   {
> -	struct drm_ras_node *node = &ras->node[severity];
> -
> -	ras->info[severity] = NULL;
> -
>   	kfree(node->device_name);
>   	node->device_name = NULL;
>   }
>   
> +static void cleanup_node(struct drm_device *drm, void *node)
> +{
> +	drm_ras_node_unregister(node);
> +	cleanup_node_param(node);
> +}
> +
>   static int register_nodes(struct xe_device *xe)
>   {
>   	struct xe_drm_ras *ras = &xe->ras;
> -	int i;
> +	struct drm_ras_node *node;
> +	int i, ret;
>   
>   	for_each_error_severity(i) {
> -		struct drm_ras_node *node = &ras->node[i];
> -		int ret;
> +		node = &ras->node[i];
>   
>   		ret = assign_node_params(xe, node, i);
> -		if (ret) {
> -			cleanup_node_param(ras, i);
> -			return ret;
> -		}
> +		if (ret)
> +			break;
>   
>   		ret = drm_ras_node_register(node);
> -		if (ret) {
> -			cleanup_node_param(ras, i);
> -			return ret;
> -		}
> -	}
> -
> -	return 0;
> -}
> -
> -static void xe_drm_ras_unregister_nodes(struct drm_device *device, void *arg)
> -{
> -	struct xe_device *xe = arg;
> -	struct xe_drm_ras *ras = &xe->ras;
> -	int i;
> +		if (ret)
> +			break;
>   
> -	for_each_error_severity(i) {
> -		struct drm_ras_node *node = &ras->node[i];
> +		ret = drmm_add_action_or_reset(&xe->drm, cleanup_node, node);
> +		if (ret)
> +			break;
On failure of drmm_add_action_or_reset , action is called. We don't need 
to cleanup_node_param again Thanks Riana
> +	}
>   
> -		drm_ras_node_unregister(node);
> -		cleanup_node_param(ras, i);
> +	if (ret) {
> +		cleanup_node_param(node);
> +		ras->info[i] = NULL;
>   	}
> +
> +	return ret;
>   }
>   
>   /**
> @@ -206,11 +199,5 @@ int xe_drm_ras_init(struct xe_device *xe)
>   		return err;
>   	}
>   
> -	err = drmm_add_action_or_reset(&xe->drm, xe_drm_ras_unregister_nodes, xe);
> -	if (err) {
> -		drm_err(&xe->drm, "Failed to add action for Xe DRM RAS (%pe)\n", ERR_PTR(err));
> -		return err;
> -	}
> -
>   	return 0;
>   }

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

* Re: [PATCH v2 4/4] drm/xe/hw_error: Use HW_ERR prefix in log
  2026-05-23  5:00 ` [PATCH v2 4/4] drm/xe/hw_error: Use HW_ERR prefix in log Raag Jadav
@ 2026-06-01  9:19   ` Tauro, Riana
  2026-06-01 11:13   ` Michal Wajdeczko
  1 sibling, 0 replies; 10+ messages in thread
From: Tauro, Riana @ 2026-06-01  9:19 UTC (permalink / raw)
  To: Raag Jadav, intel-xe, dri-devel, netdev
  Cc: rodrigo.vivi, dev, airlied, simona, kuba


On 5/23/2026 10:30 AM, Raag Jadav wrote:
> Hardware errors should be logged with HW_ERR prefix. Make them
> consistent with existing logs.
>
> Fixes: 01aab7e1c9d4 ("drm/xe/xe_hw_error: Add support for PVC SoC errors")
> Signed-off-by: Raag Jadav <raag.jadav@intel.com>

LGTM

Reviewed-by: Riana Tauro <riana.tauro@intel.com>


> ---
>   drivers/gpu/drm/xe/xe_hw_error.c | 12 ++++++------
>   1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_hw_error.c b/drivers/gpu/drm/xe/xe_hw_error.c
> index 5135e8e4093f..4b72959b2276 100644
> --- a/drivers/gpu/drm/xe/xe_hw_error.c
> +++ b/drivers/gpu/drm/xe/xe_hw_error.c
> @@ -223,9 +223,9 @@ static void log_hw_error(struct xe_tile *tile, const char *name,
>   	struct xe_device *xe = tile_to_xe(tile);
>   
>   	if (severity == DRM_XE_RAS_ERR_SEV_CORRECTABLE)
> -		drm_warn(&xe->drm, "%s %s detected\n", name, severity_str);
> +		drm_warn(&xe->drm, HW_ERR "%s %s detected\n", name, severity_str);
>   	else
> -		drm_err_ratelimited(&xe->drm, "%s %s detected\n", name, severity_str);
> +		drm_err_ratelimited(&xe->drm, HW_ERR "%s %s detected\n", name, severity_str);
>   }
>   
>   static void log_gt_err(struct xe_tile *tile, const char *name, int i, u32 err,
> @@ -235,10 +235,10 @@ static void log_gt_err(struct xe_tile *tile, const char *name, int i, u32 err,
>   	struct xe_device *xe = tile_to_xe(tile);
>   
>   	if (severity == DRM_XE_RAS_ERR_SEV_CORRECTABLE)
> -		drm_warn(&xe->drm, "%s %s detected, ERROR_STAT_GT_VECTOR%d:0x%08x\n",
> +		drm_warn(&xe->drm, HW_ERR "%s %s detected, ERROR_STAT_GT_VECTOR%d:0x%08x\n",
>   			 name, severity_str, i, err);
>   	else
> -		drm_err_ratelimited(&xe->drm, "%s %s detected, ERROR_STAT_GT_VECTOR%d:0x%08x\n",
> +		drm_err_ratelimited(&xe->drm, HW_ERR "%s %s detected, ERROR_STAT_GT_VECTOR%d:0x%08x\n",
>   				    name, severity_str, i, err);
>   }
>   
> @@ -255,9 +255,9 @@ static void log_soc_error(struct xe_tile *tile, const char * const *reg_info,
>   
>   	if (strcmp(name, "Undefined")) {
>   		if (severity == DRM_XE_RAS_ERR_SEV_CORRECTABLE)
> -			drm_warn(&xe->drm, "%s SOC %s detected", name, severity_str);
> +			drm_warn(&xe->drm, HW_ERR "%s SOC %s detected", name, severity_str);
>   		else
> -			drm_err_ratelimited(&xe->drm, "%s SOC %s detected", name, severity_str);
> +			drm_err_ratelimited(&xe->drm, HW_ERR "%s SOC %s detected", name, severity_str);
>   		atomic_inc(&info[index].counter);
>   	}
>   }

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

* Re: [PATCH v2 4/4] drm/xe/hw_error: Use HW_ERR prefix in log
  2026-05-23  5:00 ` [PATCH v2 4/4] drm/xe/hw_error: Use HW_ERR prefix in log Raag Jadav
  2026-06-01  9:19   ` Tauro, Riana
@ 2026-06-01 11:13   ` Michal Wajdeczko
  2026-06-01 12:25     ` Raag Jadav
  1 sibling, 1 reply; 10+ messages in thread
From: Michal Wajdeczko @ 2026-06-01 11:13 UTC (permalink / raw)
  To: Raag Jadav, intel-xe, dri-devel, netdev
  Cc: rodrigo.vivi, riana.tauro, dev, airlied, simona, kuba



On 5/23/2026 7:00 AM, Raag Jadav wrote:
> Hardware errors should be logged with HW_ERR prefix. Make them
> consistent with existing logs.
> 
> Fixes: 01aab7e1c9d4 ("drm/xe/xe_hw_error: Add support for PVC SoC errors")
> Signed-off-by: Raag Jadav <raag.jadav@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_hw_error.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_hw_error.c b/drivers/gpu/drm/xe/xe_hw_error.c
> index 5135e8e4093f..4b72959b2276 100644
> --- a/drivers/gpu/drm/xe/xe_hw_error.c
> +++ b/drivers/gpu/drm/xe/xe_hw_error.c
> @@ -223,9 +223,9 @@ static void log_hw_error(struct xe_tile *tile, const char *name,
>  	struct xe_device *xe = tile_to_xe(tile);
>  
>  	if (severity == DRM_XE_RAS_ERR_SEV_CORRECTABLE)
> -		drm_warn(&xe->drm, "%s %s detected\n", name, severity_str);
> +		drm_warn(&xe->drm, HW_ERR "%s %s detected\n", name, severity_str);

function is per-tile, so shouldn't we use tile-oriented logs instead?

		xe_tile_warn(tile, HW_ERR ...)

>  	else
> -		drm_err_ratelimited(&xe->drm, "%s %s detected\n", name, severity_str);
> +		drm_err_ratelimited(&xe->drm, HW_ERR "%s %s detected\n", name, severity_str);

		xe_tile_err_ratelimited(tile, HW_ERR ...)

>  }
>  
>  static void log_gt_err(struct xe_tile *tile, const char *name, int i, u32 err,
> @@ -235,10 +235,10 @@ static void log_gt_err(struct xe_tile *tile, const char *name, int i, u32 err,
>  	struct xe_device *xe = tile_to_xe(tile);
>  
>  	if (severity == DRM_XE_RAS_ERR_SEV_CORRECTABLE)
> -		drm_warn(&xe->drm, "%s %s detected, ERROR_STAT_GT_VECTOR%d:0x%08x\n",
> +		drm_warn(&xe->drm, HW_ERR "%s %s detected, ERROR_STAT_GT_VECTOR%d:0x%08x\n",
>  			 name, severity_str, i, err);
>  	else
> -		drm_err_ratelimited(&xe->drm, "%s %s detected, ERROR_STAT_GT_VECTOR%d:0x%08x\n",
> +		drm_err_ratelimited(&xe->drm, HW_ERR "%s %s detected, ERROR_STAT_GT_VECTOR%d:0x%08x\n",
>  				    name, severity_str, i, err);
>  }
>  
> @@ -255,9 +255,9 @@ static void log_soc_error(struct xe_tile *tile, const char * const *reg_info,
>  
>  	if (strcmp(name, "Undefined")) {
>  		if (severity == DRM_XE_RAS_ERR_SEV_CORRECTABLE)
> -			drm_warn(&xe->drm, "%s SOC %s detected", name, severity_str);
> +			drm_warn(&xe->drm, HW_ERR "%s SOC %s detected", name, severity_str);
>  		else
> -			drm_err_ratelimited(&xe->drm, "%s SOC %s detected", name, severity_str);
> +			drm_err_ratelimited(&xe->drm, HW_ERR "%s SOC %s detected", name, severity_str);
>  		atomic_inc(&info[index].counter);
>  	}
>  }


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

* Re: [PATCH v2 4/4] drm/xe/hw_error: Use HW_ERR prefix in log
  2026-06-01 11:13   ` Michal Wajdeczko
@ 2026-06-01 12:25     ` Raag Jadav
  0 siblings, 0 replies; 10+ messages in thread
From: Raag Jadav @ 2026-06-01 12:25 UTC (permalink / raw)
  To: Michal Wajdeczko
  Cc: intel-xe, dri-devel, netdev, rodrigo.vivi, riana.tauro, dev,
	airlied, simona, kuba

On Mon, Jun 01, 2026 at 01:13:12PM +0200, Michal Wajdeczko wrote:
> On 5/23/2026 7:00 AM, Raag Jadav wrote:
> > Hardware errors should be logged with HW_ERR prefix. Make them
> > consistent with existing logs.
> > 
> > Fixes: 01aab7e1c9d4 ("drm/xe/xe_hw_error: Add support for PVC SoC errors")
> > Signed-off-by: Raag Jadav <raag.jadav@intel.com>
> > ---
> >  drivers/gpu/drm/xe/xe_hw_error.c | 12 ++++++------
> >  1 file changed, 6 insertions(+), 6 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/xe/xe_hw_error.c b/drivers/gpu/drm/xe/xe_hw_error.c
> > index 5135e8e4093f..4b72959b2276 100644
> > --- a/drivers/gpu/drm/xe/xe_hw_error.c
> > +++ b/drivers/gpu/drm/xe/xe_hw_error.c
> > @@ -223,9 +223,9 @@ static void log_hw_error(struct xe_tile *tile, const char *name,
> >  	struct xe_device *xe = tile_to_xe(tile);
> >  
> >  	if (severity == DRM_XE_RAS_ERR_SEV_CORRECTABLE)
> > -		drm_warn(&xe->drm, "%s %s detected\n", name, severity_str);
> > +		drm_warn(&xe->drm, HW_ERR "%s %s detected\n", name, severity_str);
> 
> function is per-tile, so shouldn't we use tile-oriented logs instead?

Agree, but then it needs to be done file-wide which I'll pursue once
the fix lands and propageted.

Raag

> 		xe_tile_warn(tile, HW_ERR ...)
> 
> >  	else
> > -		drm_err_ratelimited(&xe->drm, "%s %s detected\n", name, severity_str);
> > +		drm_err_ratelimited(&xe->drm, HW_ERR "%s %s detected\n", name, severity_str);
> 
> 		xe_tile_err_ratelimited(tile, HW_ERR ...)
> 
> >  }
> >  
> >  static void log_gt_err(struct xe_tile *tile, const char *name, int i, u32 err,
> > @@ -235,10 +235,10 @@ static void log_gt_err(struct xe_tile *tile, const char *name, int i, u32 err,
> >  	struct xe_device *xe = tile_to_xe(tile);
> >  
> >  	if (severity == DRM_XE_RAS_ERR_SEV_CORRECTABLE)
> > -		drm_warn(&xe->drm, "%s %s detected, ERROR_STAT_GT_VECTOR%d:0x%08x\n",
> > +		drm_warn(&xe->drm, HW_ERR "%s %s detected, ERROR_STAT_GT_VECTOR%d:0x%08x\n",
> >  			 name, severity_str, i, err);
> >  	else
> > -		drm_err_ratelimited(&xe->drm, "%s %s detected, ERROR_STAT_GT_VECTOR%d:0x%08x\n",
> > +		drm_err_ratelimited(&xe->drm, HW_ERR "%s %s detected, ERROR_STAT_GT_VECTOR%d:0x%08x\n",
> >  				    name, severity_str, i, err);
> >  }
> >  
> > @@ -255,9 +255,9 @@ static void log_soc_error(struct xe_tile *tile, const char * const *reg_info,
> >  
> >  	if (strcmp(name, "Undefined")) {
> >  		if (severity == DRM_XE_RAS_ERR_SEV_CORRECTABLE)
> > -			drm_warn(&xe->drm, "%s SOC %s detected", name, severity_str);
> > +			drm_warn(&xe->drm, HW_ERR "%s SOC %s detected", name, severity_str);
> >  		else
> > -			drm_err_ratelimited(&xe->drm, "%s SOC %s detected", name, severity_str);
> > +			drm_err_ratelimited(&xe->drm, HW_ERR "%s SOC %s detected", name, severity_str);
> >  		atomic_inc(&info[index].counter);
> >  	}
> >  }
> 

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

end of thread, other threads:[~2026-06-01 12:25 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-23  5:00 [PATCH v2 0/4] DRM RAS Fixes Raag Jadav
2026-05-23  5:00 ` [PATCH v2 1/4] drm/ras: Cancel and free message on get counter failure Raag Jadav
2026-05-25  9:53   ` Tauro, Riana
2026-05-23  5:00 ` [PATCH v2 2/4] drm/xe/drm_ras: Make counter allocation drm managed Raag Jadav
2026-05-23  5:00 ` [PATCH v2 3/4] drm/xe/drm_ras: Add per node cleanup action Raag Jadav
2026-06-01  9:13   ` Tauro, Riana
2026-05-23  5:00 ` [PATCH v2 4/4] drm/xe/hw_error: Use HW_ERR prefix in log Raag Jadav
2026-06-01  9:19   ` Tauro, Riana
2026-06-01 11:13   ` Michal Wajdeczko
2026-06-01 12:25     ` Raag Jadav

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