linux/drivers/gpu/drm/msm
Rob Clark 241b507c16 drm/msm/dpu: fix "frame done" timeouts
Previously, dpu_crtc_frame_event_work() would try to aquire all the
modeset locks in order to check whether it can release bandwidth.  (If
we only have cmd-mode display, bandwidth can be released at frame-done
time.)

The problem with this is that it is also responsible for signalling
frame_done_comp, which dpu_crtc_commit_kickoff() waits on if there is
already a frame pending.  This is called in the msm_atomic_commit_tail()
path.. which means that for non-nonblock commits, at least some of the
modeset locks are already held.

Re-work this scheme to use a reference count to track our need to have
clocks enabled.  It is incremented for each atomic commit, and
decremented in the corresponding frame-done.  Additionally, any crtc
used in video mode hold an extra reference while they are enabled.  The
net effect is that we can determine in frame-done whether it is safe to
drop bandwidth without needing to aquire any modeset locks.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Sean Paul <sean@chromium.org>
Signed-off-by: Rob Clark <robdclark@chromium.org>
2019-09-03 16:16:58 -07:00
..
adreno drm/msm: Use generic bulk clock function 2019-09-03 16:16:58 -07:00
disp drm/msm/dpu: fix "frame done" timeouts 2019-09-03 16:16:58 -07:00
dsi drm/msm/phy/dsi_phy: silence -EPROBE_DEFER warnings 2019-09-03 16:16:58 -07:00
edp treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284 2019-06-05 17:36:37 +02:00
hdmi drm/msm/hdmi: Convert to use GPIO descriptors 2019-09-03 16:16:58 -07:00
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile drm: prefix header search paths with $(srctree)/ 2019-04-26 17:03:23 +02:00
msm_atomic.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
msm_debugfs.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
msm_debugfs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_drv.c drm/msm: Use generic bulk clock function 2019-09-03 16:16:58 -07:00
msm_drv.h drm/msm: Use generic bulk clock function 2019-09-03 16:16:58 -07:00
msm_fb.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
msm_fbdev.c drm/msm: Transition console to msm framebuffer 2019-09-03 16:16:58 -07:00
msm_fence.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_fence.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_gem_prime.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
msm_gem_shrinker.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_gem_submit.c drm/msm: Use struct_size() helper 2019-09-03 16:16:58 -07:00
msm_gem_vma.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_gem.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
msm_gem.h dma-buf: rename reservation_object to dma_resv 2019-08-13 09:09:30 +02:00
msm_gpu_trace.h drm/msm/gpu: Add trace events for tracking GPU submissions 2018-12-11 13:05:28 -05:00
msm_gpu_tracepoints.c drm/msm/gpu: Add trace events for tracking GPU submissions 2018-12-11 13:05:28 -05:00
msm_gpu.c drm/msm: Use generic bulk clock function 2019-09-03 16:16:58 -07:00
msm_gpu.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_gpummu.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
msm_iommu.c drm main pull request for v5.3-rc1 (sans mm changes) 2019-07-15 19:04:27 -07:00
msm_kms.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_mmu.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_perf.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
msm_rd.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
msm_ringbuffer.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_ringbuffer.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
msm_submitqueue.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
NOTES