[Intel-gfx] PROBLEM: i915 causes complete desktop freezes in 4.15-rc5

Chris Wilson chris at chris-wilson.co.uk
Sat Jan 6 17:34:51 UTC 2018


Quoting Alexandru Chirvasitu (2018-01-06 16:38:35)
> On Sat, Jan 06, 2018 at 08:24:43AM -0500, Alexandru Chirvasitu wrote:
> > Thank you!
> > 
> > I'll apply that more elaborate patch you sent in the longer message to
> > my clone of the repo and see if it still freezes.
> >
> 
> I'm on it now with no freezes yet, despite trying my best :).
> 
> I have a question though:
> 
> > On Sat, Jan 06, 2018 at 10:43:20AM +0000, Chris Wilson wrote:
> > > Quoting Alexandru Chirvasitu (2018-01-05 22:05:18)
> > > > Here we go.
> > > > 
> > > > I have
> > > > 
> > > > CONFIG_PAGE_POISONING not set
> > > > CONFIG_SLUB_STATS=y
> > > > CONFIG_SLUB_DEBUG not set
> > > > CONFIG_KASAN=y
> > > > 
> > > > .config attached along as well for verification, in case I missed
> > > > anything.
> > > > 
> > > > Again crashed by an attempt to open a terminal window.
> > > 
> > > Gotcha,
> > > 
> > > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> > > index b21322b50419..96cf46a10b4e 100644
> > > --- a/drivers/gpu/drm/i915/i915_gem.c
> > > +++ b/drivers/gpu/drm/i915/i915_gem.c
> > > @@ -472,7 +472,7 @@ static void __fence_set_priority(struct dma_fence *fence, int prio)
> > >         struct drm_i915_gem_request *rq;
> > >         struct intel_engine_cs *engine;
> > >  
> > > -       if (!dma_fence_is_i915(fence))
> > > +       if (dma_fence_is_signaled(fence) || !dma_fence_is_i915(fence))
> > >                 return;
> > >  
> > >         rq = to_request(fence);
> 
> I went back to Linus' tree and compared the respective i915_gem.c
> files in the 4.14 and 4.15-rc6 commits. The offending piece of code
> seems to be in both, so I am wondering why I was not getting freezes before 4.15-rc.

Yeah, I debated adding a fixes for commit 6b5e90f58c56
("drm/i915/scheduler: Boost priorities for flips") that introduced this
code, but decided it's just an optimisation at this point and that we
should only regard commit 1f181225f8ec ("drm/i915/execlists: Keep
request->priority for its lifetime") for introducing the breakage. Prior
to commit 1f18122 the guard at the start of execlists_schedule(prio <=
rq->priotree.priority) is sufficient to avoid manipulating retired
fences, and so we were avoiding this bug.
-Chris


More information about the Intel-gfx mailing list