Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/gem: Get rid of *_with_mnt helpers

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_get_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

v9:
- replace drm_gem_has_huge_mnt() with drm_gem_get_huge_mnt()

Signed-off-by: Loïc Molinari <loic.molinari@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Maíra Canal <mcanal@igalia.com>
Link: https://patch.msgid.link/20251205182231.194072-8-loic.molinari@collabora.com
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>

authored by

Loïc Molinari and committed by
Boris Brezillon
7cdf69d9 f19f99bb

+19 -65
+10 -27
drivers/gpu/drm/drm_gem.c
··· 171 171 } 172 172 173 173 /** 174 - * drm_gem_object_init_with_mnt - initialize an allocated shmem-backed GEM 175 - * object in a given shmfs mountpoint 174 + * drm_gem_object_init - initialize an allocated shmem-backed GEM object 176 175 * 177 176 * @dev: drm_device the object should be initialized for 178 177 * @obj: drm_gem_object to initialize 179 178 * @size: object size 180 - * @gemfs: tmpfs mount where the GEM object will be created. If NULL, use 181 - * the usual tmpfs mountpoint (`shm_mnt`). 182 179 * 183 180 * Initialize an already allocated GEM object of the specified size with 184 - * shmfs backing store. 181 + * shmfs backing store. A huge mountpoint can be used by calling 182 + * drm_gem_huge_mnt_create() beforehand. 185 183 */ 186 - int drm_gem_object_init_with_mnt(struct drm_device *dev, 187 - struct drm_gem_object *obj, size_t size, 188 - struct vfsmount *gemfs) 184 + int drm_gem_object_init(struct drm_device *dev, struct drm_gem_object *obj, 185 + size_t size) 189 186 { 187 + struct vfsmount *huge_mnt; 190 188 struct file *filp; 191 189 192 190 drm_gem_private_object_init(dev, obj, size); 193 191 194 - if (gemfs) 195 - filp = shmem_file_setup_with_mnt(gemfs, "drm mm object", size, 196 - VM_NORESERVE); 192 + huge_mnt = drm_gem_get_huge_mnt(dev); 193 + if (huge_mnt) 194 + filp = shmem_file_setup_with_mnt(huge_mnt, "drm mm object", 195 + size, VM_NORESERVE); 197 196 else 198 197 filp = shmem_file_setup("drm mm object", size, VM_NORESERVE); 199 198 ··· 202 203 obj->filp = filp; 203 204 204 205 return 0; 205 - } 206 - EXPORT_SYMBOL(drm_gem_object_init_with_mnt); 207 - 208 - /** 209 - * drm_gem_object_init - initialize an allocated shmem-backed GEM object 210 - * @dev: drm_device the object should be initialized for 211 - * @obj: drm_gem_object to initialize 212 - * @size: object size 213 - * 214 - * Initialize an already allocated GEM object of the specified size with 215 - * shmfs backing store. 216 - */ 217 - int drm_gem_object_init(struct drm_device *dev, struct drm_gem_object *obj, 218 - size_t size) 219 - { 220 - return drm_gem_object_init_with_mnt(dev, obj, size, NULL); 221 206 } 222 207 EXPORT_SYMBOL(drm_gem_object_init); 223 208
+8 -30
drivers/gpu/drm/drm_gem_shmem_helper.c
··· 50 50 }; 51 51 52 52 static int __drm_gem_shmem_init(struct drm_device *dev, struct drm_gem_shmem_object *shmem, 53 - size_t size, bool private, struct vfsmount *gemfs) 53 + size_t size, bool private) 54 54 { 55 55 struct drm_gem_object *obj = &shmem->base; 56 56 int ret = 0; ··· 62 62 drm_gem_private_object_init(dev, obj, size); 63 63 shmem->map_wc = false; /* dma-buf mappings use always writecombine */ 64 64 } else { 65 - ret = drm_gem_object_init_with_mnt(dev, obj, size, gemfs); 65 + ret = drm_gem_object_init(dev, obj, size); 66 66 } 67 67 if (ret) { 68 68 drm_gem_private_object_fini(obj); ··· 103 103 */ 104 104 int drm_gem_shmem_init(struct drm_device *dev, struct drm_gem_shmem_object *shmem, size_t size) 105 105 { 106 - return __drm_gem_shmem_init(dev, shmem, size, false, NULL); 106 + return __drm_gem_shmem_init(dev, shmem, size, false); 107 107 } 108 108 EXPORT_SYMBOL_GPL(drm_gem_shmem_init); 109 109 110 110 static struct drm_gem_shmem_object * 111 - __drm_gem_shmem_create(struct drm_device *dev, size_t size, bool private, 112 - struct vfsmount *gemfs) 111 + __drm_gem_shmem_create(struct drm_device *dev, size_t size, bool private) 113 112 { 114 113 struct drm_gem_shmem_object *shmem; 115 114 struct drm_gem_object *obj; ··· 128 129 obj = &shmem->base; 129 130 } 130 131 131 - ret = __drm_gem_shmem_init(dev, shmem, size, private, gemfs); 132 + ret = __drm_gem_shmem_init(dev, shmem, size, private); 132 133 if (ret) { 133 134 kfree(obj); 134 135 return ERR_PTR(ret); ··· 149 150 */ 150 151 struct drm_gem_shmem_object *drm_gem_shmem_create(struct drm_device *dev, size_t size) 151 152 { 152 - return __drm_gem_shmem_create(dev, size, false, NULL); 153 + return __drm_gem_shmem_create(dev, size, false); 153 154 } 154 155 EXPORT_SYMBOL_GPL(drm_gem_shmem_create); 155 - 156 - /** 157 - * drm_gem_shmem_create_with_mnt - Allocate an object with the given size in a 158 - * given mountpoint 159 - * @dev: DRM device 160 - * @size: Size of the object to allocate 161 - * @gemfs: tmpfs mount where the GEM object will be created 162 - * 163 - * This function creates a shmem GEM object in a given tmpfs mountpoint. 164 - * 165 - * Returns: 166 - * A struct drm_gem_shmem_object * on success or an ERR_PTR()-encoded negative 167 - * error code on failure. 168 - */ 169 - struct drm_gem_shmem_object *drm_gem_shmem_create_with_mnt(struct drm_device *dev, 170 - size_t size, 171 - struct vfsmount *gemfs) 172 - { 173 - return __drm_gem_shmem_create(dev, size, false, gemfs); 174 - } 175 - EXPORT_SYMBOL_GPL(drm_gem_shmem_create_with_mnt); 176 156 177 157 /** 178 158 * drm_gem_shmem_release - Release resources associated with a shmem GEM object. ··· 829 851 size_t size = PAGE_ALIGN(attach->dmabuf->size); 830 852 struct drm_gem_shmem_object *shmem; 831 853 832 - shmem = __drm_gem_shmem_create(dev, size, true, NULL); 854 + shmem = __drm_gem_shmem_create(dev, size, true); 833 855 if (IS_ERR(shmem)) 834 856 return ERR_CAST(shmem); 835 857 ··· 877 899 878 900 size = PAGE_ALIGN(attach->dmabuf->size); 879 901 880 - shmem = __drm_gem_shmem_create(dev, size, true, NULL); 902 + shmem = __drm_gem_shmem_create(dev, size, true); 881 903 if (IS_ERR(shmem)) { 882 904 ret = PTR_ERR(shmem); 883 905 goto fail_detach;
+1 -2
drivers/gpu/drm/v3d/v3d_bo.c
··· 153 153 struct v3d_bo *bo; 154 154 int ret; 155 155 156 - shmem_obj = drm_gem_shmem_create_with_mnt(dev, unaligned_size, 157 - drm_gem_get_huge_mnt(dev)); 156 + shmem_obj = drm_gem_shmem_create(dev, unaligned_size); 158 157 if (IS_ERR(shmem_obj)) 159 158 return ERR_CAST(shmem_obj); 160 159 bo = to_v3d_bo(&shmem_obj->base);
-3
include/drm/drm_gem.h
··· 529 529 void drm_gem_object_free(struct kref *kref); 530 530 int drm_gem_object_init(struct drm_device *dev, 531 531 struct drm_gem_object *obj, size_t size); 532 - int drm_gem_object_init_with_mnt(struct drm_device *dev, 533 - struct drm_gem_object *obj, size_t size, 534 - struct vfsmount *gemfs); 535 532 void drm_gem_private_object_init(struct drm_device *dev, 536 533 struct drm_gem_object *obj, size_t size); 537 534 void drm_gem_private_object_fini(struct drm_gem_object *obj);
-3
include/drm/drm_gem_shmem_helper.h
··· 109 109 110 110 int drm_gem_shmem_init(struct drm_device *dev, struct drm_gem_shmem_object *shmem, size_t size); 111 111 struct drm_gem_shmem_object *drm_gem_shmem_create(struct drm_device *dev, size_t size); 112 - struct drm_gem_shmem_object *drm_gem_shmem_create_with_mnt(struct drm_device *dev, 113 - size_t size, 114 - struct vfsmount *gemfs); 115 112 void drm_gem_shmem_release(struct drm_gem_shmem_object *shmem); 116 113 void drm_gem_shmem_free(struct drm_gem_shmem_object *shmem); 117 114