Re: [PATCH v2 1/3] drm/i915: Drop racy markup of missed-irqs from idle-worker

Chris Wilson
2016-07-21T10:10:57Z

On Thu, Jul 21, 2016 at 10:58:05AM +0100, Tvrtko Ursulin wrote:
>
> On 21/07/16 07:57, Chris Wilson wrote:
> >During the idle-worker we disable the hangcheck and so kick any waiters
> >that should have been completed (since the GPU is now idle). Unlike the
> >hangcheck, we do not take any care to avoid the race between the irq
> >handler and ourselves, and so it is possible for us to declare a missed
> >interrupt even as the bottom-half is being scheduled to run. Let's
> >ignore this race to stop a potential false-positive error.
>
> If the bottom half is scheduled to run then then..
>
> >References: https://bugs.freedesktop.org/show_bug.cgi?id=96974
> >Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> >Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> >Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
> >---
> > drivers/gpu/drm/i915/i915_gem.c | 7 +++----
> > 1 file changed, 3 insertions(+), 4 deletions(-)
> >
> >diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> >index 40047eb48826..9e826585edb2 100644
> >--- a/drivers/gpu/drm/i915/i915_gem.c
> >+++ b/drivers/gpu/drm/i915/i915_gem.c
> >@@ -2706,10 +2706,9 @@ i915_gem_idle_work_handler(struct work_struct *work)
> > rearm_hangcheck = false;
> >
> > stuck_engines = intel_kick_waiters(dev_priv);
>
> ... this will not return a stucked engine since the there is a bh
> task assigned all until the bh exits.

It reports if it wakes up a waiter on any engine. If the bh is already
running, we cannot know if it has missed the seqno update. If it isn't
running yet, we cannot know if it is about to be run.
-Chris

--
Chris Wilson, Intel Open Source Technology Centre