Commit ff202303 authored by Stephen Brennan's avatar Stephen Brennan Committed by Andrew Morton

mm: convert page type macros to enum

Changing PG_slab from a page flag to a page type in commit 46df8e73
("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 pagetype.

Link: https://lkml.kernel.org/r/20240607202954.1198180-1-stephen.s.brennan@oracle.com
Fixes: 46df8e73 ("mm: free up PG_slab")
Signed-off-by: default avatarStephen Brennan <stephen.s.brennan@oracle.com>
Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
Cc: David Hildenbrand <david@redhat.com>
Cc: Hao Ge <gehao@kylinos.cn>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Omar Sandoval <osandov@osandov.com>
Cc: Vishal Moola (Oracle) <vishal.moola@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent be346c1a
...@@ -944,15 +944,18 @@ PAGEFLAG_FALSE(HasHWPoisoned, has_hwpoisoned) ...@@ -944,15 +944,18 @@ PAGEFLAG_FALSE(HasHWPoisoned, has_hwpoisoned)
* mistaken for a page type value. * mistaken for a page type value.
*/ */
#define PAGE_TYPE_BASE 0xf0000000 enum pagetype {
/* Reserve 0x0000007f to catch underflows of _mapcount */ PG_buddy = 0x00000080,
#define PAGE_MAPCOUNT_RESERVE -128 PG_offline = 0x00000100,
#define PG_buddy 0x00000080 PG_table = 0x00000200,
#define PG_offline 0x00000100 PG_guard = 0x00000400,
#define PG_table 0x00000200 PG_hugetlb = 0x00000800,
#define PG_guard 0x00000400 PG_slab = 0x00001000,
#define PG_hugetlb 0x00000800
#define PG_slab 0x00001000 PAGE_TYPE_BASE = 0xf0000000,
/* Reserve 0x0000007f to catch underflows of _mapcount */
PAGE_MAPCOUNT_RESERVE = -128,
};
#define PageType(page, flag) \ #define PageType(page, flag) \
((page->page_type & (PAGE_TYPE_BASE | flag)) == PAGE_TYPE_BASE) ((page->page_type & (PAGE_TYPE_BASE | flag)) == PAGE_TYPE_BASE)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment