Konstantin Demin
c3d09a3e94
imported from https://salsa.debian.org/kernel-team/linux.git commit 9d5cc9d9d6501d7f1dd7e194d4b245bd0b6c6a22 version 6.11.4-1
31 lines
1.2 KiB
Diff
31 lines
1.2 KiB
Diff
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
Date: Tue, 3 Oct 2023 21:37:21 +0200
|
|
Subject: [PATCH 7/8] drm/i915/guc: Consider also RCU depth in busy loop.
|
|
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/6.11/older/patches-6.11-rt7.tar.xz
|
|
|
|
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>
|
|
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
|
|
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
---
|
|
drivers/gpu/drm/i915/gt/uc/intel_guc.h | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc.h
|
|
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc.h
|
|
@@ -362,7 +362,7 @@ static inline int intel_guc_send_busy_lo
|
|
{
|
|
int err;
|
|
unsigned int sleep_period_ms = 1;
|
|
- bool not_atomic = !in_atomic() && !irqs_disabled();
|
|
+ bool not_atomic = !in_atomic() && !irqs_disabled() && !rcu_preempt_depth();
|
|
|
|
/*
|
|
* FIXME: Have caller pass in if we are in an atomic context to avoid
|