From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Mon, 14 Jul 2025 17:39:53 +0200 Subject: [PATCH] drm/i915: Consider RCU read section as atomic. Locking and/ or running inside interrupt handler will not lead to an atomic section on PREEMPT_RT. The RCU read section needs to be considered because all locks, which become sleeping locks on PREEMPT_RT, start a RCU read section. Scheduling/ sleeping while within a RCU read section is invalid. Check for also for RCU read section in stop_timeout() to determine if it is safe to sleep. Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: https://lore.kernel.org/r/20250714153954.629393-9-bigeasy@linutronix.de Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- drivers/gpu/drm/i915/gt/intel_engine_cs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) @ drivers/gpu/drm/i915/gt/intel_engine_cs.c:1612 @ u64 intel_engine_get_last_batch_head(con static unsigned long stop_timeout(const struct intel_engine_cs *engine) { - if (in_atomic() || irqs_disabled()) /* inside atomic preempt-reset? */ + if (in_atomic() || irqs_disabled() || rcu_preempt_depth()) /* inside atomic preempt-reset? */ return 0; /*