[PATCH 0/8] drm: Clean up mmap for TTM-based GEM drivers

Daniel Vetter daniel at ffwll.ch
Thu Apr 8 11:42:31 UTC 2021


On Thu, Apr 08, 2021 at 01:38:59PM +0200, Thomas Zimmermann wrote:
> Hi
> 
> Am 08.04.21 um 13:19 schrieb Daniel Vetter:
> > On Tue, Apr 06, 2021 at 11:08:55AM +0200, Thomas Zimmermann wrote:
> > > Implement mmap via struct drm_gem_object_functions.mmap for amdgpu,
> > > radeon and nouveau. This allows for using common DRM helpers for
> > > the mmap-related callbacks in struct file_operations and struct
> > > drm_driver. The drivers have their own vm_ops, which are now set
> > > automatically by the DRM core functions. The code in each driver's
> > > verify_access becomes part of the driver's new mmap implementation.
> > 
> > Is there anything left in there which isn't already handled by the gem
> > checks? Iirc there was some custom limit for ttm drivers once to allow
> > co-existing with ums drivers, but that's never really been a thing since
> > forever ...
> 
> Vmwgfx does its own thing. radeon and amdgpu have some checks (userptr). But
> it's all very small. The general tests will be in the GEM helpers.

Ah userptr makes tons of sense. I think that should be rejected when
creating the mmap offset, and then a WARN_ON to bail out.

But that means we'd need to lift the basic userptr scaffolding to
drm_gem_object. Which would make tons of sense imo (all the various
semi-broken copypasta versions aren't great), but that's definitely for
another time.
-Daniel

> 
> Best regards
> Thomas
> 
> > -Daniel
> > 
> > > 
> > > With the GEM drivers converted, vmwgfx is the only user of
> > > ttm_bo_mmap() and related infrastructure. So move everything into
> > > vmwgfx and delete the rsp code from TTM.
> > > 
> > > This touches several drivers. Preferably everything would be merged
> > > at once via drm-misc-next.
> > > 
> > > Thomas Zimmermann (8):
> > >    drm/ttm: Don't override vm_ops callbacks, if set
> > >    drm/amdgpu: Remove unused function amdgpu_bo_fbdev_mmap()
> > >    drm/amdgpu: Implement mmap as GEM object function
> > >    drm/radeon: Implement mmap as GEM object function
> > >    drm/nouveau: Implement mmap as GEM object function
> > >    drm/vmwgfx: Inline ttm_bo_mmap() into vmwgfx driver
> > >    drm/vmwgfx: Inline vmw_verify_access()
> > >    drm/ttm: Remove ttm_bo_mmap() and friends
> > > 
> > >   drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 46 -------------
> > >   drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h |  2 -
> > >   drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c     |  4 +-
> > >   drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c     | 64 +++++++++++++++++++
> > >   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c  | 19 ------
> > >   drivers/gpu/drm/amd/amdgpu/amdgpu_object.h  |  2 -
> > >   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c     | 71 ---------------------
> > >   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h     |  1 -
> > >   drivers/gpu/drm/nouveau/nouveau_bo.c        | 10 ---
> > >   drivers/gpu/drm/nouveau/nouveau_drm.c       |  3 +-
> > >   drivers/gpu/drm/nouveau/nouveau_gem.c       | 36 +++++++++++
> > >   drivers/gpu/drm/nouveau/nouveau_ttm.c       | 49 --------------
> > >   drivers/gpu/drm/nouveau/nouveau_ttm.h       |  1 -
> > >   drivers/gpu/drm/radeon/radeon_drv.c         |  3 +-
> > >   drivers/gpu/drm/radeon/radeon_gem.c         | 52 +++++++++++++++
> > >   drivers/gpu/drm/radeon/radeon_ttm.c         | 65 -------------------
> > >   drivers/gpu/drm/radeon/radeon_ttm.h         |  1 -
> > >   drivers/gpu/drm/ttm/ttm_bo_vm.c             | 60 ++---------------
> > >   drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c  |  9 ---
> > >   drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c    | 51 ++++++++++++++-
> > >   include/drm/ttm/ttm_bo_api.h                | 13 ----
> > >   include/drm/ttm/ttm_device.h                | 15 -----
> > >   22 files changed, 212 insertions(+), 365 deletions(-)
> > > 
> > > --
> > > 2.30.2
> > > 
> > 
> 
> -- 
> Thomas Zimmermann
> Graphics Driver Developer
> SUSE Software Solutions Germany GmbH
> Maxfeldstr. 5, 90409 Nürnberg, Germany
> (HRB 36809, AG Nürnberg)
> Geschäftsführer: Felix Imendörffer
> 




-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dri-devel mailing list