On Wed, Aug 05, 2026 at 12:41:53PM +0530, Mallesh Koujalagi wrote:
> Add 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
> 
> 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)
> 
> v11:
> - Make udev rules in single line. (Sashiko)
> 
> v12:
> - Trigger punit handler using fault-inject.
> 
> v13:
> - Rebase.
> - Rename inject_punit_error to wedge_cold_reset. (Riana)
> - Sashiko corner case issue addressed with
>   commit 20bc4883c7c0 ("drm/xe/ras: Fix boot-time ras error processing").

pushed to drm-xe-next, thanks for the patch, reviews and acks

> 
> 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 (4):
>   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
>   drm/xe/ras: Use fault-inject to trigger cold-reset wedge
> 
>  Documentation/gpu/drm-uapi.rst  | 93 +++++++++++++++++++++++++++++++--
>  drivers/gpu/drm/drm_drv.c       |  2 +
>  drivers/gpu/drm/xe/xe_debugfs.c |  4 ++
>  drivers/gpu/drm/xe/xe_debugfs.h |  2 +
>  drivers/gpu/drm/xe/xe_ras.c     | 15 +++++-
>  include/drm/drm_device.h        |  1 +
>  6 files changed, 111 insertions(+), 6 deletions(-)
> 
> -- 
> 2.48.1
> 

Reply via email to