linux/drivers/gpu/drm
Ahmed S. Darwish cd29f22019 dma-buf: Use sequence counter with associated wound/wait mutex
A sequence counter write side critical section must be protected by some
form of locking to serialize writers. If the serialization primitive is
not disabling preemption implicitly, preemption has to be explicitly
disabled before entering the sequence counter write side critical
section.

The dma-buf reservation subsystem uses plain sequence counters to manage
updates to reservations. Writer serialization is accomplished through a
wound/wait mutex.

Acquiring a wound/wait mutex does not disable preemption, so this needs
to be done manually before and after the write side critical section.

Use the newly-added seqcount_ww_mutex_t instead:

  - It associates the ww_mutex with the sequence count, which enables
    lockdep to validate that the write side critical section is properly
    serialized.

  - It removes the need to explicitly add preempt_disable/enable()
    around the write side critical section because the write_begin/end()
    functions for this new data type automatically do this.

If lockdep is disabled this ww_mutex lock association is compiled out
and has neither storage size nor runtime overhead.

Signed-off-by: Ahmed S. Darwish <a.darwish@linutronix.de>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://lkml.kernel.org/r/20200720155530.1173732-13-a.darwish@linutronix.de
2020-07-29 16:14:25 +02:00
..
amd dma-buf: Use sequence counter with associated wound/wait mutex 2020-07-29 16:14:25 +02:00
arc drm: convert .debugfs_init() hook to return void. 2020-03-18 17:53:28 +01:00
arm drm/komeda: use devm_drm_dev_alloc 2020-04-28 16:04:00 +02:00
armada drm pull for 5.8-rc1 2020-06-02 15:04:15 -07:00
aspeed drm/aspeed: Call drm_fbdev_generic_setup after drm_dev_register 2020-07-09 09:06:39 +02:00
ast drm/ast: fix missing break in switch statement for format->cpp[0] case 4 2020-06-11 09:05:31 +02:00
atmel-hlcdc drm/atmel-hlcdc: Use simple encoder 2020-04-02 14:16:44 +02:00
bochs drm/bochs: Remove explicit drm_connector_register 2020-04-28 16:14:17 +02:00
bridge treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
etnaviv mmap locking API: rename mmap_sem to mmap_lock 2020-06-09 09:39:14 -07:00
exynos drm/exynos: fix ref count leak in mic_pre_enable 2020-06-29 09:38:41 +09:00
fsl-dcu drm/fsl-dcu: Use simple encoder 2020-04-02 14:16:44 +02:00
gma500 drm/gma500: Remove dead code 2020-04-21 09:02:29 +02:00
hisilicon drm/hisilicon/hibmc: Move drm_fbdev_generic_setup() down to avoid the splat 2020-07-08 09:08:22 +00:00
i2c drm/i2c/tda998x: Make tda998x_audio_digital_mute static 2020-05-09 23:06:07 +02:00
i810
i915 drm/i915: Recalculate FBC w/a stride when needed 2020-07-14 20:31:45 +03:00
imx drm/imx: Use simple encoder 2020-04-02 14:16:44 +02:00
ingenic drm pull for 5.8-rc1 2020-06-02 15:04:15 -07:00
lib
lima drm/lima: enable runtime pm 2020-04-24 20:51:24 +08:00
mcde drm: mcde: Fix forgotten user of drm->dev_private 2020-06-16 22:22:38 +02:00
mediatek drm/mediatek: mtk_hdmi: Remove debug messages for function calls 2020-07-05 06:39:21 +08:00
meson drm/meson: viu: fix setting the OSD burst length in VIU_OSD1_FIFO_CTRL_STAT 2020-07-02 10:36:56 +02:00
mga
mgag200 drm/mgag200: Embed connector instance in struct mga_device 2020-05-11 16:40:44 +02:00
msm Merge tag 'drm-msm-fixes-2020-06-25' of https://gitlab.freedesktop.org/drm/msm into drm-fixes 2020-07-01 15:01:51 +10:00
mxsfb
nouveau drm/nouveau/nouveau: fix page fault on device private memory 2020-07-08 13:30:42 +10:00
omapdrm treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
panel drm/panel-simple: fix connector type for newhaven_nhd_43_480272ef_atxl 2020-06-21 09:49:53 +02:00
panfrost drm-misc-next for 5.7: 2020-03-12 12:42:56 +10:00
pl111 drm: pl111: Move VExpress setup into versatile init 2020-04-28 14:06:20 -05:00
qxl drm pull for 5.8-rc1 2020-06-02 15:04:15 -07:00
r128 drm: delete drm_pci.h 2020-04-03 17:11:41 +02:00
radeon drm/radeon: fix double free 2020-07-09 14:42:49 -04:00
rcar-du drm: rcar-du: Fix build error 2020-06-21 05:12:57 +03:00
rockchip drm/rockchip: Remove unneeded semicolon 2020-04-27 21:15:55 +02:00
savage
scheduler drm/scheduler: fix drm_sched_get_cleanup_job 2020-04-15 11:09:13 +02:00
selftests drm/modes: Make sure to parse valid rotation value from cmdline 2020-02-12 18:32:54 +01:00
shmobile drm/shmobile: Use simple encoder 2020-04-02 14:16:45 +02:00
sis
sti drm: convert .debugfs_init() hook to return void. 2020-03-18 17:53:28 +01:00
stm drm/stm: ltdc: check number of endpoints 2020-04-27 15:42:12 +02:00
sun4i drm: sun4i: hdmi: Remove extra HPD polling 2020-06-30 10:01:48 +02:00
tdfx
tegra drm/tegra: Add zpos property for cursor planes 2020-06-16 19:03:25 +02:00
tidss drm pull for 5.8-rc1 2020-06-02 15:04:15 -07:00
tilcdc drm/tilcdc: Set up fbdev after fully registering device 2020-04-08 16:24:56 +02:00
tiny drm/cirrus: Move to drm/tiny 2020-04-28 16:05:15 +02:00
ttm Linux 5.8-rc1 2020-06-16 13:31:47 +02:00
tve200
udl drm/udl: Make udl_handle_damage static 2020-05-06 21:08:37 +02:00
v3d drm/v3d: Delete v3d_dev->pdev 2020-04-28 15:15:59 +02:00
vboxvideo drm/vboxvideo: Use devm_gen_pool_create 2020-04-28 15:08:51 +02:00
vc4 drm-misc-next for 5.8: 2020-04-22 10:41:35 +10:00
vgem drm: Garbage collect drm_dev_fini 2020-03-26 15:45:36 +01:00
via Merge branch 'akpm' (patches from Andrew) 2020-01-31 12:16:36 -08:00
virtio drm pull for 5.8-rc1 2020-06-02 15:04:15 -07:00
vkms drm/vkms: Hold gem object while still in-use 2020-05-06 21:51:46 -04:00
vmwgfx drm/vmwgfx: fix update of display surface when resolution changes 2020-07-14 04:05:52 +02:00
xen drm-misc-next for 5.8: 2020-04-22 10:41:35 +10:00
zte drm/zte: Use simple encoder 2020-04-02 14:16:46 +02:00
drm_agpsupport.c
drm_atomic_helper.c drm/bridge: Add the necessary bits to support bus format negotiation 2020-01-31 16:39:53 +01:00
drm_atomic_state_helper.c drm/atomic-helper: fix kerneldoc 2020-02-15 13:21:22 +01:00
drm_atomic_uapi.c drm/atomic: Spell CRTC consistently 2019-12-22 11:13:00 +01:00
drm_atomic.c drm: convert .debugfs_init() hook to return void. 2020-03-18 17:53:28 +01:00
drm_auth.c drm: error out with EBUSY when device has existing master 2020-03-30 12:20:41 +01:00
drm_blend.c drm: plane: Verify that no or all planes have a zpos property 2020-05-14 02:10:52 +03:00
drm_bridge_connector.c drm: Add helper to create a connector for a chain of bridges 2020-02-26 13:31:41 +02:00
drm_bridge.c drm: Add helper to create a connector for a chain of bridges 2020-02-26 13:31:41 +02:00
drm_bufs.c drm: delete drm_pci.h 2020-04-03 17:11:41 +02:00
drm_cache.c
drm_client_modeset.c Linux 5.6-rc5 2020-03-11 07:27:21 +10:00
drm_client.c drm: convert .debugfs_init() hook to return void. 2020-03-18 17:53:28 +01:00
drm_color_mgmt.c
drm_connector.c drm/connector: notify userspace on hotplug after register complete 2020-06-03 10:24:23 +02:00
drm_context.c drm: context: Clean up documentation 2020-03-16 09:23:55 +01:00
drm_crtc_helper_internal.h
drm_crtc_helper.c drm: drop unused drm_crtc callback 2020-02-15 21:15:17 +01:00
drm_crtc_internal.h drm: convert .debugfs_init() hook to return void. 2020-03-18 17:53:28 +01:00
drm_crtc.c
drm_damage_helper.c
drm_debugfs_crc.c drm/crc: Actually allow to change the crc source 2020-01-28 16:49:22 +01:00
drm_debugfs.c drm: convert .debugfs_init() hook to return void. 2020-03-18 17:53:28 +01:00
drm_dma.c drm: delete drm_pci.h 2020-04-03 17:11:41 +02:00
drm_dp_aux_dev.c drm/dp_mst: Add MST support to DP DPCD R/W functions 2020-01-09 18:07:46 -05:00
drm_dp_cec.c
drm_dp_dual_mode_helper.c
drm_dp_helper.c Short summary of fixes pull (less than what git shortlog provides): 2020-05-28 15:38:39 +10:00
drm_dp_mst_topology_internal.h
drm_dp_mst_topology.c drm pull for 5.8-rc1 2020-06-02 15:04:15 -07:00
drm_drv.c drm: Add devm_drm_dev_alloc macro 2020-04-28 15:05:19 +02:00
drm_dsc.c
drm_dumb_buffers.c
drm_edid_load.c
drm_edid.c drm pull for 5.8-rc1 2020-06-02 15:04:15 -07:00
drm_encoder_slave.c drm: encoder_slave: use new I2C API 2020-06-19 09:20:21 +02:00
drm_encoder.c
drm_fb_cma_helper.c drm: Fix misspellings of "Analog Devices" 2020-04-21 08:15:03 +02:00
drm_fb_helper.c drm/fb-helper: Fix vt restore 2020-06-24 21:34:11 +02:00
drm_file.c drm pull for 5.8-rc1 2020-06-02 15:04:15 -07:00
drm_flip_work.c
drm_format_helper.c drm/format_helper: Dual licence the file in GPL 2 and MIT 2020-02-17 10:27:13 +01:00
drm_fourcc.c
drm_framebuffer.c drm: convert .debugfs_init() hook to return void. 2020-03-18 17:53:28 +01:00
drm_gem_cma_helper.c
drm_gem_framebuffer_helper.c drm: Don't free a struct never allocated by drm_gem_fb_init() 2020-04-16 13:44:29 +02:00
drm_gem_shmem_helper.c drm/shmem: drop pgprot_decrypted() 2020-03-02 07:13:19 +01:00
drm_gem_ttm_helper.c
drm_gem_vram_helper.c drm/vram-helpers: Merge code into a single file 2020-04-09 09:56:33 +02:00
drm_gem.c drm: Manage drm_gem_init with drmm_ 2020-03-26 15:38:09 +01:00
drm_hashtab.c
drm_hdcp.c drm: Fix HDCP failures when SRM fw is missing 2020-05-05 14:01:53 -04:00
drm_internal.h drm: Manage drm_vblank_cleanup with drmm_ 2020-03-26 15:38:17 +01:00
drm_ioc32.c
drm_ioctl.c drm pull for 5.8-rc1 2020-06-02 15:04:15 -07:00
drm_irq.c drm/irq: remove check on dev->dev_private 2020-02-11 18:39:47 +02:00
drm_kms_helper_common.c
drm_lease.c drm/lease: fix WARNING in idr_destroy 2020-03-18 14:42:18 +01:00
drm_legacy_misc.c
drm_legacy.h
drm_lock.c drm: lock: Clean up documentation 2020-03-16 09:27:09 +01:00
drm_managed.c drm/managed: Fix off-by-one in warning 2020-03-30 21:42:23 +02:00
drm_memory.c
drm_mipi_dbi.c drm/mipi-dbi: Drop explicit drm_mode_config_cleanup call 2020-03-26 16:09:10 +01:00
drm_mipi_dsi.c
drm_mm.c drm/mm: optimize rb_hole_addr rbtree search 2020-05-05 13:39:38 +02:00
drm_mode_config.c drm: Manage drm_mode_config_init with drmm_ 2020-03-26 15:45:43 +01:00
drm_mode_object.c drm: Replace drm_modeset_lock/unlock_all with DRM_MODESET_LOCK_ALL_* helpers 2020-05-05 10:51:56 +02:00
drm_modes.c drm: Nuke mode->hsync 2020-04-29 18:44:26 +03: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-orientation-quirks: Use generic orientation-data for Acer S1003 2020-06-23 12:32:06 +02:00
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: delete drm_pci.h 2020-04-03 17:11:41 +02:00
drm_plane_helper.c
drm_plane.c drm: plane: Verify that no or all planes have a zpos property 2020-05-14 02:10:52 +03:00
drm_prime.c drm/prime: fix extracting of the DMA addresses from a scatterlist 2020-04-05 10:44:12 -04:00
drm_print.c
drm_probe_helper.c
drm_property.c
drm_rect.c
drm_scatter.c gpu/drm: remove the powerpc hack in drm_legacy_sg_alloc 2020-06-02 10:59:11 -07:00
drm_scdc_helper.c
drm_self_refresh_helper.c
drm_simple_kms_helper.c drm/simple-kms: Fix documentation for drm_simple_encoder_init() 2020-03-06 09:24:29 +01:00
drm_syncobj.c drm/syncobj: Add documentation for timeline syncobj 2020-01-20 14:22:21 +01:00
drm_sysfs.c drm/connector: notify userspace on hotplug after register complete 2020-06-03 10:24:23 +02:00
drm_trace_points.c
drm_trace.h
drm_vblank.c Short summary of fixes pull (less than what git shortlog provides): 2020-05-28 15:38:39 +10:00
drm_vm.c mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
drm_vma_manager.c
drm_writeback.c
Kconfig drm pull for 5.8-rc1 2020-06-02 15:04:15 -07:00
Makefile drm/cirrus: Move to drm/tiny 2020-04-28 16:05:15 +02:00