0001
0002
0003
0004
0005
0006 #ifndef _INTEL_WORKAROUNDS_H_
0007 #define _INTEL_WORKAROUNDS_H_
0008
0009 #include <linux/slab.h>
0010
0011 #include "intel_workarounds_types.h"
0012
0013 struct drm_i915_private;
0014 struct i915_request;
0015 struct intel_engine_cs;
0016 struct intel_gt;
0017
0018 static inline void intel_wa_list_free(struct i915_wa_list *wal)
0019 {
0020 kfree(wal->list);
0021 memset(wal, 0, sizeof(*wal));
0022 }
0023
0024 void intel_engine_init_ctx_wa(struct intel_engine_cs *engine);
0025 int intel_engine_emit_ctx_wa(struct i915_request *rq);
0026
0027 void intel_gt_init_workarounds(struct intel_gt *gt);
0028 void intel_gt_apply_workarounds(struct intel_gt *gt);
0029 bool intel_gt_verify_workarounds(struct intel_gt *gt, const char *from);
0030
0031 void intel_engine_init_whitelist(struct intel_engine_cs *engine);
0032 void intel_engine_apply_whitelist(struct intel_engine_cs *engine);
0033
0034 void intel_engine_init_workarounds(struct intel_engine_cs *engine);
0035 void intel_engine_apply_workarounds(struct intel_engine_cs *engine);
0036 int intel_engine_verify_workarounds(struct intel_engine_cs *engine,
0037 const char *from);
0038
0039 #endif