summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0117-lockdep-Make-it-RT-aware.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/0117-lockdep-Make-it-RT-aware.patch')
-rw-r--r--debian/patches-rt/0117-lockdep-Make-it-RT-aware.patch78
1 files changed, 78 insertions, 0 deletions
diff --git a/debian/patches-rt/0117-lockdep-Make-it-RT-aware.patch b/debian/patches-rt/0117-lockdep-Make-it-RT-aware.patch
new file mode 100644
index 000000000..445f08b7b
--- /dev/null
+++ b/debian/patches-rt/0117-lockdep-Make-it-RT-aware.patch
@@ -0,0 +1,78 @@
+From 847045ea96b917f8dab8df5053e66280a83c84e4 Mon Sep 17 00:00:00 2001
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Sun, 17 Jul 2011 18:51:23 +0200
+Subject: [PATCH 117/347] lockdep: Make it RT aware
+Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.246-rt110.tar.xz
+
+teach lockdep that we don't really do softirqs on -RT.
+
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+---
+ include/linux/irqflags.h | 23 +++++++++++++++--------
+ kernel/locking/lockdep.c | 2 ++
+ 2 files changed, 17 insertions(+), 8 deletions(-)
+
+diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h
+index 21619c92c377..b20eeb25e9fa 100644
+--- a/include/linux/irqflags.h
++++ b/include/linux/irqflags.h
+@@ -43,14 +43,6 @@ do { \
+ do { \
+ current->hardirq_context--; \
+ } while (0)
+-# define lockdep_softirq_enter() \
+-do { \
+- current->softirq_context++; \
+-} while (0)
+-# define lockdep_softirq_exit() \
+-do { \
+- current->softirq_context--; \
+-} while (0)
+ #else
+ # define trace_hardirqs_on() do { } while (0)
+ # define trace_hardirqs_off() do { } while (0)
+@@ -64,6 +56,21 @@ do { \
+ # define lockdep_softirq_exit() do { } while (0)
+ #endif
+
++#if defined(CONFIG_TRACE_IRQFLAGS) && !defined(CONFIG_PREEMPT_RT_FULL)
++# define lockdep_softirq_enter() \
++do { \
++ current->softirq_context++; \
++} while (0)
++# define lockdep_softirq_exit() \
++do { \
++ current->softirq_context--; \
++} while (0)
++
++#else
++# define lockdep_softirq_enter() do { } while (0)
++# define lockdep_softirq_exit() do { } while (0)
++#endif
++
+ #if defined(CONFIG_IRQSOFF_TRACER) || \
+ defined(CONFIG_PREEMPT_TRACER)
+ extern void stop_critical_timings(void);
+diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
+index 4dc79f57af82..4dd83428b56d 100644
+--- a/kernel/locking/lockdep.c
++++ b/kernel/locking/lockdep.c
+@@ -3831,6 +3831,7 @@ static void check_flags(unsigned long flags)
+ }
+ }
+
++#ifndef CONFIG_PREEMPT_RT_FULL
+ /*
+ * We dont accurately track softirq state in e.g.
+ * hardirq contexts (such as on 4KSTACKS), so only
+@@ -3845,6 +3846,7 @@ static void check_flags(unsigned long flags)
+ DEBUG_LOCKS_WARN_ON(!current->softirqs_enabled);
+ }
+ }
++#endif
+
+ if (!debug_locks)
+ print_irqtrace_events(current);
+--
+2.36.1
+