summaryrefslogtreecommitdiff
path: root/patches/0005-mm-debug-Provide-VM_WARN_ON_IRQS_ENABLED.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/0005-mm-debug-Provide-VM_WARN_ON_IRQS_ENABLED.patch')
-rw-r--r--patches/0005-mm-debug-Provide-VM_WARN_ON_IRQS_ENABLED.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/patches/0005-mm-debug-Provide-VM_WARN_ON_IRQS_ENABLED.patch b/patches/0005-mm-debug-Provide-VM_WARN_ON_IRQS_ENABLED.patch
new file mode 100644
index 000000000000..62c58ef57f11
--- /dev/null
+++ b/patches/0005-mm-debug-Provide-VM_WARN_ON_IRQS_ENABLED.patch
@@ -0,0 +1,51 @@
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Wed, 17 Aug 2022 18:26:59 +0200
+Subject: [PATCH 5/9] mm/debug: Provide VM_WARN_ON_IRQS_ENABLED()
+
+Some places in the VM code expect interrupts disabled, which is a valid
+expectation on non-PREEMPT_RT kernels, but does not hold on RT kernels in
+some places because the RT spinlock substitution does not disable
+interrupts.
+
+To avoid sprinkling CONFIG_PREEMPT_RT conditionals into those places,
+provide VM_WARN_ON_IRQS_ENABLED() which is only enabled when VM_DEBUG=y and
+PREEMPT_RT=n.
+
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+Cc: linux-mm@kvack.org
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
+Link: https://lore.kernel.org/r/20220817162703.728679-6-bigeasy@linutronix.de
+---
+ include/linux/mmdebug.h | 6 ++++++
+ lib/Kconfig.debug | 3 +++
+ 2 files changed, 9 insertions(+)
+
+--- a/include/linux/mmdebug.h
++++ b/include/linux/mmdebug.h
+@@ -94,6 +94,12 @@ void dump_mm(const struct mm_struct *mm)
+ #define VM_WARN(cond, format...) BUILD_BUG_ON_INVALID(cond)
+ #endif
+
++#ifdef CONFIG_DEBUG_VM_IRQSOFF
++#define VM_WARN_ON_IRQS_ENABLED() WARN_ON_ONCE(!irqs_disabled())
++#else
++#define VM_WARN_ON_IRQS_ENABLED() do { } while (0)
++#endif
++
+ #ifdef CONFIG_DEBUG_VIRTUAL
+ #define VIRTUAL_BUG_ON(cond) BUG_ON(cond)
+ #else
+--- a/lib/Kconfig.debug
++++ b/lib/Kconfig.debug
+@@ -803,6 +803,9 @@ config ARCH_HAS_DEBUG_VM_PGTABLE
+ An architecture should select this when it can successfully
+ build and run DEBUG_VM_PGTABLE.
+
++config DEBUG_VM_IRQSOFF
++ def_bool DEBUG_VM && !PREEMPT_RT
++
+ config DEBUG_VM
+ bool "Debug VM"
+ depends on DEBUG_KERNEL