[Intel-gfx] [PATCH 03/15] drm/i915/gt: Use caller provided forcewake for intel_mocs_init_engine
Chris Wilson
chris at chris-wilson.co.uk
Wed Jul 3 11:47:05 UTC 2019
Quoting Tvrtko Ursulin (2019-07-03 12:23:52)
>
> On 03/07/2019 10:17, Chris Wilson wrote:
> > During post-reset resume, we call intel_mocs_init_engine to reinitialise
> > the MOCS registers. Suprisingly, especially when enhanced by lockdep,
> > the acquisition of the forcewake lock around each register write takes a
> > substantial portion of the reset time. We don't need to use the
> > individual forcewake here as we can assume that the caller is holding a
> > blanket forcewake for the reset&resume and the resume is serialised.
> >
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > ---
> > drivers/gpu/drm/i915/gt/intel_mocs.c | 15 +++++++++------
> > 1 file changed, 9 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gt/intel_mocs.c b/drivers/gpu/drm/i915/gt/intel_mocs.c
> > index ae6cbf0d517c..290a5e9b90b9 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_mocs.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_mocs.c
> > @@ -346,6 +346,9 @@ void intel_mocs_init_engine(struct intel_engine_cs *engine)
> > unsigned int index;
> > u32 unused_value;
> >
> > + /* Called under a blanket forcewake */
> > + assert_forcewakes_active(uncore, FORCEWAKE_ALL);
> > +
>
> Assert is strictly speaking a bit weak since forcewake status can
> theoretically change until the actual access below. But in our current
> code we indeed hold it for the whole reset.
You want to distinguish between an explicit hold by the caller and the
auto.
> I don't have any actual ideas on how to fundamentally improve the
> assert. Thought to have it after the writes is the only thing which came
> to mind. Thoughts?
I definitely prefer having it upfront to document the function
preconditions, and so would prefer if the assert actually did assert an
explicit forcewake as it is meant to do :)
-Chris
More information about the Intel-gfx
mailing list