linux_dsm_epyc7002/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
hdmi drm/msm/hdmi: Convert to use GPIO descriptors 2019-09-03 16:16:58 -07:00
Kconfig
Makefile
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
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
msm_fence.h
msm_gem_prime.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
msm_gem_shrinker.c
msm_gem_submit.c drm/msm: Use struct_size() helper 2019-09-03 16:16:58 -07:00
msm_gem_vma.c
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
msm_gpu_tracepoints.c
msm_gpu.c drm/msm: Use generic bulk clock function 2019-09-03 16:16:58 -07:00
msm_gpu.h
msm_gpummu.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
msm_iommu.c
msm_kms.h
msm_mmu.h
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
msm_ringbuffer.h
msm_submitqueue.c drm/msm: drop use of drmP.h 2019-09-03 16:16:57 -07:00
NOTES