Hi Arvind,
...
> +static void xe_device_wedged_work(struct work_struct *work)
> +{
> + struct xe_device *xe =
> + container_of(work, struct xe_device, wedged.work);
> + unsigned long method;
> +
> + /* Report at most one recovery method per worker invocation. */
> + method = READ_ONCE(xe->wedged.method);
> + if (method != READ_ONCE(xe->wedged.reported_method)) {
> + drm_dev_wedged_event(&xe->drm, method, NULL);
> + WRITE_ONCE(xe->wedged.reported_method, method);
I think we need to check the error from drm_dev_wedged_event():
int err;
err = drm_dev_wedged_event(&xe->drm, method, NULL);
if (!err)
WRITE_ONCE(xe->wedged.reported_method, method);
Andi
> + }