From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Badal Nilawar <badal.nilawar@intel.com>
Cc: <intel-xe@lists.freedesktop.org>, <anshuman.gupta@intel.com>,
<alexander.usyskin@intel.com>, <michael.j.ruhl@intel.com>,
<daniele.ceraolospurio@intel.com>
Subject: Re: [RFC PATCH 1/4] drm/xe/xe_late_bind_fw: Refactor pm flow
Date: Thu, 5 Mar 2026 09:20:25 -0500 [thread overview]
Message-ID: <aamRKQBSGjoBIdMq@intel.com> (raw)
In-Reply-To: <20260305104441.2857181-7-badal.nilawar@intel.com>
On Thu, Mar 05, 2026 at 04:14:42PM +0530, Badal Nilawar wrote:
> Refactor late binding flow across suspend/resume by adding dedicated
> pm functions.
>
> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
> ---
> drivers/gpu/drm/xe/xe_late_bind_fw.c | 32 +++++++++++++++++++++-------
> drivers/gpu/drm/xe/xe_late_bind_fw.h | 4 ++--
> drivers/gpu/drm/xe/xe_pm.c | 6 +++---
> 3 files changed, 29 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_late_bind_fw.c b/drivers/gpu/drm/xe/xe_late_bind_fw.c
> index 768442ca7da6d..5ca25186dc0cc 100644
> --- a/drivers/gpu/drm/xe/xe_late_bind_fw.c
> +++ b/drivers/gpu/drm/xe/xe_late_bind_fw.c
> @@ -193,7 +193,7 @@ static int xe_late_bind_fw_num_fans(struct xe_late_bind *late_bind, u32 *num_fan
> PCODE_MBOX(FAN_SPEED_CONTROL, FSC_READ_NUM_FANS, 0), num_fans, NULL);
> }
>
> -void xe_late_bind_wait_for_worker_completion(struct xe_late_bind *late_bind)
> +static void xe_late_bind_wait_for_worker_completion(struct xe_late_bind *late_bind)
since it is now static, you can perhaps remove entirely the
prefix 'xe_late_bind_' to make it shorter.
I prefer without it but I don't believe it hurts to keep it. Up to you:
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> {
> struct xe_device *xe = late_bind_to_xe(late_bind);
> struct xe_late_bind_fw *lbfw;
> @@ -269,18 +269,12 @@ static void xe_late_bind_work(struct work_struct *work)
> xe_pm_runtime_put(xe);
> }
>
> -int xe_late_bind_fw_load(struct xe_late_bind *late_bind)
> +static int xe_late_bind_fw_load(struct xe_late_bind *late_bind)
> {
> struct xe_device *xe = late_bind_to_xe(late_bind);
> struct xe_late_bind_fw *lbfw;
> int fw_id;
>
> - if (!late_bind->component_added)
> - return -ENODEV;
> -
> - if (late_bind->disable)
> - return 0;
> -
> for (fw_id = 0; fw_id < XE_LB_FW_MAX_ID; fw_id++) {
> lbfw = &late_bind->late_bind_fw[fw_id];
> if (lbfw->payload) {
> @@ -424,6 +418,28 @@ static void xe_late_bind_remove(void *arg)
> }
> }
>
> +void xe_late_bind_pm_suspend(struct xe_late_bind *late_bind)
> +{
> + if (!late_bind->component_added)
> + return;
> +
> + if (late_bind->disable)
> + return;
> +
> + xe_late_bind_wait_for_worker_completion(late_bind);
> +}
> +
> +void xe_late_bind_pm_resume(struct xe_late_bind *late_bind)
> +{
> + if (!late_bind->component_added)
> + return;
> +
> + if (late_bind->disable)
> + return;
> +
> + xe_late_bind_fw_load(late_bind);
> +}
> +
> /**
> * xe_late_bind_init() - add xe mei late binding component
> * @late_bind: pointer to late bind structure.
> diff --git a/drivers/gpu/drm/xe/xe_late_bind_fw.h b/drivers/gpu/drm/xe/xe_late_bind_fw.h
> index 07e4373905395..8896fea3068e5 100644
> --- a/drivers/gpu/drm/xe/xe_late_bind_fw.h
> +++ b/drivers/gpu/drm/xe/xe_late_bind_fw.h
> @@ -11,7 +11,7 @@
> struct xe_late_bind;
>
> int xe_late_bind_init(struct xe_late_bind *late_bind);
> -int xe_late_bind_fw_load(struct xe_late_bind *late_bind);
> -void xe_late_bind_wait_for_worker_completion(struct xe_late_bind *late_bind);
> +void xe_late_bind_pm_suspend(struct xe_late_bind *late_bind);
> +void xe_late_bind_pm_resume(struct xe_late_bind *late_bind);
>
> #endif
> diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
> index 01185f10a8835..f85b12c1a85d2 100644
> --- a/drivers/gpu/drm/xe/xe_pm.c
> +++ b/drivers/gpu/drm/xe/xe_pm.c
> @@ -182,7 +182,7 @@ int xe_pm_suspend(struct xe_device *xe)
> if (err)
> goto err;
>
> - xe_late_bind_wait_for_worker_completion(&xe->late_bind);
> + xe_late_bind_pm_suspend(&xe->late_bind);
>
> for_each_gt(gt, xe, id)
> xe_gt_suspend_prepare(gt);
> @@ -284,7 +284,7 @@ int xe_pm_resume(struct xe_device *xe)
> if (IS_VF_CCS_READY(xe))
> xe_sriov_vf_ccs_register_context(xe);
>
> - xe_late_bind_fw_load(&xe->late_bind);
> + xe_late_bind_pm_resume(&xe->late_bind);
>
> drm_dbg(&xe->drm, "Device resumed\n");
> xe_pm_block_end_signalling();
> @@ -698,7 +698,7 @@ int xe_pm_runtime_resume(struct xe_device *xe)
> xe_sriov_vf_ccs_register_context(xe);
>
> if (xe->d3cold.allowed)
> - xe_late_bind_fw_load(&xe->late_bind);
> + xe_late_bind_pm_resume(&xe->late_bind);
>
> out:
> xe_rpm_lockmap_release(xe);
> --
> 2.52.0
>
next prev parent reply other threads:[~2026-03-05 14:20 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-05 10:44 [RFC PATCH 0/4] Add ocode late binding support for CRI Badal Nilawar
2026-03-05 10:44 ` [RFC PATCH 1/4] drm/xe/xe_late_bind_fw: Refactor pm flow Badal Nilawar
2026-03-05 14:20 ` Rodrigo Vivi [this message]
2026-03-05 10:44 ` [RFC PATCH 2/4] drm/xe/xe_late_bind_fw: Add support to load Ocode firmware on CRI Badal Nilawar
2026-03-05 23:38 ` Daniele Ceraolo Spurio
2026-05-29 15:19 ` Nilawar, Badal
2026-03-05 10:44 ` [RFC PATCH 3/4] drm/xe/xe_late_bind_fw: Track firmware load status Badal Nilawar
2026-03-05 23:52 ` Daniele Ceraolo Spurio
2026-05-29 15:15 ` Nilawar, Badal
2026-03-05 10:44 ` [RFC PATCH 4/4] drm/xe/xe_late_bind_fw: Enable late binding support for CRI Badal Nilawar
2026-03-06 11:26 ` ✗ CI.KUnit: failure for Add ocode " 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=aamRKQBSGjoBIdMq@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=alexander.usyskin@intel.com \
--cc=anshuman.gupta@intel.com \
--cc=badal.nilawar@intel.com \
--cc=daniele.ceraolospurio@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=michael.j.ruhl@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.