From: Rob Herring <robh@kernel.org> To: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Will Deacon <will.deacon@arm.com>, Robin Murphy <robin.murphy@arm.com>, Joerg Roedel <joro@8bytes.org>, iommu@lists.linux-foundation.org, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <maxime.ripard@bootlin.com>, Sean Paul <sean@poorly.run>, David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>, Alyssa Rosenzweig <alyssa@rosenzweig.io>, Lyude Paul <lyude@redhat.com>, Eric Anholt <eric@anholt.net>, Neil Armstrong <narmstrong@baylibre.com> Subject: [PATCH v2 2/3] drm: Add a drm_gem_objects_lookup helper Date: Mon, 1 Apr 2019 02:47:29 -0500 [thread overview] Message-ID: <20190401074730.12241-3-robh@kernel.org> (raw) In-Reply-To: <20190401074730.12241-1-robh@kernel.org> Similar to the single handle drm_gem_object_lookup(), drm_gem_objects_lookup() takes an array of handles and returns an array of GEM objects. Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <maxime.ripard@bootlin.com> Cc: Sean Paul <sean@poorly.run> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Signed-off-by: Rob Herring <robh@kernel.org> --- drivers/gpu/drm/drm_gem.c | 46 +++++++++++++++++++++++++++++++-------- include/drm/drm_gem.h | 2 ++ 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index 388b3742e562..5c9bff45e5e1 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -663,6 +663,42 @@ void drm_gem_put_pages(struct drm_gem_object *obj, struct page **pages, } EXPORT_SYMBOL(drm_gem_put_pages); +/** + * drm_gem_objects_lookup - look up GEM objects from an array of handles + * @filp: DRM file private date + * @handle: pointer to array of userspace handle + * @count: size of handle array + * @objs: pointer to array of drm_gem_object pointers + * + * Returns: + * + * @objs filled in with GEM object pointers. -ENOENT is returned on a lookup + * failure. 0 is returned on success. + */ +int drm_gem_objects_lookup(struct drm_file *filp, u32 *handle, int count, + struct drm_gem_object **objs) +{ + int i, ret = 0; + struct drm_gem_object *obj; + + spin_lock(&filp->table_lock); + + for (i = 0; i < count; i++) { + /* Check if we currently have a reference on the object */ + obj = idr_find(&filp->object_idr, handle[i]); + if (!obj) { + ret = -ENOENT; + break; + } + drm_gem_object_get(obj); + objs[i] = obj; + } + spin_unlock(&filp->table_lock); + + return ret; +} +EXPORT_SYMBOL(drm_gem_objects_lookup); + /** * drm_gem_object_lookup - look up a GEM object from its handle * @filp: DRM file private date @@ -678,15 +714,7 @@ drm_gem_object_lookup(struct drm_file *filp, u32 handle) { struct drm_gem_object *obj; - spin_lock(&filp->table_lock); - - /* Check if we currently have a reference on the object */ - obj = idr_find(&filp->object_idr, handle); - if (obj) - drm_gem_object_get(obj); - - spin_unlock(&filp->table_lock); - + drm_gem_objects_lookup(filp, &handle, 1, &obj); return obj; } EXPORT_SYMBOL(drm_gem_object_lookup); diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h index 2955aaab3dca..5404225e0194 100644 --- a/include/drm/drm_gem.h +++ b/include/drm/drm_gem.h @@ -381,6 +381,8 @@ struct page **drm_gem_get_pages(struct drm_gem_object *obj); void drm_gem_put_pages(struct drm_gem_object *obj, struct page **pages, bool dirty, bool accessed); +int drm_gem_objects_lookup(struct drm_file *filp, u32 *handle, int count, + struct drm_gem_object **objs); struct drm_gem_object *drm_gem_object_lookup(struct drm_file *filp, u32 handle); long drm_gem_reservation_object_wait(struct drm_file *filep, u32 handle, bool wait_all, unsigned long timeout); -- 2.19.1
WARNING: multiple messages have this Message-ID (diff)
From: Rob Herring <robh@kernel.org> To: dri-devel@lists.freedesktop.org Cc: Sean Paul <sean@poorly.run>, Lyude Paul <lyude@redhat.com>, Eric Anholt <eric@anholt.net>, Maxime Ripard <maxime.ripard@bootlin.com>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Joerg Roedel <joro@8bytes.org>, Neil Armstrong <narmstrong@baylibre.com>, Will Deacon <will.deacon@arm.com>, linux-kernel@vger.kernel.org, David Airlie <airlied@linux.ie>, iommu@lists.linux-foundation.org, Alyssa Rosenzweig <alyssa@rosenzweig.io>, Daniel Vetter <daniel@ffwll.ch>, Robin Murphy <robin.murphy@arm.com>, linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 2/3] drm: Add a drm_gem_objects_lookup helper Date: Mon, 1 Apr 2019 02:47:29 -0500 [thread overview] Message-ID: <20190401074730.12241-3-robh@kernel.org> (raw) In-Reply-To: <20190401074730.12241-1-robh@kernel.org> Similar to the single handle drm_gem_object_lookup(), drm_gem_objects_lookup() takes an array of handles and returns an array of GEM objects. Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <maxime.ripard@bootlin.com> Cc: Sean Paul <sean@poorly.run> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Signed-off-by: Rob Herring <robh@kernel.org> --- drivers/gpu/drm/drm_gem.c | 46 +++++++++++++++++++++++++++++++-------- include/drm/drm_gem.h | 2 ++ 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index 388b3742e562..5c9bff45e5e1 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -663,6 +663,42 @@ void drm_gem_put_pages(struct drm_gem_object *obj, struct page **pages, } EXPORT_SYMBOL(drm_gem_put_pages); +/** + * drm_gem_objects_lookup - look up GEM objects from an array of handles + * @filp: DRM file private date + * @handle: pointer to array of userspace handle + * @count: size of handle array + * @objs: pointer to array of drm_gem_object pointers + * + * Returns: + * + * @objs filled in with GEM object pointers. -ENOENT is returned on a lookup + * failure. 0 is returned on success. + */ +int drm_gem_objects_lookup(struct drm_file *filp, u32 *handle, int count, + struct drm_gem_object **objs) +{ + int i, ret = 0; + struct drm_gem_object *obj; + + spin_lock(&filp->table_lock); + + for (i = 0; i < count; i++) { + /* Check if we currently have a reference on the object */ + obj = idr_find(&filp->object_idr, handle[i]); + if (!obj) { + ret = -ENOENT; + break; + } + drm_gem_object_get(obj); + objs[i] = obj; + } + spin_unlock(&filp->table_lock); + + return ret; +} +EXPORT_SYMBOL(drm_gem_objects_lookup); + /** * drm_gem_object_lookup - look up a GEM object from its handle * @filp: DRM file private date @@ -678,15 +714,7 @@ drm_gem_object_lookup(struct drm_file *filp, u32 handle) { struct drm_gem_object *obj; - spin_lock(&filp->table_lock); - - /* Check if we currently have a reference on the object */ - obj = idr_find(&filp->object_idr, handle); - if (obj) - drm_gem_object_get(obj); - - spin_unlock(&filp->table_lock); - + drm_gem_objects_lookup(filp, &handle, 1, &obj); return obj; } EXPORT_SYMBOL(drm_gem_object_lookup); diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h index 2955aaab3dca..5404225e0194 100644 --- a/include/drm/drm_gem.h +++ b/include/drm/drm_gem.h @@ -381,6 +381,8 @@ struct page **drm_gem_get_pages(struct drm_gem_object *obj); void drm_gem_put_pages(struct drm_gem_object *obj, struct page **pages, bool dirty, bool accessed); +int drm_gem_objects_lookup(struct drm_file *filp, u32 *handle, int count, + struct drm_gem_object **objs); struct drm_gem_object *drm_gem_object_lookup(struct drm_file *filp, u32 handle); long drm_gem_reservation_object_wait(struct drm_file *filep, u32 handle, bool wait_all, unsigned long timeout); -- 2.19.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-04-01 7:47 UTC|newest] Thread overview: 112+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-04-01 7:47 [PATCH v2 0/3] Initial Panfrost driver Rob Herring 2019-04-01 7:47 ` Rob Herring 2019-04-01 7:47 ` [PATCH v3 1/3] iommu: io-pgtable: Add ARM Mali midgard MMU page table format Rob Herring 2019-04-01 7:47 ` Rob Herring 2019-04-01 7:47 ` Rob Herring 2019-04-01 19:11 ` Robin Murphy 2019-04-01 19:11 ` Robin Murphy 2019-04-05 10:02 ` Robin Murphy 2019-04-05 10:02 ` Robin Murphy 2019-04-05 10:02 ` Robin Murphy 2019-04-11 13:15 ` Joerg Roedel 2019-04-11 13:15 ` Joerg Roedel 2019-04-11 13:15 ` Joerg Roedel 2019-04-05 9:42 ` Steven Price 2019-04-05 9:42 ` Steven Price 2019-04-05 9:42 ` Steven Price 2019-04-05 9:51 ` Robin Murphy 2019-04-05 9:51 ` Robin Murphy 2019-04-05 10:36 ` Steven Price 2019-04-05 10:36 ` Steven Price 2019-04-08 8:56 ` Steven Price 2019-04-08 8:56 ` Steven Price 2019-04-08 8:56 ` Steven Price 2019-04-01 7:47 ` Rob Herring [this message] 2019-04-01 7:47 ` [PATCH v2 2/3] drm: Add a drm_gem_objects_lookup helper Rob Herring 2019-04-01 13:06 ` Daniel Vetter 2019-04-01 13:06 ` Daniel Vetter 2019-04-01 13:48 ` Chris Wilson 2019-04-01 13:48 ` Chris Wilson 2019-04-01 13:48 ` Chris Wilson 2019-04-01 15:43 ` Eric Anholt 2019-04-01 15:43 ` Eric Anholt 2019-04-01 15:43 ` Eric Anholt 2019-04-08 20:09 ` Rob Herring 2019-04-08 20:09 ` Rob Herring 2019-04-08 20:09 ` Rob Herring 2019-04-09 16:55 ` Eric Anholt 2019-04-09 16:55 ` Eric Anholt 2019-04-09 16:55 ` Eric Anholt 2019-04-09 16:55 ` Eric Anholt 2019-04-01 16:59 ` Rob Herring 2019-04-01 16:59 ` Rob Herring 2019-04-01 18:22 ` Eric Anholt 2019-04-01 18:22 ` Eric Anholt 2019-04-01 18:22 ` Eric Anholt 2019-04-01 7:47 ` [PATCH v2 3/3] drm/panfrost: Add initial panfrost driver Rob Herring 2019-04-01 8:24 ` Neil Armstrong 2019-04-01 8:24 ` Neil Armstrong 2019-04-01 19:17 ` Robin Murphy 2019-04-01 19:17 ` Robin Murphy 2019-04-01 16:02 ` Eric Anholt 2019-04-01 16:02 ` Eric Anholt 2019-04-01 19:12 ` Robin Murphy 2019-04-01 19:12 ` Robin Murphy 2019-04-01 19:12 ` Robin Murphy 2019-04-02 0:33 ` Alyssa Rosenzweig 2019-04-02 0:33 ` Alyssa Rosenzweig 2019-04-02 11:23 ` Robin Murphy 2019-04-02 11:23 ` Robin Murphy 2019-04-03 4:57 ` Rob Herring 2019-04-03 4:57 ` Rob Herring 2019-04-03 4:57 ` Rob Herring 2019-04-05 12:57 ` Robin Murphy 2019-04-05 12:57 ` Robin Murphy 2019-04-05 12:57 ` Robin Murphy 2019-04-05 12:30 ` Steven Price 2019-04-05 16:16 ` Alyssa Rosenzweig 2019-04-05 16:16 ` Alyssa Rosenzweig 2019-04-05 16:16 ` Alyssa Rosenzweig 2019-04-05 16:42 ` Steven Price 2019-04-05 16:42 ` Steven Price 2019-04-05 16:42 ` Steven Price 2019-04-05 16:53 ` Alyssa Rosenzweig 2019-04-05 16:53 ` Alyssa Rosenzweig 2019-04-05 16:53 ` Alyssa Rosenzweig 2019-04-15 9:18 ` Daniel Vetter 2019-04-15 9:18 ` Daniel Vetter 2019-04-15 9:18 ` Daniel Vetter 2019-04-15 9:30 ` Steven Price 2019-04-15 9:30 ` Steven Price 2019-04-15 9:30 ` Steven Price 2019-04-16 7:51 ` Daniel Vetter 2019-04-16 7:51 ` Daniel Vetter 2019-04-16 7:51 ` Daniel Vetter 2019-04-16 7:51 ` Daniel Vetter 2019-04-08 21:04 ` Rob Herring 2019-04-08 21:04 ` Rob Herring 2019-04-08 21:04 ` Rob Herring 2019-04-08 21:04 ` Rob Herring 2019-04-09 15:56 ` Tomeu Vizoso 2019-04-09 15:56 ` Tomeu Vizoso 2019-04-09 15:56 ` Tomeu Vizoso 2019-04-09 15:56 ` Tomeu Vizoso 2019-04-09 16:15 ` Rob Herring 2019-04-09 16:15 ` Rob Herring 2019-04-09 16:15 ` Rob Herring 2019-04-09 16:15 ` Rob Herring 2019-04-10 10:28 ` Steven Price 2019-04-10 10:28 ` Steven Price 2019-04-10 10:28 ` Steven Price 2019-04-10 10:28 ` Steven Price 2019-04-10 10:19 ` Steven Price 2019-04-10 10:19 ` Steven Price 2019-04-10 10:19 ` Steven Price 2019-04-10 10:19 ` Steven Price 2019-04-10 11:50 ` Tomeu Vizoso 2019-04-10 11:50 ` Tomeu Vizoso 2019-04-10 11:50 ` Tomeu Vizoso 2019-04-10 11:50 ` Tomeu Vizoso 2019-04-01 15:05 ` [PATCH v2 0/3] Initial Panfrost driver Alyssa Rosenzweig 2019-04-01 15:05 ` Alyssa Rosenzweig 2019-04-01 15:05 ` Alyssa Rosenzweig
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=20190401074730.12241-3-robh@kernel.org \ --to=robh@kernel.org \ --cc=airlied@linux.ie \ --cc=alyssa@rosenzweig.io \ --cc=daniel@ffwll.ch \ --cc=dri-devel@lists.freedesktop.org \ --cc=eric@anholt.net \ --cc=iommu@lists.linux-foundation.org \ --cc=joro@8bytes.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=lyude@redhat.com \ --cc=maarten.lankhorst@linux.intel.com \ --cc=maxime.ripard@bootlin.com \ --cc=narmstrong@baylibre.com \ --cc=robin.murphy@arm.com \ --cc=sean@poorly.run \ --cc=will.deacon@arm.com \ /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: linkBe 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.