linux/drivers/gpu/drm
Daniel Vetter 152ef5fa9e drm: Switch blobs to the new generic modeset obj refcounting
Need to move the free function around a bit, but otherwise mostly
just removing code.

Specifically we can nuke all the _locked variants since the weak idr
reference is now protected by the idr_mutex, which we never hold
anywhere expect in the lookup/reg/unreg functions. And those never
call anything else.

Another benefit of this is that this patch switches the weak reference
logic from kref_put_mutex to kref_get_unless_zero. And the later is in
general more flexible wrt accomodating multiple weak references
protected by different locks, which might or might not come handy
eventually.

But one consequence of that switch is that we need to acquire the
blob_lock from the free function for the list_del calls. That's a bit
tricky to pull off, but works well if we pick the exact same scheme as
is already used for framebuffers. Most important changes:

- filp list is maintainer by create/destroy_blob ioctls directly
  (already the case, so we can just remove the redundant list_del from
  the free function).

- filp close handler walks the filp-private list lockless - works
  because we know no one else can access it. I copied the same comment
  from the fb code over to explain this.

- Otherwise we need to sufficiently restrict blob_lock critical
  sections to avoid all the unreference calls. Easy to do once the
  blob_lock only protects the list, and no longer the weak reference.

Cc: Dave Airlie <airlied@gmail.com>
Cc: Daniel Stone <daniels@collabora.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2016-04-27 09:58:05 +10:00
..
amd Linux 4.6-rc3 2016-04-22 08:32:51 +10:00
arc drm: Add support of ARC PGU display controller 2016-04-26 17:58:02 +03:00
arm drm: ARM HDLCD - fix an error code 2016-04-04 10:11:33 +01:00
armada mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
ast Merge tag 'topic/drm-misc-2016-04-01' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-04-06 09:39:01 +10:00
atmel-hlcdc Merge branch 'drm-atmel-hlcdc-devel' of https://github.com/bbrezillon/linux-at91 into drm-next 2016-04-22 09:06:44 +10:00
bochs drm/bochs: Drop fake gamma support 2016-04-12 13:14:08 +02:00
bridge Merge branch 'drm-next-analogix-dp-v2' of github.com:yakir-Yang/linux into drm-next 2016-04-06 09:57:33 +10:00
cirrus Merge tag 'topic/drm-misc-2016-04-01' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-04-06 09:39:01 +10:00
etnaviv Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2016-03-21 13:48:00 -07:00
exynos drm/exynos: drop struct_mutex from fbdev setup 2016-04-20 12:58:03 +02:00
fsl-dcu drm/fsl-dcu: removed optional dummy crtc mode_fixup function. 2016-03-04 18:16:45 +01:00
gma500 Linux 4.6-rc3 2016-04-22 08:32:51 +10:00
i2c Merge drm-fixes into drm-next. 2016-03-14 09:46:02 +10:00
i810
i915 drm/mode: introduce wrapper to read framebuffer refcount. 2016-04-22 10:33:53 +10:00
imx drm/imx: Don't set a gamma table size 2016-03-31 11:24:37 +02:00
mga
mgag200 vgacon: dummy implementation for vgacon_text_force 2016-03-30 17:37:57 +02:00
msm drm/mode: introduce wrapper to read framebuffer refcount. 2016-04-22 10:33:53 +10:00
nouveau Linux 4.6-rc3 2016-04-22 08:32:51 +10:00
omapdrm drm/omapdrm: Use unlocked gem unreferencing 2016-04-20 12:54:19 +02:00
panel drm/panel: Changes for v4.6-rc1 2016-03-17 08:09:44 +10:00
qxl drm/qxl: Use unlocked gem unreferencing 2016-04-20 12:55:22 +02:00
r128
radeon Linux 4.6-rc3 2016-04-22 08:32:51 +10:00
rcar-du drm: rcar-du: Fix compilation warning 2016-04-24 02:53:35 +03:00
rockchip Merge branch 'drm-next-analogix-dp-v2' of github.com:yakir-Yang/linux into drm-next 2016-04-06 09:57:33 +10:00
savage
shmobile drm/shmobile: removed optional dummy crtc mode_fixup function. 2016-03-04 17:59:44 +01:00
sis
sti Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2016-03-21 13:48:00 -07:00
tdfx
tegra drm/mode: introduce wrapper to read framebuffer refcount. 2016-04-22 10:33:53 +10:00
tilcdc drm/tilcdc: Use devm_kzalloc() and devm_kcalloc() for private data 2016-02-25 16:39:47 +02:00
ttm Linux 4.6-rc3 2016-04-22 08:32:51 +10:00
udl Merge tag 'topic/drm-misc-2016-04-01' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-04-06 09:39:01 +10:00
vc4 Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2016-03-21 13:48:00 -07:00
vgem drm/vgem: Drop dev->struct_mutex 2016-04-20 12:58:45 +02:00
via mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
virtio drm/virtio: Drop dummy gamma table support 2016-04-12 13:14:29 +02:00
vmwgfx Merge tag 'topic/drm-misc-2016-04-01' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-04-06 09:39:01 +10:00
Kconfig drm: Add support of ARC PGU display controller 2016-04-26 17:58:02 +03:00
Makefile drm: Add support of ARC PGU display controller 2016-04-26 17:58:02 +03:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic.c Merge tag 'topic/drm-misc-2016-03-22' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-03-24 08:41:59 +10:00
drm_atomic_helper.c drm/atomic-helpers: Don't duplicate code in destroy helpers 2016-04-27 09:56:30 +10:00
drm_auth.c
drm_bridge.c drm: bridge: Make (pre/post) enable/disable callbacks optional 2016-03-29 08:34:05 +02:00
drm_bufs.c
drm_cache.c
drm_context.c
drm_crtc.c drm: Switch blobs to the new generic modeset obj refcounting 2016-04-27 09:58:05 +10:00
drm_crtc_helper.c drm/crtc_helper: Reset empty plane state in drm_helper_crtc_mode_set_base() 2016-04-14 08:18:15 +02:00
drm_crtc_internal.h drm/mode: rework drm_mode_object_put to drm_mode_object_unregister. 2016-04-22 10:26:37 +10:00
drm_debugfs.c
drm_dma.c
drm_dp_aux_dev.c drm/dp: Add a drm_aux-dev module for reading/writing dpcd registers. 2016-02-12 14:22:40 +01:00
drm_dp_helper.c drm/dp: move hw_mutex up the call stack 2016-04-01 13:17:36 +10:00
drm_dp_mst_topology.c drm/dp/mst: Restore primary hub guid on resume 2016-04-15 15:01:16 +02:00
drm_drv.c drm: Make drm.debug parameter description more helpful 2016-04-21 09:45:12 +02:00
drm_edid.c drm/edid: Add drm_edid_get_monitor_name() 2016-04-15 14:37:39 +02:00
drm_edid_load.c drm/edid: convert to use match_string() helper 2016-03-17 15:09:34 -07:00
drm_encoder_slave.c drm: fixes when i2c encoder slave mode_fixup is null. 2016-02-10 15:14:49 +01:00
drm_fb_cma_helper.c drm/fb_cma_helper: remove duplicate const from drm_fb_cma_alloc 2016-01-20 13:55:57 +01:00
drm_fb_helper.c drm/fb_helper: Use add_one_connector in add_all_connectors. 2016-02-15 14:56:46 +01:00
drm_flip_work.c
drm_fops.c drm: Nuke vblank event file cleanup code 2016-02-08 09:55:47 +01:00
drm_gem.c Linux 4.6-rc3 2016-04-22 08:32:51 +10:00
drm_gem_cma_helper.c dma, mm/pat: Rename dma_*_writecombine() to dma_*_wc() 2016-03-09 14:57:51 +01:00
drm_global.c
drm_hashtab.c tree wide: use kvfree() than conditional kfree()/vfree() 2016-01-22 17:02:18 -08:00
drm_info.c
drm_internal.h
drm_ioc32.c
drm_ioctl.c
drm_irq.c Merge tag 'topic/drm-misc-2016-04-01' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-04-06 09:39:01 +10:00
drm_kms_helper_common.c drm/dp: Add a drm_aux-dev module for reading/writing dpcd registers. 2016-02-12 14:22:40 +01:00
drm_legacy.h
drm_lock.c
drm_memory.c
drm_mipi_dsi.c drm/dsi: Get DSI host by DT device node 2016-03-02 17:02:54 +01:00
drm_mm.c
drm_modes.c drm/mode: rework drm_mode_object_put to drm_mode_object_unregister. 2016-04-22 10:26:37 +10:00
drm_modeset_lock.c
drm_of.c drm: add drm_of_encoder_active_endpoint helpers 2016-02-10 14:19:21 +01:00
drm_panel.c
drm_pci.c
drm_plane_helper.c
drm_platform.c
drm_prime.c drm: prime: Honour O_RDWR during prime-handle-to-fd 2016-02-09 09:25:12 +01:00
drm_probe_helper.c drm: probe_helper: Hide ugly ifdef 2016-04-20 13:35:14 +02:00
drm_rect.c
drm_scatter.c
drm_sysfs.c drm/sysfs: Nuke TV/DVI property files 2016-03-30 17:21:36 +02:00
drm_trace.h
drm_trace_points.c
drm_vm.c
drm_vma_manager.c