Den 17.06.2019 18.29, skrev Daniel Vetter: > On Mon, Jun 17, 2019 at 05:47:50PM +0200, Noralf Trønnes wrote: >> >> >> Den 14.06.2019 22.35, skrev Daniel Vetter: >>> We're kinda going in the wrong direction. Spotted while typing better >>> gem/prime docs. >>> >>> Cc: Thomas Zimmermann <tzimmermann@xxxxxxx> >>> Cc: Gerd Hoffmann <kraxel@xxxxxxxxxx> >>> Cc: Rob Herring <robh@xxxxxxxxxx> >>> Cc: Noralf Trønnes <noralf@xxxxxxxxxxx> >>> Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> >>> --- >>> Documentation/gpu/todo.rst | 4 ++++ >>> 1 file changed, 4 insertions(+) >>> >>> diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst >>> index b4a76c2703e5..23583f0e3755 100644 >>> --- a/Documentation/gpu/todo.rst >>> +++ b/Documentation/gpu/todo.rst >>> @@ -228,6 +228,10 @@ struct drm_gem_object_funcs >>> GEM objects can now have a function table instead of having the callbacks on the >>> DRM driver struct. This is now the preferred way and drivers can be moved over. >>> >>> +Unfortunately some of the recently added GEM helpers are going in the wrong >>> +direction by adding OPS macros that use the old, deprecated hooks. See >>> +DRM_GEM_CMA_VMAP_DRIVER_OPS, DRM_GEM_SHMEM_DRIVER_OPS, and DRM_GEM_VRAM_DRIVER_PRIME. >>> + >> >> Both DRM_GEM_CMA_VMAP_DRIVER_OPS and DRM_GEM_SHMEM_DRIVER_OPS use the >> GEM vtable. Or am I missing something here? > > gem vtable I mean drm_gem_object_funcs. Which these macros definitely > aren't useful for. #define DRM_GEM_CMA_VMAP_DRIVER_OPS \ .gem_create_object = drm_cma_gem_create_object_default_funcs, \ .dumb_create = drm_gem_cma_dumb_create, \ .prime_handle_to_fd = drm_gem_prime_handle_to_fd, \ .prime_fd_to_handle = drm_gem_prime_fd_to_handle, \ .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table_vmap, \ .gem_prime_mmap = drm_gem_prime_mmap __drm_gem_cma_create() calls ->gem_create_object. drm_cma_gem_create_object_default_funcs() sets: cma_obj->base.funcs = &drm_cma_gem_default_funcs; static const struct drm_gem_object_funcs drm_cma_gem_default_funcs = { .free = drm_gem_cma_free_object, .print_info = drm_gem_cma_print_info, .get_sg_table = drm_gem_cma_prime_get_sg_table, .vmap = drm_gem_cma_prime_vmap, .vm_ops = &drm_gem_cma_vm_ops, }; The GEM SHMEM helper was made after drm_gem_object_funcs came about so it sets the default vtable in drm_gem_shmem_create(): obj->funcs = &drm_gem_shmem_funcs; static const struct drm_gem_object_funcs drm_gem_shmem_funcs = { .free = drm_gem_shmem_free_object, .print_info = drm_gem_shmem_print_info, .pin = drm_gem_shmem_pin, .unpin = drm_gem_shmem_unpin, .get_sg_table = drm_gem_shmem_get_sg_table, .vmap = drm_gem_shmem_vmap, .vunmap = drm_gem_shmem_vunmap, .vm_ops = &drm_gem_shmem_vm_ops, }; #define DRM_GEM_SHMEM_DRIVER_OPS \ .prime_handle_to_fd = drm_gem_prime_handle_to_fd, \ .prime_fd_to_handle = drm_gem_prime_fd_to_handle, \ .gem_prime_import_sg_table = drm_gem_shmem_prime_import_sg_table, \ .gem_prime_mmap = drm_gem_prime_mmap, \ .dumb_create = drm_gem_shmem_dumb_create So the two driver ops macroes only set the necessary bits to enable prime import/export/mmap and dumb buffer creation, leaving the rest to drm_gem_object_funcs. Have we deprecated any of these hooks? Noralf. _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel