On Thu, Jun 06, 2024 at 10:25:29AM -0700, Stephen Brennan wrote: > Changing PG_slab from a page flag to a page type in commit 46df8e73a4a3 > ("mm: free up PG_slab") in has the unintended consequence of removing > the PG_slab constant from kernel debuginfo. The commit does add the > value to the vmcoreinfo note, which allows debuggers to find the value > without hardcoding it. However it's most flexible to continue > representing the constant with an enum. To that end, convert the page > type fields into an enum. Debuggers will now be able to detect that > PG_slab's type has changed from enum pageflags to enum page_type. > > Fixes: 46df8e73a4a3 ("mm: free up PG_slab") > > Signed-off-by: Stephen Brennan <stephen.s.brennan@xxxxxxxxxx> > --- > include/linux/page-flags.h | 15 +++++++++------ > 1 file changed, 9 insertions(+), 6 deletions(-) > > diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h > index 104078afe0b16..64fc191a75e8d 100644 > --- a/include/linux/page-flags.h > +++ b/include/linux/page-flags.h > @@ -947,12 +947,15 @@ PAGEFLAG_FALSE(HasHWPoisoned, has_hwpoisoned) > #define PAGE_TYPE_BASE 0xf0000000 > /* Reserve 0x0000007f to catch underflows of _mapcount */ > #define PAGE_MAPCOUNT_RESERVE -128 Adding linux-debuggers to Cc. Can we also get PAGE_TYPE_BASE and PAGE_MAPCOUNT_RESERVE as enums? That would make it possible for debuggers to implement PageType() and page_has_type(). > -#define PG_buddy 0x00000080 > -#define PG_offline 0x00000100 > -#define PG_table 0x00000200 > -#define PG_guard 0x00000400 > -#define PG_hugetlb 0x00000800 > -#define PG_slab 0x00001000 > + > +enum page_type { > + PG_buddy = 0x00000080, > + PG_offline = 0x00000100, > + PG_table = 0x00000200, > + PG_guard = 0x00000400, > + PG_hugetlb = 0x00000800, > + PG_slab = 0x00001000, > +}; > > #define PageType(page, flag) \ > ((page->page_type & (PAGE_TYPE_BASE | flag)) == PAGE_TYPE_BASE) > -- > 2.43.0 >