Skip to content

RFC Convert all ttm drivers to use the new reservation interface

Maarten Lankhorst dri-devel lkml nouveau 1 version In review

Get series with b4
b4 am 20140514145134.21163.32350.stgit@patser

Versions newest first

  1. v1 RFC Latest16 patches 18 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/16drm/ttm: add interruptible parameter to ttm_eu_reserve_buffersdrivers/gpu/drm/qxl/qxl_release.c drivers/gpu/drm/radeon/radeon_object.c drivers/gpu/drm/radeon/radeon_uvd.c +5 more+25 -230 replies
2/16drm/ttm: kill off some members to ttm_validate_bufferdrivers/gpu/drm/qxl/qxl_release.c drivers/gpu/drm/ttm/ttm_execbuf_util.c drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c +1 more+50 -970 replies
3/16drm/nouveau: add reservation to nouveau_gem_ioctl_cpu_prepdrivers/gpu/drm/nouveau/nouveau_gem.c+18 -40 replies
4/16drm/nouveau: require reservations for nouveau_fence_sync and nouveau_bo_fencedrivers/gpu/drm/nouveau/nouveau_bo.c drivers/gpu/drm/nouveau/nouveau_display.c+15 -40 replies
5/16drm/ttm: call ttm_bo_wait while inside a reservationdrivers/gpu/drm/ttm/ttm_bo.c+12 -130 replies
6/16drm/ttm: kill fence_lockdrivers/gpu/drm/nouveau/nouveau_bo.c drivers/gpu/drm/nouveau/nouveau_display.c drivers/gpu/drm/nouveau/nouveau_gem.c +14 more+36 -1390 replies
7/16drm/nouveau: rework to new fence interfacedrivers/gpu/drm/nouveau/core/core/event.c drivers/gpu/drm/nouveau/nouveau_bo.c drivers/gpu/drm/nouveau/nouveau_display.c +8 more+329 -1790 replies
8/16drm/radeon: use common fence implementation for fencesdrivers/gpu/drm/radeon/radeon.h drivers/gpu/drm/radeon/radeon_device.c drivers/gpu/drm/radeon/radeon_fence.c+153 -5217 replies
8/16drm/radeon: use common fence implementation for fencesdrivers/gpu/drm/radeon/radeon.h drivers/gpu/drm/radeon/radeon_device.c drivers/gpu/drm/radeon/radeon_fence.c+285 -685 replies
9/16drm/qxl: rework to new fence interfacedrivers/gpu/drm/qxl/Makefile drivers/gpu/drm/qxl/qxl_cmd.c drivers/gpu/drm/qxl/qxl_debugfs.c +6 more+220 -1750 replies
10/16drm/vmwgfx: get rid of different types of fence_flags entirelydrivers/gpu/drm/vmwgfx/vmwgfx_buffer.c drivers/gpu/drm/vmwgfx/vmwgfx_drv.h drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c +2 more+26 -520 replies
11/16drm/vmwgfx: rework to new fence interfacedrivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c drivers/gpu/drm/vmwgfx/vmwgfx_fence.c drivers/gpu/drm/vmwgfx/vmwgfx_fence.h +1 more+200 -1390 replies
12/16drm/ttm: flip the switch, and convert to dma_fencedrivers/gpu/drm/nouveau/nouveau_bo.c drivers/gpu/drm/nouveau/nouveau_fence.c drivers/gpu/drm/nouveau/nouveau_fence.h +21 more+197 -3850 replies
13/16drm/nouveau: use rcu in nouveau_gem_ioctl_cpu_prepdrivers/gpu/drm/nouveau/nouveau_gem.c+12 -160 replies
14/16drm/radeon: use rcu waits in some ioctlsdrivers/gpu/drm/radeon/radeon_gem.c+14 -50 replies
15/16drm/vmwgfx: use rcu in vmw_user_dmabuf_synccpu_grabdrivers/gpu/drm/vmwgfx/vmwgfx_resource.c+10 -70 replies
16/16drm/ttm: use rcu in core ttmdrivers/gpu/drm/ttm/ttm_bo.c+13 -630 replies

Reviews trailers per patch

2 of 17 patches have a Reviewed-by or Acked-by.

PatchChristian König
1/16
2/16
3/16
4/16
5/16
6/16
7/16
8/16R-b
8/16R-b
9/16
10/16
11/16
12/16
13/16
14/16
15/16
16/16

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [RFC PATCH v1 00/16] Convert all ttm drivers to use the new reservation interface

This series depends on the previously posted reservation api patches. 2 of them are not yet in for-next-fences branch of
git://git.linaro.org/people/sumit.semwal/linux-3.x.git

The missing patches are still in my vmwgfx_wip branch at
git://people.freedesktop.org/~mlankhorst/linux

