[PATCH v4 07/10] drm/xe/xe_late_bind_fw: Reload late binding fw during system resume

Badal Nilawar posted 10 patches 3 months, 2 weeks ago
There is a newer version of this series
[PATCH v4 07/10] drm/xe/xe_late_bind_fw: Reload late binding fw during system resume
Posted by Badal Nilawar 3 months, 2 weeks ago
Reload late binding fw during resume from system suspend

v2:
  - Unconditionally reload late binding fw (Rodrigo)
  - Flush worker during system suspend

Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
---
 drivers/gpu/drm/xe/xe_pm.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
index 91923fd4af80..f49b7b6eab97 100644
--- a/drivers/gpu/drm/xe/xe_pm.c
+++ b/drivers/gpu/drm/xe/xe_pm.c
@@ -127,6 +127,8 @@ int xe_pm_suspend(struct xe_device *xe)
 	if (err)
 		goto err;
 
+	xe_late_bind_wait_for_worker_completion(&xe->late_bind);
+
 	for_each_gt(gt, xe, id)
 		xe_gt_suspend_prepare(gt);
 
@@ -205,6 +207,8 @@ int xe_pm_resume(struct xe_device *xe)
 
 	xe_pxp_pm_resume(xe->pxp);
 
+	xe_late_bind_fw_load(&xe->late_bind);
+
 	drm_dbg(&xe->drm, "Device resumed\n");
 	return 0;
 err:
-- 
2.34.1
Re: [PATCH v4 07/10] drm/xe/xe_late_bind_fw: Reload late binding fw during system resume
Posted by Nilawar, Badal 3 months, 1 week ago
Hi Daniele,

On 25-06-2025 22:30, Badal Nilawar wrote:
> Reload late binding fw during resume from system suspend
>
> v2:
>    - Unconditionally reload late binding fw (Rodrigo)
>    - Flush worker during system suspend
>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
> ---
>   drivers/gpu/drm/xe/xe_pm.c | 4 ++++
>   1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
> index 91923fd4af80..f49b7b6eab97 100644
> --- a/drivers/gpu/drm/xe/xe_pm.c
> +++ b/drivers/gpu/drm/xe/xe_pm.c
> @@ -127,6 +127,8 @@ int xe_pm_suspend(struct xe_device *xe)
>   	if (err)
>   		goto err;
>   
> +	xe_late_bind_wait_for_worker_completion(&xe->late_bind);
> +

During system suspend, MEI will unbind the component. This flush is 
unnecessary because it takes place within 
xe_late_bind_component_unbind(). I will remove this call.

Badal

>   	for_each_gt(gt, xe, id)
>   		xe_gt_suspend_prepare(gt);
>   
> @@ -205,6 +207,8 @@ int xe_pm_resume(struct xe_device *xe)
>   
>   	xe_pxp_pm_resume(xe->pxp);
>   
> +	xe_late_bind_fw_load(&xe->late_bind);
> +
>   	drm_dbg(&xe->drm, "Device resumed\n");
>   	return 0;
>   err: