[Intel-gfx] [RFC 1/4] drm/i915: split out uncore_mmio_debug

Chris Wilson chris at chris-wilson.co.uk
Wed Jun 26 17:58:18 UTC 2019


Quoting Daniele Ceraolo Spurio (2019-06-26 18:38:45)
> 
> 
> On 6/26/19 3:02 AM, Chris Wilson wrote:
> > Quoting Daniele Ceraolo Spurio (2019-06-24 21:31:49)
> >> @@ -605,18 +614,20 @@ void intel_uncore_forcewake_get(struct intel_uncore *uncore,
> >>   void intel_uncore_forcewake_user_get(struct intel_uncore *uncore)
> >>   {
> >>          spin_lock_irq(&uncore->lock);
> >> +       spin_lock(&uncore->debug->lock);
> >>          if (!uncore->user_forcewake.count++) {
> > 
> > Afaict, uncore->user_forcewake.count is only guarded by uncore->lock
> > and we only need to take debug->lock for the debug->unclaimed_mmio_check
> > manipulation. But there needs to be a shared usage counter around the
> > debug as it is shared state.
> > 
> >>                  intel_uncore_forcewake_get__locked(uncore, FORCEWAKE_ALL);
> >>   
> >>                  /* Save and disable mmio debugging for the user bypass */
> >>                  uncore->user_forcewake.saved_mmio_check =
> >> -                       uncore->unclaimed_mmio_check;
> >> +                       uncore->debug->unclaimed_mmio_check;
> >>                  uncore->user_forcewake.saved_mmio_debug =
> >>                          i915_modparams.mmio_debug;
> > 
> > Something more like
> > 
> > spin_lock_irq(&uncore->lock);
> > if (!uncore->user_forcewake_count++) {
> >       spin_lock(&uncore->debug->lock);
> >       if (!uncore->debug->usage_count++) {
> >               ...
> >       }
> >       spin_unlock(&uncore->debug->lock);
> > }
> > ...
> > spin_unlock_irq(&uncore->lock);
> > ?
> > -Chris
> > 
> 
> I do something similar in the next patch in the series (with the lock 
> still on the outside of the if). I've split that out because I've added 
> some functional changes to the flow. I can squash the 2 patches if you 
> thing it is better that way.

Yes. Looking at the second patch, that is clearer wrt what data we are
guarding with the locks.

Don't drop the intel_ prefix from intel_uncore_debug as it looks to
still be visible outside of its enclave (it's getting long, but it should
be more or less internal to the various intel_uncore implementations) and
squash these 2 as I feel more comfortable with intel_uncore_debug taking
control of the locking as required for sharing and reviewing the locking
wrt to the shared data.
-Chris


More information about the Intel-gfx mailing list