[Intel-gfx] [PATCH] drm/i915: Replace lockless_dereference(bool) with READ_ONCE()

Mika Kuoppala mika.kuoppala at linux.intel.com
Tue Jul 5 09:54:50 UTC 2016


Chris Wilson <chris at chris-wilson.co.uk> writes:

> After Joonas complained about using READ_ONCE() on the only use of the
> variable in the function, where the intent was to simply document that
> the read was intentionally racy and unlocked, I switched the READ_ONCE()
> over to lockless_dereference(). However, in linux-next that has a
> stronger type-check to only allow pointers and is no longer
> interchangeable with READ_ONCE(), see commit 331b6d8c7afc
> ("locking/barriers: Validate lockless_dereference() is used on a pointer
> type")
>
> Reported-by: Stephen Rothwell <sfr at canb.auug.org.au>
> Fixes: 67d97da34917 ("drm/i915: Only start retire worker when idle")
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

Reviewed-by: Mika Kuoppala <mika.kuoppala at intel.com>

> ---
>  drivers/gpu/drm/i915/i915_gem.c | 2 +-
>  drivers/gpu/drm/i915/i915_irq.c | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index a7852dd0a3d4..20123c09bc18 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -3290,7 +3290,7 @@ i915_gem_retire_work_handler(struct work_struct *work)
>  	 * We do not need to do this test under locking as in the worst-case
>  	 * we queue the retire worker once too often.
>  	 */
> -	if (lockless_dereference(dev_priv->gt.awake))
> +	if (READ_ONCE(dev_priv->gt.awake))
>  		queue_delayed_work(dev_priv->wq,
>  				   &dev_priv->gt.retire_work,
>  				   round_jiffies_up_relative(HZ));
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index f6de8dd567a2..2f01b0b959a1 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -3095,7 +3095,7 @@ static void i915_hangcheck_elapsed(struct work_struct *work)
>  	if (!i915.enable_hangcheck)
>  		return;
>  
> -	if (!lockless_dereference(dev_priv->gt.awake))
> +	if (!READ_ONCE(dev_priv->gt.awake))
>  		return;
>  
>  	/* As enabling the GPU requires fairly extensive mmio access,
> -- 
> 2.8.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx


More information about the Intel-gfx mailing list