[Intel-gfx] [v2] drm/i915/gen11: Moving WAs to icl_gt_workarounds_init()
Matt Roper
matthew.d.roper at intel.com
Sat Dec 11 01:22:54 UTC 2021
On Thu, Dec 09, 2021 at 09:21:39AM -0800, Lucas De Marchi wrote:
> On Fri, Dec 03, 2021 at 08:26:03PM +0530, ravitejax.goud.talla at intel.com wrote:
> > From: Raviteja Goud Talla <ravitejax.goud.talla at intel.com>
> >
> > Bspec page says "Reset: BUS", Accordingly moving w/a's:
> > Wa_1407352427,Wa_1406680159 to proper function icl_gt_workarounds_init()
> > Which will resolve guc enabling error
> >
> > v2:
> > - Previous patch rev2 was created by email client which caused the
> > Build failure, This v2 is to resolve the previous broken series
> >
> > Reviewed-by: John Harrison <John.C.Harrison at Intel.com>
> > Signed-off-by: Raviteja Goud Talla <ravitejax.goud.talla at intel.com>
>
> It seems like this patch is needed to be able to load GuC in ICL:
> https://gitlab.freedesktop.org/drm/intel/-/issues/4067#note_1184951
>
> And that is failing on Linus' master branch as of
> 2a987e65025e ("Merge tag 'perf-tools-fixes-for-v5.16-2021-12-07' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux")
> and (at least) 5.15.*. Looking at the appropriate "Fixes" tag I found these commits:
>
> 1) 1cd21a7c5679 ("drm/i915: Add Wa_1407352427:icl,ehl") - original
> commit adding the WA
> 2) 3551ff928744 ("drm/i915/gen11: Moving WAs to rcs_engine_wa_init()")
> moving the WA to rcs_engine_wa_init()
>
> However (2) is on v5.7-rc1 and (1) is on v5.6-rc1 and according to the
> bug report GuC loading was working on 5.13. So I suspect the move
> to GuC 62.0.0 made the checks more strict, or there is another patch
This is correct. Having "GT workarounds" on the engine list by accident
used to be harmless (because i915 [with execlist submission] and the guc
[with guc submission]) would simply re-apply the register setting more
often than it really needed to. However the more recent GuC versions
have become more picky about the set of registers they're willing to
save/restore for workarounds and will fail to load if they see a
register on the save/restore list that isn't something they think is
appropriate for an engine reset.
GuC submission isn't officially supported on ICL; you can force it via
module parameter, which taints the kernel and takes you through untested
codepaths, so you do so at your own risk. Given that, I don't think
there's any real need to worry about getting this backported to specific
stable kernels; having the workaround in the wrong place doesn't
actually harm anything on the official and default non-GuC mode.
Matt
> that paired with that one makes load fail to load.
>
> Anyway, it seems that commit is the one to fix and we probably need to
> bring both moves to stable (5.15.y and 5.10.y ?), besides propagating
> it to drm-intel-fixes so it applies to 5.16
>
> Cc'ing some more people.
>
>
> Lucas De Marchi
>
>
>
>
> > ---
> > drivers/gpu/drm/i915/gt/intel_workarounds.c | 18 +++++++++---------
> > 1 file changed, 9 insertions(+), 9 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> > index c3211325c2d3..3113266c286e 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> > @@ -1224,6 +1224,15 @@ icl_gt_workarounds_init(struct intel_gt *gt, struct i915_wa_list *wal)
> > GAMT_CHKN_BIT_REG,
> > GAMT_CHKN_DISABLE_L3_COH_PIPE);
> >
> > + /* Wa_1407352427:icl,ehl */
> > + wa_write_or(wal, UNSLICE_UNIT_LEVEL_CLKGATE2,
> > + PSDUNIT_CLKGATE_DIS);
> > +
> > + /* Wa_1406680159:icl,ehl */
> > + wa_write_or(wal,
> > + SUBSLICE_UNIT_LEVEL_CLKGATE,
> > + GWUNIT_CLKGATE_DIS);
> > +
> > /* Wa_1607087056:icl,ehl,jsl */
> > if (IS_ICELAKE(i915) ||
> > IS_JSL_EHL_GRAPHICS_STEP(i915, STEP_A0, STEP_B0))
> > @@ -2269,15 +2278,6 @@ rcs_engine_wa_init(struct intel_engine_cs *engine, struct i915_wa_list *wal)
> > wa_write_or(wal, UNSLICE_UNIT_LEVEL_CLKGATE,
> > VSUNIT_CLKGATE_DIS | HSUNIT_CLKGATE_DIS);
> >
> > - /* Wa_1407352427:icl,ehl */
> > - wa_write_or(wal, UNSLICE_UNIT_LEVEL_CLKGATE2,
> > - PSDUNIT_CLKGATE_DIS);
> > -
> > - /* Wa_1406680159:icl,ehl */
> > - wa_write_or(wal,
> > - SUBSLICE_UNIT_LEVEL_CLKGATE,
> > - GWUNIT_CLKGATE_DIS);
> > -
> > /*
> > * Wa_1408767742:icl[a2..forever],ehl[all]
> > * Wa_1605460711:icl[a0..c0]
> > --
> > 2.34.1
> >
--
Matt Roper
Graphics Software Engineer
VTT-OSGC Platform Enablement
Intel Corporation
(916) 356-2795
More information about the Intel-gfx
mailing list