> -----Original Message-----
> From: Intel-xe <[email protected]> On Behalf Of Maarten
> Lankhorst
> Sent: Tuesday, November 4, 2025 2:07 PM
> To: [email protected]; [email protected]
> Cc: [email protected]; Maarten Lankhorst <[email protected]>;
> Mario
> Kleiner <[email protected]>; Mike Galbraith
> <[email protected]>; Thomas Gleixner <[email protected]>; Sebastian
> Andrzej Siewior <[email protected]>; Clark Williams
> <[email protected]>; Steven Rostedt <[email protected]>
> Subject: [PATCH v2 6/7] drm/i915/display: Enable interrupts earlier on
> PREEMPT_RT
>
> The last part of the vblank evasion is about updating bookkeeping, not
> programming hardware registers.
>
> The interrupts cannot stay disabled here on PREEMPT_RT since the spinlocks get
> converted to mutexes.
>
> Signed-off-by: Maarten Lankhorst <[email protected]>
> ---
> drivers/gpu/drm/i915/display/intel_crtc.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c
> b/drivers/gpu/drm/i915/display/intel_crtc.c
> index 9d2a23c96c61b..b87f6b4a4f3d7 100644
> --- a/drivers/gpu/drm/i915/display/intel_crtc.c
> +++ b/drivers/gpu/drm/i915/display/intel_crtc.c
> @@ -688,6 +688,14 @@ void intel_pipe_update_end(struct intel_atomic_state
> *state,
> intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI))
> icl_dsi_frame_update(new_crtc_state);
>
> +#if IS_ENABLED(CONFIG_PREEMPT_RT)
> + /*
> + * Timing sensitive register writing completed, non-deterministic
> + * locking from here on out.
> + */
> + local_irq_enable();
> +#endif
I think we do have VRR send push etc handled here, also arming registers are
being updated.
Not sure we can allow interrupts here. Please check once
> +
> /* We're still in the vblank-evade critical section, this can't race.
> * Would be slightly nice to just grab the vblank count and arm the
> * event outside of the critical section - the spinlock might spin for
> a @@ -
> 735,7 +743,9 @@ void intel_pipe_update_end(struct intel_atomic_state *state,
> if (!state->base.legacy_cursor_update)
> intel_vrr_send_push(NULL, new_crtc_state);
>
> +#if !IS_ENABLED(CONFIG_PREEMPT_RT)
> local_irq_enable();
> +#endif
>
> if (intel_vgpu_active(dev_priv))
> goto out;
> --
> 2.51.0