From: Boris Brezillon <boris.brezillon@collabora.com>
To: Matthew Auld <matthew.auld@intel.com>
Cc: "Steven Price" <steven.price@arm.com>,
"Liviu Dudau" <liviu.dudau@arm.com>,
"Adrián Larumbe" <adrian.larumbe@collabora.com>,
dri-devel@lists.freedesktop.org, kernel@collabora.com
Subject: Re: [PATCH v2] drm/panthor: Don't create a file offset for NO_MMAP BOs
Date: Thu, 17 Apr 2025 12:15:54 +0200 [thread overview]
Message-ID: <20250417121554.5a9ca8ff@collabora.com> (raw)
In-Reply-To: <4b14aba4-b9e6-436e-9027-4a3f6a6c7daf@intel.com>
On Thu, 17 Apr 2025 10:53:23 +0100
Matthew Auld <matthew.auld@intel.com> wrote:
> On 17/04/2025 10:32, Boris Brezillon wrote:
> > Right now the DRM_PANTHOR_BO_NO_MMAP flag is ignored by
> > panthor_ioctl_bo_mmap_offset(), meaning BOs with this flag set can
> > have a file offset but can't be mapped anyway, because
> > panthor_gem_mmap() will filter them out.
> >
> > If we error out at mmap_offset creation time, we can get rid of
> > panthor_gem_mmap() and call drm_gem_shmem_object_mmap directly, and
> > we get rid of this inconsistency of having an mmap offset for a
> > BO that can never be mmap-ed.
> >
> > Changes in v2:
> > - Get rid of panthor_gem_mmap()
> > - Get rid of the Fixes tag and adjust the commit message accordingly
> > - Return ENOPERM instead of EINVAL
> >
> > Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
> > ---
> > drivers/gpu/drm/panthor/panthor_drv.c | 5 +++++
> > drivers/gpu/drm/panthor/panthor_gem.c | 13 +------------
> > 2 files changed, 6 insertions(+), 12 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/panthor/panthor_drv.c b/drivers/gpu/drm/panthor/panthor_drv.c
> > index 06fe46e32073..7cd131af340d 100644
> > --- a/drivers/gpu/drm/panthor/panthor_drv.c
> > +++ b/drivers/gpu/drm/panthor/panthor_drv.c
> > @@ -940,6 +940,7 @@ static int panthor_ioctl_bo_mmap_offset(struct drm_device *ddev, void *data,
> > struct drm_file *file)
> > {
> > struct drm_panthor_bo_mmap_offset *args = data;
> > + struct panthor_gem_object *bo;
> > struct drm_gem_object *obj;
> > int ret;
> >
> > @@ -950,6 +951,10 @@ static int panthor_ioctl_bo_mmap_offset(struct drm_device *ddev, void *data,
> > if (!obj)
> > return -ENOENT;
> >
> > + bo = to_panthor_bo(obj);
> > + if (bo->flags & DRM_PANTHOR_BO_NO_MMAP)
> > + return -EPERM;
>
> Just a drive-by-comment: are we not leaking the bo ref here?
We certainly are, good catch!
>
> > +
> > ret = drm_gem_create_mmap_offset(obj);
> > if (ret)
> > goto out;
> > diff --git a/drivers/gpu/drm/panthor/panthor_gem.c b/drivers/gpu/drm/panthor/panthor_gem.c
> > index fd014ccc3bfc..22d78cef9c66 100644
> > --- a/drivers/gpu/drm/panthor/panthor_gem.c
> > +++ b/drivers/gpu/drm/panthor/panthor_gem.c
> > @@ -129,17 +129,6 @@ panthor_kernel_bo_create(struct panthor_device *ptdev, struct panthor_vm *vm,
> > return ERR_PTR(ret);
> > }
> >
> > -static int panthor_gem_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
> > -{
> > - struct panthor_gem_object *bo = to_panthor_bo(obj);
> > -
> > - /* Don't allow mmap on objects that have the NO_MMAP flag set. */
> > - if (bo->flags & DRM_PANTHOR_BO_NO_MMAP)
> > - return -EINVAL;
> > -
> > - return drm_gem_shmem_object_mmap(obj, vma);
> > -}
> > -
> > static struct dma_buf *
> > panthor_gem_prime_export(struct drm_gem_object *obj, int flags)
> > {
> > @@ -169,7 +158,7 @@ static const struct drm_gem_object_funcs panthor_gem_funcs = {
> > .get_sg_table = drm_gem_shmem_object_get_sg_table,
> > .vmap = drm_gem_shmem_object_vmap,
> > .vunmap = drm_gem_shmem_object_vunmap,
> > - .mmap = panthor_gem_mmap,
> > + .mmap = drm_gem_shmem_object_mmap,
> > .status = panthor_gem_status,
> > .export = panthor_gem_prime_export,
> > .vm_ops = &drm_gem_shmem_vm_ops,
>
next prev parent reply other threads:[~2025-04-17 10:16 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-17 9:32 [PATCH v2] drm/panthor: Don't create a file offset for NO_MMAP BOs Boris Brezillon
2025-04-17 9:34 ` Boris Brezillon
2025-04-17 9:44 ` Steven Price
2025-04-17 9:53 ` Matthew Auld
2025-04-17 10:15 ` Boris Brezillon [this message]
2025-04-17 11:19 ` Liviu Dudau
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=20250417121554.5a9ca8ff@collabora.com \
--to=boris.brezillon@collabora.com \
--cc=adrian.larumbe@collabora.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=kernel@collabora.com \
--cc=liviu.dudau@arm.com \
--cc=matthew.auld@intel.com \
--cc=steven.price@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: 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.