On Tue, Jan 17, 2023 at 12:26:27PM -0800, Matt Roper wrote: > The implementation of Wa_22011450934 introduced three new register > definitions in i915_reg.h that didn't get moved to the GT/engine > register headers when all the other registers moved; let's move them to > the appropriate headers and tidy up their definitions now for > consistency: > > - STATE_ACK_DEBUG is moved to the engine register header and converted > to a parameterized definition; the workaround only needs the RCS > instance to be programmed, but there are instances on other engines > that could be used by other workarounds in the future. > > - The two CULLBIT registers move to the GT register header. Since > they belong to MMIO ranges that became MCR starting with Xe_HP, > their definitions should be defined as MCR_REG() and use an Xe_HP > prefix to keep the register semantics clear. > > Note that the MCR definition is just for consistency and to prevent > accidental misuse if other workarounds related to these registers show > up in the future. There's no functional change to today's driver since > the workaround that references these registers only accesses them via > MI_LRR engine instructions. Engine-initiated register accesses do not > utilize the same same steering controls as CPU-initiated accesses; they > use a different steering control register (0x20CC) which is initialized > to a non-terminated DSS target by pre-OS firmware and never changed > thereafter (i915 does not touch it and userspace does not have > permission to change that register). > > Signed-off-by: Matt Roper <matthew.d.roper@xxxxxxxxx> Reviewed-by: Gustavo Sousa <gustavo.sousa@xxxxxxxxx> > --- > drivers/gpu/drm/i915/gt/intel_engine_regs.h | 1 + > drivers/gpu/drm/i915/gt/intel_gt_regs.h | 4 ++++ > drivers/gpu/drm/i915/gt/intel_lrc.c | 6 +++--- > drivers/gpu/drm/i915/i915_reg.h | 4 ---- > 4 files changed, 8 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gt/intel_engine_regs.h b/drivers/gpu/drm/i915/gt/intel_engine_regs.h > index ee3efd06ee54..6b9d9f837669 100644 > --- a/drivers/gpu/drm/i915/gt/intel_engine_regs.h > +++ b/drivers/gpu/drm/i915/gt/intel_engine_regs.h > @@ -81,6 +81,7 @@ > #define RING_EIR(base) _MMIO((base) + 0xb0) > #define RING_EMR(base) _MMIO((base) + 0xb4) > #define RING_ESR(base) _MMIO((base) + 0xb8) > +#define GEN12_STATE_ACK_DEBUG(base) _MMIO((base) + 0xbc) > #define RING_INSTPM(base) _MMIO((base) + 0xc0) > #define RING_CMD_CCTL(base) _MMIO((base) + 0xc4) > #define ACTHD(base) _MMIO((base) + 0xc8) > diff --git a/drivers/gpu/drm/i915/gt/intel_gt_regs.h b/drivers/gpu/drm/i915/gt/intel_gt_regs.h > index 4f5c06d60bcd..4a4bab261e66 100644 > --- a/drivers/gpu/drm/i915/gt/intel_gt_regs.h > +++ b/drivers/gpu/drm/i915/gt/intel_gt_regs.h > @@ -407,6 +407,8 @@ > #define GEN9_WM_CHICKEN3 _MMIO(0x5588) > #define GEN9_FACTOR_IN_CLR_VAL_HIZ (1 << 9) > > +#define XEHP_CULLBIT1 MCR_REG(0x6100) > + > #define CHICKEN_RASTER_1 MCR_REG(0x6204) > #define DIS_SF_ROUND_NEAREST_EVEN REG_BIT(8) > > @@ -457,6 +459,8 @@ > #define HZ_DEPTH_TEST_LE_GE_OPT_DISABLE REG_BIT(13) > #define BDW_HIZ_POWER_COMPILER_CLOCK_GATING_DISABLE REG_BIT(3) > > +#define XEHP_CULLBIT2 MCR_REG(0x7030) > + > #define GEN8_L3CNTLREG _MMIO(0x7034) > #define GEN8_ERRDETBCTRL (1 << 9) > > diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c > index 7771a19008c6..1dffe392b95c 100644 > --- a/drivers/gpu/drm/i915/gt/intel_lrc.c > +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c > @@ -1351,16 +1351,16 @@ static u32 * > dg2_emit_rcs_hang_wabb(const struct intel_context *ce, u32 *cs) > { > *cs++ = MI_LOAD_REGISTER_IMM(1); > - *cs++ = i915_mmio_reg_offset(GEN12_STATE_ACK_DEBUG); > + *cs++ = i915_mmio_reg_offset(GEN12_STATE_ACK_DEBUG(ce->engine->mmio_base)); > *cs++ = 0x21; > > *cs++ = MI_LOAD_REGISTER_REG; > *cs++ = i915_mmio_reg_offset(RING_NOPID(ce->engine->mmio_base)); > - *cs++ = i915_mmio_reg_offset(GEN12_CULLBIT1); > + *cs++ = i915_mmio_reg_offset(XEHP_CULLBIT1); > > *cs++ = MI_LOAD_REGISTER_REG; > *cs++ = i915_mmio_reg_offset(RING_NOPID(ce->engine->mmio_base)); > - *cs++ = i915_mmio_reg_offset(GEN12_CULLBIT2); > + *cs++ = i915_mmio_reg_offset(XEHP_CULLBIT2); > > return cs; > } > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h > index 8b2cf980f323..d30443f06bdd 100644 > --- a/drivers/gpu/drm/i915/i915_reg.h > +++ b/drivers/gpu/drm/i915/i915_reg.h > @@ -8113,10 +8113,6 @@ enum skl_power_gate { > #define CLKGATE_DIS_MISC _MMIO(0x46534) > #define CLKGATE_DIS_MISC_DMASC_GATING_DIS REG_BIT(21) > > -#define GEN12_CULLBIT1 _MMIO(0x6100) > -#define GEN12_CULLBIT2 _MMIO(0x7030) > -#define GEN12_STATE_ACK_DEBUG _MMIO(0x20BC) > - > #define _MTL_CLKGATE_DIS_TRANS_A 0x604E8 > #define _MTL_CLKGATE_DIS_TRANS_B 0x614E8 > #define MTL_CLKGATE_DIS_TRANS(trans) _MMIO_TRANS2(trans, _MTL_CLKGATE_DIS_TRANS_A) > -- > 2.39.0 >