This series builds on top of Introduce Xe Uncorrectable Error Handling[1] and adds support for handling errors that require a complete device power cycle (cold reset) to recover.
Certain error conditions leave the device in a persistent hardware error state that cannot be cleared through existing recovery mechanisms such as driver reload or PCIe reset. In these cases, functionality can only be restored by performing a cold reset. To support this, the series introduces a new DRM wedging recovery method, DRM_WEDGE_RECOVERY_COLD_RESET (BIT(4)). When a device is wedged with this method, the DRM core notifies userspace via a uevent that a cold reset is required. This allows userspace to take appropriate action to power-cycle the device. Example uevent received: SUBSYSTEM=drm WEDGED=cold-reset DEVPATH=/devices/.../drm/card0 Detailed description in commit message. [1] https://patchwork.freedesktop.org/series/160482/ This patch series introduces a call to punit_error_handler() from within handle_soc_internal_errors() when PUNIT errors detected. v2: - Add use case: Handling errors from power management unit, which requires a complete power cycle to recover. (Christian) - Add several instead of number to avoid update. (Jani) v3: - Update any scenario that requires cold-reset. (Riana) - Update document with generic scenario. (Riana) - Consistent with terminology. (Raag) - Remove already covered information. - Use PUNIT instead of PMU. (Riana) - Use consistent wordingi. - Remove log. (Raag) v4: - Rename cold reset to power cyclce. (Raag) - Update doc. (Raag/Riana) - Change commit message. (Raag) - Make function static. (Raag) v5: - Make it consistent with consumer expectations. (Raag) - Update commit message. - Remove unbind. - Simplify cold-reset script. - Remove kdoc for static function. - Remove xe_ prefix for static function. v6: - Drop "last resort" wording. (Riana) - Look up the hotplug slot in DEVPATH instead of scanning every PCI slot on the system. (Raag) - Drop arbitrary sleep values from the example script. - Expand commit message to explain why SUR_DN is masked. (Raag/Riana) - Check Slot Implemented bit before reading Slot Capabilities, per PCIe spec. (Riana) - Add debug log. v7: - Update recovery script. (Raag) - Handle surprise link down event properly. (Aravind/Riana) - Update commit message. (Riana) - Correct log message. v8: - Add rescan instead of reset. (Raag) - Use find_usp_dev() in punit_error_handler() function. v9: - Remove unwanted header. (Sashiko) - Removed #ifdef CONFIG_PCIEAER. (Riana) - Used pci_find_ext_capability() instead of usp->aer_cap. - Clear the PCI_ERR_UNC_SURPDN status bit (W1C) after reset complete. (Lukas Wunner) - Use pci_clear_and_set_config_dword() helper. v10: - Rebase. - Fix column width. (Sashiko) Cc: André Almeida <[email protected]> Cc: Christian König <[email protected]> Cc: David Airlie <[email protected]> Cc: Simona Vetter <[email protected]> Cc: Maxime Ripard <[email protected]> Cc: Maarten Lankhorst <[email protected]> Cc: Thomas Zimmermann <[email protected]> Mallesh Koujalagi (3): drm: Add DRM_WEDGE_RECOVERY_COLD_RESET recovery method drm/doc: Document DRM_WEDGE_RECOVERY_COLD_RESET recovery method drm/xe: Handle PUNIT errors by requesting cold-reset recovery Riana Tauro (1): drm/xe/xe_ras: Do not Review, compilation only. Documentation/gpu/drm-uapi.rst | 91 +++++++++++++++++++++++++++++-- drivers/gpu/drm/drm_drv.c | 2 + drivers/gpu/drm/xe/xe_ras.c | 49 +++++++++++++++++ drivers/gpu/drm/xe/xe_ras_types.h | 80 +++++++++++++++++++++++++++ include/drm/drm_device.h | 1 + 5 files changed, 219 insertions(+), 4 deletions(-) -- 2.48.1
