All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Matthew Brost <matthew.brost@intel.com>
Cc: <intel-xe@lists.freedesktop.org>
Subject: Re: [PATCH 1/2] drm/xe: Avoid memory allocations in xe_device_declare_wedged()
Date: Fri, 27 Mar 2026 09:15:16 -0400	[thread overview]
Message-ID: <acaC5GaA5QH7HEaW@intel.com> (raw)
In-Reply-To: <20260326210116.202585-2-matthew.brost@intel.com>

On Thu, Mar 26, 2026 at 02:01:15PM -0700, Matthew Brost wrote:
> xe_device_declare_wedged() runs in the DMA-fence signaling path, where
> GFP_KERNEL memory allocations are not allowed. However, registering
> xe_device_wedged_fini via drmm_add_action_or_reset() triggers a
> GFP_KERNEL allocation.
> 
> Fix this by deferring the registration of xe_device_wedged_fini until
> late in the driver load sequence. Additionally, drop the wedged PM
> reference only if the device is actually wedged in
> xe_device_wedged_fini.
> 
> Fixes: ("452bca0edbd0 drm/xe: Don't suspend device upon wedge")
> Signed-off-by: Matthew Brost <matthew.brost@intel.com>

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>

> ---
>  drivers/gpu/drm/xe/xe_device.c | 27 +++++++++++++--------------
>  1 file changed, 13 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 9b0540e3e289..ffea4a453c01 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -833,6 +833,14 @@ static void detect_preproduction_hw(struct xe_device *xe)
>  	}
>  }
>  
> +static void xe_device_wedged_fini(struct drm_device *drm, void *arg)
> +{
> +	struct xe_device *xe = arg;
> +
> +	if (atomic_read(&xe->wedged.flag))
> +		xe_pm_runtime_put(xe);
> +}
> +
>  int xe_device_probe(struct xe_device *xe)
>  {
>  	struct xe_tile *tile;
> @@ -1009,6 +1017,10 @@ int xe_device_probe(struct xe_device *xe)
>  
>  	detect_preproduction_hw(xe);
>  
> +	err = drmm_add_action_or_reset(&xe->drm, xe_device_wedged_fini, xe);
> +	if (err)
> +		goto err_unregister_display;
> +
>  	return devm_add_action_or_reset(xe->drm.dev, xe_device_sanitize, xe);
>  
>  err_unregister_display:
> @@ -1240,13 +1252,6 @@ u64 xe_device_uncanonicalize_addr(struct xe_device *xe, u64 address)
>  	return address & GENMASK_ULL(xe->info.va_bits - 1, 0);
>  }
>  
> -static void xe_device_wedged_fini(struct drm_device *drm, void *arg)
> -{
> -	struct xe_device *xe = arg;
> -
> -	xe_pm_runtime_put(xe);
> -}
> -
>  /**
>   * DOC: Xe Device Wedging
>   *
> @@ -1324,15 +1329,9 @@ void xe_device_declare_wedged(struct xe_device *xe)
>  		return;
>  	}
>  
> -	xe_pm_runtime_get_noresume(xe);
> -
> -	if (drmm_add_action_or_reset(&xe->drm, xe_device_wedged_fini, xe)) {
> -		drm_err(&xe->drm, "Failed to register xe_device_wedged_fini clean-up. Although device is wedged.\n");
> -		return;
> -	}
> -
>  	if (!atomic_xchg(&xe->wedged.flag, 1)) {
>  		xe->needs_flr_on_fini = true;
> +		xe_pm_runtime_get_noresume(xe);
>  		drm_err(&xe->drm,
>  			"CRITICAL: Xe has declared device %s as wedged.\n"
>  			"IOCTLs and executions are blocked.\n"
> -- 
> 2.34.1
> 

  reply	other threads:[~2026-03-27 13:15 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-26 21:01 [PATCH 0/2] Wedged memory reclaim fixes Matthew Brost
2026-03-26 21:01 ` [PATCH 1/2] drm/xe: Avoid memory allocations in xe_device_declare_wedged() Matthew Brost
2026-03-27 13:15   ` Rodrigo Vivi [this message]
2026-03-26 21:01 ` [PATCH 2/2] drm/xe: Drop registration of guc_submit_wedged_fini from xe_guc_submit_wedge() Matthew Brost
2026-03-27 13:19   ` Rodrigo Vivi
2026-03-26 21:11 ` ✓ CI.KUnit: success for Wedged memory reclaim fixes Patchwork
2026-03-26 22:01 ` ✓ Xe.CI.BAT: " Patchwork
2026-03-27 14:45 ` ✓ Xe.CI.FULL: " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=acaC5GaA5QH7HEaW@intel.com \
    --to=rodrigo.vivi@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=matthew.brost@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.