All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>,
	intel-gfx@lists.freedesktop.org,
	Christian Konig <christian.koenig@amd.com>,
	dri-devel@lists.freedesktop.org, Dave Airlie <airlied@redhat.com>
Subject: Re: [PATCH] drm: Use idr_init_base(1) when using id==0 for invalid
Date: Mon, 12 Feb 2018 19:14:20 +0200	[thread overview]
Message-ID: <20180212171420.GT5453@intel.com> (raw)
In-Reply-To: <20180212145533.30046-1-chris@chris-wilson.co.uk>

On Mon, Feb 12, 2018 at 02:55:33PM +0000, Chris Wilson wrote:
> Use the new idr_init_base() function to create an IDR that knows id==0
> is never allocated as it maps to an invalid identifier. By knowing that
> id==0 is invalid, the IDR can start from id=1 instead avoiding the issue
> of having to start each lookup from the zeroth leaf as id==0 is always
> unused (and thus the tree-of-bitmaps indicate that is the first
> available).
> 
> References: 6ce711f27500 ("idr: Make 1-based IDRs more efficient")
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Christian Konig <christian.koenig@amd.com>
> Cc: Dave Airlie <airlied@redhat.com>

Yep, looks like all of these pass start==1 to idr_alloc().
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Looks like at least tile_idr and crtc_idr could use this as well,
although I suppose they're not hit nearly as hard as the gem stuff.
Also someone should really s/crtc_idr/obj_id_idr/ or something
along those lines.

> ---
> Note this requires 4.16-rc1.
> ---
>  drivers/gpu/drm/drm_gem.c     | 4 ++--
>  drivers/gpu/drm/drm_syncobj.c | 2 +-
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
> index 01f8d9481211..4975ba9a7bc8 100644
> --- a/drivers/gpu/drm/drm_gem.c
> +++ b/drivers/gpu/drm/drm_gem.c
> @@ -98,7 +98,7 @@ drm_gem_init(struct drm_device *dev)
>  	struct drm_vma_offset_manager *vma_offset_manager;
>  
>  	mutex_init(&dev->object_name_lock);
> -	idr_init(&dev->object_name_idr);
> +	idr_init_base(&dev->object_name_idr, 1);
>  
>  	vma_offset_manager = kzalloc(sizeof(*vma_offset_manager), GFP_KERNEL);
>  	if (!vma_offset_manager) {
> @@ -776,7 +776,7 @@ drm_gem_open_ioctl(struct drm_device *dev, void *data,
>  void
>  drm_gem_open(struct drm_device *dev, struct drm_file *file_private)
>  {
> -	idr_init(&file_private->object_idr);
> +	idr_init_base(&file_private->object_idr, 1);
>  	spin_lock_init(&file_private->table_lock);
>  }
>  
> diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c
> index 0b7b0d1ad2d5..d4f4ce484529 100644
> --- a/drivers/gpu/drm/drm_syncobj.c
> +++ b/drivers/gpu/drm/drm_syncobj.c
> @@ -546,7 +546,7 @@ static int drm_syncobj_export_sync_file(struct drm_file *file_private,
>  void
>  drm_syncobj_open(struct drm_file *file_private)
>  {
> -	idr_init(&file_private->syncobj_idr);
> +	idr_init_base(&file_private->syncobj_idr, 1);
>  	spin_lock_init(&file_private->syncobj_table_lock);
>  }
>  
> -- 
> 2.16.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent reply	other threads:[~2018-02-12 17:14 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-12 14:55 [PATCH] drm: Use idr_init_base(1) when using id==0 for invalid Chris Wilson
2018-02-12 16:25 ` ✓ Fi.CI.BAT: success for " Patchwork
2018-02-12 17:14 ` Ville Syrjälä [this message]
2018-02-13 13:48   ` [PATCH] " Christian König
2018-02-19 14:35     ` Chris Wilson
2018-02-19 14:50       ` Daniel Vetter
2018-02-12 18:20 ` ✓ Fi.CI.IGT: success for " 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=20180212171420.GT5453@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=airlied@redhat.com \
    --cc=chris@chris-wilson.co.uk \
    --cc=christian.koenig@amd.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.