[PATCH v4 00/17] drm: add gem ttm helpers, rework mmap workflow.

Daniel Vetter daniel at ffwll.ch
Mon Aug 26 09:04:30 UTC 2019


On Mon, Aug 26, 2019 at 10:47 AM Thomas Zimmermann <tzimmermann at suse.de> wrote:
>
> Hi,
>
> I would have liked to get some context on the purpose of GEM TTM
> helpers. Is is just share-able code?
>
> From my understanding VRAM helpers _are_ GEM TTM helpers. And they where
> re-named to VRAM helpers, so that the naming is independent from the
> implementation (and vice versa).

The point of the vram helpers was to have something to manage vram for
dumb display-only drivers. It's prep work for Thomas Zimmermann's plan
to port a pile of fbdev drivers over. So fairly intentionally limit in
the use-cases it supports to keep it simple. Kinda similar to how the
simple display pipe helper is designed on the kms side of things.

> Wrt qxl, would it be possible to convert the driver over to VRAM helpers
> entirely? I noticed a memory region named PRIV. Could we add this to
> VRAM helpers?

For both simple display pipe and vram helpers I'd say if your use-case
goes beyond simple dumb display-only driver, it's probably better to
have something more flexible.

Also this patch series also adjust vram helpers, and I think it has a
slightly different goal: Just aligning mmap paths a bit more between
ttm and not-ttm based drivers. That's also what motivated my lockdep
series, but from a locking rules instead of from a code-sharing point
of view. Seems like a good goal, details might need adjustment.
-Daniel
>
> Best regards
> Thomas
>
>
> Am 08.08.19 um 15:44 schrieb Gerd Hoffmann:
> >
> >
> > Gerd Hoffmann (17):
> >   drm/ttm: turn ttm_bo_device.vma_manager into a pointer
> >   drm/ttm: add gem_ttm_bo_device_init()
> >   drm/vram: switch vram helpers to the new gem_ttm_bo_device_init()
> >   drm/qxl: switch qxl to the new gem_ttm_bo_device_init()
> >   drm: add mmap() to drm_gem_object_funcs
> >   drm/shmem: switch shmem helper to drm_gem_object_funcs->mmap
> >   drm/shmem: drop DEFINE_DRM_GEM_SHMEM_FOPS
> >   drm/ttm: factor out ttm_bo_mmap_vma_setup
> >   drm/ttm: add drm_gem_ttm_mmap()
> >   drm/vram: switch vram helper to drm_gem_object_funcs->mmap codepath
> >   drm/vram: drop verify_access
> >   drm: drop DRM_VRAM_MM_FILE_OPERATIONS
> >   drm/qxl: use drm_gem_object_funcs
> >   drm/qxl: drop qxl_ttm_fault
> >   drm/qxl: switch qxl to drm_gem_object_funcs->mmap codepath
> >   drm/qxl: drop verify_access
> >   drm/qxl: use DEFINE_DRM_GEM_FOPS()
> >
> >  drivers/gpu/drm/qxl/qxl_drv.h                 |  5 +-
> >  drivers/gpu/drm/qxl/qxl_object.h              |  5 --
> >  include/drm/drm_gem.h                         |  9 +++
> >  include/drm/drm_gem_shmem_helper.h            | 28 +--------
> >  include/drm/drm_gem_ttm_helper.h              | 32 ++++++++++
> >  include/drm/drm_gem_vram_helper.h             |  9 +--
> >  include/drm/drm_vram_mm_helper.h              | 27 ---------
> >  include/drm/ttm/ttm_bo_api.h                  |  8 +++
> >  include/drm/ttm/ttm_bo_driver.h               | 11 +++-
> >  drivers/gpu/drm/ast/ast_drv.c                 |  5 +-
> >  drivers/gpu/drm/bochs/bochs_drv.c             |  5 +-
> >  drivers/gpu/drm/cirrus/cirrus.c               |  2 +-
> >  drivers/gpu/drm/drm_gem.c                     |  6 ++
> >  drivers/gpu/drm/drm_gem_shmem_helper.c        | 18 +++---
> >  drivers/gpu/drm/drm_gem_ttm_helper.c          | 47 +++++++++++++++
> >  drivers/gpu/drm/drm_gem_vram_helper.c         | 53 +----------------
> >  drivers/gpu/drm/drm_vram_mm_helper.c          | 44 +-------------
> >  .../gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c   |  6 +-
> >  drivers/gpu/drm/mgag200/mgag200_drv.c         |  5 +-
> >  drivers/gpu/drm/panfrost/panfrost_drv.c       |  2 +-
> >  drivers/gpu/drm/panfrost/panfrost_gem.c       |  1 +
> >  drivers/gpu/drm/qxl/qxl_drv.c                 | 19 +-----
> >  drivers/gpu/drm/qxl/qxl_dumb.c                | 17 ------
> >  drivers/gpu/drm/qxl/qxl_ioctl.c               |  5 +-
> >  drivers/gpu/drm/qxl/qxl_object.c              | 13 +++++
> >  drivers/gpu/drm/qxl/qxl_ttm.c                 | 58 ++-----------------
> >  drivers/gpu/drm/ttm/ttm_bo.c                  | 29 +++++++---
> >  drivers/gpu/drm/ttm/ttm_bo_vm.c               | 53 +++++++++--------
> >  drivers/gpu/drm/v3d/v3d_bo.c                  |  1 +
> >  drivers/gpu/drm/v3d/v3d_drv.c                 |  2 +-
> >  drivers/gpu/drm/vboxvideo/vbox_drv.c          |  5 +-
> >  Documentation/gpu/drm-mm.rst                  | 12 ++++
> >  drivers/gpu/drm/Kconfig                       |  8 +++
> >  drivers/gpu/drm/Makefile                      |  3 +
> >  drivers/gpu/drm/qxl/Kconfig                   |  1 +
> >  35 files changed, 231 insertions(+), 323 deletions(-)
> >  create mode 100644 include/drm/drm_gem_ttm_helper.h
> >  create mode 100644 drivers/gpu/drm/drm_gem_ttm_helper.c
> >
>
> --
> Thomas Zimmermann
> Graphics Driver Developer
> SUSE Linux GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany
> GF: Felix Imend├Ârffer, Mary Higgins, Sri Rasiah
> HRB 21284 (AG N├╝rnberg)
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel



-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch


More information about the dri-devel mailing list