From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Riana Tauro <riana.tauro@intel.com>
Cc: <intel-xe@lists.freedesktop.org>,
<dri-devel@lists.freedesktop.org>, <anshuman.gupta@intel.com>,
<lucas.demarchi@intel.com>, <aravind.iddamsetty@linux.intel.com>,
<raag.jadav@intel.com>, <umesh.nerlige.ramappa@intel.com>,
<frank.scarbrough@intel.com>, <sk.anirban@intel.com>,
<simona.vetter@ffwll.ch>
Subject: Re: [PATCH v6 6/9] drm/xe/doc: Document device wedged and runtime survivability
Date: Thu, 24 Jul 2025 12:20:19 -0400 [thread overview]
Message-ID: <aIJdQw6X2F0thI8l@intel.com> (raw)
In-Reply-To: <20250724143440.232862-7-riana.tauro@intel.com>
On Thu, Jul 24, 2025 at 08:04:35PM +0530, Riana Tauro wrote:
> Add documentation for vendor specific device wedged recovery method
> and runtime survivability.
>
> v2: fix documentation (Raag)
> v3: add userspace tool for firmware update (Raag)
> v4: use consistent documentation (Raag)
>
> Signed-off-by: Riana Tauro <riana.tauro@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> Documentation/gpu/xe/index.rst | 1 +
> Documentation/gpu/xe/xe_device.rst | 10 +++++++
> Documentation/gpu/xe/xe_pcode.rst | 6 ++--
> drivers/gpu/drm/xe/xe_device.c | 22 ++++++++++++++
> drivers/gpu/drm/xe/xe_survivability_mode.c | 35 +++++++++++++++++-----
> 5 files changed, 64 insertions(+), 10 deletions(-)
> create mode 100644 Documentation/gpu/xe/xe_device.rst
>
> diff --git a/Documentation/gpu/xe/index.rst b/Documentation/gpu/xe/index.rst
> index 42ba6c263cd0..88b22fad880e 100644
> --- a/Documentation/gpu/xe/index.rst
> +++ b/Documentation/gpu/xe/index.rst
> @@ -25,5 +25,6 @@ DG2, etc is provided to prototype the driver.
> xe_tile
> xe_debugging
> xe_devcoredump
> + xe_device
> xe-drm-usage-stats.rst
> xe_configfs
> diff --git a/Documentation/gpu/xe/xe_device.rst b/Documentation/gpu/xe/xe_device.rst
> new file mode 100644
> index 000000000000..39a937b97cd3
> --- /dev/null
> +++ b/Documentation/gpu/xe/xe_device.rst
> @@ -0,0 +1,10 @@
> +.. SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +
> +.. _xe-device-wedging:
> +
> +==================
> +Xe Device Wedging
> +==================
> +
> +.. kernel-doc:: drivers/gpu/drm/xe/xe_device.c
> + :doc: Xe Device Wedging
> diff --git a/Documentation/gpu/xe/xe_pcode.rst b/Documentation/gpu/xe/xe_pcode.rst
> index 5937ef3599b0..2a43601123cb 100644
> --- a/Documentation/gpu/xe/xe_pcode.rst
> +++ b/Documentation/gpu/xe/xe_pcode.rst
> @@ -13,9 +13,11 @@ Internal API
> .. kernel-doc:: drivers/gpu/drm/xe/xe_pcode.c
> :internal:
>
> +.. _xe-survivability-mode:
> +
> ==================
> -Boot Survivability
> +Survivability Mode
> ==================
>
> .. kernel-doc:: drivers/gpu/drm/xe/xe_survivability_mode.c
> - :doc: Xe Boot Survivability
> + :doc: Survivability Mode
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index df29b87ffc5f..4a34b15f9527 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -1157,6 +1157,28 @@ static void xe_device_wedged_fini(struct drm_device *drm, void *arg)
> }
>
> /**
> + * DOC: Xe Device Wedging
> + *
> + * Xe driver uses drm device wedged uevent as documented in Documentation/gpu/drm-uapi.rst.
> + *
> + * When device is in wedged state, every IOCTL will be blocked and GT cannot be
> + * used. Certain critical errors like gt reset failure, firmware failures can cause
> + * the device to be wedged. The default recovery method for a wedged state
> + * is rebind/bus-reset.
> + *
> + * Another recovery method is vendor-specific. Below are the usecases that trigger
> + * vendor-specific drm device wedged uevent and the procedure to be performed
> + * to recover the device.
> + *
> + * Case 1: CSC firmware errors require a firmware flash to restore normal device
> + * operation. Since firmware flash is a vendor-specific action
> + * ``WEDGED=vendor-specific`` recovery method along with
> + * :ref:`runtime survivability mode <xe-survivability-mode>` is used to
> + * notify userspace. User can then initiate a firmware flash using userspace tools
> + * like fwupd to restore device to normal situation.
> + */
> +
> +/*
> * xe_device_set_wedged_method - Set wedged recovery method
> * @xe: xe device instance
> * @method: recovery method to set
> diff --git a/drivers/gpu/drm/xe/xe_survivability_mode.c b/drivers/gpu/drm/xe/xe_survivability_mode.c
> index 267d0e3fd85a..86ba767c4e44 100644
> --- a/drivers/gpu/drm/xe/xe_survivability_mode.c
> +++ b/drivers/gpu/drm/xe/xe_survivability_mode.c
> @@ -22,15 +22,18 @@
> #define MAX_SCRATCH_MMIO 8
>
> /**
> - * DOC: Xe Boot Survivability
> + * DOC: Survivability Mode
> *
> - * Boot Survivability is a software based workflow for recovering a system in a failed boot state
> + * Survivability Mode is a software based workflow for recovering a system in a failed boot state
> * Here system recoverability is concerned with recovering the firmware responsible for boot.
> *
> - * This is implemented by loading the driver with bare minimum (no drm card) to allow the firmware
> - * to be flashed through mei and collect telemetry. The driver's probe flow is modified
> - * such that it enters survivability mode when pcode initialization is incomplete and boot status
> - * denotes a failure.
> + * Boot Survivability
> + * ===================
> + *
> + * Boot Survivability is implemented by loading the driver with bare minimum (no drm card) to allow
> + * the firmware to be flashed through mei driver and collect telemetry. The driver's probe flow is
> + * modified such that it enters survivability mode when pcode initialization is incomplete and boot
> + * status denotes a failure.
> *
> * Survivability mode can also be entered manually using the survivability mode attribute available
> * through configfs which is beneficial in several usecases. It can be used to address scenarios
> @@ -46,7 +49,7 @@
> * Survivability mode is indicated by the below admin-only readable sysfs which provides additional
> * debug information::
> *
> - * /sys/bus/pci/devices/<device>/surivability_mode
> + * /sys/bus/pci/devices/<device>/survivability_mode
> *
> * Capability Information:
> * Provides boot status
> @@ -56,6 +59,22 @@
> * Provides history of previous failures
> * Auxiliary Information
> * Certain failures may have information in addition to postcode information
> + *
> + * Runtime Survivability
> + * =====================
> + *
> + * Certain runtime firmware errors can cause the device to enter a wedged state
> + * (:ref:`xe-device-wedging`) requiring a firmware flash to restore normal operation.
> + * Runtime Survivability Mode indicates that a firmware flash is necessary to recover the device and
> + * is indicated by the presence of survivability mode sysfs::
> + *
> + * /sys/bus/pci/devices/<device>/survivability_mode
> + *
> + * Survivability mode sysfs provides information about the type of survivability mode.
> + *
> + * When such errors occur, userspace is notified with the drm device wedged uevent and runtime
> + * survivability mode. User can then initiate a firmware flash using userspace tools like fwupd
> + * to restore device to normal operation.
> */
>
> static u32 aux_history_offset(u32 reg_value)
> @@ -327,7 +346,7 @@ int xe_survivability_mode_runtime_enable(struct xe_device *xe)
>
> xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_VENDOR);
> xe_device_declare_wedged(xe);
> - dev_err(&pdev->dev, "Firmware update required, Refer the userspace documentation for more details!\n");
> + dev_err(&pdev->dev, "Firmware flash required, Refer the userspace documentation for more details!\n");
>
> return 0;
> }
> --
> 2.47.1
>
next prev parent reply other threads:[~2025-07-24 16:21 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-24 14:34 [PATCH v6 0/9] Handle Firmware reported Hardware Errors Riana Tauro
2025-07-24 14:34 ` [PATCH v6 1/9] drm: Add a vendor-specific recovery method to drm device wedged uevent Riana Tauro
2025-07-24 16:18 ` Rodrigo Vivi
2025-07-25 5:22 ` Riana Tauro
2025-07-25 5:22 ` Raag Jadav
2025-07-24 14:34 ` [PATCH v6 2/9] drm/xe: Set GT as wedged before sending " Riana Tauro
2025-07-24 14:34 ` [PATCH v6 3/9] drm/xe: Add a helper function to set recovery method Riana Tauro
2025-07-25 5:34 ` Raag Jadav
2025-07-24 14:34 ` [PATCH v6 4/9] drm/xe/xe_survivability: Refactor survivability mode Riana Tauro
2025-07-25 5:42 ` Raag Jadav
2025-07-24 14:34 ` [PATCH v6 5/9] drm/xe/xe_survivability: Add support for Runtime " Riana Tauro
2025-07-25 5:44 ` Raag Jadav
2025-07-24 14:34 ` [PATCH v6 6/9] drm/xe/doc: Document device wedged and runtime survivability Riana Tauro
2025-07-24 16:20 ` Rodrigo Vivi [this message]
2025-07-25 5:50 ` Raag Jadav
2025-07-24 14:34 ` [PATCH v6 7/9] drm/xe: Add support to handle hardware errors Riana Tauro
2025-07-24 14:34 ` [PATCH v6 8/9] drm/xe/xe_hw_error: Handle CSC Firmware reported Hardware errors Riana Tauro
2025-07-24 14:34 ` [PATCH v6 9/9] drm/xe/xe_hw_error: Add fault injection to trigger csc error handler Riana Tauro
2025-07-25 10:33 ` Raag Jadav
2025-07-24 14:39 ` ✗ CI.checkpatch: warning for Handle Firmware reported Hardware Errors (rev6) Patchwork
2025-07-24 14:40 ` ✓ CI.KUnit: success " Patchwork
2025-07-24 14:55 ` ✗ CI.checksparse: warning " Patchwork
2025-07-24 15:20 ` ✓ Xe.CI.BAT: success " Patchwork
2025-07-24 17:36 ` ✗ Xe.CI.Full: failure " 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=aIJdQw6X2F0thI8l@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=anshuman.gupta@intel.com \
--cc=aravind.iddamsetty@linux.intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=frank.scarbrough@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=lucas.demarchi@intel.com \
--cc=raag.jadav@intel.com \
--cc=riana.tauro@intel.com \
--cc=simona.vetter@ffwll.ch \
--cc=sk.anirban@intel.com \
--cc=umesh.nerlige.ramappa@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.