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 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel