linux/drivers/gpu/drm
Chris Wilson 7e13ad8964 drm: Avoid drm_global_mutex for simple inc/dec of dev->open_count
Since drm_global_mutex is a true global mutex across devices, we don't
want to acquire it unless absolutely necessary. For maintaining the
device local open_count, we can use atomic operations on the counter
itself, except when making the transition to/from 0. Here, we tackle the
easy portion of delaying acquiring the drm_global_mutex for the final
release by using atomic_dec_and_mutex_lock(), leaving the global
serialisation across the device opens.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Thomas Hellström (VMware) <thomas_os@shipmail.org>
Reviewed-by: Thomas Hellström <thellstrom@vmware.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200124130107.125404-1-chris@chris-wilson.co.uk
2020-01-24 17:41:34 +00:00
..
amd drm: Avoid drm_global_mutex for simple inc/dec of dev->open_count 2020-01-24 17:41:34 +00:00
arc DRM: ARC: PGU: add ARGB8888 format to supported format list 2019-12-16 13:53:05 +03:00
arm drm-misc-next for v5.6: 2020-01-03 11:43:44 +10:00
armada drm: constify fb ops across all drivers 2019-12-05 10:57:42 +02:00
aspeed
ast drm/vram-helper: Remove BO device from public interface 2020-01-07 11:53:19 +01:00
atmel-hlcdc Revert "drm: atmel-hlcdc: enable sys_clk during initalization." 2020-01-06 19:54:27 +01:00
bochs drm/bochs: Remove unneeded semicolon 2019-12-16 12:39:50 +01:00
bridge drm/bridge: Add I2C based driver for ps8640 bridge 2020-01-22 16:45:50 +01:00
cirrus drm/simple-kms: Standardize arguments for callbacks 2019-10-24 13:55:56 +02:00
etnaviv drm-misc-next for v5.6: 2020-01-03 11:43:44 +10:00
exynos drm/exynos: dsi: Fix bridge chain handling 2020-01-08 09:09:48 +01:00
fsl-dcu drm/panel: decouple connector from drm_panel 2019-12-09 22:57:26 +01:00
gma500 drm/gma500: remove set but not used variables 'hist_reg' 2020-01-08 10:07:58 +01:00
hisilicon drm/vram-helper: Remove BO device from public interface 2020-01-07 11:53:19 +01:00
i2c drm: tda998x: use cec_notifier_conn_(un)register 2019-10-21 14:23:25 +02:00
i810 drm/i810: Don't include <drm/drm_pci.h> 2019-12-05 08:44:12 +01:00
i915 drm: Avoid drm_global_mutex for simple inc/dec of dev->open_count 2020-01-24 17:41:34 +00:00
imx drm/panel: decouple connector from drm_panel 2019-12-09 22:57:26 +01:00
ingenic gpu/drm: ingenic: Add support for the JZ4770 2019-12-14 19:26:55 +01:00
lib
lima drm/lima: use drm_sched_fault for error task handling 2020-01-09 09:27:38 +08:00
mcde drm-misc-next for v5.6: 2020-01-03 11:43:44 +10:00
mediatek drm-misc-next for v5.6: 2020-01-03 11:43:44 +10:00
meson drm: meson: fix address type confusion 2020-01-08 13:51:56 +01:00
mga drm/mga: Don't include <drm/drm_pci.h> 2019-12-05 08:44:16 +01:00
mgag200 drm/mgag200: Add module parameter to pin all buffers at offset 0 2020-01-07 11:53:19 +01:00
msm drm-misc-next for v5.6: 2020-01-03 11:43:44 +10:00
mxsfb drm/panel: decouple connector from drm_panel 2019-12-09 22:57:26 +01:00
nouveau drm: Avoid drm_global_mutex for simple inc/dec of dev->open_count 2020-01-24 17:41:34 +00:00
omapdrm drm/omapdrm: use BUG_ON macro for error debugging. 2020-01-08 18:35:36 +01:00
panel drm/panel: simple: add display timings for logic technologies displays 2020-01-23 19:03:05 +01:00
panfrost drm/panfrost: Prefix interrupt handlers' names 2020-01-21 10:30:10 -06:00
pl111 drm: get drm_bridge_panel connector via helper 2019-12-09 22:57:26 +01:00
qxl drm/ttm: nuke invalidate_caches callback 2020-01-16 16:35:07 +01:00
r128 drm/r128: Don't include <drm/drm_pci.h> 2019-12-05 08:44:23 +01:00
radeon drm: Avoid drm_global_mutex for simple inc/dec of dev->open_count 2020-01-24 17:41:34 +00:00
rcar-du Revert "drm/bridge: Patch atomic hooks to take a drm_bridge_state" 2020-01-08 00:34:28 +01:00
rockchip drm/rockchip: Add missing vmalloc header 2020-01-13 14:54:35 +01:00
savage drm/savage: Don't include <drm/drm_pci.h> 2019-12-05 08:44:34 +01:00
scheduler drm-misc-next for v5.6: 2019-12-17 13:57:54 +01:00
selftests drm/modes: parse_cmdline: Add support for specifying panel_orientation (v2) 2019-12-16 12:13:18 +01:00
shmobile
sis drm/sis: Don't include <drm/drm_pci.h> 2019-12-05 08:44:55 +01:00
sti drm/panel: decouple connector from drm_panel 2019-12-09 22:57:26 +01:00
stm drm/stm: ltdc: move pinctrl to encoder mode set 2019-12-20 13:30:42 +01:00
sun4i drm/sun4i: drc: Make sure we enforce the clock rate 2020-01-08 09:14:08 +01:00
tdfx drm/tdfx: Don't include <drm/drm_pci.h> 2019-12-05 08:45:01 +01:00
tegra drm/tegra: Provide ddc symlink in output connector sysfs directory 2020-01-07 20:25:24 +01:00
tilcdc drm/tilcdc: Remove obsolete bundled tilcdc tfp410 driver 2019-12-16 10:45:43 +02:00
tiny drm: tiny: st7735r: Add support for Okaya RH128128T 2020-01-19 18:07:40 +01:00
ttm drm/ttm: flush the fence on the bo after we individualize the reservation object 2020-01-22 12:51:56 +01:00
tve200 drm: get drm_bridge_panel connector via helper 2019-12-09 22:57:26 +01:00
udl drm/udl: Make udl driver depend on CONFIG_USB 2020-01-09 15:02:48 +01:00
v3d Linux 5.4-rc7 2019-11-14 05:53:10 +10:00
vboxvideo drm/vboxvideo: Use drm_gem_fb_create_with_dirty instead of drm_gem_fb_create 2019-10-29 13:10:07 +01:00
vc4 drm/vc4: dsi: Fix bridge chain handling 2020-01-08 09:09:48 +01:00
vgem
via drm/via: Don't include <drm/drm_pci.h> 2019-12-05 08:45:13 +01:00
virtio drm/virtio: move drm_connector_to_virtio_gpu_output to virtgpu_display 2019-12-19 07:13:46 +01:00
vkms drm/vkms: Fix typo and preposion in function documentation 2019-12-05 18:55:55 -05:00
vmwgfx drm/ttm: nuke invalidate_caches callback 2020-01-16 16:35:07 +01:00
xen drm/xen: Simplify fb_create 2019-11-19 22:25:55 +01:00
zte drm: zte: Provide ddc symlink in vga connector sysfs directory 2020-01-07 20:26:02 +01:00
drm_agpsupport.c drm: use DIV_ROUND_UP helper macro for calculations 2019-11-04 18:17:36 +01:00
drm_atomic_helper.c Revert "drm/bridge: Add a drm_bridge_state object" 2020-01-08 00:34:34 +01:00
drm_atomic_state_helper.c drm: Add __drm_atomic_helper_crtc_state_reset() & co. 2019-12-18 16:47:34 +02:00
drm_atomic_uapi.c drm/atomic: Spell CRTC consistently 2019-12-22 11:13:00 +01:00
drm_atomic.c Revert "drm/bridge: Add a drm_bridge_state object" 2020-01-08 00:34:34 +01:00
drm_auth.c
drm_blend.c
drm_bridge.c Revert "drm/bridge: Add a drm_bridge_state object" 2020-01-08 00:34:34 +01:00
drm_bufs.c
drm_cache.c drm/gpu: Fix Memory barrier without comment Issue 2019-10-25 09:35:06 +02:00
drm_client_modeset.c Revert "drm/fbdev: Fallback to non tiled mode if all tiles not present" 2019-11-25 16:55:40 +02:00
drm_client.c drm/client: convert to drm device based logging 2019-12-19 15:52:44 +02:00
drm_color_mgmt.c drm: Inline drm_color_lut_extract() 2019-11-29 21:29:17 +02:00
drm_connector.c drm/connector: Hookup the new drm_cmdline_mode panel_orientation member (v2) 2020-01-11 11:57:59 +01:00
drm_context.c
drm_crtc_helper_internal.h
drm_crtc_helper.c drm/crtc-helper: drm_connector_get_single_encoder prototype is missing 2019-12-03 17:42:57 +01:00
drm_crtc_internal.h drm: Add getfb2 ioctl 2020-01-14 16:22:17 -05:00
drm_crtc.c
drm_damage_helper.c
drm_debugfs_crc.c drm: Set crc->opened to false before setting crc source to NULL. 2020-01-07 15:29:40 -05:00
drm_debugfs.c
drm_dma.c drm: fix parameters documentation style in drm_dma 2020-01-18 10:33:12 +01:00
drm_dp_aux_dev.c
drm_dp_cec.c
drm_dp_dual_mode_helper.c
drm_dp_helper.c drm: always determine branch device with drm_dp_is_branch() 2020-01-10 15:33:24 +02:00
drm_dp_mst_topology_internal.h
drm_dp_mst_topology.c drm/dp_mst: Fix clearing payload state on topology disable 2020-01-22 18:56:20 -05:00
drm_drv.c drm: remove duplicate check on parent and avoid BUG_ON 2019-12-17 17:26:08 +01:00
drm_dsc.c
drm_dumb_buffers.c
drm_edid_load.c
drm_edid.c drm: Fix a couple of typos, punctation and whitespace issues 2019-12-22 11:09:46 +01:00
drm_encoder_slave.c
drm_encoder.c drm/bridge: Make the bridge chain a double-linked list 2019-12-09 10:03:01 +01:00
drm_fb_cma_helper.c drm/fb-cma-helpers: Fix include issue 2020-01-09 17:33:41 +01:00
drm_fb_helper.c drm/fb-helper: convert to drm device based logging 2019-12-19 15:54:29 +02:00
drm_file.c drm: Avoid drm_global_mutex for simple inc/dec of dev->open_count 2020-01-24 17:41:34 +00:00
drm_flip_work.c
drm_format_helper.c
drm_fourcc.c drm/fourcc: Fill out all block sizes for P210 2019-11-28 11:19:32 +01:00
drm_framebuffer.c drm: Add getfb2 ioctl 2020-01-14 16:22:17 -05:00
drm_gem_cma_helper.c
drm_gem_framebuffer_helper.c drm/gem-fb-helper: convert to drm device based logging 2019-12-19 15:55:10 +02:00
drm_gem_shmem_helper.c drm: call drm_gem_object_funcs.mmap with fake offset 2019-12-06 11:18:11 +01:00
drm_gem_ttm_helper.c drm/ttm: fix mmap refcounting 2019-11-15 08:00:08 +01:00
drm_gem_vram_helper.c drm/vram-helper: Support struct drm_driver.gem_create_object 2020-01-07 11:53:19 +01:00
drm_gem.c drm-misc-next for v5.6: 2019-12-17 13:57:54 +01:00
drm_hashtab.c
drm_hdcp.c
drm_internal.h drm/pci: Only build drm_pci.c if CONFIG_PCI is set 2019-12-05 08:43:14 +01:00
drm_ioc32.c
drm_ioctl.c drm: Add getfb2 ioctl 2020-01-14 16:22:17 -05:00
drm_irq.c
drm_kms_helper_common.c
drm_lease.c
drm_legacy_misc.c
drm_legacy.h
drm_lock.c gpu/drm: clean up white space in drm_legacy_lock_master_cleanup() 2020-01-08 19:51:11 +01:00
drm_memory.c
drm_mipi_dbi.c drm/mipi_dbi: Add support for display offsets 2020-01-19 18:07:08 +01:00
drm_mipi_dsi.c drm/dsi: add helpers for DSI compression mode and PPS packets 2019-11-07 15:00:16 +02:00
drm_mm.c
drm_mode_config.c drm/modeset: Prime modeset lock vs dma_resv 2019-11-21 11:03:31 +01:00
drm_mode_object.c drm/property: Enforce more lifetime rules 2019-11-04 18:17:36 +01:00
drm_modes.c drm/modes: tag unused variables to avoid warnings 2020-01-09 17:17:28 +01:00
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c drm: of: Add drm_of_lvds_get_dual_link_pixel_order 2019-12-18 02:40:16 +02:00
drm_panel_orientation_quirks.c
drm_panel.c drm/drm_panel: Fix EXPORT of drm_panel_of_backlight() one more time 2019-12-17 20:39:33 +01:00
drm_pci.c drm/pci: Hide legacy PCI functions from non-legacy code 2019-12-05 08:44:04 +01:00
drm_plane_helper.c
drm_plane.c
drm_prime.c drm: share address space for dma bufs 2019-12-06 11:18:11 +01:00
drm_print.c drm/print: convert debug category macros into an enum 2019-11-14 14:08:57 +02:00
drm_probe_helper.c drm: Stop accessing encoder->bridge directly 2019-12-09 10:02:45 +01:00
drm_property.c drm: limit to INT_MAX in create_blob ioctl 2019-12-04 19:44:13 -08:00
drm_rect.c drm/rect: update kerneldoc for drm_rect_clip_scaled() 2019-11-28 13:15:43 +01:00
drm_scatter.c
drm_scdc_helper.c
drm_self_refresh_helper.c drm/atomic: fix self-refresh helpers crtc state dereference 2019-11-06 13:00:21 -05:00
drm_simple_kms_helper.c drm/simple-kms: Standardize arguments for callbacks 2019-10-24 13:55:56 +02:00
drm_syncobj.c drm/syncobj: Add documentation for timeline syncobj 2020-01-20 14:22:21 +01:00
drm_sysfs.c
drm_trace_points.c
drm_trace.h
drm_vblank.c
drm_vm.c
drm_vma_manager.c
drm_vram_helper_common.c
drm_writeback.c
Kconfig drm/Kconfig: add missing 'depends on DRM' for DRM_DP_CEC 2020-01-09 10:16:35 +01:00
Makefile drm/pci: Only build drm_pci.c if CONFIG_PCI is set 2019-12-05 08:43:14 +01:00