linux/drivers/gpu/drm
Maarten Lankhorst 81e257e964 drm/atomic: Make drm_atomic_legacy_backoff reset crtc->acquire_ctx
Atomic updates may acquire more state than initially locked through
drm_modeset_lock_crtc, running with heavy stress can cause a
WARN_ON(crtc->acquire_ctx) in drm_modeset_lock_crtc:

[  601.491296] ------------[ cut here ]------------
[  601.491366] WARNING: CPU: 0 PID: 2411 at
drivers/gpu/drm/drm_modeset_lock.c:191 drm_modeset_lock_crtc+0xeb/0xf0 [drm]
[  601.491369] Modules linked in: drm i915 drm_kms_helper
[  601.491414] CPU: 0 PID: 2411 Comm: kms_cursor_lega Tainted: G     U 4.7.0-rc4-patser+ #4798
[  601.491417] Hardware name: Intel Corporation Skylake Client
[  601.491420]  0000000000000000 ffff88044d153c98 ffffffff812ead28 0000000000000000
[  601.491425]  0000000000000000 ffff88044d153cd8 ffffffff810868e6 000000bf58058030
[  601.491431]  ffff880088b415e8 ffff880458058030 ffff88008a271548 ffff88008a271568
[  601.491436] Call Trace:
[  601.491443]  [<ffffffff812ead28>] dump_stack+0x4d/0x65
[  601.491447]  [<ffffffff810868e6>] __warn+0xc6/0xe0
[  601.491452]  [<ffffffff81086968>] warn_slowpath_null+0x18/0x20
[  601.491472]  [<ffffffffc00d4ffb>] drm_modeset_lock_crtc+0xeb/0xf0 [drm]
[  601.491491]  [<ffffffffc00c5526>] drm_mode_cursor_common+0x66/0x180 [drm]
[  601.491509]  [<ffffffffc00c91cc>] drm_mode_cursor_ioctl+0x3c/0x40 [drm]
[  601.491524]  [<ffffffffc00bc94d>] drm_ioctl+0x14d/0x530 [drm]
[  601.491540]  [<ffffffffc00c9190>] ? drm_mode_setcrtc+0x520/0x520 [drm]
[  601.491545]  [<ffffffff81176aeb>] ? handle_mm_fault+0x106b/0x1430
[  601.491550]  [<ffffffff81108441>] ? stop_one_cpu+0x61/0x70
[  601.491556]  [<ffffffff811bb71d>] do_vfs_ioctl+0x8d/0x570
[  601.491560]  [<ffffffff81290d7e>] ? security_file_ioctl+0x3e/0x60
[  601.491565]  [<ffffffff811bbc74>] SyS_ioctl+0x74/0x80
[  601.491571]  [<ffffffff810e321c>] ? posix_get_monotonic_raw+0xc/0x10
[  601.491576]  [<ffffffff8175b11b>] entry_SYSCALL_64_fastpath+0x13/0x8f
[  601.491581] ---[ end trace 56f3d3d85f000d00 ]---

For good measure, test mode_config.acquire_ctx too, although this should
never happen.

