Re: [PATCH v9 06/11] drm/v3d: Use huge tmpfs mountpoint helpers

From: Boris Brezillon

Date: Fri Nov 14 2025 - 12:11:52 EST


On Fri, 14 Nov 2025 18:02:57 +0100
Loïc Molinari <loic.molinari@xxxxxxxxxxxxx> wrote:

> Make use of the new drm_gem_huge_mnt_create() and
> drm_gem_get_huge_mnt() helpers to avoid code duplication. Now that
> it's just a few lines long, the single function in v3d_gemfs.c is
> moved into v3d_gem.c.
>
> v3:
> - use huge tmpfs mountpoint in drm_device
> - move v3d_gemfs.c into v3d_gem.c
>
> v4:
> - clean up mountpoint creation error handling
>
> v5:
> - fix CONFIG_TRANSPARENT_HUGEPAGE check
> - use drm_gem_has_huge_mnt() helper
>
> v8:
> - don't access huge_mnt field with CONFIG_TRANSPARENT_HUGEPAGE=n
>
> v9:
> - replace drm_gem_has_huge_mnt() by drm_gem_get_huge_mnt()
>
> Signed-off-by: Loïc Molinari <loic.molinari@xxxxxxxxxxxxx>
> ---
> drivers/gpu/drm/v3d/Makefile | 3 +-
> drivers/gpu/drm/v3d/v3d_bo.c | 9 +++--
> drivers/gpu/drm/v3d/v3d_drv.c | 2 +-
> drivers/gpu/drm/v3d/v3d_drv.h | 11 +-----
> drivers/gpu/drm/v3d/v3d_gem.c | 27 ++++++++++++--
> drivers/gpu/drm/v3d/v3d_gemfs.c | 62 ---------------------------------
> 6 files changed, 34 insertions(+), 80 deletions(-)
> delete mode 100644 drivers/gpu/drm/v3d/v3d_gemfs.c
>
> diff --git a/drivers/gpu/drm/v3d/Makefile b/drivers/gpu/drm/v3d/Makefile
> index fcf710926057..b7d673f1153b 100644
> --- a/drivers/gpu/drm/v3d/Makefile
> +++ b/drivers/gpu/drm/v3d/Makefile
> @@ -13,8 +13,7 @@ v3d-y := \
> v3d_trace_points.o \
> v3d_sched.o \
> v3d_sysfs.o \
> - v3d_submit.o \
> - v3d_gemfs.o
> + v3d_submit.o
>
> v3d-$(CONFIG_DEBUG_FS) += v3d_debugfs.o
>
> diff --git a/drivers/gpu/drm/v3d/v3d_bo.c b/drivers/gpu/drm/v3d/v3d_bo.c
> index d9547f5117b9..211578abf9b6 100644
> --- a/drivers/gpu/drm/v3d/v3d_bo.c
> +++ b/drivers/gpu/drm/v3d/v3d_bo.c
> @@ -114,7 +114,7 @@ v3d_bo_create_finish(struct drm_gem_object *obj)
> if (IS_ERR(sgt))
> return PTR_ERR(sgt);
>
> - if (!v3d->gemfs)
> + if (!drm_gem_get_huge_mnt(obj->dev))
> align = SZ_4K;
> else if (obj->size >= SZ_1M)
> align = SZ_1M;
> @@ -150,12 +150,15 @@ struct v3d_bo *v3d_bo_create(struct drm_device *dev, struct drm_file *file_priv,
> size_t unaligned_size)
> {
> struct drm_gem_shmem_object *shmem_obj;
> - struct v3d_dev *v3d = to_v3d_dev(dev);
> struct v3d_bo *bo;
> int ret;
>
> +#ifdef CONFIG_TRANSPARENT_HUGEPAGE
> shmem_obj = drm_gem_shmem_create_with_mnt(dev, unaligned_size,
> - v3d->gemfs);
> + dev->huge_mnt);
> +#else
> + shmem_obj = drm_gem_shmem_create(dev, unaligned_size);
> +#endif

Why not drop the ifdef and go for

shmem_obj = drm_gem_shmem_create_with_mnt(dev,
unaligned_size,
drm_gem_get_huge_mnt(obj->dev));

?

> if (IS_ERR(shmem_obj))
> return ERR_CAST(shmem_obj);
> bo = to_v3d_bo(&shmem_obj->base);