Re: [PATCH v1] drm/xe/ras: Fix boot-time ras error processing

Rodrigo Vivi <[email protected]> Thu, 30 Jul 2026 13:03:14 -0400
Newsgroups org.freedesktop.lists.intel-xe
Message-ID <[email protected]>
On Thu, Jul 30, 2026 at 04:36:34PM +0530, Raag Jadav wrote:
> Currently, we xe_ras_process_errors() inside xe_ras_init() to handle boot
> time errors. But this can potentially result in declaring the device as
> wedged quite early in the driver load sequence, which is problematic due to
> the lack of registered drm device or required wedged cleanup hooks at this
> point.
> 
> Call xe_ras_process_errors() only after the prerequisites are available.
> 
> Fixes: d9732e498f5f ("drm/xe/xe_ras: Query errors from system controller on probe")
> Signed-off-by: Raag Jadav <[email protected]>

Might be good to check Sashiko's find on pre-existing issue.
But this patch looks correct:

Reviewed-by: Rodrigo Vivi <[email protected]>

> ---
>  drivers/gpu/drm/xe/xe_device.c | 6 ++++++
>  drivers/gpu/drm/xe/xe_ras.c    | 6 ------
>  2 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 03e6177a1d4c..47e1638d2ab3 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -1149,6 +1149,12 @@ int xe_device_probe(struct xe_device *xe)
>  	if (err)
>  		goto err_unregister_display;
>  
> +	/*
> +	 * Process and log any errors detected by hardware. Possible results can
> +	 * include declaring the device as wedged, which must be done only after
> +	 * xe_device_wedged_fini() is registered.
> +	 */
> +	xe_ras_process_errors(xe);
>  	return devm_add_action_or_reset(xe->drm.dev, xe_device_sanitize, xe);
>  
>  err_unregister_display:
> diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
> index 28123f08e513..db8bd19ad28b 100644
> --- a/drivers/gpu/drm/xe/xe_ras.c
> +++ b/drivers/gpu/drm/xe/xe_ras.c
> @@ -827,12 +827,6 @@ void xe_ras_init(struct xe_device *xe)
>  	if (IS_ENABLED(CONFIG_PCIEAER))
>  		ras_usp_aer_init(xe);
>  
> -	/*
> -	 * During probe, process and log any errors detected by firmware while the driver was not
> -	 * loaded. Critical errors such as Punit and CSC are reported through Pcode init failure,
> -	 * causing the driver to enter survivability mode.
> -	 */
> -	xe_ras_process_errors(xe);
>  	ret = devm_device_add_group(xe->drm.dev, &gpu_health_group);
>  	if (ret)
>  		xe_err(xe, "Failed to create GPU health sysfs, err=%d\n", ret);
> -- 
> 2.43.0
>