All ttm drivers are converted to the fence api, fence_lock is removed and rcu is used in its place.

qxl is the first driver to use shared fence slots, but when these patches are applied it's easy to convert nouveau too. I've done it as part of the cross-device gpu synchronization patch series.

---

Maarten Lankhorst (16):
drm/ttm: add interruptible parameter to ttm_eu_reserve_buffers drm/ttm: kill off some members to ttm_validate_buffer drm/nouveau: add reservation to nouveau_gem_ioctl_cpu_prep drm/nouveau: require reservations for nouveau_fence_sync and nouveau_bo_fence drm/ttm: call ttm_bo_wait while inside a reservation
drm/ttm: kill fence_lock
drm/nouveau: rework to new fence interface
drm/radeon: use common fence implementation for fences
drm/qxl: rework to new fence interface
drm/vmwgfx: get rid of different types of fence_flags entirely drm/vmwgfx: rework to new fence interface
drm/ttm: flip the switch, and convert to dma_fence
drm/nouveau: use rcu in nouveau_gem_ioctl_cpu_prep
drm/radeon: use rcu waits in some ioctls
drm/vmwgfx: use rcu in vmw_user_dmabuf_synccpu_grab
drm/ttm: use rcu in core ttm

 drivers/gpu/drm/nouveau/core/core/event.c |    4 
 drivers/gpu/drm/nouveau/nouveau_bo.c      |   59 +---
 drivers/gpu/drm/nouveau/nouveau_display.c |   25 +-
 drivers/gpu/drm/nouveau/nouveau_fence.c   |  430 +++++++++++++++++++----------
 drivers/gpu/drm/nouveau/nouveau_fence.h   |   22 +
 drivers/gpu/drm/nouveau/nouveau_gem.c     |   55 +---
 drivers/gpu/drm/nouveau/nv04_fence.c      |    4 
 drivers/gpu/drm/nouveau/nv10_fence.c      |    4 
 drivers/gpu/drm/nouveau/nv17_fence.c      |    2 
 drivers/gpu/drm/nouveau/nv50_fence.c      |    2 
 drivers/gpu/drm/nouveau/nv84_fence.c      |   11 -
 drivers/gpu/drm/qxl/Makefile              |    2 
 drivers/gpu/drm/qxl/qxl_cmd.c             |    7 
 drivers/gpu/drm/qxl/qxl_debugfs.c         |   16 +
 drivers/gpu/drm/qxl/qxl_drv.h             |   20 -
 drivers/gpu/drm/qxl/qxl_fence.c           |   91 ------
 drivers/gpu/drm/qxl/qxl_kms.c             |    1 
 drivers/gpu/drm/qxl/qxl_object.c          |    2 
 drivers/gpu/drm/qxl/qxl_object.h          |    6 
 drivers/gpu/drm/qxl/qxl_release.c         |  172 ++++++++++--
 drivers/gpu/drm/qxl/qxl_ttm.c             |   93 ------
 drivers/gpu/drm/radeon/radeon.h           |   15 -
 drivers/gpu/drm/radeon/radeon_cs.c        |   10 +
 drivers/gpu/drm/radeon/radeon_device.c    |    1 
 drivers/gpu/drm/radeon/radeon_display.c   |   20 +
 drivers/gpu/drm/radeon/radeon_fence.c     |  191 ++++++++++---
 drivers/gpu/drm/radeon/radeon_gem.c       |   19 +
 drivers/gpu/drm/radeon/radeon_object.c    |    8 -
 drivers/gpu/drm/radeon/radeon_ttm.c       |   34 --
 drivers/gpu/drm/radeon/radeon_uvd.c       |   10 -
 drivers/gpu/drm/ttm/ttm_bo.c              |  187 ++++++-------
 drivers/gpu/drm/ttm/ttm_bo_util.c         |   28 --
 drivers/gpu/drm/ttm/ttm_bo_vm.c           |    3 
 drivers/gpu/drm/ttm/ttm_execbuf_util.c    |  146 +++-------
 drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c    |   47 ---
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.h       |    1 
 drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c   |   24 --
 drivers/gpu/drm/vmwgfx/vmwgfx_fence.c     |  329 ++++++++++++----------
 drivers/gpu/drm/vmwgfx/vmwgfx_fence.h     |   35 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_resource.c  |   43 +--
 include/drm/ttm/ttm_bo_api.h              |    7 
 include/drm/ttm/ttm_bo_driver.h           |   29 --
 include/drm/ttm/ttm_execbuf_util.h        |   22 +
 43 files changed, 1107 insertions(+), 1130 deletions(-)
 delete mode 100644 drivers/gpu/drm/qxl/qxl_fence.c
Signature · 1 line
Signature