[PATCH v3 1/6] drm/xe: Only have a single drmm release action.
Rodrigo Vivi
rodrigo.vivi at intel.com
Fri Aug 22 20:25:25 UTC 2025
On Tue, Aug 19, 2025 at 12:11:19PM +0200, Maarten Lankhorst wrote:
> The broken action happened after ggtt_early_fini, so
> it's safe to put the drain_workqueue in there instead of
> creating a new place.
>
> Signed-off-by: Maarten Lankhorst <dev at lankhorst.se>
> Fixes: 89d2835c3680 ("drm/xe: Process deferred GGTT node removals on device unwind")
> Cc: Michal Wajdeczko <michal.wajdeczko at intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi at intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> ---
> drivers/gpu/drm/xe/xe_ggtt.c | 12 +-----------
> 1 file changed, 1 insertion(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
> index e03222f5ac5a1..0c6aa3126b43a 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.c
> +++ b/drivers/gpu/drm/xe/xe_ggtt.c
> @@ -178,6 +178,7 @@ static void ggtt_fini_early(struct drm_device *drm, void *arg)
> {
> struct xe_ggtt *ggtt = arg;
>
> + drain_workqueue(ggtt->wq);
> destroy_workqueue(ggtt->wq);
> mutex_destroy(&ggtt->lock);
> drm_mm_takedown(&ggtt->mm);
> @@ -238,13 +239,6 @@ int xe_ggtt_init_kunit(struct xe_ggtt *ggtt, u32 reserved, u32 size)
> }
> EXPORT_SYMBOL_IF_KUNIT(xe_ggtt_init_kunit);
>
> -static void dev_fini_ggtt(void *arg)
> -{
> - struct xe_ggtt *ggtt = arg;
> -
> - drain_workqueue(ggtt->wq);
> -}
> -
> /**
> * xe_ggtt_init_early - Early GGTT initialization
> * @ggtt: the &xe_ggtt to be initialized
> @@ -297,10 +291,6 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
> if (err)
> return err;
>
> - err = devm_add_action_or_reset(xe->drm.dev, dev_fini_ggtt, ggtt);
> - if (err)
> - return err;
> -
> if (IS_SRIOV_VF(xe)) {
> err = xe_tile_sriov_vf_prepare_ggtt(ggtt->tile);
> if (err)
> --
> 2.50.0
>
More information about the Intel-xe
mailing list