Re: [PATCH v6 2/2] drm/xe/sysctrl: Add helper to check oCode firmware readiness

Umesh Nerlige Ramappa <[email protected]>
Newsgroups org.freedesktop.lists.intel-xe
Message-ID <[email protected]>
On Thu, Aug 06, 2026 at 05:09:32AM -0700, Anoop, Vijay wrote:
>From: Anoop Vijay <[email protected]>
>
>Add xe_sysctrl_is_oobmsm_fw_ready(), a convenience wrapper around
>xe_sysctrl_check_app_status() to check oCode application readiness.
>
>Signed-off-by: Anoop Vijay <[email protected]>
>---
>v6:
>- New patch — split oCode application readiness helper out of the
>  original patch into its own commit
>---
> drivers/gpu/drm/xe/xe_sysctrl.c               | 19 +++++++++++++++++++
> drivers/gpu/drm/xe/xe_sysctrl.h               |  1 +
> drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h |  2 ++
> 3 files changed, 22 insertions(+)
>
>diff --git a/drivers/gpu/drm/xe/xe_sysctrl.c b/drivers/gpu/drm/xe/xe_sysctrl.c
>index 35b8b8b85a48..8eac58647265 100644
>--- a/drivers/gpu/drm/xe/xe_sysctrl.c
>+++ b/drivers/gpu/drm/xe/xe_sysctrl.c
>@@ -175,6 +175,25 @@ xe_sysctrl_check_app_status(struct xe_device *xe, enum xe_sysctrl_app_id app_id)
> 	return XE_SYSCTRL_FIRMWARE_APP_INITIALIZED;
> }
>
>+/**
>+ * xe_sysctrl_is_oobmsm_fw_ready() - Check if oCode firmware is fully initialized
>+ * @xe: xe device instance
>+ *
>+ * Returns true if oCode firmware has reached the initialized state, indicating
>+ * it is ready to handle requests. Returns true also on platforms without System
>+ * Controller support, as there is no firmware gate to wait on.

Same question here. What does this mean?

Thanks,
Umesh

>+ *
>+ * Return: true if oCode is initialized or sysctrl is not present, false otherwise
>+ */
>+bool xe_sysctrl_is_oobmsm_fw_ready(struct xe_device *xe)
>+{
>+	enum xe_sysctrl_fw_status status =
>+		xe_sysctrl_check_app_status(xe, XE_SYSCTRL_APP_OCODE);
>+
>+	return status == XE_SYSCTRL_FIRMWARE_APP_INITIALIZED ||
>+	       status == XE_SYSCTRL_FIRMWARE_APP_NOTSUPP;
>+}
>+
> /**
>  * xe_sysctrl_is_diag_fw_ready() - Check if diag firmware is fully initialized
>  * @xe: xe device instance
>diff --git a/drivers/gpu/drm/xe/xe_sysctrl.h b/drivers/gpu/drm/xe/xe_sysctrl.h
>index 8dc576796890..b69a3f474236 100644
>--- a/drivers/gpu/drm/xe/xe_sysctrl.h
>+++ b/drivers/gpu/drm/xe/xe_sysctrl.h
>@@ -20,6 +20,7 @@ void xe_sysctrl_event(struct xe_sysctrl *sc);
> int xe_sysctrl_init(struct xe_device *xe);
> void xe_sysctrl_irq_handler(struct xe_device *xe, u32 master_ctl);
> void xe_sysctrl_pm_resume(struct xe_device *xe);
>+bool xe_sysctrl_is_oobmsm_fw_ready(struct xe_device *xe);
> bool xe_sysctrl_is_diag_fw_ready(struct xe_device *xe);
>
> #endif
>diff --git a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
>index 5e39d2a9c2b0..b507e1553cbb 100644
>--- a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
>+++ b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
>@@ -95,9 +95,11 @@ enum xe_sysctrl_fw_status {
> /**
>  * enum xe_sysctrl_app_id - Known System Controller application identifiers
>  *
>+ * @XE_SYSCTRL_APP_OCODE: oCode application (firmware ID 12)
>  * @XE_SYSCTRL_APP_DIAG: diag application (firmware ID 13)
>  */
> enum xe_sysctrl_app_id {
>+	XE_SYSCTRL_APP_OCODE	= 0x0C,
> 	XE_SYSCTRL_APP_DIAG	= 0x0D,
> };
>
>-- 
>2.43.0
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.