[PATCH 0/8] drm/vram-helper: Lock GEM BOs while they are mapped
Christian König
christian.koenig at amd.com
Mon Nov 30 12:27:01 UTC 2020
Am 30.11.20 um 13:04 schrieb Thomas Zimmermann:
> GEM VRAM helpers used to pin the BO in their implementation of vmap, so
> that they could not be relocated. In a recent discussion, [1] it became
> clear that this is incorrect and that vmap should rather repend on the
> reservation lock to prevent relocation. This patchset addresses the issue.
> Besides the vram helpers, this affects ast, vboxvideo and the generic
> fbdev emulation.
>
> Patch 1 adds a few more rules to vmap internfaces. With VRAM, it is
> necessary to keep the BO evictable, which requires soem care when mapping
> the memory. Patch 2 changes ast's cursor code accordingly.
>
> Patch 3 adds vram helpers that acquires the reservation lock and vmap the
> memory buffer. Same for vunmap in reverse. Patches 4 and 5 convert ast
> and vboxvideo to the new helper.
>
> Patch 6 removes pinning and locking from VRAM helper's vmap and vunmap.
> The affected users in ast and fbdev emulation acquire the reservation
> locks of the GEM objects before vmapping BOs. VRAM helpers don't support
> to export the buffer, so there are no other users of these functions.
>
> The the pinning and locking removed, vmap can be simplified as done in
> patches 7 and 8.
>
> Tested on ast with GEM VRAM and also on mgag200 to verify that the fbdev
> change does not interfere with GEM SHMEM.
Acked-by: Christian König <christian.koenig at amd.com> for the series.
>
> Thomas Zimmermann (8):
> drm/gem: Write down some rules for vmap usage
> drm/ast: Only map cursor BOs during updates
> drm/vram-helper: Provide drm_gem_vram_vmap_unlocked()
> drm/ast: Use drm_gem_vram_vmap_unlocked() in ast_cursor_show()
> drm/vboxvideo: Use drm_gem_vram_vmap_unlocked() in cursor update
> drm/vram-helper: Remove pinning and locking from drm_gem_vram_vmap()
> drm/vram-helper: Remove vmap reference counting
> drm/vram-helper: Simplify vmap implementation
>
> drivers/gpu/drm/ast/ast_cursor.c | 63 +++++++++-------
> drivers/gpu/drm/ast/ast_drv.h | 2 -
> drivers/gpu/drm/drm_client.c | 31 ++++++++
> drivers/gpu/drm/drm_fb_helper.c | 10 ++-
> drivers/gpu/drm/drm_gem_vram_helper.c | 101 +++++++++++++-------------
> drivers/gpu/drm/drm_prime.c | 6 ++
> drivers/gpu/drm/vboxvideo/vbox_mode.c | 7 +-
> include/drm/drm_client.h | 2 +
> include/drm/drm_gem.h | 16 ++++
> include/drm/drm_gem_vram_helper.h | 21 ++----
> 10 files changed, 159 insertions(+), 100 deletions(-)
>
> --
> 2.29.2
>
More information about the dri-devel
mailing list