Message ID | 20210128070404.1922318-5-willy@infradead.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Page folios | expand |
On 28 Jan 2021, at 2:03, Matthew Wilcox (Oracle) wrote: > These are the folio equivalents of VM_BUG_ON_PAGE and VM_WARN_ON_ONCE_PAGE. > > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> > --- > include/linux/mmdebug.h | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/include/linux/mmdebug.h b/include/linux/mmdebug.h > index 5d0767cb424a..77d24e1dcaec 100644 > --- a/include/linux/mmdebug.h > +++ b/include/linux/mmdebug.h > @@ -23,6 +23,13 @@ void dump_mm(const struct mm_struct *mm); > BUG(); \ > } \ > } while (0) > +#define VM_BUG_ON_FOLIO(cond, folio) \ > + do { \ > + if (unlikely(cond)) { \ > + dump_page(&folio->page, "VM_BUG_ON_FOLIO(" __stringify(cond)")");\ > + BUG(); \ > + } \ > + } while (0) > #define VM_BUG_ON_VMA(cond, vma) \ > do { \ > if (unlikely(cond)) { \ > @@ -48,6 +55,17 @@ void dump_mm(const struct mm_struct *mm); > } \ > unlikely(__ret_warn_once); \ > }) > +#define VM_WARN_ON_ONCE_FOLIO(cond, folio) ({ \ > + static bool __section(".data.once") __warned; \ > + int __ret_warn_once = !!(cond); \ > + \ > + if (unlikely(__ret_warn_once && !__warned)) { \ > + dump_page(&folio->page, "VM_WARN_ON_ONCE_FOLIO(" __stringify(cond)")");\ > + __warned = true; \ > + WARN_ON(1); \ > + } \ > + unlikely(__ret_warn_once); \ > +}) > > #define VM_WARN_ON(cond) (void)WARN_ON(cond) > #define VM_WARN_ON_ONCE(cond) (void)WARN_ON_ONCE(cond) > @@ -56,11 +74,13 @@ void dump_mm(const struct mm_struct *mm); > #else > #define VM_BUG_ON(cond) BUILD_BUG_ON_INVALID(cond) > #define VM_BUG_ON_PAGE(cond, page) VM_BUG_ON(cond) > +#define VM_BUG_ON_FOLIO(cond, folio) VM_BUG_ON(cond) > #define VM_BUG_ON_VMA(cond, vma) VM_BUG_ON(cond) > #define VM_BUG_ON_MM(cond, mm) VM_BUG_ON(cond) > #define VM_WARN_ON(cond) BUILD_BUG_ON_INVALID(cond) > #define VM_WARN_ON_ONCE(cond) BUILD_BUG_ON_INVALID(cond) > #define VM_WARN_ON_ONCE_PAGE(cond, page) BUILD_BUG_ON_INVALID(cond) > +#define VM_WARN_ON_ONCE_FOLIO(cond, folio) BUILD_BUG_ON_INVALID(cond) > #define VM_WARN_ONCE(cond, format...) BUILD_BUG_ON_INVALID(cond) > #define VM_WARN(cond, format...) BUILD_BUG_ON_INVALID(cond) > #endif > -- > 2.29.2 LGTM. Reviewed-by: Zi Yan <ziy@nvidia.com> — Best Regards, Yan Zi
diff --git a/include/linux/mmdebug.h b/include/linux/mmdebug.h index 5d0767cb424a..77d24e1dcaec 100644 --- a/include/linux/mmdebug.h +++ b/include/linux/mmdebug.h @@ -23,6 +23,13 @@ void dump_mm(const struct mm_struct *mm); BUG(); \ } \ } while (0) +#define VM_BUG_ON_FOLIO(cond, folio) \ + do { \ + if (unlikely(cond)) { \ + dump_page(&folio->page, "VM_BUG_ON_FOLIO(" __stringify(cond)")");\ + BUG(); \ + } \ + } while (0) #define VM_BUG_ON_VMA(cond, vma) \ do { \ if (unlikely(cond)) { \ @@ -48,6 +55,17 @@ void dump_mm(const struct mm_struct *mm); } \ unlikely(__ret_warn_once); \ }) +#define VM_WARN_ON_ONCE_FOLIO(cond, folio) ({ \ + static bool __section(".data.once") __warned; \ + int __ret_warn_once = !!(cond); \ + \ + if (unlikely(__ret_warn_once && !__warned)) { \ + dump_page(&folio->page, "VM_WARN_ON_ONCE_FOLIO(" __stringify(cond)")");\ + __warned = true; \ + WARN_ON(1); \ + } \ + unlikely(__ret_warn_once); \ +}) #define VM_WARN_ON(cond) (void)WARN_ON(cond) #define VM_WARN_ON_ONCE(cond) (void)WARN_ON_ONCE(cond) @@ -56,11 +74,13 @@ void dump_mm(const struct mm_struct *mm); #else #define VM_BUG_ON(cond) BUILD_BUG_ON_INVALID(cond) #define VM_BUG_ON_PAGE(cond, page) VM_BUG_ON(cond) +#define VM_BUG_ON_FOLIO(cond, folio) VM_BUG_ON(cond) #define VM_BUG_ON_VMA(cond, vma) VM_BUG_ON(cond) #define VM_BUG_ON_MM(cond, mm) VM_BUG_ON(cond) #define VM_WARN_ON(cond) BUILD_BUG_ON_INVALID(cond) #define VM_WARN_ON_ONCE(cond) BUILD_BUG_ON_INVALID(cond) #define VM_WARN_ON_ONCE_PAGE(cond, page) BUILD_BUG_ON_INVALID(cond) +#define VM_WARN_ON_ONCE_FOLIO(cond, folio) BUILD_BUG_ON_INVALID(cond) #define VM_WARN_ONCE(cond, format...) BUILD_BUG_ON_INVALID(cond) #define VM_WARN(cond, format...) BUILD_BUG_ON_INVALID(cond) #endif
These are the folio equivalents of VM_BUG_ON_PAGE and VM_WARN_ON_ONCE_PAGE. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> --- include/linux/mmdebug.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)