[Intel-gfx] [PATCH v2] drm/i915: Convert i915_reset.c over to using uncore mmio

Chris Wilson chris at chris-wilson.co.uk
Fri Apr 5 20:43:30 UTC 2019


Quoting Lucas De Marchi (2019-04-05 21:39:46)
> On Fri, Apr 5, 2019 at 1:24 PM Chris Wilson <chris at chris-wilson.co.uk> wrote:
> >
> > Currently i915_reset.c mixes calls to intel_uncore, pci and our old
> > style I915_READ mmio interfaces. Cast aside the old implicit macros,
> > and harmonise on using uncore throughout.
> >
> > add/remove: 1/1 grow/shrink: 0/4 up/down: 65/-207 (-142)
> > Function                                     old     new   delta
> > rmw_register                                   -      65     +65
> > gen8_reset_engines                           945     942      -3
> > g4x_do_reset                                 407     376     -31
> > intel_gpu_reset                              545     509     -36
> > clear_register                                63       -     -63
> > i915_clear_error_registers                   461     387     -74
> >
> > A little bit of pointer dancing elimination works wonders.
> >
> > v2: Roll up the helpers into intel_uncore for general use
> >
> > With the helpers gcc was a little more eager to inline:
> > add/remove: 0/1 grow/shrink: 1/3 up/down: 99/-133 (-34)
> > Function                                     old     new   delta
> > i915_clear_error_registers                   461     560     +99
> > gen8_reset_engines                           945     942      -3
> > g4x_do_reset                                 407     376     -31
> > intel_gpu_reset                              545     509     -36
> > clear_register                                63       -     -63
> > Total: Before=1544400, After=1544366, chg -0.00%
> >
> > Win some, lose some, gcc is gcc.
> >
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
> > Cc: Paulo Zanoni <paulo.r.zanoni at intel.com>
> > Reviewed-by: Paulo Zanoni <paulo.r.zanoni at intel.com>
> > ---
> >  drivers/gpu/drm/i915/i915_reset.c   | 122 ++++++++++++++++------------
> >  drivers/gpu/drm/i915/intel_uncore.h |  23 +++++-
> >  2 files changed, 89 insertions(+), 56 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_reset.c b/drivers/gpu/drm/i915/i915_reset.c
> > index d44dc8422e8c..ac168de6a66e 100644
> > --- a/drivers/gpu/drm/i915/i915_reset.c
> > +++ b/drivers/gpu/drm/i915/i915_reset.c
> > @@ -18,6 +18,26 @@
> >  /* XXX How to handle concurrent GGTT updates using tiling registers? */
> >  #define RESET_UNDER_STOP_MACHINE 0
> >
> > +static void rmw_set(struct intel_uncore *uncore, i915_reg_t reg, u32 set)
> > +{
> > +       intel_uncore_rmw(uncore, reg, 0, set);
> > +}
> > +
> > +static void rmw_clear(struct intel_uncore *uncore, i915_reg_t reg, u32 clr)
> > +{
> > +       intel_uncore_rmw(uncore, reg, clr, 0);
> > +}
> > +
> > +static void rwm_set_fw(struct intel_uncore *uncore, i915_reg_t reg, u32 set)
> 
> rwm?!?

read, write, then modify. It's when you have that senior moment and
enter a room forgetting why.
-Chris


More information about the Intel-gfx mailing list