[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