2 * SPDX-License-Identifier: MIT
4 * Copyright © 2008-2018 Intel Corporation
10 #include <linux/compiler.h>
11 #include <linux/types.h>
12 #include <linux/srcu.h>
14 struct drm_i915_private;
15 struct intel_engine_cs;
19 void i915_handle_error(struct drm_i915_private *i915,
22 const char *fmt, ...);
23 #define I915_ERROR_CAPTURE BIT(0)
25 void i915_clear_error_registers(struct drm_i915_private *i915);
27 void i915_reset(struct drm_i915_private *i915,
28 unsigned int stalled_mask,
30 int i915_reset_engine(struct intel_engine_cs *engine,
33 void i915_reset_request(struct i915_request *rq, bool guilty);
34 bool i915_reset_flush(struct drm_i915_private *i915);
36 int __must_check i915_reset_trylock(struct drm_i915_private *i915);
37 void i915_reset_unlock(struct drm_i915_private *i915, int tag);
39 int i915_terminally_wedged(struct drm_i915_private *i915);
41 bool intel_has_gpu_reset(struct drm_i915_private *i915);
42 bool intel_has_reset_engine(struct drm_i915_private *i915);
44 int intel_gpu_reset(struct drm_i915_private *i915, u32 engine_mask);
46 int intel_reset_guc(struct drm_i915_private *i915);
48 struct i915_wedge_me {
49 struct delayed_work work;
50 struct drm_i915_private *i915;
54 void __i915_init_wedge(struct i915_wedge_me *w,
55 struct drm_i915_private *i915,
58 void __i915_fini_wedge(struct i915_wedge_me *w);
60 #define i915_wedge_on_timeout(W, DEV, TIMEOUT) \
61 for (__i915_init_wedge((W), (DEV), (TIMEOUT), __func__); \
63 __i915_fini_wedge((W)))
65 #endif /* I915_RESET_H */