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/shmem-helper: Refactor locked/unlocked functions

Add locked and remove unlocked postfixes from drm-shmem function names,
making names consistent with the drm/gem core code.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Suggested-by: Boris Brezillon <boris.brezillon@collabora.com>
Acked-by: Thomas Zimmermann <tzimmermann@suse.d>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250322212608.40511-6-dmitry.osipenko@collabora.com

+56 -56
+30 -30
drivers/gpu/drm/drm_gem_shmem_helper.c
··· 174 174 kfree(shmem->sgt); 175 175 } 176 176 if (shmem->pages) 177 - drm_gem_shmem_put_pages(shmem); 177 + drm_gem_shmem_put_pages_locked(shmem); 178 178 179 179 drm_WARN_ON(obj->dev, shmem->pages_use_count); 180 180 ··· 186 186 } 187 187 EXPORT_SYMBOL_GPL(drm_gem_shmem_free); 188 188 189 - static int drm_gem_shmem_get_pages(struct drm_gem_shmem_object *shmem) 189 + static int drm_gem_shmem_get_pages_locked(struct drm_gem_shmem_object *shmem) 190 190 { 191 191 struct drm_gem_object *obj = &shmem->base; 192 192 struct page **pages; ··· 220 220 } 221 221 222 222 /* 223 - * drm_gem_shmem_put_pages - Decrease use count on the backing pages for a shmem GEM object 223 + * drm_gem_shmem_put_pages_locked - Decrease use count on the backing pages for a shmem GEM object 224 224 * @shmem: shmem GEM object 225 225 * 226 226 * This function decreases the use count and puts the backing pages when use drops to zero. 227 227 */ 228 - void drm_gem_shmem_put_pages(struct drm_gem_shmem_object *shmem) 228 + void drm_gem_shmem_put_pages_locked(struct drm_gem_shmem_object *shmem) 229 229 { 230 230 struct drm_gem_object *obj = &shmem->base; 231 231 ··· 247 247 shmem->pages_mark_accessed_on_put); 248 248 shmem->pages = NULL; 249 249 } 250 - EXPORT_SYMBOL_GPL(drm_gem_shmem_put_pages); 250 + EXPORT_SYMBOL_GPL(drm_gem_shmem_put_pages_locked); 251 251 252 252 int drm_gem_shmem_pin_locked(struct drm_gem_shmem_object *shmem) 253 253 { ··· 257 257 258 258 drm_WARN_ON(shmem->base.dev, drm_gem_is_imported(&shmem->base)); 259 259 260 - ret = drm_gem_shmem_get_pages(shmem); 260 + ret = drm_gem_shmem_get_pages_locked(shmem); 261 261 262 262 return ret; 263 263 } ··· 267 267 { 268 268 dma_resv_assert_held(shmem->base.resv); 269 269 270 - drm_gem_shmem_put_pages(shmem); 270 + drm_gem_shmem_put_pages_locked(shmem); 271 271 } 272 272 EXPORT_SYMBOL(drm_gem_shmem_unpin_locked); 273 273 ··· 318 318 EXPORT_SYMBOL_GPL(drm_gem_shmem_unpin); 319 319 320 320 /* 321 - * drm_gem_shmem_vmap - Create a virtual mapping for a shmem GEM object 321 + * drm_gem_shmem_vmap_locked - Create a virtual mapping for a shmem GEM object 322 322 * @shmem: shmem GEM object 323 323 * @map: Returns the kernel virtual address of the SHMEM GEM object's backing 324 324 * store. ··· 327 327 * exists for the buffer backing the shmem GEM object. It hides the differences 328 328 * between dma-buf imported and natively allocated objects. 329 329 * 330 - * Acquired mappings should be cleaned up by calling drm_gem_shmem_vunmap(). 330 + * Acquired mappings should be cleaned up by calling drm_gem_shmem_vunmap_locked(). 331 331 * 332 332 * Returns: 333 333 * 0 on success or a negative error code on failure. 334 334 */ 335 - int drm_gem_shmem_vmap(struct drm_gem_shmem_object *shmem, 336 - struct iosys_map *map) 335 + int drm_gem_shmem_vmap_locked(struct drm_gem_shmem_object *shmem, 336 + struct iosys_map *map) 337 337 { 338 338 struct drm_gem_object *obj = &shmem->base; 339 339 int ret = 0; ··· 356 356 return 0; 357 357 } 358 358 359 - ret = drm_gem_shmem_get_pages(shmem); 359 + ret = drm_gem_shmem_get_pages_locked(shmem); 360 360 if (ret) 361 361 goto err_zero_use; 362 362 ··· 379 379 380 380 err_put_pages: 381 381 if (!drm_gem_is_imported(obj)) 382 - drm_gem_shmem_put_pages(shmem); 382 + drm_gem_shmem_put_pages_locked(shmem); 383 383 err_zero_use: 384 384 shmem->vmap_use_count = 0; 385 385 386 386 return ret; 387 387 } 388 - EXPORT_SYMBOL_GPL(drm_gem_shmem_vmap); 388 + EXPORT_SYMBOL_GPL(drm_gem_shmem_vmap_locked); 389 389 390 390 /* 391 - * drm_gem_shmem_vunmap - Unmap a virtual mapping for a shmem GEM object 391 + * drm_gem_shmem_vunmap_locked - Unmap a virtual mapping for a shmem GEM object 392 392 * @shmem: shmem GEM object 393 393 * @map: Kernel virtual address where the SHMEM GEM object was mapped 394 394 * 395 395 * This function cleans up a kernel virtual address mapping acquired by 396 - * drm_gem_shmem_vmap(). The mapping is only removed when the use count drops to 397 - * zero. 396 + * drm_gem_shmem_vmap_locked(). The mapping is only removed when the use count 397 + * drops to zero. 398 398 * 399 399 * This function hides the differences between dma-buf imported and natively 400 400 * allocated objects. 401 401 */ 402 - void drm_gem_shmem_vunmap(struct drm_gem_shmem_object *shmem, 403 - struct iosys_map *map) 402 + void drm_gem_shmem_vunmap_locked(struct drm_gem_shmem_object *shmem, 403 + struct iosys_map *map) 404 404 { 405 405 struct drm_gem_object *obj = &shmem->base; 406 406 ··· 416 416 return; 417 417 418 418 vunmap(shmem->vaddr); 419 - drm_gem_shmem_put_pages(shmem); 419 + drm_gem_shmem_put_pages_locked(shmem); 420 420 } 421 421 422 422 shmem->vaddr = NULL; 423 423 } 424 - EXPORT_SYMBOL_GPL(drm_gem_shmem_vunmap); 424 + EXPORT_SYMBOL_GPL(drm_gem_shmem_vunmap_locked); 425 425 426 426 static int 427 427 drm_gem_shmem_create_with_handle(struct drm_file *file_priv, ··· 449 449 /* Update madvise status, returns true if not purged, else 450 450 * false or -errno. 451 451 */ 452 - int drm_gem_shmem_madvise(struct drm_gem_shmem_object *shmem, int madv) 452 + int drm_gem_shmem_madvise_locked(struct drm_gem_shmem_object *shmem, int madv) 453 453 { 454 454 dma_resv_assert_held(shmem->base.resv); 455 455 ··· 460 460 461 461 return (madv >= 0); 462 462 } 463 - EXPORT_SYMBOL_GPL(drm_gem_shmem_madvise); 463 + EXPORT_SYMBOL_GPL(drm_gem_shmem_madvise_locked); 464 464 465 - void drm_gem_shmem_purge(struct drm_gem_shmem_object *shmem) 465 + void drm_gem_shmem_purge_locked(struct drm_gem_shmem_object *shmem) 466 466 { 467 467 struct drm_gem_object *obj = &shmem->base; 468 468 struct drm_device *dev = obj->dev; ··· 476 476 kfree(shmem->sgt); 477 477 shmem->sgt = NULL; 478 478 479 - drm_gem_shmem_put_pages(shmem); 479 + drm_gem_shmem_put_pages_locked(shmem); 480 480 481 481 shmem->madv = -1; 482 482 ··· 492 492 493 493 invalidate_mapping_pages(file_inode(obj->filp)->i_mapping, 0, (loff_t)-1); 494 494 } 495 - EXPORT_SYMBOL_GPL(drm_gem_shmem_purge); 495 + EXPORT_SYMBOL_GPL(drm_gem_shmem_purge_locked); 496 496 497 497 /** 498 498 * drm_gem_shmem_dumb_create - Create a dumb shmem buffer object ··· 589 589 struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj); 590 590 591 591 dma_resv_lock(shmem->base.resv, NULL); 592 - drm_gem_shmem_put_pages(shmem); 592 + drm_gem_shmem_put_pages_locked(shmem); 593 593 dma_resv_unlock(shmem->base.resv); 594 594 595 595 drm_gem_vm_close(vma); ··· 639 639 return -EINVAL; 640 640 641 641 dma_resv_lock(shmem->base.resv, NULL); 642 - ret = drm_gem_shmem_get_pages(shmem); 642 + ret = drm_gem_shmem_get_pages_locked(shmem); 643 643 dma_resv_unlock(shmem->base.resv); 644 644 645 645 if (ret) ··· 707 707 708 708 drm_WARN_ON(obj->dev, drm_gem_is_imported(obj)); 709 709 710 - ret = drm_gem_shmem_get_pages(shmem); 710 + ret = drm_gem_shmem_get_pages_locked(shmem); 711 711 if (ret) 712 712 return ERR_PTR(ret); 713 713 ··· 729 729 sg_free_table(sgt); 730 730 kfree(sgt); 731 731 err_put_pages: 732 - drm_gem_shmem_put_pages(shmem); 732 + drm_gem_shmem_put_pages_locked(shmem); 733 733 return ERR_PTR(ret); 734 734 } 735 735
+2 -2
drivers/gpu/drm/imagination/pvr_gem.c
··· 203 203 204 204 dma_resv_lock(obj->resv, NULL); 205 205 206 - err = drm_gem_shmem_vmap(shmem_obj, &map); 206 + err = drm_gem_shmem_vmap_locked(shmem_obj, &map); 207 207 if (err) 208 208 goto err_unlock; 209 209 ··· 257 257 dma_sync_sgtable_for_device(dev, shmem_obj->sgt, DMA_BIDIRECTIONAL); 258 258 } 259 259 260 - drm_gem_shmem_vunmap(shmem_obj, &map); 260 + drm_gem_shmem_vunmap_locked(shmem_obj, &map); 261 261 262 262 dma_resv_unlock(obj->resv); 263 263 }
+1 -1
drivers/gpu/drm/lima/lima_gem.c
··· 195 195 if (bo->heap_size) 196 196 return -EINVAL; 197 197 198 - return drm_gem_shmem_vmap(&bo->base, map); 198 + return drm_gem_shmem_vmap_locked(&bo->base, map); 199 199 } 200 200 201 201 static int lima_gem_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+1 -1
drivers/gpu/drm/panfrost/panfrost_drv.c
··· 476 476 } 477 477 } 478 478 479 - args->retained = drm_gem_shmem_madvise(&bo->base, args->madv); 479 + args->retained = drm_gem_shmem_madvise_locked(&bo->base, args->madv); 480 480 481 481 if (args->retained) { 482 482 if (args->madv == PANFROST_MADV_DONTNEED)
+1 -1
drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c
··· 51 51 goto unlock_mappings; 52 52 53 53 panfrost_gem_teardown_mappings_locked(bo); 54 - drm_gem_shmem_purge(&bo->base); 54 + drm_gem_shmem_purge_locked(&bo->base); 55 55 ret = true; 56 56 57 57 dma_resv_unlock(shmem->base.resv);
+7 -7
drivers/gpu/drm/tests/drm_gem_shmem_test.c
··· 173 173 ret = kunit_add_action_or_reset(test, drm_gem_shmem_free_wrapper, shmem); 174 174 KUNIT_ASSERT_EQ(test, ret, 0); 175 175 176 - ret = drm_gem_shmem_vmap(shmem, &map); 176 + ret = drm_gem_shmem_vmap_locked(shmem, &map); 177 177 KUNIT_ASSERT_EQ(test, ret, 0); 178 178 KUNIT_ASSERT_NOT_NULL(test, shmem->vaddr); 179 179 KUNIT_ASSERT_FALSE(test, iosys_map_is_null(&map)); ··· 183 183 for (i = 0; i < TEST_SIZE; i++) 184 184 KUNIT_EXPECT_EQ(test, iosys_map_rd(&map, i, u8), TEST_BYTE); 185 185 186 - drm_gem_shmem_vunmap(shmem, &map); 186 + drm_gem_shmem_vunmap_locked(shmem, &map); 187 187 KUNIT_EXPECT_NULL(test, shmem->vaddr); 188 188 KUNIT_EXPECT_EQ(test, shmem->vmap_use_count, 0); 189 189 } ··· 281 281 ret = kunit_add_action_or_reset(test, drm_gem_shmem_free_wrapper, shmem); 282 282 KUNIT_ASSERT_EQ(test, ret, 0); 283 283 284 - ret = drm_gem_shmem_madvise(shmem, 1); 284 + ret = drm_gem_shmem_madvise_locked(shmem, 1); 285 285 KUNIT_EXPECT_TRUE(test, ret); 286 286 KUNIT_ASSERT_EQ(test, shmem->madv, 1); 287 287 288 288 /* Set madv to a negative value */ 289 - ret = drm_gem_shmem_madvise(shmem, -1); 289 + ret = drm_gem_shmem_madvise_locked(shmem, -1); 290 290 KUNIT_EXPECT_FALSE(test, ret); 291 291 KUNIT_ASSERT_EQ(test, shmem->madv, -1); 292 292 293 293 /* Check that madv cannot be set back to a positive value */ 294 - ret = drm_gem_shmem_madvise(shmem, 0); 294 + ret = drm_gem_shmem_madvise_locked(shmem, 0); 295 295 KUNIT_EXPECT_FALSE(test, ret); 296 296 KUNIT_ASSERT_EQ(test, shmem->madv, -1); 297 297 } ··· 319 319 ret = drm_gem_shmem_is_purgeable(shmem); 320 320 KUNIT_EXPECT_FALSE(test, ret); 321 321 322 - ret = drm_gem_shmem_madvise(shmem, 1); 322 + ret = drm_gem_shmem_madvise_locked(shmem, 1); 323 323 KUNIT_EXPECT_TRUE(test, ret); 324 324 325 325 /* The scatter/gather table will be freed by drm_gem_shmem_free */ ··· 329 329 ret = drm_gem_shmem_is_purgeable(shmem); 330 330 KUNIT_EXPECT_TRUE(test, ret); 331 331 332 - drm_gem_shmem_purge(shmem); 332 + drm_gem_shmem_purge_locked(shmem); 333 333 KUNIT_EXPECT_NULL(test, shmem->pages); 334 334 KUNIT_EXPECT_NULL(test, shmem->sgt); 335 335 KUNIT_EXPECT_EQ(test, shmem->madv, -1);
+14 -14
include/drm/drm_gem_shmem_helper.h
··· 102 102 struct vfsmount *gemfs); 103 103 void drm_gem_shmem_free(struct drm_gem_shmem_object *shmem); 104 104 105 - void drm_gem_shmem_put_pages(struct drm_gem_shmem_object *shmem); 105 + void drm_gem_shmem_put_pages_locked(struct drm_gem_shmem_object *shmem); 106 106 int drm_gem_shmem_pin(struct drm_gem_shmem_object *shmem); 107 107 void drm_gem_shmem_unpin(struct drm_gem_shmem_object *shmem); 108 - int drm_gem_shmem_vmap(struct drm_gem_shmem_object *shmem, 109 - struct iosys_map *map); 110 - void drm_gem_shmem_vunmap(struct drm_gem_shmem_object *shmem, 111 - struct iosys_map *map); 108 + int drm_gem_shmem_vmap_locked(struct drm_gem_shmem_object *shmem, 109 + struct iosys_map *map); 110 + void drm_gem_shmem_vunmap_locked(struct drm_gem_shmem_object *shmem, 111 + struct iosys_map *map); 112 112 int drm_gem_shmem_mmap(struct drm_gem_shmem_object *shmem, struct vm_area_struct *vma); 113 113 114 114 int drm_gem_shmem_pin_locked(struct drm_gem_shmem_object *shmem); 115 115 void drm_gem_shmem_unpin_locked(struct drm_gem_shmem_object *shmem); 116 116 117 - int drm_gem_shmem_madvise(struct drm_gem_shmem_object *shmem, int madv); 117 + int drm_gem_shmem_madvise_locked(struct drm_gem_shmem_object *shmem, int madv); 118 118 119 119 static inline bool drm_gem_shmem_is_purgeable(struct drm_gem_shmem_object *shmem) 120 120 { ··· 123 123 !shmem->base.dma_buf && !drm_gem_is_imported(&shmem->base); 124 124 } 125 125 126 - void drm_gem_shmem_purge(struct drm_gem_shmem_object *shmem); 126 + void drm_gem_shmem_purge_locked(struct drm_gem_shmem_object *shmem); 127 127 128 128 struct sg_table *drm_gem_shmem_get_sg_table(struct drm_gem_shmem_object *shmem); 129 129 struct sg_table *drm_gem_shmem_get_pages_sgt(struct drm_gem_shmem_object *shmem); ··· 214 214 } 215 215 216 216 /* 217 - * drm_gem_shmem_object_vmap - GEM object function for drm_gem_shmem_vmap() 217 + * drm_gem_shmem_object_vmap - GEM object function for drm_gem_shmem_vmap_locked() 218 218 * @obj: GEM object 219 219 * @map: Returns the kernel virtual address of the SHMEM GEM object's backing store. 220 220 * 221 - * This function wraps drm_gem_shmem_vmap(). Drivers that employ the shmem helpers should 222 - * use it as their &drm_gem_object_funcs.vmap handler. 221 + * This function wraps drm_gem_shmem_vmap_locked(). Drivers that employ the shmem 222 + * helpers should use it as their &drm_gem_object_funcs.vmap handler. 223 223 * 224 224 * Returns: 225 225 * 0 on success or a negative error code on failure. ··· 229 229 { 230 230 struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj); 231 231 232 - return drm_gem_shmem_vmap(shmem, map); 232 + return drm_gem_shmem_vmap_locked(shmem, map); 233 233 } 234 234 235 235 /* ··· 237 237 * @obj: GEM object 238 238 * @map: Kernel virtual address where the SHMEM GEM object was mapped 239 239 * 240 - * This function wraps drm_gem_shmem_vunmap(). Drivers that employ the shmem helpers should 241 - * use it as their &drm_gem_object_funcs.vunmap handler. 240 + * This function wraps drm_gem_shmem_vunmap_locked(). Drivers that employ the shmem 241 + * helpers should use it as their &drm_gem_object_funcs.vunmap handler. 242 242 */ 243 243 static inline void drm_gem_shmem_object_vunmap(struct drm_gem_object *obj, 244 244 struct iosys_map *map) 245 245 { 246 246 struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj); 247 247 248 - drm_gem_shmem_vunmap(shmem, map); 248 + drm_gem_shmem_vunmap_locked(shmem, map); 249 249 } 250 250 251 251 /**