From: Thomas Gleixner <>
Date: Thu, 25 Aug 2022 18:41:27 +0200
Subject: [PATCH 4/8] 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

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

Signed-off-by: Thomas Gleixner <>
Cc: Andrew Morton <>
Signed-off-by: Sebastian Andrzej Siewior <>
Acked-by: Peter Zijlstra (Intel) <>
 include/linux/mmdebug.h |    6 ++++++
 lib/Kconfig.debug       |    3 +++
 2 files changed, 9 insertions(+)

Index: linux-6.0/include/linux/mmdebug.h
@ linux-6.0/include/linux/mmdebug.h:97 @ void dump_mm(const struct mm_struct *mm)
 #define VM_WARN(cond, format...) BUILD_BUG_ON_INVALID(cond)
+#define VM_WARN_ON_IRQS_ENABLED() WARN_ON_ONCE(!irqs_disabled())
+#define VM_WARN_ON_IRQS_ENABLED() do { } while (0)
 #define VIRTUAL_BUG_ON(cond) BUG_ON(cond)
Index: linux-6.0/lib/Kconfig.debug
--- linux-6.0.orig/lib/Kconfig.debug
+++ linux-6.0/lib/Kconfig.debug
@ linux-6.0/include/linux/mmdebug.h:808 @ config ARCH_HAS_DEBUG_VM_PGTABLE
 	  An architecture should select this when it can successfully
 	  build and run DEBUG_VM_PGTABLE.
+	def_bool DEBUG_VM && !PREEMPT_RT
 config DEBUG_VM
 	bool "Debug VM"
 	depends on DEBUG_KERNEL