From: Dave Gordon <david.s.gordon@intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 4/9] drm/i915: Wrap drm_gem_object_reference in i915_gem_object_get
Date: Wed, 20 Jul 2016 12:38:24 +0100 [thread overview]
Message-ID: <578F62B0.3020403@intel.com> (raw)
In-Reply-To: <1469005202-9659-5-git-send-email-chris@chris-wilson.co.uk>
On 20/07/16 09:59, Chris Wilson wrote:
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/i915_drv.h | 11 +++++++++++
> drivers/gpu/drm/i915/i915_gem.c | 4 ++--
> drivers/gpu/drm/i915/i915_gem_dmabuf.c | 3 +--
> drivers/gpu/drm/i915/i915_gem_evict.c | 2 +-
> drivers/gpu/drm/i915/i915_gem_execbuffer.c | 4 ++--
> drivers/gpu/drm/i915/i915_gem_shrinker.c | 2 +-
> drivers/gpu/drm/i915/i915_gem_userptr.c | 3 +--
> drivers/gpu/drm/i915/intel_display.c | 3 +--
> 8 files changed, 20 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 47f244f9c64e..163d28e8e92c 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -2306,6 +2306,17 @@ __deprecated
> extern struct drm_gem_object *
> drm_gem_object_lookup(struct drm_file *file, u32 handle);
>
> +__attribute__((nonnull))
> +static inline struct drm_i915_gem_object *
> +i915_gem_object_get(struct drm_i915_gem_object *obj)
> +{
> + drm_gem_object_reference(&obj->base);
> + return obj;
> +}
> +
> +__deprecated
> +extern void drm_gem_object_reference(struct drm_gem_object *);
> +
> static inline bool
> i915_gem_object_has_struct_page(const struct drm_i915_gem_object *obj)
> {
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 970496419098..f886c0bb24ca 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -289,7 +289,7 @@ drop_pages(struct drm_i915_gem_object *obj)
> struct i915_vma *vma, *next;
> int ret;
>
> - drm_gem_object_reference(&obj->base);
> + i915_gem_object_get(obj);
> list_for_each_entry_safe(vma, next, &obj->vma_list, obj_link)
> if (i915_vma_unbind(vma))
> break;
> @@ -2361,7 +2361,7 @@ void i915_vma_move_to_active(struct i915_vma *vma,
>
> /* Add a reference if we're newly entering the active list. */
> if (obj->active == 0)
> - drm_gem_object_reference(&obj->base);
> + i915_gem_object_get(obj);
> obj->active |= intel_engine_flag(engine);
>
> list_move_tail(&obj->engine_list[engine->id], &engine->active_list);
> diff --git a/drivers/gpu/drm/i915/i915_gem_dmabuf.c b/drivers/gpu/drm/i915/i915_gem_dmabuf.c
> index 7d08ac08c401..3a00ab3ad06e 100644
> --- a/drivers/gpu/drm/i915/i915_gem_dmabuf.c
> +++ b/drivers/gpu/drm/i915/i915_gem_dmabuf.c
> @@ -278,8 +278,7 @@ struct drm_gem_object *i915_gem_prime_import(struct drm_device *dev,
> * Importing dmabuf exported from out own gem increases
> * refcount on gem itself instead of f_count of dmabuf.
> */
> - drm_gem_object_reference(&obj->base);
> - return &obj->base;
> + return &i915_gem_object_get(obj)->base;
This would be a good place to write
return to_gem_object(i915_gem_object_get(obj));
if you had a to_gem_object() function :)
> }
> }
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_evict.c b/drivers/gpu/drm/i915/i915_gem_evict.c
> index b1194c7c0a48..56103948ee16 100644
> --- a/drivers/gpu/drm/i915/i915_gem_evict.c
> +++ b/drivers/gpu/drm/i915/i915_gem_evict.c
> @@ -183,7 +183,7 @@ found:
> exec_list);
> if (drm_mm_scan_remove_block(&vma->node)) {
> list_move(&vma->exec_list, &eviction_list);
> - drm_gem_object_reference(&vma->obj->base);
> + i915_gem_object_get(vma->obj);
> continue;
> }
> list_del_init(&vma->exec_list);
> diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> index 551dd4f549fa..28bcc99a0cc1 100644
> --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> @@ -123,7 +123,7 @@ eb_lookup_vmas(struct eb_vmas *eb,
> goto err;
> }
>
> - drm_gem_object_reference(&obj->base);
> + i915_gem_object_get(obj);
> list_add_tail(&obj->obj_exec_link, &objects);
> }
> spin_unlock(&file->table_lock);
> @@ -1236,7 +1236,7 @@ i915_gem_execbuffer_parse(struct intel_engine_cs *engine,
> vma = i915_gem_obj_to_ggtt(shadow_batch_obj);
> vma->exec_entry = shadow_exec_entry;
> vma->exec_entry->flags = __EXEC_OBJECT_HAS_PIN;
> - drm_gem_object_reference(&shadow_batch_obj->base);
> + i915_gem_object_get(shadow_batch_obj);
> list_add_tail(&vma->exec_list, &eb->vmas);
>
> shadow_batch_obj->base.pending_read_domains = I915_GEM_DOMAIN_COMMAND;
> diff --git a/drivers/gpu/drm/i915/i915_gem_shrinker.c b/drivers/gpu/drm/i915/i915_gem_shrinker.c
> index 6f10b421487b..3aa76d3608ea 100644
> --- a/drivers/gpu/drm/i915/i915_gem_shrinker.c
> +++ b/drivers/gpu/drm/i915/i915_gem_shrinker.c
> @@ -190,7 +190,7 @@ i915_gem_shrink(struct drm_i915_private *dev_priv,
> if (!can_release_pages(obj))
> continue;
>
> - drm_gem_object_reference(&obj->base);
> + i915_gem_object_get(obj);
>
> /* For the unbound phase, this should be a no-op! */
> list_for_each_entry_safe(vma, v,
> diff --git a/drivers/gpu/drm/i915/i915_gem_userptr.c b/drivers/gpu/drm/i915/i915_gem_userptr.c
> index ba16e044fac6..c41bf74f926e 100644
> --- a/drivers/gpu/drm/i915/i915_gem_userptr.c
> +++ b/drivers/gpu/drm/i915/i915_gem_userptr.c
> @@ -622,8 +622,7 @@ __i915_gem_userptr_get_pages_schedule(struct drm_i915_gem_object *obj,
> obj->userptr.work = &work->work;
> obj->userptr.workers++;
>
> - work->obj = obj;
> - drm_gem_object_reference(&obj->base);
> + work->obj = i915_gem_object_get(obj);
>
> work->task = current;
> get_task_struct(work->task);
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 77d320584478..84904a2d3fcd 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -11649,7 +11649,6 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
>
> /* Reference the objects for the scheduled work. */
> drm_framebuffer_reference(work->old_fb);
> - drm_gem_object_reference(&obj->base);
>
> crtc->primary->fb = fb;
> update_state_fb(crtc->primary);
> @@ -11657,7 +11656,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
> intel_fbc_pre_update(intel_crtc, intel_crtc->config,
> to_intel_plane_state(primary->state));
>
> - work->pending_flip_obj = obj;
> + work->pending_flip_obj = i915_gem_object_get(obj);
>
> ret = i915_mutex_lock_interruptible(dev);
> if (ret)
This last one moves the point at which the reference is taken past
several function calls; is that intentional, or at least harmless?
With that answered, then
Reviewed-by: Dave Gordon <david.s.gordon@intel.com>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2016-07-20 11:38 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-20 8:59 A simple batch of churn to make reference handling look consistent Chris Wilson
2016-07-20 8:59 ` [PATCH 1/9] drm/i915: Rename request reference/unreference to get/put Chris Wilson
2016-07-20 8:59 ` [PATCH 2/9] drm/i915: Rename i915_gem_context_reference/unreference() Chris Wilson
2016-07-20 8:59 ` [PATCH 3/9] drm/i915: Wrap drm_gem_object_lookup in i915_gem_object_lookup Chris Wilson
2016-07-20 11:28 ` Dave Gordon
2016-07-20 11:38 ` Chris Wilson
2016-07-20 11:38 ` Joonas Lahtinen
2016-07-20 12:03 ` Chris Wilson
2016-07-20 8:59 ` [PATCH 4/9] drm/i915: Wrap drm_gem_object_reference in i915_gem_object_get Chris Wilson
2016-07-20 11:38 ` Dave Gordon [this message]
2016-07-20 11:45 ` Chris Wilson
2016-07-20 11:45 ` Joonas Lahtinen
2016-07-20 8:59 ` [PATCH 5/9] drm/i915: Rename drm_gem_object_unreference in preparation for lockless free Chris Wilson
2016-07-20 11:43 ` Joonas Lahtinen
2016-07-20 11:51 ` Dave Gordon
2016-07-20 12:11 ` Chris Wilson
2016-07-21 16:58 ` [PATCH] drm/i915: use i915_gem_object_put_unlocked() after releasing mutex Dave Gordon
2016-07-21 17:25 ` Chris Wilson
2016-07-20 8:59 ` [PATCH 6/9] drm/i915: Rename drm_gem_object_unreference_unlocked in preparation for lockless free Chris Wilson
2016-07-20 12:04 ` Joonas Lahtinen
2016-07-20 9:00 ` [PATCH 7/9] drm/i915: Treat ringbuffer writes as write to normal memory Chris Wilson
2016-07-20 9:00 ` [PATCH 8/9] drm/i915: Rename ring->virtual_start as ring->vaddr Chris Wilson
2016-07-20 11:54 ` Dave Gordon
2016-07-20 12:07 ` Joonas Lahtinen
2016-07-20 9:00 ` [PATCH 9/9] drm/i915: Convert i915_semaphores_is_enabled over to early sanitize Chris Wilson
2016-07-20 12:18 ` Joonas Lahtinen
2016-07-20 9:38 ` ✗ Ro.CI.BAT: failure for series starting with [1/9] drm/i915: Rename request reference/unreference to get/put Patchwork
2016-07-22 5:28 ` ✗ Ro.CI.BAT: failure for series starting with [1/9] drm/i915: Rename request reference/unreference to get/put (rev2) Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=578F62B0.3020403@intel.com \
--to=david.s.gordon@intel.com \
--cc=chris@chris-wilson.co.uk \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox