[Intel-gfx] [PATCH 07/19] drm/i915/icl: Mind the SFC units when resetting VD or VEBox engines

Chris Wilson chris at chris-wilson.co.uk
Thu Dec 13 09:13:05 UTC 2018


Quoting Tvrtko Ursulin (2018-12-12 14:36:27)
> 
> On 12/12/2018 13:41, Chris Wilson wrote:
> > diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> > index 9289515108c3..408692b88c98 100644
> > --- a/drivers/gpu/drm/i915/intel_uncore.c
> > +++ b/drivers/gpu/drm/i915/intel_uncore.c
> > @@ -1931,6 +1931,103 @@ static int gen6_reset_engines(struct drm_i915_private *dev_priv,
> >       return gen6_hw_domain_reset(dev_priv, hw_mask);
> >   }
> >   
> > +static u32 gen11_lock_sfc(struct drm_i915_private *dev_priv,
> > +                       struct intel_engine_cs *engine)
> > +{
> > +     u8 vdbox_sfc_access = INTEL_INFO(dev_priv)->vdbox_sfc_access;
> 
> Only a single use site so could get away with a local copy.
> 
> > +     i915_reg_t sfc_forced_lock, sfc_forced_lock_ack;
> > +     u32 sfc_forced_lock_bit, sfc_forced_lock_ack_bit;
> > +     i915_reg_t sfc_usage;
> > +     u32 sfc_usage_bit;
> > +     u32 sfc_reset_bit;
> > +
> > +     switch (engine->class) {
> > +     case VIDEO_DECODE_CLASS:
> > +             if ((BIT(engine->instance) & vdbox_sfc_access) == 0)
> > +                     return 0;

I presume you meant instead of vdbox_sfc_access here. Doesn't fit nicely
without using a local for engine->instance instead (which isn't bad as
it is repeated here) but then we lose the symmetry with unlock.

I tried a few different ways (though without much imagination) to try
and share the definitions between lock_sfc/unlock_sfc but didn't like
any of them more than the repetition. So I left this chunk as it is.
-Chris


More information about the Intel-gfx mailing list