1/* SPDX-License-Identifier: MIT */
2/*
3 * Copyright �� 2014-2018 Intel Corporation
4 */
5
6#ifndef _INTEL_WORKAROUNDS_H_
7#define _INTEL_WORKAROUNDS_H_
8
9#include <linux/slab.h>
10
11#include "intel_workarounds_types.h"
12
13struct drm_i915_private;
14struct i915_request;
15struct intel_engine_cs;
16struct intel_gt;
17
18static inline void intel_wa_list_free(struct i915_wa_list *wal)
19{
20	kfree(wal->list);
21	memset(wal, 0, sizeof(*wal));
22}
23
24void intel_engine_init_ctx_wa(struct intel_engine_cs *engine);
25int intel_engine_emit_ctx_wa(struct i915_request *rq);
26
27void intel_gt_init_workarounds(struct intel_gt *gt);
28void intel_gt_apply_workarounds(struct intel_gt *gt);
29bool intel_gt_verify_workarounds(struct intel_gt *gt, const char *from);
30
31void intel_engine_init_whitelist(struct intel_engine_cs *engine);
32void intel_engine_apply_whitelist(struct intel_engine_cs *engine);
33
34void intel_engine_init_workarounds(struct intel_engine_cs *engine);
35void intel_engine_apply_workarounds(struct intel_engine_cs *engine);
36int intel_engine_verify_workarounds(struct intel_engine_cs *engine,
37				    const char *from);
38
39#endif
40