linux-stable/drivers/gpu/drm
Dave Airlie 72fe90b8e7 drm/modes: move reference taking into object lookup.
When we lookup an ref counted object we now take a proper reference
using kref_get_unless_zero.

Framebuffer lookup no longer needs do this itself.

Convert rmfb to using framebuffer lookup and deal with the fact
it now gets an extra reference that we have to cleanup. This should
mean we can avoid holding fb_lock across rmfb. (if I'm wrong let me
know).

We also now only hold the fbs_lock around the list manipulation.

"Previously fb refcounting, and especially the weak reference
(kref_get_unless_zero) used in fb lookups have been protected by fb_lock.
But with the refactoring to share refcounting in the drm_mode_object base
class that switched to being protected by idr_mutex, which means fb_lock
critical sections can be reduced."

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2016-04-22 10:42:54 +10:00
..
amd Linux 4.6-rc3 2016-04-22 08:32:51 +10: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: Use generic drm_connector_register_all() helper 2016-04-20 13:29:41 +02: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
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
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-helper: Print an error if vblank wait times out 2016-04-18 14:30:34 +02: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/modes: move reference taking into object lookup. 2016-04-22 10:42:54 +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_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_fb_cma_helper.c
drm_fb_helper.c
drm_flip_work.c
drm_fops.c
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
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_legacy.h
drm_lock.c
drm_memory.c
drm_mipi_dsi.c
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_panel.c
drm_pci.c
drm_plane_helper.c
drm_platform.c
drm_prime.c
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
Kconfig
Makefile