On Fri, Aug 26, 2022 at 02:02:33PM -0700, Matt Roper wrote: > This reverts commit ca6920811aa5428270dd78af0a7a36b10119065a. > > The intent of Wa_14015141709 was to inform us that userspace can no > longer control object-level preemption as it has on past platforms > (i.e., by twiddling register bit CS_CHICKEN1[0]). The description of > the workaround in the spec wasn't terribly well-written, and when we > requested clarification from the hardware teams we were told that on the > kernel side we should also probably stop setting > FF_SLICE_CS_CHICKEN1[14], which is the register bit that directs the > hardware to honor the settings in per-context register CS_CHICKEN1. It > turns out that this guidance about FF_SLICE_CS_CHICKEN1[14] was a > mistake; even though CS_CHICKEN1[0] is non-operational and useless to > userspace, there are other bits in the register that do still work and > might need to be adjusted by userspace in the future (e.g., to implement > other workarounds that show up). If we don't set > FF_SLICE_CS_CHICKEN1[14] in i915, then those future workarounds would > not take effect. > > This miscommunication came to light because another workaround > (Wa_16013994831) has now shown up that requires userspace to adjust the > value of CS_CHICKEN[10] in certain circumstances. To ensure userspace's > updates to this chicken bit are handled properly by the hardware, we > need to make sure that FF_SLICE_CS_CHICKEN1[14] is once again set by the > kernel. > Reviewed-by: Matt Atwood <matthew.s.atwood@xxxxxxxxx> > Signed-off-by: Matt Roper <matthew.d.roper@xxxxxxxxx> > --- > drivers/gpu/drm/i915/gt/intel_workarounds.c | 2 +- > drivers/gpu/drm/i915/i915_drv.h | 3 --- > 2 files changed, 1 insertion(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c > index 3cdb8294e13f..69a0c6a74474 100644 > --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c > +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c > @@ -2389,7 +2389,7 @@ rcs_engine_wa_init(struct intel_engine_cs *engine, struct i915_wa_list *wal) > FF_DOP_CLOCK_GATE_DISABLE); > } > > - if (HAS_PERCTX_PREEMPT_CTRL(i915)) { > + if (IS_GRAPHICS_VER(i915, 9, 12)) { > /* FtrPerCtxtPreemptionGranularityControl:skl,bxt,kbl,cfl,cnl,icl,tgl */ > wa_masked_en(wal, > GEN7_FF_SLICE_CS_CHICKEN1, > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index 2b00ef3626db..d6a1ab6f65de 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -1352,9 +1352,6 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915, > #define HAS_GUC_DEPRIVILEGE(dev_priv) \ > (INTEL_INFO(dev_priv)->has_guc_deprivilege) > > -#define HAS_PERCTX_PREEMPT_CTRL(i915) \ > - ((GRAPHICS_VER(i915) >= 9) && GRAPHICS_VER_FULL(i915) < IP_VER(12, 55)) > - > #define HAS_D12_PLANE_MINIMIZATION(dev_priv) (IS_ROCKETLAKE(dev_priv) || \ > IS_ALDERLAKE_S(dev_priv)) > > -- > 2.37.2 >