summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/drm-ttm-tests-Let-ttm_bo_test-consider-different-ww_.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/drm-ttm-tests-Let-ttm_bo_test-consider-different-ww_.patch')
-rw-r--r--debian/patches-rt/drm-ttm-tests-Let-ttm_bo_test-consider-different-ww_.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/debian/patches-rt/drm-ttm-tests-Let-ttm_bo_test-consider-different-ww_.patch b/debian/patches-rt/drm-ttm-tests-Let-ttm_bo_test-consider-different-ww_.patch
new file mode 100644
index 0000000000..13ce972247
--- /dev/null
+++ b/debian/patches-rt/drm-ttm-tests-Let-ttm_bo_test-consider-different-ww_.patch
@@ -0,0 +1,52 @@
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Date: Thu, 4 Apr 2024 12:25:34 +0200
+Subject: [PATCH] drm/ttm/tests: Let ttm_bo_test consider different ww_mutex
+ implementation.
+Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/6.9/older/patches-6.9-rt5.tar.xz
+
+PREEMPT_RT has a different locking implementation for ww_mutex. The
+base mutex of struct ww_mutex is declared as struct WW_MUTEX_BASE. The
+latter is defined as `mutex' for non-PREEMPT_RT builds and `rt_mutex'
+for PREEMPT_RT builds.
+
+Using mutex_lock() directly on the base mutex in
+ttm_bo_reserve_deadlock() leads to compile error on PREEMPT_RT.
+
+The locking-selftest has its own defines to deal with this and it is
+probably best to defines the needed one within the test program since
+their usefulness is limited outside of well known selftests.
+
+Provide ww_mutex_base_lock() which points to the correct function for
+PREEMPT_RT and non-PREEMPT_RT builds.
+
+Fixes: 995279d280d1e ("drm/ttm/tests: Add tests for ttm_bo functions")
+Link: https://lore.kernel.org/r/20240404102534.QTa80QPY@linutronix.de
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ drivers/gpu/drm/ttm/tests/ttm_bo_test.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/ttm/tests/ttm_bo_test.c
++++ b/drivers/gpu/drm/ttm/tests/ttm_bo_test.c
+@@ -18,6 +18,12 @@
+
+ #define BO_SIZE SZ_8K
+
++#ifdef CONFIG_PREEMPT_RT
++#define ww_mutex_base_lock(b) rt_mutex_lock(b)
++#else
++#define ww_mutex_base_lock(b) mutex_lock(b)
++#endif
++
+ struct ttm_bo_test_case {
+ const char *description;
+ bool interruptible;
+@@ -142,7 +148,7 @@ static void ttm_bo_reserve_deadlock(stru
+ bo2 = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ ww_acquire_init(&ctx1, &reservation_ww_class);
+- mutex_lock(&bo2->base.resv->lock.base);
++ ww_mutex_base_lock(&bo2->base.resv->lock.base);
+
+ /* The deadlock will be caught by WW mutex, don't warn about it */
+ lock_release(&bo2->base.resv->lock.base.dep_map, 1);