mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-25 23:15:26 +07:00
452420d22d
Convert the per context workaround handling code to run against the newly introduced common workaround framework and fuse the two to use the existing smarter list add helper, the one which does the sorted insert and merges registers where possible. This completes migration of all four classes of workarounds onto the common framework. Existing macros are kept untouched for smaller code churn. v2: * Rename to list name ctx_wa_list and move from dev_priv to engine. v3: * API rename and parameters tweaking. (Chris Wilson) Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Link: https://patchwork.freedesktop.org/patch/msgid/20181203133357.10341-1-tvrtko.ursulin@linux.intel.com
46 lines
1.1 KiB
C
46 lines
1.1 KiB
C
/*
|
|
* SPDX-License-Identifier: MIT
|
|
*
|
|
* Copyright © 2014-2018 Intel Corporation
|
|
*/
|
|
|
|
#ifndef _I915_WORKAROUNDS_H_
|
|
#define _I915_WORKAROUNDS_H_
|
|
|
|
#include <linux/slab.h>
|
|
|
|
struct i915_wa {
|
|
i915_reg_t reg;
|
|
u32 mask;
|
|
u32 val;
|
|
};
|
|
|
|
struct i915_wa_list {
|
|
const char *name;
|
|
struct i915_wa *list;
|
|
unsigned int count;
|
|
unsigned int wa_count;
|
|
};
|
|
|
|
static inline void intel_wa_list_free(struct i915_wa_list *wal)
|
|
{
|
|
kfree(wal->list);
|
|
memset(wal, 0, sizeof(*wal));
|
|
}
|
|
|
|
void intel_engine_init_ctx_wa(struct intel_engine_cs *engine);
|
|
int intel_engine_emit_ctx_wa(struct i915_request *rq);
|
|
|
|
void intel_gt_init_workarounds(struct drm_i915_private *dev_priv);
|
|
void intel_gt_apply_workarounds(struct drm_i915_private *dev_priv);
|
|
bool intel_gt_verify_workarounds(struct drm_i915_private *dev_priv,
|
|
const char *from);
|
|
|
|
void intel_engine_init_whitelist(struct intel_engine_cs *engine);
|
|
void intel_engine_apply_whitelist(struct intel_engine_cs *engine);
|
|
|
|
void intel_engine_init_workarounds(struct intel_engine_cs *engine);
|
|
void intel_engine_apply_workarounds(struct intel_engine_cs *engine);
|
|
|
|
#endif
|