[Intel-gfx] [PATCH 6/9] drm/i915: Disable waitboosting for fence_wait()

Chris Wilson chris at chris-wilson.co.uk
Fri Jul 15 11:06:20 UTC 2016


On Fri, Jul 15, 2016 at 01:49:44PM +0300, Mika Kuoppala wrote:
> Chris Wilson <chris at chris-wilson.co.uk> writes:
> 
> > We want to restrict waitboosting to known process contexts, where we can
> > track which clients are receiving waitboosts and prevent excessive power
> > wasting. For fence_wait() we do not have any client tracking and so that
> > leaves it open to abuse.
> >
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > ---
> >  drivers/gpu/drm/i915/i915_gem_request.c | 7 ++++---
> >  drivers/gpu/drm/i915/i915_gem_request.h | 1 +
> >  2 files changed, 5 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_gem_request.c b/drivers/gpu/drm/i915/i915_gem_request.c
> > index 6528536878f2..bfec4a88707d 100644
> > --- a/drivers/gpu/drm/i915/i915_gem_request.c
> > +++ b/drivers/gpu/drm/i915/i915_gem_request.c
> > @@ -70,7 +70,7 @@ static signed long i915_fence_wait(struct fence *fence,
> >  
> >  	ret = __i915_wait_request(to_request(fence),
> >  				  interruptible, timeout,
> > -				  NULL);
> > +				  NO_WAITBOOST);
> >  	if (ret == -ETIME)
> >  		return 0;
> >  
> > @@ -642,7 +642,7 @@ int __i915_wait_request(struct drm_i915_gem_request *req,
> >  	 * forcing the clocks too high for the whole system, we only allow
> >  	 * each client to waitboost once in a busy period.
> >  	 */
> > -	if (INTEL_GEN(req->i915) >= 6)
> > +	if (!IS_ERR(rps) && INTEL_GEN(req->i915) >= 6)
> >  		gen6_rps_boost(req->i915, rps, req->emitted_jiffies);
> >
> 
> The intention here is to boost even if rps client is NULL?
> Assuming so could you elaborate why.

Yes, NULL is the kernel request for rps boosting, not associated with
any client (and may be affecting multiple clients at any one time).
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the Intel-gfx mailing list