[PATCH v1] drm/xe/pm: Wait for lmem ready in resume

Gupta, Anshuman anshuman.gupta at intel.com
Thu Apr 10 12:06:29 UTC 2025



> -----Original Message-----
> From: Poosa, Karthik <karthik.poosa at intel.com>
> Sent: Thursday, April 10, 2025 4:31 PM
> To: intel-xe at lists.freedesktop.org
> Cc: Gupta, Anshuman <anshuman.gupta at intel.com>; Nilawar, Badal
> <badal.nilawar at intel.com>; Vivi, Rodrigo <rodrigo.vivi at intel.com>; Poosa,
> Karthik <karthik.poosa at intel.com>
> Subject: [PATCH v1] drm/xe/pm: Wait for lmem ready in resume
> 
> Add wait for LMEM ready during system and runtime resume.
> This wait is there in probe and is missing during resume.
> 
> Signed-off-by: Karthik Poosa <karthik.poosa at intel.com>
> ---
>  drivers/gpu/drm/xe/xe_device.c | 2 +-
>  drivers/gpu/drm/xe/xe_device.h | 1 +
>  drivers/gpu/drm/xe/xe_pm.c     | 8 ++++++++
>  3 files changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 75e753e0a682..4c0d9eb51d1f 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -630,7 +630,7 @@ static bool verify_lmem_ready(struct xe_device *xe)
>  	return !!val;
>  }
> 
> -static int wait_for_lmem_ready(struct xe_device *xe)
> +int wait_for_lmem_ready(struct xe_device *xe)
>  {
>  	unsigned long timeout, start;
> 
> diff --git a/drivers/gpu/drm/xe/xe_device.h
> b/drivers/gpu/drm/xe/xe_device.h index 0bc3bc8e6803..60bc92f9ab22
> 100644
> --- a/drivers/gpu/drm/xe/xe_device.h
> +++ b/drivers/gpu/drm/xe/xe_device.h
> @@ -47,6 +47,7 @@ int xe_device_probe_early(struct xe_device *xe);  int
> xe_device_probe(struct xe_device *xe);  void xe_device_remove(struct
> xe_device *xe);  void xe_device_shutdown(struct xe_device *xe);
> +int wait_for_lmem_ready(struct xe_device *xe);
> 
>  void xe_device_wmb(struct xe_device *xe);
> 
> diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c index
> 4e112fbacada..2e59670660c1 100644
> --- a/drivers/gpu/drm/xe/xe_pm.c
> +++ b/drivers/gpu/drm/xe/xe_pm.c
> @@ -182,6 +182,10 @@ int xe_pm_resume(struct xe_device *xe)
>  	if (err)
>  		return err;
> 
> +	err = wait_for_lmem_ready(xe);
In Xe we are referring this as a vram.
Do  we have any spec, that document this ?
> +	if (err)
> +		goto err;
> +
>  	xe_display_pm_resume_early(xe);
> 
>  	/*
> @@ -478,6 +482,10 @@ int xe_pm_runtime_resume(struct xe_device *xe)
>  		if (err)
>  			goto out;
> 
> +		err = wait_for_lmem_ready(xe);
> +		if (err)
> +			goto out;
> +
>  		xe_display_pm_resume_early(xe);
> 
>  		/*
> --
> 2.25.1



More information about the Intel-xe mailing list