Unverified Commit 90fdcf5f authored by Riana Tauro's avatar Riana Tauro Committed by Rodrigo Vivi
Browse files

drm/xe: Set GT as wedged before sending wedged uevent



Userspace should be notified after setting the device as wedged.
Re-order function calls to set gt wedged before sending uevent.

Cc: Matthew Brost <matthew.brost@intel.com>
Suggested-by: default avatarRaag Jadav <raag.jadav@intel.com>
Signed-off-by: default avatarRiana Tauro <riana.tauro@intel.com>
Reviewed-by: default avatarMatthew Brost <matthew.brost@intel.com>
Link: https://lore.kernel.org/r/20250826063419.3022216-4-riana.tauro@intel.com


Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
parent 9c857a9d
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -1180,8 +1180,10 @@ static void xe_device_wedged_fini(struct drm_device *drm, void *arg)
 * xe_device_declare_wedged - Declare device wedged
 * @xe: xe device instance
 *
 * This is a final state that can only be cleared with a module
 * This is a final state that can only be cleared with the recovery method
 * specified in the drm wedged uevent. The default recovery method is
 * re-probe (unbind + bind).
 *
 * In this state every IOCTL will be blocked so the GT cannot be used.
 * In general it will be called upon any critical error such as gt reset
 * failure or guc loading failure. Userspace will be notified of this state
@@ -1215,13 +1217,15 @@ void xe_device_declare_wedged(struct xe_device *xe)
			"IOCTLs and executions are blocked. Only a rebind may clear the failure\n"
			"Please file a _new_ bug report at https://gitlab.freedesktop.org/drm/xe/kernel/issues/new\n",
			dev_name(xe->drm.dev));
	}

	for_each_gt(gt, xe, id)
		xe_gt_declare_wedged(gt);

	if (xe_device_wedged(xe)) {
		/* Notify userspace of wedged device */
		drm_dev_wedged_event(&xe->drm,
				     DRM_WEDGE_RECOVERY_REBIND | DRM_WEDGE_RECOVERY_BUS_RESET,
				     NULL);
	}

	for_each_gt(gt, xe, id)
		xe_gt_declare_wedged(gt);
}