Commit 76e46dbf authored by Maarten Lankhorst's avatar Maarten Lankhorst
Browse files

drm/i915/display: Make intel_crtc_get_vblank_counter safe on PREEMPT_RT



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.

Acked-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://lore.kernel.org/r/20250829131701.15607-2-dev@lankhorst.se


Signed-off-by: default avatarMaarten Lankhorst <dev@lankhorst.se>
parent ed1fbee3
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -84,8 +84,13 @@ u32 intel_crtc_get_vblank_counter(struct intel_crtc *crtc)
	if (!crtc->active)
		return 0;

	if (!vblank->max_vblank_count)
	if (!vblank->max_vblank_count) {
		/* On preempt-rt we cannot take the vblank spinlock since this function is called from tracepoints */
		if (IS_ENABLED(CONFIG_PREEMPT_RT))
			return (u32)drm_crtc_vblank_count(&crtc->base);
		else
			return (u32)drm_crtc_accurate_vblank_count(&crtc->base);
	}

	return crtc->base.funcs->get_vblank_counter(&crtc->base);
}