A device is declared wedged when it is non-recoverable from the driver context. Some firmware errors can also cause the device to enter this state and the only method to recover from this would be to do a firmware flash
Signed-off-by: Riana Tauro <riana.ta...@intel.com> --- Documentation/gpu/drm-uapi.rst | 6 +++--- drivers/gpu/drm/drm_drv.c | 2 ++ include/drm/drm_device.h | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Documentation/gpu/drm-uapi.rst b/Documentation/gpu/drm-uapi.rst index 4863a4deb0ee..524224afb09f 100644 --- a/Documentation/gpu/drm-uapi.rst +++ b/Documentation/gpu/drm-uapi.rst @@ -422,9 +422,8 @@ Current implementation defines three recovery methods, out of which, drivers can use any one, multiple or none. Method(s) of choice will be sent in the uevent environment as ``WEDGED=<method1>[,..,<methodN>]`` in order of less to more side-effects. If driver is unsure about recovery or method is unknown -(like soft/hard system reboot, firmware flashing, physical device replacement -or any other procedure which can't be attempted on the fly), ``WEDGED=unknown`` -will be sent instead. +(like soft/hard system reboot, physical device replacement or any other procedure +which can't be attempted on the fly), ``WEDGED=unknown`` will be sent instead. Userspace consumers can parse this event and attempt recovery as per the following expectations. @@ -435,6 +434,7 @@ following expectations. none optional telemetry collection rebind unbind + bind driver bus-reset unbind + bus reset/re-enumeration + bind + firmware-flash unbind + firmware flash + bind unknown consumer policy =============== ======================================== diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c index 56dd61f8e05a..e287424db753 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c @@ -533,6 +533,8 @@ static const char *drm_get_wedge_recovery(unsigned int opt) return "rebind"; case DRM_WEDGE_RECOVERY_BUS_RESET: return "bus-reset"; + case DRM_WEDGE_RECOVERY_FW_FLASH: + return "firmware-flash"; default: return NULL; } diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h index e2f894f1b90a..e446e40f8306 100644 --- a/include/drm/drm_device.h +++ b/include/drm/drm_device.h @@ -29,6 +29,7 @@ struct pci_controller; #define DRM_WEDGE_RECOVERY_NONE BIT(0) /* optional telemetry collection */ #define DRM_WEDGE_RECOVERY_REBIND BIT(1) /* unbind + bind driver */ #define DRM_WEDGE_RECOVERY_BUS_RESET BIT(2) /* unbind + reset bus device + bind */ +#define DRM_WEDGE_RECOVERY_FW_FLASH BIT(3) /* unbind + firmware flash + bind */ /** * enum switch_power_state - power state of drm device -- 2.47.1