drm_gem_object_init_with_mnt() and drm_gem_shmem_create_with_mnt() can
be removed now that the drivers use the new drm_gem_huge_mnt_create()
and drm_gem_has_huge_mnt() helpers.

v5:
- use drm_gem_has_huge_mnt() helper
- compile out shmem_file_setup_with_mnt() call in builds with
  CONFIG_TRANSPARENT_HUGEPAGE=n

Signed-off-by: Loïc Molinari <[email protected]>
Reviewed-by: Boris Brezillon <[email protected]>
---
 drivers/gpu/drm/drm_gem.c              | 38 ++++++++------------------
 drivers/gpu/drm/drm_gem_shmem_helper.c | 38 ++++++--------------------
 drivers/gpu/drm/v3d/v3d_bo.c           |  5 ----
 include/drm/drm_gem.h                  |  3 --
 include/drm/drm_gem_shmem_helper.h     |  3 --
 5 files changed, 20 insertions(+), 67 deletions(-)

diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
index bbca2ab9e9a5..1b0b5813acef 100644
--- a/drivers/gpu/drm/drm_gem.c
+++ b/drivers/gpu/drm/drm_gem.c
@@ -171,31 +171,33 @@ drm_gem_init(struct drm_device *dev)
 }
 
 /**
- * drm_gem_object_init_with_mnt - initialize an allocated shmem-backed GEM
- * object in a given shmfs mountpoint
+ * drm_gem_object_init - initialize an allocated shmem-backed GEM object
  *
  * @dev: drm_device the object should be initialized for
  * @obj: drm_gem_object to initialize
  * @size: object size
- * @gemfs: tmpfs mount where the GEM object will be created. If NULL, use
- * the usual tmpfs mountpoint (`shm_mnt`).
  *
  * Initialize an already allocated GEM object of the specified size with
- * shmfs backing store.
+ * shmfs backing store. A huge mountpoint can be used by calling
+ * drm_gem_huge_mnt_create() beforehand.
  */
