[Intel-gfx] [PATCH] drm/i915: Park the signaler before sleeping

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Tue Apr 4 09:57:15 UTC 2017


On 03/04/2017 11:51, Chris Wilson wrote:
> If the signal to park arrives before we sleep, then we need to check
> kthread_should_park() before sleeping to avoid missing the signal.
> Otherwise, if the signal arrives whilst we are processing completed
> requests, we will reset the current->state back to TASK_INTERRUPTIBLE
> and so miss the wakeup.
>
> Fixes: fe3288b5da2c ("drm/i915: Park the breadcrumbs signaler across a GPU reset")
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuoppala at intel.com>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> ---
>  drivers/gpu/drm/i915/intel_breadcrumbs.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_breadcrumbs.c b/drivers/gpu/drm/i915/intel_breadcrumbs.c
> index b6ea192ad550..308c56a021ab 100644
> --- a/drivers/gpu/drm/i915/intel_breadcrumbs.c
> +++ b/drivers/gpu/drm/i915/intel_breadcrumbs.c
> @@ -629,6 +629,9 @@ static int intel_breadcrumbs_signaler(void *arg)
>  		} else {
>  			DEFINE_WAIT(exec);
>
> +			if (kthread_should_park())
> +				kthread_parkme();
> +
>  			if (kthread_should_stop()) {
>  				GEM_BUG_ON(request);
>  				break;
> @@ -641,9 +644,6 @@ static int intel_breadcrumbs_signaler(void *arg)
>
>  			if (request)
>  				remove_wait_queue(&request->execute, &exec);
> -
> -			if (kthread_should_park())
> -				kthread_parkme();
>  		}
>  		i915_gem_request_put(request);
>  	} while (1);
>

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>

Regards,

Tvrtko


More information about the Intel-gfx mailing list