[Intel-gfx] [PATCH] drm/i915/userptr: Keep spin_lock/unlock in the same block
Daniel Vetter
daniel at ffwll.ch
Fri Jul 25 09:39:19 CEST 2014
On Thu, Jul 24, 2014 at 01:28:44PM +0100, Chris Wilson wrote:
> Move the code around in order to acquire and release the spinlock in the
> same function and in the same block. This keeps static analysers happy
> and the reader sane.
>
> Suggested-by: Julia Lawall <julia.lawall at lip6.fr>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Julia Lawall <julia.lawall at lip6.fr>
Queued for -next, thanks for the patch.
-Daniel
> ---
> drivers/gpu/drm/i915/i915_gem_userptr.c | 17 ++++++++---------
> 1 file changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_userptr.c b/drivers/gpu/drm/i915/i915_gem_userptr.c
> index 12358fd..4ef5a92 100644
> --- a/drivers/gpu/drm/i915/i915_gem_userptr.c
> +++ b/drivers/gpu/drm/i915/i915_gem_userptr.c
> @@ -96,10 +96,10 @@ static unsigned long cancel_userptr(struct drm_i915_gem_object *obj)
> return end;
> }
>
> -static void invalidate_range__linear(struct i915_mmu_notifier *mn,
> - struct mm_struct *mm,
> - unsigned long start,
> - unsigned long end)
> +static void *invalidate_range__linear(struct i915_mmu_notifier *mn,
> + struct mm_struct *mm,
> + unsigned long start,
> + unsigned long end)
> {
> struct i915_mmu_object *mo;
> unsigned long serial;
> @@ -123,7 +123,7 @@ restart:
> goto restart;
> }
>
> - spin_unlock(&mn->lock);
> + return NULL;
> }
>
> static void i915_gem_userptr_mn_invalidate_range_start(struct mmu_notifier *_mn,
> @@ -138,13 +138,12 @@ static void i915_gem_userptr_mn_invalidate_range_start(struct mmu_notifier *_mn,
>
> end--; /* interval ranges are inclusive, but invalidate range is exclusive */
> while (next < end) {
> - struct drm_i915_gem_object *obj;
> + struct drm_i915_gem_object *obj = NULL;
>
> - obj = NULL;
> spin_lock(&mn->lock);
> if (mn->has_linear)
> - return invalidate_range__linear(mn, mm, start, end);
> - if (serial == mn->serial)
> + it = invalidate_range__linear(mn, mm, start, end);
> + else if (serial == mn->serial)
> it = interval_tree_iter_next(it, next, end);
> else
> it = interval_tree_iter_first(&mn->objects, start, end);
> --
> 1.9.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
More information about the Intel-gfx
mailing list