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

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Thu Jul 21 09:58:05 UTC 2016


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 at chris-wilson.co.uk>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at 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.

So I don't get it. :)

Regards,

Tvrtko

> -	if (unlikely(stuck_engines)) {
> -		DRM_DEBUG_DRIVER("kicked stuck waiters...missed irq\n");
> -		dev_priv->gpu_error.missed_irq_rings |= stuck_engines;
> -	}
> +	if (unlikely(stuck_engines))
> +		DRM_DEBUG_DRIVER("kicked stuck waiters (%x)...missed irq?\n",
> +				 stuck_engines);
>
>   	if (INTEL_GEN(dev_priv) >= 6)
>   		gen6_rps_idle(dev_priv);
>


More information about the Intel-gfx mailing list