All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/8] drm: Support short-term vmap via vmap_local
@ 2020-12-09 14:25 ` Thomas Zimmermann
  0 siblings, 0 replies; 79+ messages in thread
From: Thomas Zimmermann @ 2020-12-09 14:25 UTC (permalink / raw)
  To: daniel, christian.koenig, airlied, sumit.semwal,
	maarten.lankhorst, mripard, kraxel, hdegoede, sean, eric, sam
  Cc: dri-devel, linux-media, linaro-mm-sig, virtualization, Thomas Zimmermann

(was: drm/vram-helper: Lock GEM BOs while they are mapped)

GEM VRAM helpers used to pin the BO in their implementation of vmap, so
that they could not be relocated. In recent discussions, [1][2] it became
clear that this is incorrect for in-kernel use cases, such as fbdev
emulation; which should rather depend on the reservation lock to prevent
relocation.

This patchset addresses the issue by introducing the new interfaces
vmap_local and vunmap_local throughout dma-buf and GEM. It further adds
support to DRM's CMA, SHMEM and VRAM helpers and finally converts fbdev
emulation to the new interface.

Patches 1 and 2 prepare the ast cursor code for the later changes.

Patches 3 and 4 add the vmap_local infrastructure throughout dma-buf,
GEM and PRIME.

Patches 5 to 7 add implementations of vmap_local to DRM's various GEM
helper libraries. Due to the simple nature of these libraries, existing
vmap code can be reused easily. Several drivers are updateed as well to
use the new interfaces.

Patch 8 converts generic fbdev emulation to use vmap_local. Only DRM
drivers that use GEM helpers currently use fbdev emulation, so patches
5 to 7 covered all necessary instances.

I smoke-tested the patchset with ast (VRAM helpers), mgag200 (SHMEM) and
vc4 (CMA). I also tested with a version of radeon (raw TTM) that has been
converted to generic fbdev emulation.

v3:
	* rewrite patchset around vmap_local
v2:
	* make importers acquire resv locks by themselves
	* document dma-buf vamp/vunmap ops

[1] https://patchwork.freedesktop.org/patch/400054/?series=83765&rev=1
[2] https://patchwork.freedesktop.org/patch/405407/?series=84401&rev=2

Thomas Zimmermann (8):
  drm/ast: Don't pin cursor source BO explicitly during update
  drm/ast: Only map cursor BOs during updates
  dma-buf: Add vmap_local and vnumap_local operations
  drm/gem: Create infrastructure for GEM vmap_local
  drm/cma-helper: Provide a vmap function for short-term mappings
  drm/shmem-helper: Provide a vmap function for short-term mappings
  drm/vram-helper: Provide a vmap function for short-term mappings
  drm/fb-helper: Move BO locking from DRM client to fbdev damage worker

 drivers/dma-buf/dma-buf.c              |  80 ++++++++++++++
 drivers/gpu/drm/ast/ast_cursor.c       |  70 +++++++-----
 drivers/gpu/drm/ast/ast_drv.h          |   2 -
 drivers/gpu/drm/drm_client.c           |  91 ++++++++++++++++
 drivers/gpu/drm/drm_fb_helper.c        |  41 +++----
 drivers/gpu/drm/drm_gem.c              |  28 +++++
 drivers/gpu/drm/drm_gem_cma_helper.c   |  35 ++++++
 drivers/gpu/drm/drm_gem_shmem_helper.c |  71 ++++++++++++-
 drivers/gpu/drm/drm_gem_vram_helper.c  | 142 ++++++++++++++++---------
 drivers/gpu/drm/drm_internal.h         |   2 +
 drivers/gpu/drm/drm_prime.c            |  39 +++++++
 drivers/gpu/drm/mgag200/mgag200_mode.c |  16 ++-
 drivers/gpu/drm/tiny/cirrus.c          |  10 +-
 drivers/gpu/drm/tiny/gm12u320.c        |  14 ++-
 drivers/gpu/drm/udl/udl_modeset.c      |  18 ++--
 drivers/gpu/drm/vboxvideo/vbox_mode.c  |  15 +--
 drivers/gpu/drm/vc4/vc4_bo.c           |  13 +++
 drivers/gpu/drm/vc4/vc4_drv.h          |   1 +
 drivers/gpu/drm/virtio/virtgpu_prime.c |   2 +
 include/drm/drm_client.h               |   4 +
 include/drm/drm_gem.h                  |  20 ++++
 include/drm/drm_gem_cma_helper.h       |   1 +
 include/drm/drm_gem_shmem_helper.h     |   2 +
 include/drm/drm_gem_vram_helper.h      |   2 +
 include/drm/drm_prime.h                |   2 +
 include/linux/dma-buf.h                |  34 ++++++
 26 files changed, 635 insertions(+), 120 deletions(-)

--
2.29.2


^ permalink raw reply	[flat|nested] 79+ messages in thread

end of thread, other threads:[~2021-01-07 15:01 UTC | newest]

Thread overview: 79+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-09 14:25 [PATCH v3 0/8] drm: Support short-term vmap via vmap_local Thomas Zimmermann
2020-12-09 14:25 ` Thomas Zimmermann
2020-12-09 14:25 ` Thomas Zimmermann
2020-12-09 14:25 ` [PATCH v3 1/8] drm/ast: Don't pin cursor source BO explicitly during update Thomas Zimmermann
2020-12-09 14:25   ` Thomas Zimmermann
2020-12-09 14:25   ` Thomas Zimmermann
2020-12-11 10:14   ` Daniel Vetter
2020-12-11 10:14     ` Daniel Vetter
2020-12-11 10:14     ` Daniel Vetter
2020-12-09 14:25 ` [PATCH v3 2/8] drm/ast: Only map cursor BOs during updates Thomas Zimmermann
2020-12-09 14:25   ` Thomas Zimmermann
2020-12-09 14:25   ` Thomas Zimmermann
2020-12-11 10:18   ` Daniel Vetter
2020-12-11 10:18     ` Daniel Vetter
2020-12-11 10:18     ` Daniel Vetter
2020-12-11 10:49     ` Thomas Zimmermann
2020-12-11 10:49       ` Thomas Zimmermann
2020-12-11 10:49       ` Thomas Zimmermann
2020-12-11 13:57       ` Daniel Vetter
2020-12-11 13:57         ` Daniel Vetter
2020-12-11 13:57         ` Daniel Vetter
2020-12-09 14:25 ` [PATCH v3 3/8] dma-buf: Add vmap_local and vnumap_local operations Thomas Zimmermann
2020-12-09 14:25   ` Thomas Zimmermann
2020-12-09 14:25   ` Thomas Zimmermann
2020-12-09 14:27   ` Thomas Zimmermann
2020-12-09 14:27     ` Thomas Zimmermann
2020-12-09 14:27     ` Thomas Zimmermann
2020-12-11  9:24   ` Daniel Vetter
2020-12-11  9:24     ` Daniel Vetter
2020-12-11  9:24     ` Daniel Vetter
2020-12-11 14:09   ` Daniel Vetter
2020-12-11 14:09     ` Daniel Vetter
2020-12-11 14:09     ` Daniel Vetter
2020-12-09 14:25 ` [PATCH v3 4/8] drm/gem: Create infrastructure for GEM vmap_local Thomas Zimmermann
2020-12-09 14:25   ` Thomas Zimmermann
2020-12-09 14:25   ` Thomas Zimmermann
2020-12-09 17:35   ` kernel test robot
2020-12-11  9:29   ` Daniel Vetter
2020-12-11  9:29     ` Daniel Vetter
2020-12-11  9:29     ` Daniel Vetter
2020-12-09 14:25 ` [PATCH v3 5/8] drm/cma-helper: Provide a vmap function for short-term mappings Thomas Zimmermann
2020-12-09 14:25   ` Thomas Zimmermann
2020-12-09 14:25   ` Thomas Zimmermann
2020-12-11  9:40   ` Daniel Vetter
2020-12-11  9:40     ` Daniel Vetter
2020-12-11  9:40     ` Daniel Vetter
2020-12-11 10:02     ` Daniel Vetter
2020-12-11 10:02       ` Daniel Vetter
2020-12-11 10:02       ` Daniel Vetter
2020-12-09 14:25 ` [PATCH v3 6/8] drm/shmem-helper: " Thomas Zimmermann
2020-12-09 14:25   ` Thomas Zimmermann
2020-12-09 14:25   ` Thomas Zimmermann
2020-12-11  9:50   ` Daniel Vetter
2020-12-11  9:50     ` Daniel Vetter
2020-12-11  9:50     ` Daniel Vetter
2021-01-07 10:28     ` Thomas Zimmermann
2021-01-07 10:28       ` Thomas Zimmermann
2021-01-07 10:28       ` Thomas Zimmermann
2021-01-07 15:01       ` Daniel Vetter
2021-01-07 15:01         ` Daniel Vetter
2021-01-07 15:01         ` Daniel Vetter
2020-12-09 14:25 ` [PATCH v3 7/8] drm/vram-helper: " Thomas Zimmermann
2020-12-09 14:25   ` Thomas Zimmermann
2020-12-09 14:25   ` Thomas Zimmermann
2020-12-11  9:57   ` Daniel Vetter
2020-12-11  9:57     ` Daniel Vetter
2020-12-11  9:57     ` Daniel Vetter
2020-12-09 14:25 ` [PATCH v3 8/8] drm/fb-helper: Move BO locking from DRM client to fbdev damage worker Thomas Zimmermann
2020-12-09 14:25   ` Thomas Zimmermann
2020-12-09 14:25   ` Thomas Zimmermann
2020-12-11 10:01   ` Daniel Vetter
2020-12-11 10:01     ` Daniel Vetter
2020-12-11 10:01     ` Daniel Vetter
2020-12-11 10:16     ` Thomas Zimmermann
2020-12-11 10:16       ` Thomas Zimmermann
2020-12-11 10:16       ` Thomas Zimmermann
2020-12-11 14:00       ` Daniel Vetter
2020-12-11 14:00         ` Daniel Vetter
2020-12-11 14:00         ` Daniel Vetter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.