Testcase: kms_cursor_legacy
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: stable@vger.kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
2016-06-24 11:10:36 +10:00
..
amd drm/amd/powerplay: enable clock stretch feature for polaris 2016-06-21 10:22:42 -04:00
arc drm/arcpgu: use dedicated memory area for frame buffer 2016-04-29 14:22:32 +03:00
arm drm: hdlcd: Add information about the underlying framebuffers in debugfs 2016-06-02 17:45:55 +01:00
armada drm: Nuke ->vblank_disable_allowed 2016-05-21 07:03:31 +10:00
ast drm: Remove unused drm_device from drm_gem_object_lookup() 2016-05-17 08:47:30 +02:00
atmel-hlcdc drm: atmel-hlcdc: Fix OF graph parsing 2016-06-21 14:15:45 +02:00
bochs drm: Remove unused drm_device from drm_gem_object_lookup() 2016-05-17 08:47:30 +02:00
bridge drm/bridge: Add Analogix anx78xx support 2016-05-12 11:32:14 +02:00
cirrus drm: Remove unused drm_device from drm_gem_object_lookup() 2016-05-17 08:47:30 +02:00
etnaviv drm/etnaviv: initialize iommu domain page size 2016-06-15 11:18:39 +02:00
exynos drm/exynos: use logical AND in exynos_drm_plane_check_size() 2016-06-19 14:37:28 +09:00
fsl-dcu drm/fsl-dcu: use flat regmap cache 2016-06-08 15:12:01 -07:00
gma500 drm: Nuke ->vblank_disable_allowed 2016-05-21 07:03:31 +10:00
hisilicon drm/hisilicon: Fix DRM_INFO printed issue 2016-05-11 19:05:36 +08:00
i2c
i810
i915 drm/i915/fbc: Disable on HSW by default for now 2016-06-21 19:45:21 +03:00
imx drm/imx: plane: Don't set plane->crtc in ipu_plane_update() 2016-05-30 09:14:00 +02:00
mediatek drm/mediatek: mtk_dsi: Remove spurious drm_connector_unregister 2016-06-01 16:09:56 +02:00
mga
mgag200 drm/mgag200: Black screen fix for G200e rev 4 2016-06-01 15:25:04 +10:00
msm drm/msm: fix potential submit error path issue 2016-06-04 14:45:50 -04:00
nouveau drm/nouveau: fix for disabled fbdev emulation 2016-06-24 07:51:32 +10:00
omapdrm drm/omap: fix unused variable warning in dsi & hdmi 2016-06-09 12:31:36 +10:00
panel drm/panel: simple: Add support for TPK U.S.A. LLC Fusion 7" and 10.1" panels 2016-05-12 11:32:14 +02:00
qxl qxl: catch qxlfb_create_pinned_object failures 2016-05-17 09:11:23 +02:00
r128
radeon drm/radeon: fix asic initialization for virtualized environments 2016-06-13 15:37:34 -04:00
rcar-du drm: Drop plane argument from __drm_atomic_helper_plane_destroy_state 2016-05-17 08:56:55 +02:00
rockchip drm: Nuke ->vblank_disable_allowed 2016-05-21 07:03:31 +10:00
savage
shmobile drm/shmobile: use drm_crtc_send_vblank_event() 2016-05-02 17:04:50 +02:00
sis
sti drm/sti: remove extra mode fixup 2016-06-01 14:59:44 +10:00
sun4i drm: sun4i: do cleanup if RGB output init fails 2016-05-30 08:28:33 +02:00
tdfx
tegra Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2016-05-23 11:48:48 -07:00
tilcdc remove lots of IS_ERR_VALUE abuses 2016-05-27 15:26:11 -07:00
ttm Linux 4.6-rc7 2016-05-09 13:49:56 +10:00
udl drm: Remove unused drm_device from drm_gem_object_lookup() 2016-05-17 08:47:30 +02:00
vc4 drm/vc4: Make pageflip completion handling more robust. 2016-06-06 13:00:40 -07:00
vgem drm: Remove unused drm_device from drm_gem_object_lookup() 2016-05-17 08:47:30 +02:00
via
virtio drm: Remove unused drm_device from drm_gem_object_lookup() 2016-05-17 08:47:30 +02:00
vmwgfx objtool, drm/vmwgfx: Fix "duplicate frame pointer save" warning 2016-06-08 15:36:18 +02:00
ati_pcigart.c
drm_agpsupport.c drm: Give drm_agp_clear drm_legacy_ prefix 2016-04-27 08:41:34 +02:00
drm_atomic_helper.c drm: Drop connector argument from __drm_atomic_helper_connector_destroy_state 2016-05-17 08:57:05 +02:00
drm_atomic.c drm/atomic: Make drm_atomic_legacy_backoff reset crtc->acquire_ctx 2016-06-24 11:10:36 +10:00
drm_auth.c
drm_bridge.c
drm_bufs.c drm: Hide master MAP cleanup in drm_bufs.c 2016-04-27 10:14:17 +02:00
drm_cache.c
drm_context.c
drm_crtc_helper.c drm/crtc: only store the necessary data for set_config rollback 2016-06-15 10:47:54 +10: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_crtc.c drm: fix fb refcount issue with atomic modesetting 2016-06-01 15:00:05 +10:00
drm_debugfs.c
drm_dma.c
drm_dp_aux_dev.c drm/dp: Allow signals to interrupt drm_aux-dev reads/writes 2016-04-28 11:48:09 +02:00
drm_dp_dual_mode_helper.c drm: Add helper for DP++ adaptors 2016-05-23 11:10:46 +03:00
drm_dp_helper.c drm/dp_helper: Perform throw-away read before actual read in drm_dp_dpcd_read() 2016-04-22 18:52:24 +02:00
drm_dp_mst_topology.c drm/dp/mst: Always clear proposed vcpi table for port. 2016-06-15 11:14:36 +10:00
drm_drv.c drm: Protect dev->filelist with its own mutex 2016-04-27 10:16:17 +02:00
drm_edid_load.c
drm_edid.c drm/edid: add displayid detailed 1 timings to the modelist. (v1.1) 2016-05-23 11:35:31 +10:00
drm_encoder_slave.c
drm_fb_cma_helper.c drm: Wrap direct calls to driver->gem_free_object from CMA 2016-06-01 15:00:28 +10:00
drm_fb_helper.c drm/fb_helper: Fix references to dev->mode_config.num_connector 2016-05-17 15:44:41 +02:00
drm_flip_work.c
drm_fops.c drm: Protect dev->filelist with its own mutex 2016-04-27 10:16:17 +02:00
drm_gem_cma_helper.c drm: Wrap direct calls to driver->gem_free_object from CMA 2016-06-01 15:00:28 +10:00
drm_gem.c drm: Remove unused drm_device from drm_gem_object_lookup() 2016-05-17 08:47:30 +02:00
drm_global.c
drm_hashtab.c
drm_info.c drm: Protect dev->filelist with its own mutex 2016-04-27 10:16:17 +02:00
drm_internal.h drm: Make drm_vm_open/close_locked private to drm_vm.c 2016-04-27 10:15:56 +02:00
drm_ioc32.c
drm_ioctl.c drm: Move drm_getmap into drm_bufs.c and give it a legacy prefix 2016-04-27 08:42:48 +02:00
drm_irq.c drm: Nuke ->vblank_disable_allowed 2016-05-21 07:03:31 +10:00
drm_kms_helper_common.c
drm_legacy.h drm: Move drm_getmap into drm_bufs.c and give it a legacy prefix 2016-04-27 08:42:48 +02:00
drm_lock.c
drm_memory.c
drm_mipi_dsi.c
drm_mm.c
drm_modes.c drm: add missing drm_mode_set_crtcinfo call 2016-06-01 14:59:39 +10:00
drm_modeset_lock.c
drm_of.c
drm_panel.c drm/panel: Flesh out kerneldoc 2016-05-06 16:04:48 +02:00
drm_pci.c drm: Give drm_agp_clear drm_legacy_ prefix 2016-04-27 08:41:34 +02:00
drm_plane_helper.c
drm_platform.c
drm_prime.c drm: Remove unused drm_device from drm_gem_object_lookup() 2016-05-17 08:47:30 +02: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: Annote lockless show functions with READ_ONCE 2016-04-26 13:23:24 +02:00
drm_trace_points.c
drm_trace.h
drm_vm.c drm: Make drm_vm_open/close_locked private to drm_vm.c 2016-04-27 10:15:56 +02:00
drm_vma_manager.c
Kconfig drm/mediatek: Add DRM Driver for Mediatek SoC MT8173. 2016-05-06 17:47:35 +02:00
Makefile Merge tag 'drm-intel-next-fixes-2016-05-25' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-05-27 16:08:38 +10:00