17f4dd379Sjsg /*
27f4dd379Sjsg * SPDX-License-Identifier: MIT
37f4dd379Sjsg *
45ca02815Sjsg * Copyright © 2008-2018 Intel Corporation
57f4dd379Sjsg */
67f4dd379Sjsg
77f4dd379Sjsg #ifndef _I915_GPU_ERROR_H_
87f4dd379Sjsg #define _I915_GPU_ERROR_H_
97f4dd379Sjsg
10c349dbc7Sjsg #include <linux/atomic.h>
117f4dd379Sjsg #include <linux/kref.h>
127f4dd379Sjsg #include <linux/ktime.h>
137f4dd379Sjsg #include <linux/sched.h>
147f4dd379Sjsg
157f4dd379Sjsg #include <drm/drm_mm.h>
167f4dd379Sjsg
17*f005ef32Sjsg #include "display/intel_display_device.h"
18c349dbc7Sjsg #include "gt/intel_engine.h"
19*f005ef32Sjsg #include "gt/intel_engine_types.h"
20ad8b1aafSjsg #include "gt/intel_gt_types.h"
21c349dbc7Sjsg #include "gt/uc/intel_uc_fw.h"
22c349dbc7Sjsg
237f4dd379Sjsg #include "intel_device_info.h"
247f4dd379Sjsg
257f4dd379Sjsg #include "i915_gem.h"
267f4dd379Sjsg #include "i915_gem_gtt.h"
277f4dd379Sjsg #include "i915_params.h"
287f4dd379Sjsg #include "i915_scheduler.h"
297f4dd379Sjsg
307f4dd379Sjsg struct drm_i915_private;
31c349dbc7Sjsg struct i915_vma_compress;
32c349dbc7Sjsg struct intel_engine_capture_vma;
337f4dd379Sjsg struct intel_overlay_error_state;
347f4dd379Sjsg
35c349dbc7Sjsg struct i915_vma_coredump {
36c349dbc7Sjsg struct i915_vma_coredump *next;
377f4dd379Sjsg
38c349dbc7Sjsg char name[20];
397f4dd379Sjsg
40c349dbc7Sjsg u64 gtt_offset;
41c349dbc7Sjsg u64 gtt_size;
42c349dbc7Sjsg u32 gtt_page_sizes;
43c349dbc7Sjsg
44c349dbc7Sjsg int unused;
451bb76ff1Sjsg struct list_head page_list;
46c349dbc7Sjsg };
47c349dbc7Sjsg
48c349dbc7Sjsg struct i915_request_coredump {
49c349dbc7Sjsg unsigned long flags;
50c349dbc7Sjsg pid_t pid;
51c349dbc7Sjsg u32 context;
52c349dbc7Sjsg u32 seqno;
53c349dbc7Sjsg u32 head;
54c349dbc7Sjsg u32 tail;
55c349dbc7Sjsg struct i915_sched_attr sched_attr;
56c349dbc7Sjsg };
57c349dbc7Sjsg
581bb76ff1Sjsg struct __guc_capture_parsed_output;
591bb76ff1Sjsg
60c349dbc7Sjsg struct intel_engine_coredump {
61c349dbc7Sjsg const struct intel_engine_cs *engine;
62c349dbc7Sjsg
635ca02815Sjsg bool hung;
647f4dd379Sjsg bool simulated;
657f4dd379Sjsg u32 reset_count;
667f4dd379Sjsg
67c349dbc7Sjsg /* position of active request inside the ring */
68c349dbc7Sjsg u32 rq_head, rq_post, rq_tail;
69c349dbc7Sjsg
70c349dbc7Sjsg /* Register state */
71c349dbc7Sjsg u32 ccid;
72c349dbc7Sjsg u32 start;
73c349dbc7Sjsg u32 tail;
74c349dbc7Sjsg u32 head;
75c349dbc7Sjsg u32 ctl;
76c349dbc7Sjsg u32 mode;
77c349dbc7Sjsg u32 hws;
78c349dbc7Sjsg u32 ipeir;
79c349dbc7Sjsg u32 ipehr;
80c349dbc7Sjsg u32 esr;
81c349dbc7Sjsg u32 bbstate;
82c349dbc7Sjsg u32 instpm;
83c349dbc7Sjsg u32 instps;
84c349dbc7Sjsg u64 bbaddr;
85c349dbc7Sjsg u64 acthd;
86c349dbc7Sjsg u32 fault_reg;
87c349dbc7Sjsg u64 faddr;
88c349dbc7Sjsg u32 rc_psmi; /* sleep state */
891bb76ff1Sjsg u32 nopid;
901bb76ff1Sjsg u32 excc;
911bb76ff1Sjsg u32 cmd_cctl;
921bb76ff1Sjsg u32 cscmdop;
931bb76ff1Sjsg u32 ctx_sr_ctl;
941bb76ff1Sjsg u32 dma_faddr_hi;
951bb76ff1Sjsg u32 dma_faddr_lo;
96c349dbc7Sjsg struct intel_instdone instdone;
97c349dbc7Sjsg
981bb76ff1Sjsg /* GuC matched capture-lists info */
9941b6a0afSjsg struct intel_guc_state_capture *guc_capture;
1001bb76ff1Sjsg struct __guc_capture_parsed_output *guc_capture_node;
1011bb76ff1Sjsg
102c349dbc7Sjsg struct i915_gem_context_coredump {
103c349dbc7Sjsg char comm[TASK_COMM_LEN];
104c349dbc7Sjsg
105c349dbc7Sjsg u64 total_runtime;
1061bb76ff1Sjsg u64 avg_runtime;
107c349dbc7Sjsg
108c349dbc7Sjsg pid_t pid;
109c349dbc7Sjsg int active;
110c349dbc7Sjsg int guilty;
111c349dbc7Sjsg struct i915_sched_attr sched_attr;
112*f005ef32Sjsg u32 hwsp_seqno;
113c349dbc7Sjsg } context;
114c349dbc7Sjsg
115c349dbc7Sjsg struct i915_vma_coredump *vma;
116c349dbc7Sjsg
117c349dbc7Sjsg struct i915_request_coredump execlist[EXECLIST_MAX_PORTS];
118c349dbc7Sjsg unsigned int num_ports;
119c349dbc7Sjsg
120c349dbc7Sjsg struct {
121c349dbc7Sjsg u32 gfx_mode;
122c349dbc7Sjsg union {
123c349dbc7Sjsg u64 pdp[4];
124c349dbc7Sjsg u32 pp_dir_base;
125c349dbc7Sjsg };
126c349dbc7Sjsg } vm_info;
127c349dbc7Sjsg
128c349dbc7Sjsg struct intel_engine_coredump *next;
129c349dbc7Sjsg };
130c349dbc7Sjsg
1311bb76ff1Sjsg struct intel_ctb_coredump {
1321bb76ff1Sjsg u32 raw_head, head;
1331bb76ff1Sjsg u32 raw_tail, tail;
1341bb76ff1Sjsg u32 raw_status;
1351bb76ff1Sjsg u32 desc_offset;
1361bb76ff1Sjsg u32 cmds_offset;
1371bb76ff1Sjsg u32 size;
1381bb76ff1Sjsg };
1391bb76ff1Sjsg
140c349dbc7Sjsg struct intel_gt_coredump {
141c349dbc7Sjsg const struct intel_gt *_gt;
142c349dbc7Sjsg bool awake;
143c349dbc7Sjsg bool simulated;
1447f4dd379Sjsg
145ad8b1aafSjsg struct intel_gt_info info;
146ad8b1aafSjsg
1477f4dd379Sjsg /* Generic register state */
1487f4dd379Sjsg u32 eir;
1497f4dd379Sjsg u32 pgtbl_er;
1507f4dd379Sjsg u32 ier;
1517f4dd379Sjsg u32 gtier[6], ngtier;
1527f4dd379Sjsg u32 forcewake;
1537f4dd379Sjsg u32 error; /* gen6+ */
1547f4dd379Sjsg u32 err_int; /* gen7 */
1557f4dd379Sjsg u32 fault_data0; /* gen8, gen9 */
1567f4dd379Sjsg u32 fault_data1; /* gen8, gen9 */
1577f4dd379Sjsg u32 done_reg;
1587f4dd379Sjsg u32 gac_eco;
1597f4dd379Sjsg u32 gam_ecochk;
1607f4dd379Sjsg u32 gab_ctl;
1617f4dd379Sjsg u32 gfx_mode;
162c349dbc7Sjsg u32 gtt_cache;
163c349dbc7Sjsg u32 aux_err; /* gen12 */
164c349dbc7Sjsg u32 gam_done; /* gen12 */
1651bb76ff1Sjsg u32 clock_frequency;
1661bb76ff1Sjsg u32 clock_period_ns;
1671bb76ff1Sjsg
1681bb76ff1Sjsg /* Display related */
1691bb76ff1Sjsg u32 derrmr;
1701bb76ff1Sjsg u32 sfc_done[I915_MAX_SFC]; /* gen12 */
1717f4dd379Sjsg
1727f4dd379Sjsg u32 nfence;
1737f4dd379Sjsg u64 fence[I915_MAX_NUM_FENCES];
174c349dbc7Sjsg
175c349dbc7Sjsg struct intel_engine_coredump *engine;
176c349dbc7Sjsg
177c349dbc7Sjsg struct intel_uc_coredump {
178c349dbc7Sjsg struct intel_uc_fw guc_fw;
179c349dbc7Sjsg struct intel_uc_fw huc_fw;
1801bb76ff1Sjsg struct guc_info {
1811bb76ff1Sjsg struct intel_ctb_coredump ctb[2];
1821bb76ff1Sjsg struct i915_vma_coredump *vma_ctb;
1831bb76ff1Sjsg struct i915_vma_coredump *vma_log;
1841bb76ff1Sjsg u32 timestamp;
1851bb76ff1Sjsg u16 last_fence;
1861bb76ff1Sjsg bool is_guc_capture;
1871bb76ff1Sjsg } guc;
188c349dbc7Sjsg } *uc;
189c349dbc7Sjsg
190c349dbc7Sjsg struct intel_gt_coredump *next;
191c349dbc7Sjsg };
192c349dbc7Sjsg
193c349dbc7Sjsg struct i915_gpu_coredump {
194c349dbc7Sjsg struct kref ref;
195c349dbc7Sjsg ktime_t time;
196c349dbc7Sjsg ktime_t boottime;
197c349dbc7Sjsg ktime_t uptime;
198c349dbc7Sjsg unsigned long capture;
199c349dbc7Sjsg
200c349dbc7Sjsg struct drm_i915_private *i915;
201c349dbc7Sjsg
202c349dbc7Sjsg struct intel_gt_coredump *gt;
203c349dbc7Sjsg
204c349dbc7Sjsg char error_msg[128];
205c349dbc7Sjsg bool simulated;
206c349dbc7Sjsg bool wakelock;
207c349dbc7Sjsg bool suspended;
208c349dbc7Sjsg int iommu;
209c349dbc7Sjsg u32 reset_count;
210c349dbc7Sjsg u32 suspend_count;
211c349dbc7Sjsg
212c349dbc7Sjsg struct intel_device_info device_info;
213c349dbc7Sjsg struct intel_runtime_info runtime_info;
214*f005ef32Sjsg struct intel_display_device_info display_device_info;
215*f005ef32Sjsg struct intel_display_runtime_info display_runtime_info;
216c349dbc7Sjsg struct intel_driver_caps driver_caps;
217c349dbc7Sjsg struct i915_params params;
218c349dbc7Sjsg
2197f4dd379Sjsg struct intel_overlay_error_state *overlay;
2207f4dd379Sjsg
221c349dbc7Sjsg struct scatterlist *sgl, *fit;
2227f4dd379Sjsg };
2237f4dd379Sjsg
2247f4dd379Sjsg struct i915_gpu_error {
2257f4dd379Sjsg /* For reset and error_state handling. */
2267f4dd379Sjsg spinlock_t lock;
2277f4dd379Sjsg /* Protected by the above dev->gpu_error.lock. */
228c349dbc7Sjsg struct i915_gpu_coredump *first_error;
2297f4dd379Sjsg
2307f4dd379Sjsg atomic_t pending_fb_pin;
2317f4dd379Sjsg
232c349dbc7Sjsg /** Number of times the device has been reset (global) */
233c349dbc7Sjsg atomic_t reset_count;
2347f4dd379Sjsg
2357f4dd379Sjsg /** Number of times an engine has been reset */
236*f005ef32Sjsg atomic_t reset_engine_count[MAX_ENGINE_CLASS];
2377f4dd379Sjsg };
2387f4dd379Sjsg
2397f4dd379Sjsg struct drm_i915_error_state_buf {
2407f4dd379Sjsg struct drm_i915_private *i915;
241c349dbc7Sjsg struct scatterlist *sgl, *cur, *end;
242c349dbc7Sjsg
243c349dbc7Sjsg char *buf;
244c349dbc7Sjsg size_t bytes;
245c349dbc7Sjsg size_t size;
246c349dbc7Sjsg loff_t iter;
247c349dbc7Sjsg
2487f4dd379Sjsg int err;
2497f4dd379Sjsg };
2507f4dd379Sjsg
i915_reset_count(struct i915_gpu_error * error)2511bb76ff1Sjsg static inline u32 i915_reset_count(struct i915_gpu_error *error)
2521bb76ff1Sjsg {
2531bb76ff1Sjsg return atomic_read(&error->reset_count);
2541bb76ff1Sjsg }
2551bb76ff1Sjsg
i915_reset_engine_count(struct i915_gpu_error * error,const struct intel_engine_cs * engine)2561bb76ff1Sjsg static inline u32 i915_reset_engine_count(struct i915_gpu_error *error,
2571bb76ff1Sjsg const struct intel_engine_cs *engine)
2581bb76ff1Sjsg {
259*f005ef32Sjsg return atomic_read(&error->reset_engine_count[engine->class]);
260*f005ef32Sjsg }
261*f005ef32Sjsg
262*f005ef32Sjsg static inline void
i915_increase_reset_engine_count(struct i915_gpu_error * error,const struct intel_engine_cs * engine)263*f005ef32Sjsg i915_increase_reset_engine_count(struct i915_gpu_error *error,
264*f005ef32Sjsg const struct intel_engine_cs *engine)
265*f005ef32Sjsg {
266*f005ef32Sjsg atomic_inc(&error->reset_engine_count[engine->class]);
2671bb76ff1Sjsg }
2681bb76ff1Sjsg
2691bb76ff1Sjsg #define CORE_DUMP_FLAG_NONE 0x0
2701bb76ff1Sjsg #define CORE_DUMP_FLAG_IS_GUC_CAPTURE BIT(0)
2711bb76ff1Sjsg
272*f005ef32Sjsg #if IS_ENABLED(CONFIG_DRM_I915_CAPTURE_ERROR) && IS_ENABLED(CONFIG_DRM_I915_DEBUG_GEM)
273*f005ef32Sjsg void intel_klog_error_capture(struct intel_gt *gt,
274*f005ef32Sjsg intel_engine_mask_t engine_mask);
275*f005ef32Sjsg #else
intel_klog_error_capture(struct intel_gt * gt,intel_engine_mask_t engine_mask)276*f005ef32Sjsg static inline void intel_klog_error_capture(struct intel_gt *gt,
277*f005ef32Sjsg intel_engine_mask_t engine_mask)
278*f005ef32Sjsg {
279*f005ef32Sjsg }
280*f005ef32Sjsg #endif
281*f005ef32Sjsg
2827f4dd379Sjsg #if IS_ENABLED(CONFIG_DRM_I915_CAPTURE_ERROR)
2837f4dd379Sjsg
2847f4dd379Sjsg __printf(2, 3)
2857f4dd379Sjsg void i915_error_printf(struct drm_i915_error_state_buf *e, const char *f, ...);
2861bb76ff1Sjsg void intel_gpu_error_print_vma(struct drm_i915_error_state_buf *m,
2871bb76ff1Sjsg const struct intel_engine_cs *engine,
2881bb76ff1Sjsg const struct i915_vma_coredump *vma);
2891bb76ff1Sjsg struct i915_vma_coredump *
2901bb76ff1Sjsg intel_gpu_error_find_batch(const struct intel_engine_coredump *ee);
2917f4dd379Sjsg
2925ca02815Sjsg struct i915_gpu_coredump *i915_gpu_coredump(struct intel_gt *gt,
2931bb76ff1Sjsg intel_engine_mask_t engine_mask, u32 dump_flags);
2945ca02815Sjsg void i915_capture_error_state(struct intel_gt *gt,
2951bb76ff1Sjsg intel_engine_mask_t engine_mask, u32 dump_flags);
2967f4dd379Sjsg
297c349dbc7Sjsg struct i915_gpu_coredump *
298c349dbc7Sjsg i915_gpu_coredump_alloc(struct drm_i915_private *i915, gfp_t gfp);
2997f4dd379Sjsg
300c349dbc7Sjsg struct intel_gt_coredump *
3011bb76ff1Sjsg intel_gt_coredump_alloc(struct intel_gt *gt, gfp_t gfp, u32 dump_flags);
302c349dbc7Sjsg
303c349dbc7Sjsg struct intel_engine_coredump *
3041bb76ff1Sjsg intel_engine_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp, u32 dump_flags);
305c349dbc7Sjsg
306c349dbc7Sjsg struct intel_engine_capture_vma *
307c349dbc7Sjsg intel_engine_coredump_add_request(struct intel_engine_coredump *ee,
308c349dbc7Sjsg struct i915_request *rq,
309c349dbc7Sjsg gfp_t gfp);
310c349dbc7Sjsg
311c349dbc7Sjsg void intel_engine_coredump_add_vma(struct intel_engine_coredump *ee,
312c349dbc7Sjsg struct intel_engine_capture_vma *capture,
313c349dbc7Sjsg struct i915_vma_compress *compress);
314c349dbc7Sjsg
315c349dbc7Sjsg struct i915_vma_compress *
316c349dbc7Sjsg i915_vma_capture_prepare(struct intel_gt_coredump *gt);
317c349dbc7Sjsg
318c349dbc7Sjsg void i915_vma_capture_finish(struct intel_gt_coredump *gt,
319c349dbc7Sjsg struct i915_vma_compress *compress);
320c349dbc7Sjsg
321c349dbc7Sjsg void i915_error_state_store(struct i915_gpu_coredump *error);
322c349dbc7Sjsg
323c349dbc7Sjsg static inline struct i915_gpu_coredump *
i915_gpu_coredump_get(struct i915_gpu_coredump * gpu)324c349dbc7Sjsg i915_gpu_coredump_get(struct i915_gpu_coredump *gpu)
3257f4dd379Sjsg {
3267f4dd379Sjsg kref_get(&gpu->ref);
3277f4dd379Sjsg return gpu;
3287f4dd379Sjsg }
3297f4dd379Sjsg
330c349dbc7Sjsg ssize_t
331c349dbc7Sjsg i915_gpu_coredump_copy_to_buffer(struct i915_gpu_coredump *error,
332c349dbc7Sjsg char *buf, loff_t offset, size_t count);
333c349dbc7Sjsg
334c349dbc7Sjsg void __i915_gpu_coredump_free(struct kref *kref);
i915_gpu_coredump_put(struct i915_gpu_coredump * gpu)335c349dbc7Sjsg static inline void i915_gpu_coredump_put(struct i915_gpu_coredump *gpu)
3367f4dd379Sjsg {
3377f4dd379Sjsg if (gpu)
338c349dbc7Sjsg kref_put(&gpu->ref, __i915_gpu_coredump_free);
3397f4dd379Sjsg }
3407f4dd379Sjsg
341c349dbc7Sjsg struct i915_gpu_coredump *i915_first_error_state(struct drm_i915_private *i915);
3427f4dd379Sjsg void i915_reset_error_state(struct drm_i915_private *i915);
343c349dbc7Sjsg void i915_disable_error_state(struct drm_i915_private *i915, int err);
3447f4dd379Sjsg
3457f4dd379Sjsg #else
3467f4dd379Sjsg
3471bb76ff1Sjsg __printf(2, 3)
3485ca02815Sjsg static inline void
i915_error_printf(struct drm_i915_error_state_buf * e,const char * f,...)3491bb76ff1Sjsg i915_error_printf(struct drm_i915_error_state_buf *e, const char *f, ...)
3501bb76ff1Sjsg {
3511bb76ff1Sjsg }
3521bb76ff1Sjsg
3531bb76ff1Sjsg static inline void
i915_capture_error_state(struct intel_gt * gt,intel_engine_mask_t engine_mask,u32 dump_flags)3541bb76ff1Sjsg i915_capture_error_state(struct intel_gt *gt, intel_engine_mask_t engine_mask, u32 dump_flags)
3557f4dd379Sjsg {
3567f4dd379Sjsg }
3577f4dd379Sjsg
358c349dbc7Sjsg static inline struct i915_gpu_coredump *
i915_gpu_coredump_alloc(struct drm_i915_private * i915,gfp_t gfp)359c349dbc7Sjsg i915_gpu_coredump_alloc(struct drm_i915_private *i915, gfp_t gfp)
3607f4dd379Sjsg {
3617f4dd379Sjsg return NULL;
3627f4dd379Sjsg }
3637f4dd379Sjsg
364c349dbc7Sjsg static inline struct intel_gt_coredump *
intel_gt_coredump_alloc(struct intel_gt * gt,gfp_t gfp,u32 dump_flags)3651bb76ff1Sjsg intel_gt_coredump_alloc(struct intel_gt *gt, gfp_t gfp, u32 dump_flags)
366c349dbc7Sjsg {
367c349dbc7Sjsg return NULL;
368c349dbc7Sjsg }
369c349dbc7Sjsg
370c349dbc7Sjsg static inline struct intel_engine_coredump *
intel_engine_coredump_alloc(struct intel_engine_cs * engine,gfp_t gfp,u32 dump_flags)3711bb76ff1Sjsg intel_engine_coredump_alloc(struct intel_engine_cs *engine, gfp_t gfp, u32 dump_flags)
372c349dbc7Sjsg {
373c349dbc7Sjsg return NULL;
374c349dbc7Sjsg }
375c349dbc7Sjsg
376c349dbc7Sjsg static inline struct intel_engine_capture_vma *
intel_engine_coredump_add_request(struct intel_engine_coredump * ee,struct i915_request * rq,gfp_t gfp)377c349dbc7Sjsg intel_engine_coredump_add_request(struct intel_engine_coredump *ee,
378c349dbc7Sjsg struct i915_request *rq,
379c349dbc7Sjsg gfp_t gfp)
380c349dbc7Sjsg {
381c349dbc7Sjsg return NULL;
382c349dbc7Sjsg }
383c349dbc7Sjsg
384c349dbc7Sjsg static inline void
intel_engine_coredump_add_vma(struct intel_engine_coredump * ee,struct intel_engine_capture_vma * capture,struct i915_vma_compress * compress)385c349dbc7Sjsg intel_engine_coredump_add_vma(struct intel_engine_coredump *ee,
386c349dbc7Sjsg struct intel_engine_capture_vma *capture,
387c349dbc7Sjsg struct i915_vma_compress *compress)
388c349dbc7Sjsg {
389c349dbc7Sjsg }
390c349dbc7Sjsg
391c349dbc7Sjsg static inline struct i915_vma_compress *
i915_vma_capture_prepare(struct intel_gt_coredump * gt)392c349dbc7Sjsg i915_vma_capture_prepare(struct intel_gt_coredump *gt)
393c349dbc7Sjsg {
394c349dbc7Sjsg return NULL;
395c349dbc7Sjsg }
396c349dbc7Sjsg
397c349dbc7Sjsg static inline void
i915_vma_capture_finish(struct intel_gt_coredump * gt,struct i915_vma_compress * compress)398c349dbc7Sjsg i915_vma_capture_finish(struct intel_gt_coredump *gt,
399c349dbc7Sjsg struct i915_vma_compress *compress)
400c349dbc7Sjsg {
401c349dbc7Sjsg }
402c349dbc7Sjsg
403c349dbc7Sjsg static inline void
i915_error_state_store(struct i915_gpu_coredump * error)404c349dbc7Sjsg i915_error_state_store(struct i915_gpu_coredump *error)
405c349dbc7Sjsg {
406c349dbc7Sjsg }
407c349dbc7Sjsg
i915_gpu_coredump_put(struct i915_gpu_coredump * gpu)408c349dbc7Sjsg static inline void i915_gpu_coredump_put(struct i915_gpu_coredump *gpu)
409c349dbc7Sjsg {
410c349dbc7Sjsg }
411c349dbc7Sjsg
412c349dbc7Sjsg static inline struct i915_gpu_coredump *
i915_first_error_state(struct drm_i915_private * i915)413c349dbc7Sjsg i915_first_error_state(struct drm_i915_private *i915)
414c349dbc7Sjsg {
415c349dbc7Sjsg return ERR_PTR(-ENODEV);
416c349dbc7Sjsg }
417c349dbc7Sjsg
i915_reset_error_state(struct drm_i915_private * i915)4187f4dd379Sjsg static inline void i915_reset_error_state(struct drm_i915_private *i915)
4197f4dd379Sjsg {
4207f4dd379Sjsg }
4217f4dd379Sjsg
i915_disable_error_state(struct drm_i915_private * i915,int err)422c349dbc7Sjsg static inline void i915_disable_error_state(struct drm_i915_private *i915,
423c349dbc7Sjsg int err)
424c349dbc7Sjsg {
425c349dbc7Sjsg }
426c349dbc7Sjsg
4277f4dd379Sjsg #endif /* IS_ENABLED(CONFIG_DRM_I915_CAPTURE_ERROR) */
4287f4dd379Sjsg
4297f4dd379Sjsg #endif /* _I915_GPU_ERROR_H_ */
430