xref: /linux-6.15/include/linux/mmdebug.h (revision fa3759cc)
159ea7463SJiri Slaby #ifndef LINUX_MM_DEBUG_H
259ea7463SJiri Slaby #define LINUX_MM_DEBUG_H 1
359ea7463SJiri Slaby 
4e4f67422SDave Hansen #include <linux/stringify.h>
5e4f67422SDave Hansen 
6309381feSSasha Levin struct page;
70bf55139SSasha Levin struct vm_area_struct;
8309381feSSasha Levin 
9d230dec1SKirill A. Shutemov extern void dump_page(struct page *page, const char *reason);
10d230dec1SKirill A. Shutemov extern void dump_page_badflags(struct page *page, const char *reason,
11309381feSSasha Levin 			       unsigned long badflags);
120bf55139SSasha Levin void dump_vma(const struct vm_area_struct *vma);
13309381feSSasha Levin 
1459ea7463SJiri Slaby #ifdef CONFIG_DEBUG_VM
1559ea7463SJiri Slaby #define VM_BUG_ON(cond) BUG_ON(cond)
16309381feSSasha Levin #define VM_BUG_ON_PAGE(cond, page)					\
17e4f67422SDave Hansen 	do {								\
18e4f67422SDave Hansen 		if (unlikely(cond)) {					\
19e4f67422SDave Hansen 			dump_page(page, "VM_BUG_ON_PAGE(" __stringify(cond)")");\
20e4f67422SDave Hansen 			BUG();						\
21e4f67422SDave Hansen 		}							\
22e4f67422SDave Hansen 	} while (0)
23*fa3759ccSSasha Levin #define VM_BUG_ON_VMA(cond, vma)					\
24*fa3759ccSSasha Levin 	do {								\
25*fa3759ccSSasha Levin 		if (unlikely(cond)) {					\
26*fa3759ccSSasha Levin 			dump_vma(vma);					\
27*fa3759ccSSasha Levin 			BUG();						\
28*fa3759ccSSasha Levin 		}							\
29*fa3759ccSSasha Levin 	} while (0)
3002a8efedSAndrew Morton #define VM_WARN_ON(cond) WARN_ON(cond)
3102a8efedSAndrew Morton #define VM_WARN_ON_ONCE(cond) WARN_ON_ONCE(cond)
32ef6b571fSAndrew Morton #define VM_WARN_ONCE(cond, format...) WARN_ONCE(cond, format)
3359ea7463SJiri Slaby #else
3402602a18SKonstantin Khlebnikov #define VM_BUG_ON(cond) BUILD_BUG_ON_INVALID(cond)
35309381feSSasha Levin #define VM_BUG_ON_PAGE(cond, page) VM_BUG_ON(cond)
36*fa3759ccSSasha Levin #define VM_BUG_ON_VMA(cond, vma) VM_BUG_ON(cond)
3702a8efedSAndrew Morton #define VM_WARN_ON(cond) BUILD_BUG_ON_INVALID(cond)
3802a8efedSAndrew Morton #define VM_WARN_ON_ONCE(cond) BUILD_BUG_ON_INVALID(cond)
39ef6b571fSAndrew Morton #define VM_WARN_ONCE(cond, format...) BUILD_BUG_ON_INVALID(cond)
4059ea7463SJiri Slaby #endif
4159ea7463SJiri Slaby 
4259ea7463SJiri Slaby #ifdef CONFIG_DEBUG_VIRTUAL
4359ea7463SJiri Slaby #define VIRTUAL_BUG_ON(cond) BUG_ON(cond)
4459ea7463SJiri Slaby #else
4559ea7463SJiri Slaby #define VIRTUAL_BUG_ON(cond) do { } while (0)
4659ea7463SJiri Slaby #endif
4759ea7463SJiri Slaby 
4859ea7463SJiri Slaby #endif
49