summaryrefslogtreecommitdiff
path: root/patches/lockdep-selftests-Avoid-using-local_lock_-acquire-re.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/lockdep-selftests-Avoid-using-local_lock_-acquire-re.patch')
-rw-r--r--patches/lockdep-selftests-Avoid-using-local_lock_-acquire-re.patch115
1 files changed, 115 insertions, 0 deletions
diff --git a/patches/lockdep-selftests-Avoid-using-local_lock_-acquire-re.patch b/patches/lockdep-selftests-Avoid-using-local_lock_-acquire-re.patch
new file mode 100644
index 000000000000..575ff85aca0e
--- /dev/null
+++ b/patches/lockdep-selftests-Avoid-using-local_lock_-acquire-re.patch
@@ -0,0 +1,115 @@
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Date: Fri, 13 Aug 2021 18:26:10 +0200
+Subject: [PATCH] lockdep/selftests: Avoid using
+ local_lock_{acquire|release}().
+
+The functions local_lock related functions
+ local_lock_acquire()
+ local_lock_release()
+
+are part of the internal implementation and should be avoided.
+Define the lock as DEFINE_PER_CPU so the normal local_lock() function
+can be used.
+
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ lib/locking-selftest.c | 30 +++++++++++++++---------------
+ 1 file changed, 15 insertions(+), 15 deletions(-)
+
+--- a/lib/locking-selftest.c
++++ b/lib/locking-selftest.c
+@@ -139,7 +139,7 @@ static DEFINE_RT_MUTEX(rtmutex_Z2);
+
+ #endif
+
+-static local_lock_t local_A = INIT_LOCAL_LOCK(local_A);
++static DEFINE_PER_CPU(local_lock_t, local_A);
+
+ /*
+ * non-inlined runtime initializers, to let separate locks share
+@@ -1320,7 +1320,7 @@ GENERATE_PERMUTATIONS_3_EVENTS(irq_read_
+ # define I_MUTEX(x) lockdep_reset_lock(&mutex_##x.dep_map)
+ # define I_RWSEM(x) lockdep_reset_lock(&rwsem_##x.dep_map)
+ # define I_WW(x) lockdep_reset_lock(&x.dep_map)
+-# define I_LOCAL_LOCK(x) lockdep_reset_lock(&local_##x.dep_map)
++# define I_LOCAL_LOCK(x) lockdep_reset_lock(this_cpu_ptr(&local_##x.dep_map))
+ #ifdef CONFIG_RT_MUTEXES
+ # define I_RTMUTEX(x) lockdep_reset_lock(&rtmutex_##x.dep_map)
+ #endif
+@@ -1380,7 +1380,7 @@ static void reset_locks(void)
+ init_shared_classes();
+ raw_spin_lock_init(&raw_lock_A);
+ raw_spin_lock_init(&raw_lock_B);
+- local_lock_init(&local_A);
++ local_lock_init(this_cpu_ptr(&local_A));
+
+ ww_mutex_init(&o, &ww_lockdep); ww_mutex_init(&o2, &ww_lockdep); ww_mutex_init(&o3, &ww_lockdep);
+ memset(&t, 0, sizeof(t)); memset(&t2, 0, sizeof(t2));
+@@ -2646,8 +2646,8 @@ static void wait_context_tests(void)
+
+ static void local_lock_2(void)
+ {
+- local_lock_acquire(&local_A); /* IRQ-ON */
+- local_lock_release(&local_A);
++ local_lock(&local_A); /* IRQ-ON */
++ local_unlock(&local_A);
+
+ HARDIRQ_ENTER();
+ spin_lock(&lock_A); /* IN-IRQ */
+@@ -2656,18 +2656,18 @@ static void local_lock_2(void)
+
+ HARDIRQ_DISABLE();
+ spin_lock(&lock_A);
+- local_lock_acquire(&local_A); /* IN-IRQ <-> IRQ-ON cycle, false */
+- local_lock_release(&local_A);
++ local_lock(&local_A); /* IN-IRQ <-> IRQ-ON cycle, false */
++ local_unlock(&local_A);
+ spin_unlock(&lock_A);
+ HARDIRQ_ENABLE();
+ }
+
+ static void local_lock_3A(void)
+ {
+- local_lock_acquire(&local_A); /* IRQ-ON */
++ local_lock(&local_A); /* IRQ-ON */
+ spin_lock(&lock_B); /* IRQ-ON */
+ spin_unlock(&lock_B);
+- local_lock_release(&local_A);
++ local_unlock(&local_A);
+
+ HARDIRQ_ENTER();
+ spin_lock(&lock_A); /* IN-IRQ */
+@@ -2676,18 +2676,18 @@ static void local_lock_3A(void)
+
+ HARDIRQ_DISABLE();
+ spin_lock(&lock_A);
+- local_lock_acquire(&local_A); /* IN-IRQ <-> IRQ-ON cycle only if we count local_lock(), false */
+- local_lock_release(&local_A);
++ local_lock(&local_A); /* IN-IRQ <-> IRQ-ON cycle only if we count local_lock(), false */
++ local_unlock(&local_A);
+ spin_unlock(&lock_A);
+ HARDIRQ_ENABLE();
+ }
+
+ static void local_lock_3B(void)
+ {
+- local_lock_acquire(&local_A); /* IRQ-ON */
++ local_lock(&local_A); /* IRQ-ON */
+ spin_lock(&lock_B); /* IRQ-ON */
+ spin_unlock(&lock_B);
+- local_lock_release(&local_A);
++ local_unlock(&local_A);
+
+ HARDIRQ_ENTER();
+ spin_lock(&lock_A); /* IN-IRQ */
+@@ -2696,8 +2696,8 @@ static void local_lock_3B(void)
+
+ HARDIRQ_DISABLE();
+ spin_lock(&lock_A);
+- local_lock_acquire(&local_A); /* IN-IRQ <-> IRQ-ON cycle only if we count local_lock(), false */
+- local_lock_release(&local_A);
++ local_lock(&local_A); /* IN-IRQ <-> IRQ-ON cycle only if we count local_lock(), false */
++ local_unlock(&local_A);
+ spin_unlock(&lock_A);
+ HARDIRQ_ENABLE();
+