-int drm_gem_object_init_with_mnt(struct drm_device *dev,
-                                struct drm_gem_object *obj, size_t size,
-                                struct vfsmount *gemfs)
+int drm_gem_object_init(struct drm_device *dev, struct drm_gem_object *obj,
+                       size_t size)
 {
        struct file *filp;
 
        drm_gem_private_object_init(dev, obj, size);
 
-       if (gemfs)
-               filp = shmem_file_setup_with_mnt(gemfs, "drm mm object", size,
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+       if (drm_gem_has_huge_mnt(dev))
+               filp = shmem_file_setup_with_mnt(dev->huge_mnt,
+                                                "drm mm object", size,
                                                 VM_NORESERVE);
        else
                filp = shmem_file_setup("drm mm object", size, VM_NORESERVE);
+#else
+       filp = shmem_file_setup("drm mm object", size, VM_NORESERVE);
+#endif
 
        if (IS_ERR(filp))
                return PTR_ERR(filp);
@@ -204,22 +206,6 @@ int drm_gem_object_init_with_mnt(struct drm_device *dev,
 
        return 0;
 }
-EXPORT_SYMBOL(drm_gem_object_init_with_mnt);
-
-/**
- * drm_gem_object_init - initialize an allocated shmem-backed GEM object
- * @dev: drm_device the object should be initialized for
- * @obj: drm_gem_object to initialize
- * @size: object size
- *
- * Initialize an already allocated GEM object of the specified size with
- * shmfs backing store.
- */
-int drm_gem_object_init(struct drm_device *dev, struct drm_gem_object *obj,
-                       size_t size)
-{
-       return drm_gem_object_init_with_mnt(dev, obj, size, NULL);
-}
 EXPORT_SYMBOL(drm_gem_object_init);
 
 /**
diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c 
b/drivers/gpu/drm/drm_gem_shmem_helper.c
index 81f4ac7cb8f6..43a80f3fcfd9 100644
--- a/drivers/gpu/drm/drm_gem_shmem_helper.c
+++ b/drivers/gpu/drm/drm_gem_shmem_helper.c
@@ -50,7 +50,7 @@ static const struct drm_gem_object_funcs drm_gem_shmem_funcs 
= {
 };
 
 static int __drm_gem_shmem_init(struct drm_device *dev, struct 
drm_gem_shmem_object *shmem,
-                               size_t size, bool private, struct vfsmount 
*gemfs)
+                               size_t size, bool private)
 {
        struct drm_gem_object *obj = &shmem->base;
        int ret = 0;
@@ -62,7 +62,7 @@ static int __drm_gem_shmem_init(struct drm_device *dev, 
struct drm_gem_shmem_obj
                drm_gem_private_object_init(dev, obj, size);
                shmem->map_wc = false; /* dma-buf mappings use always 
writecombine */
        } else {
-               ret = drm_gem_object_init_with_mnt(dev, obj, size, gemfs);
+               ret = drm_gem_object_init(dev, obj, size);
        }
        if (ret) {
                drm_gem_private_object_fini(obj);
@@ -103,13 +103,12 @@ static int __drm_gem_shmem_init(struct drm_device *dev, 
struct drm_gem_shmem_obj
  */
 int drm_gem_shmem_init(struct drm_device *dev, struct drm_gem_shmem_object 
*shmem, size_t size)
 {
-       return __drm_gem_shmem_init(dev, shmem, size, false, NULL);
+       return __drm_gem_shmem_init(dev, shmem, size, false);
 }
 EXPORT_SYMBOL_GPL(drm_gem_shmem_init);
 
 static struct drm_gem_shmem_object *
-__drm_gem_shmem_create(struct drm_device *dev, size_t size, bool private,
-                      struct vfsmount *gemfs)
+__drm_gem_shmem_create(struct drm_device *dev, size_t size, bool private)
 {
        struct drm_gem_shmem_object *shmem;
        struct drm_gem_object *obj;
@@ -129,7 +128,7 @@ __drm_gem_shmem_create(struct drm_device *dev, size_t size, 
bool private,
                obj = &shmem->base;
        }
 
-       ret = __drm_gem_shmem_init(dev, shmem, size, private, gemfs);
+       ret = __drm_gem_shmem_init(dev, shmem, size, private);
        if (ret) {
                kfree(obj);
                return ERR_PTR(ret);
@@ -150,31 +149,10 @@ __drm_gem_shmem_create(struct drm_device *dev, size_t 
size, bool private,
  */
 struct drm_gem_shmem_object *drm_gem_shmem_create(struct drm_device *dev, 
size_t size)
 {
-       return __drm_gem_shmem_create(dev, size, false, NULL);
+       return __drm_gem_shmem_create(dev, size, false);
 }
 EXPORT_SYMBOL_GPL(drm_gem_shmem_create);
 
-/**
- * drm_gem_shmem_create_with_mnt - Allocate an object with the given size in a
- * given mountpoint
- * @dev: DRM device
- * @size: Size of the object to allocate
- * @gemfs: tmpfs mount where the GEM object will be created
- *
- * This function creates a shmem GEM object in a given tmpfs mountpoint.
- *
- * Returns:
- * A struct drm_gem_shmem_object * on success or an ERR_PTR()-encoded negative
- * error code on failure.
- */
-struct drm_gem_shmem_object *drm_gem_shmem_create_with_mnt(struct drm_device 
*dev,
-                                                          size_t size,
-                                                          struct vfsmount 
*gemfs)
-{
-       return __drm_gem_shmem_create(dev, size, false, gemfs);
-}
-EXPORT_SYMBOL_GPL(drm_gem_shmem_create_with_mnt);
-
 /**
  * drm_gem_shmem_release - Release resources associated with a shmem GEM 
object.
  * @shmem: shmem GEM object
@@ -861,7 +839,7 @@ drm_gem_shmem_prime_import_sg_table(struct drm_device *dev,
        size_t size = PAGE_ALIGN(attach->dmabuf->size);
        struct drm_gem_shmem_object *shmem;
 
-       shmem = __drm_gem_shmem_create(dev, size, true, NULL);
+       shmem = __drm_gem_shmem_create(dev, size, true);
        if (IS_ERR(shmem))
                return ERR_CAST(shmem);
 
@@ -909,7 +887,7 @@ struct drm_gem_object 
*drm_gem_shmem_prime_import_no_map(struct drm_device *dev,
 
        size = PAGE_ALIGN(attach->dmabuf->size);
 
-       shmem = __drm_gem_shmem_create(dev, size, true, NULL);
+       shmem = __drm_gem_shmem_create(dev, size, true);
        if (IS_ERR(shmem)) {
                ret = PTR_ERR(shmem);
                goto fail_detach;
diff --git a/drivers/gpu/drm/v3d/v3d_bo.c b/drivers/gpu/drm/v3d/v3d_bo.c
index 3bc714ea6392..d3b68ee05dbb 100644
--- a/drivers/gpu/drm/v3d/v3d_bo.c
+++ b/drivers/gpu/drm/v3d/v3d_bo.c
@@ -153,12 +153,7 @@ struct v3d_bo *v3d_bo_create(struct drm_device *dev, 
struct drm_file *file_priv,
        struct v3d_bo *bo;
        int ret;
 
-#ifdef CONFIG_TRANSPARENT_HUGEPAGE
-       shmem_obj = drm_gem_shmem_create_with_mnt(dev, unaligned_size,
-                                                 dev->huge_mnt);
-#else
        shmem_obj = drm_gem_shmem_create(dev, unaligned_size);
-#endif
        if (IS_ERR(shmem_obj))
                return ERR_CAST(shmem_obj);
        bo = to_v3d_bo(&shmem_obj->base);
diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h
index 58fa1e6b9773..75276a12208e 100644
--- a/include/drm/drm_gem.h
+++ b/include/drm/drm_gem.h
@@ -529,9 +529,6 @@ void drm_gem_object_release(struct drm_gem_object *obj);
 void drm_gem_object_free(struct kref *kref);
 int drm_gem_object_init(struct drm_device *dev,
                        struct drm_gem_object *obj, size_t size);
-int drm_gem_object_init_with_mnt(struct drm_device *dev,
-                                struct drm_gem_object *obj, size_t size,
-                                struct vfsmount *gemfs);
 void drm_gem_private_object_init(struct drm_device *dev,
                                 struct drm_gem_object *obj, size_t size);
 void drm_gem_private_object_fini(struct drm_gem_object *obj);
diff --git a/include/drm/drm_gem_shmem_helper.h 
b/include/drm/drm_gem_shmem_helper.h
index 589f7bfe7506..6b6478f5ca24 100644
--- a/include/drm/drm_gem_shmem_helper.h
+++ b/include/drm/drm_gem_shmem_helper.h
@@ -109,9 +109,6 @@ struct drm_gem_shmem_object {
 
 int drm_gem_shmem_init(struct drm_device *dev, struct drm_gem_shmem_object 
*shmem, size_t size);
 struct drm_gem_shmem_object *drm_gem_shmem_create(struct drm_device *dev, 
size_t size);
-struct drm_gem_shmem_object *drm_gem_shmem_create_with_mnt(struct drm_device 
*dev,
-                                                          size_t size,
-                                                          struct vfsmount 
*gemfs);
 void drm_gem_shmem_release(struct drm_gem_shmem_object *shmem);
 void drm_gem_shmem_free(struct drm_gem_shmem_object *shmem);
 
-- 
2.47.3

Reply via email to