Skip to content

drm/i915/guc: Consider also RCU depth in busy loop.

John B. Wyatt IV requested to merge jwyatt-rh/centos-stream-9:rhel-8788 into main

Resolves many call traces in RHEL 9 RT.

JIRA: https://issues.redhat.com/browse/RHEL-8788

Upstream Status: https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git

commit 711b6250084b02e7402cb9621e5a877fdfd4ffa3
Author: Sebastian Andrzej Siewior bigeasy@linutronix.de
Date: Tue Oct 3 21:37:21 2023 +0200

intel_guc_send_busy_loop() looks at in_atomic() and irqs_disabled() to  
decide if it should busy-spin while waiting or if it may sleep.  
Both checks will report false on PREEMPT_RT if sleeping spinlocks are  
acquired leading to RCU splats while the function sleeps.  

Check also if RCU has been disabled.  

Reported-by: "John B. Wyatt IV" <jwyatt@redhat.com>  
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>  

Signed-off-by: John B. Wyatt IV jwyatt@redhat.com

Edited by John B. Wyatt IV

Merge request reports