[Intel-gfx] [PATCH] drm/i915: Upgrade execbuffer fail after resume failure to EIO

Chris Wilson chris at chris-wilson.co.uk
Tue Mar 25 17:28:21 CET 2014


On Tue, Mar 25, 2014 at 08:24:00AM -0700, Ben Widawsky wrote:
> On Tue, Mar 25, 2014 at 08:03:28AM +0000, Chris Wilson wrote:
> > If we try to execute on a known ring, but it has failed to be
> > initialised correctly, report that the GPU is hung rather than the
> > command invalid. This leaves us reporting EINVAL only if the user
> > requests execution on a ring that is not supported by the device.
> > 
> > This should prevent UXA from getting stuck in a null render loop after a
> > failed resume.
> > 
> > Reported-by: Jiri Kosina <jikos at jikos.cz>
> > References: https://bugs.freedesktop.org/show_bug.cgi?id=76554
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > ---
> >  drivers/gpu/drm/i915/i915_gem_execbuffer.c | 14 +++++++++++++-
> >  1 file changed, 13 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> > index 1b45163e19f3..22c650490f54 100644
> > --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> > +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> > @@ -991,6 +991,18 @@ i915_reset_gen7_sol_offsets(struct drm_device *dev,
> >  	return 0;
> >  }
> >  
> > +static bool
> > +intel_ring_valid(struct intel_ring_buffer *ring)
> > +{
> > +	switch (ring->id) {
> > +	case RCS: return true;
> > +	case VCS: return HAS_BSD(ring->dev);
> > +	case BCS: return HAS_BLT(ring->dev);
> 
> intel_enable_blt()?

But not exported, and below my level of caring ;-)
The cases were intel_enable_blt() != HAS_BLT() are those where the hw
would hang anyway.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre



More information about the Intel-gfx mailing list