[PATCH 00/25] dev->struct_mutex crusade (cont'd)

Daniel Vetter daniel.vetter at ffwll.ch
Thu Oct 15 00:36:16 PDT 2015


Hi all,

So I hoped to get through more drivers, but it's not yet all of them. Anyway,
this gets rid of dev->struct_mutex in a lot more places. Big thing is that core
gem is now completely struct_mutex free, the only reason we still lock it is
that some drivers need it in their ->free_gem_object hook. The plan for that is
to have a ->free_gem_object_unlocked hook for all the drivers which don't need
the lock at all (which are most of them really).

Of the modern drivers the big holdouts are i915, msm and omapdrm. Plus udl still
uses some struct_mutex, but it has overall totally broken locking anyway. All
other drivers are now struct_mutex free, yay!

All per-driver bits are fully independent in this series, so can be pulled into
driver trees without issues.

Cheers, Daniel

Daniel Vetter (25):
  drm/armada: Plug leak in dumb_map_offset
  drm/armada: Don't grab dev->struct_mutex for in mmap offset ioctl
  drm/armada: Drop struct_mutex from cursor paths
  drm/armada: Use a private mutex to protect priv->linear
  drm/tegra: don't take dev->struct_mutex in mmap offset ioctl
  drm/tegra: Use drm_gem_object_reference_unlocked
  drm/vgem: Drop vgem_drm_gem_mmap
  drm/gem: Drop struct_mutex requirement from drm_gem_mmap_obj
  drm/gem: Check locking in drm_gem_object_unreference
  drm/gem: Use container_of in drm_gem_object_free
  drm/gem: Use kref_get_unless_zero for the weak mmap references
  drm/gma500: Use correct unref in the gem bo create function
  drm/gma500: Drop dev->struct_mutex from modeset code
  drm/gma500: Drop dev->struct_mutex from fbdev init/teardown code
  drm/gma500: Drop dev->struct_mutex from mmap offset function
  drm/gma500: Add driver private mutex for the fault handler
  drm/nouveau: Drop dev->struct_mutex from fbdev init
  drm/radeon: Use rdev->gem.mutex to protect hyperz/cmask owners
  drm/exynos: Drop dev->struct_mutex from mmap offset function
  drm/exynos: drop struct_mutex from exynos_gem_map_sgt_with_dma
  drm/exynos: drop struct_mutex from exynos_drm_gem_get_ioctl
  drm/exynos: drop struct_mutex from fbdev setup
  drm/vgem: Simplify dum_map
  drm/vgem: Move get_pages to gem_create
  drm/vgem: Drop dev->struct_mutex

 drivers/gpu/drm/armada/armada_crtc.c        |  6 +-
 drivers/gpu/drm/armada/armada_debugfs.c     |  4 +-
 drivers/gpu/drm/armada/armada_drm.h         |  3 +-
 drivers/gpu/drm/armada/armada_drv.c         |  1 +
 drivers/gpu/drm/armada/armada_gem.c         | 21 +++----
 drivers/gpu/drm/drm_gem.c                   | 76 ++++++++++++++-----------
 drivers/gpu/drm/drm_gem_cma_helper.c        |  2 -
 drivers/gpu/drm/drm_vma_manager.c           | 40 ++++---------
 drivers/gpu/drm/exynos/exynos_drm_fbdev.c   | 22 +++-----
 drivers/gpu/drm/exynos/exynos_drm_gem.c     | 15 +----
 drivers/gpu/drm/gma500/framebuffer.c        | 12 +---
 drivers/gpu/drm/gma500/gem.c                | 19 ++-----
 drivers/gpu/drm/gma500/gma_display.c        | 13 +----
 drivers/gpu/drm/gma500/gtt.c                |  1 +
 drivers/gpu/drm/gma500/psb_drv.h            |  2 +
 drivers/gpu/drm/msm/msm_fbdev.c             |  5 --
 drivers/gpu/drm/msm/msm_gem_prime.c         |  2 -
 drivers/gpu/drm/nouveau/nouveau_fbcon.c     |  5 --
 drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c   |  2 -
 drivers/gpu/drm/radeon/radeon_kms.c         | 10 +++-
 drivers/gpu/drm/rockchip/rockchip_drm_gem.c |  2 -
 drivers/gpu/drm/tegra/drm.c                 |  4 +-
 drivers/gpu/drm/tegra/gem.c                 | 13 +----
 drivers/gpu/drm/vgem/vgem_drv.c             | 87 ++++-------------------------
 include/drm/drm_gem.h                       |  2 +
 include/drm/drm_vma_manager.h               | 22 ++------
 26 files changed, 121 insertions(+), 270 deletions(-)

-- 
2.5.1



More information about the dri-devel mailing list