[PATCH 00/35] Moar struct_mutex nuking

Daniel Vetter daniel.vetter at ffwll.ch
Tue Apr 26 17:29:33 UTC 2016


Hi all,

First few patches are resends (reviews, pretty please), but most of this is all
new. After all this all the legacy code is guarded by DRIVER_* feature tests,
and struct_mutex is never even acquired for modern drivers (except nouveau,
because). And there's just 2 things left where struct_mutex actually matters for
modern drivers:

- master locking. I've handled the low-hanging fruit, the leftover paths touch
  the dreaded legacy-horros hw.lock. No idea how to get rid of that, but
  master_list and master status probably need to grow a separate lock.

- 4 drivers who use struct_mutex as their BKL: i915, omapdrm, msm & udl. Most of
  those will require serious amounts of work to fix, but for new drivers I'm
  postive we don't have to deal with struct_mutex ever again: Either pick ttm
  (if you're ok with midlayers), or implement the locking scheme from etnaviv
  (which is just plain gem with ww mutexes and fences).

23 drivers (most of those kms-only, using cma for gem) are now entirely
struct_mutex free!

Reviews, acks and comments highly welcome.

Cheers, Daniel

Benjamin Gaignard (1):
  drm: sti: remove useless call to dev->struct_mutex

Daniel Vetter (34):
  drm: Give drm_agp_clear drm_legacy_ prefix
  drm: Put legacy lastclose work into drm_legacy_dev_reinit
  drm: Move drm_getmap into drm_bufs.c and give it a legacy prefix
  drm: Forbid legacy MAP functions for DRIVER_MODESET
  drm: Push struct_mutex into ->master_destroy
  drm: Hide master MAP cleanup in drm_bufs.c
  drm: Make drm_vm_open/close_locked private to drm_vm.c
  drm: Protect dev->filelist with its own mutex
  drm/gem: support BO freeing without dev->struct_mutex
  drm/amdgpu: Use lockless gem BO free callback
  drm/armada: Use lockless gem BO free callback
  drm/ast: Use lockless gem BO free callback
  drm/atmel: Use lockless gem BO free callback
  drm/bochs: Use lockless gem BO free callback
  drm/cirrus: Use lockless gem BO free callback
  drm/etnaviv: Use lockless gem BO free callback
  drm/exynos: Use lockless gem BO free callback
  drm/fls-dcu: Use lockless gem BO free callback
  drm/imx: Use lockless gem BO free callback
  drm/mga200g: Use lockless gem BO free callback
  drm/nouveau: Use lockless gem BO free callback
  drm/qxl: Use lockless gem BO free callback
  drm/radeon: Use lockless gem BO free callback
  drm/rcar-du: Use lockless gem BO free callback
  drm/rockchip: Use lockless gem BO free callback
  drm/shmob: Use lockless gem BO free callback
  drm/tegra: Use lockless gem BO free callback
  drm/tilcdc: Use lockless gem BO free callback
  drm/vc4: Use drm_gem_object_unreference_unlocked
  drm/vc4: Use lockless gem BO free callback
  drm/vgem: Use lockless gem BO free callback
  drm/virtio: Use lockless gem BO free callback
  drm/virtio: Use lockless gem BO free callback
  drm/rockchip: Use cma gem vm ops

 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c      |  2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c      | 10 +--
 drivers/gpu/drm/armada/armada_drv.c          |  2 +-
 drivers/gpu/drm/ast/ast_drv.c                |  2 +-
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c |  2 +-
 drivers/gpu/drm/bochs/bochs_drv.c            |  2 +-
 drivers/gpu/drm/cirrus/cirrus_drv.c          |  2 +-
 drivers/gpu/drm/drm_agpsupport.c             |  4 +-
 drivers/gpu/drm/drm_bufs.c                   | 92 ++++++++++++++++++++++++++--
 drivers/gpu/drm/drm_drv.c                    | 11 +---
 drivers/gpu/drm/drm_fops.c                   | 51 ++++++++-------
 drivers/gpu/drm/drm_gem.c                    | 64 +++++++++++++++----
 drivers/gpu/drm/drm_info.c                   |  4 +-
 drivers/gpu/drm/drm_internal.h               |  4 +-
 drivers/gpu/drm/drm_ioctl.c                  | 54 +---------------
 drivers/gpu/drm/drm_legacy.h                 |  2 +
 drivers/gpu/drm/drm_pci.c                    |  2 +-
 drivers/gpu/drm/drm_vm.c                     | 16 ++---
 drivers/gpu/drm/etnaviv/etnaviv_drv.c        |  2 +-
 drivers/gpu/drm/exynos/exynos_drm_drv.c      |  2 +-
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c    |  2 +-
 drivers/gpu/drm/i915/i915_debugfs.c          | 12 +++-
 drivers/gpu/drm/imx/imx-drm-core.c           |  2 +-
 drivers/gpu/drm/mgag200/mgag200_drv.c        |  2 +-
 drivers/gpu/drm/nouveau/nouveau_drm.c        |  2 +-
 drivers/gpu/drm/qxl/qxl_drv.c                |  2 +-
 drivers/gpu/drm/radeon/radeon_drv.c          |  2 +-
 drivers/gpu/drm/rcar-du/rcar_du_drv.c        |  2 +-
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c  |  9 +--
 drivers/gpu/drm/shmobile/shmob_drm_drv.c     |  2 +-
 drivers/gpu/drm/sti/sti_cursor.c             |  7 ---
 drivers/gpu/drm/sti/sti_drv.c                |  8 +--
 drivers/gpu/drm/sti/sti_dvo.c                |  7 ---
 drivers/gpu/drm/sti/sti_gdp.c                | 14 -----
 drivers/gpu/drm/sti/sti_hda.c                |  7 ---
 drivers/gpu/drm/sti/sti_hdmi.c               |  7 ---
 drivers/gpu/drm/sti/sti_hqvdp.c              |  7 ---
 drivers/gpu/drm/sti/sti_mixer.c              |  7 ---
 drivers/gpu/drm/sti/sti_tvout.c              |  7 ---
 drivers/gpu/drm/sti/sti_vid.c                |  7 ---
 drivers/gpu/drm/tegra/drm.c                  |  2 +-
 drivers/gpu/drm/tilcdc/tilcdc_drv.c          |  2 +-
 drivers/gpu/drm/vc4/vc4_drv.c                |  2 +-
 drivers/gpu/drm/vc4/vc4_gem.c                | 11 +---
 drivers/gpu/drm/vgem/vgem_drv.c              |  2 +-
 drivers/gpu/drm/virtio/virtgpu_drv.c         |  2 +-
 include/drm/drmP.h                           | 13 +++-
 include/drm/drm_agpsupport.h                 |  4 +-
 include/drm/drm_gem.h                        | 45 +-------------
 include/drm/drm_legacy.h                     |  4 +-
 50 files changed, 241 insertions(+), 291 deletions(-)

-- 
2.8.1



More information about the dri-devel mailing list