RFC v1: https://lore.kernel.org/all/Y0BpuxUb+Y8BKHIM@xxxxxxxxxxxxxxxxxxxx/T/ This series moves PG_slab from page->flags to page->page_type. as page_type field is also used number of active objects in slab, upper half (16 bits) are used as page type and lower half (16 bits) are used as slab->active. It simplifies checking page_mapped() and folio_mapped() and frees a bit in page->flags. This also adds new %pGt printf format that prints human-readable page_type, and show_page_flags() (for tracepoints). More tests are still needed, but I think it's worth to get some early feedbacks. TO HWPOISON DEVELOPERS: I think it would be best to add a code that identifies a type of page from page_type like page flags. but I'm not sure how to properly test it. v1 -> v2: - use page flag policy for pages that uses page_type (PF_NO_TAIL for slab and PF_ANY for others) (Matthew WilCox) - store slab->active in negative form and use helpers to access/modify it (Matthew WilCox) - Fix logical errors and some cleanup in fs/proc/page.c and kernel/crash_core.c - add show_page_flags() (patch 2) and %pGt format (patch 3) Any feedbacks are appreciated. Hyeonggon Yoo (3): mm: move PG_slab flag to page_type mm: introduce show_page_types() to provide human-readable page_type mm, printk: introduce new format %pGt for page_type Documentation/core-api/printk-formats.rst | 3 +- fs/proc/page.c | 13 ++-- include/linux/mm_types.h | 11 ++-- include/linux/page-flags.h | 77 ++++++++++++++++------- include/trace/events/mmflags.h | 13 +++- include/trace/events/page_ref.h | 10 ++- kernel/crash_core.c | 3 +- lib/test_printf.c | 23 +++++++ lib/vsprintf.c | 24 +++++++ mm/debug.c | 7 +++ mm/internal.h | 1 + mm/memory-failure.c | 8 --- mm/slab.c | 44 ++++++++----- mm/slab.h | 3 +- 14 files changed, 175 insertions(+), 65 deletions(-) -- 2.32.0