On Wed, 2017-10-11 at 11:15 -0700, Oscar Mateo wrote:
> By doing this, we can dump these workarounds in debugfs for
> validation (which,
> at the moment, we are only able to do for the contexts WAs).
>
> v2:
> - Wrong macro used for MMIO set bit masked
> - Improved naming
> - Rebased
>
> Signed-off-by: Oscar Mateo <[email protected]>
> Cc: Chris Wilson <[email protected]>
> Cc: Mika Kuoppala <[email protected]>
<SNIP>
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1960,12 +1960,16 @@ struct i915_wa_reg {
> u32 mask;
> };
>
> -#define I915_MAX_WA_REGS 16
> +#define I915_MAX_CTX_WA_REGS 16
> +#define I915_MAX_MMIO_WA_REGS 32
>
> struct i915_workarounds {
> - struct i915_wa_reg ctx_wa_reg[I915_MAX_WA_REGS];
> + struct i915_wa_reg ctx_wa_reg[I915_MAX_CTX_WA_REGS];
> u32 ctx_wa_count;
>
> + struct i915_wa_reg mmio_wa_reg[I915_MAX_MMIO_WA_REGS];
> + u32 mmio_wa_count;
> +
> u32 hw_whitelist_count[I915_NUM_ENGINES];
> };
Could we instead consider a constant structure with platform bitmasks?
If that's not dynamic enough, then a bitmap which is initialized by the
platform bitmasks as a default. So instead of running code to add to
list, make it bit more declarative. Pseudo-code;
struct i915_workaround {
u16 gen_mask;
enum {
I915_WA_CTX,
I915_WA_MMIO,
I915_WA_WHITELIST,
} type;
u32 reg;
}
... elsewhere in .c file
static const struct i915_workaround i915_workarounds[] = { {
/* WaSomethingSomewhereUMDFoo:skl */
.gen_mask = INTEL_GEN_MASK(X, Y),
.type = I915_WA_CTX,
.reg = ...
} };
Regards, Joonas
--
Joonas Lahtinen
Open Source Technology Center
Intel Corporation
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx