drm_crtc_accurate_vblank_count takes a spinlock, which we should avoid in tracepoints and debug functions.
This also prevents taking the spinlock 2x during the critical section of pipe updates for DSI updates. Signed-off-by: Maarten Lankhorst <d...@lankhorst.se> --- drivers/gpu/drm/i915/display/intel_crtc.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c b/drivers/gpu/drm/i915/display/intel_crtc.c index a187db6df2d36..cee00aa2c79de 100644 --- a/drivers/gpu/drm/i915/display/intel_crtc.c +++ b/drivers/gpu/drm/i915/display/intel_crtc.c @@ -84,8 +84,12 @@ u32 intel_crtc_get_vblank_counter(struct intel_crtc *crtc) if (!crtc->active) return 0; - if (!vblank->max_vblank_count) - return (u32)drm_crtc_accurate_vblank_count(&crtc->base); + if (!vblank->max_vblank_count) { + if (!IS_ENABLED(CONFIG_PREEMPT_RT)) + return (u32)drm_crtc_accurate_vblank_count(&crtc->base); + else + return (u32)drm_crtc_vblank_count(&crtc->base); + } return crtc->base.funcs->get_vblank_counter(&crtc->base); } -- 2.50.0