1112ed2d3SChris Wilson /* 2112ed2d3SChris Wilson * SPDX-License-Identifier: MIT 3112ed2d3SChris Wilson * 4112ed2d3SChris Wilson * Copyright © 2014-2018 Intel Corporation 5112ed2d3SChris Wilson */ 6112ed2d3SChris Wilson 7112ed2d3SChris Wilson #ifndef _INTEL_WORKAROUNDS_H_ 8112ed2d3SChris Wilson #define _INTEL_WORKAROUNDS_H_ 9112ed2d3SChris Wilson 10112ed2d3SChris Wilson #include <linux/slab.h> 11112ed2d3SChris Wilson 12112ed2d3SChris Wilson #include "intel_workarounds_types.h" 13112ed2d3SChris Wilson 14112ed2d3SChris Wilson struct drm_i915_private; 15112ed2d3SChris Wilson struct i915_request; 16112ed2d3SChris Wilson struct intel_engine_cs; 17d10cfee4STvrtko Ursulin struct intel_gt; 18112ed2d3SChris Wilson 19112ed2d3SChris Wilson static inline void intel_wa_list_free(struct i915_wa_list *wal) 20112ed2d3SChris Wilson { 21112ed2d3SChris Wilson kfree(wal->list); 22112ed2d3SChris Wilson memset(wal, 0, sizeof(*wal)); 23112ed2d3SChris Wilson } 24112ed2d3SChris Wilson 25112ed2d3SChris Wilson void intel_engine_init_ctx_wa(struct intel_engine_cs *engine); 26112ed2d3SChris Wilson int intel_engine_emit_ctx_wa(struct i915_request *rq); 27112ed2d3SChris Wilson 28112ed2d3SChris Wilson void intel_gt_init_workarounds(struct drm_i915_private *i915); 29d10cfee4STvrtko Ursulin void intel_gt_apply_workarounds(struct intel_gt *gt); 30d10cfee4STvrtko Ursulin bool intel_gt_verify_workarounds(struct intel_gt *gt, const char *from); 31112ed2d3SChris Wilson 32112ed2d3SChris Wilson void intel_engine_init_whitelist(struct intel_engine_cs *engine); 33112ed2d3SChris Wilson void intel_engine_apply_whitelist(struct intel_engine_cs *engine); 34112ed2d3SChris Wilson 35112ed2d3SChris Wilson void intel_engine_init_workarounds(struct intel_engine_cs *engine); 36112ed2d3SChris Wilson void intel_engine_apply_workarounds(struct intel_engine_cs *engine); 37112ed2d3SChris Wilson int intel_engine_verify_workarounds(struct intel_engine_cs *engine, 38112ed2d3SChris Wilson const char *from); 39112ed2d3SChris Wilson 40112ed2d3SChris Wilson #endif 41