[PATCH v3 0/7] mm/page_owner: misc cleanups
From: Ye Liu
Date: Mon Jun 29 2026 - 21:53:51 EST
v3:
- Patch 2: add MR_NEVER directly to enum migrate_reason instead of
using a local MIGRATE_REASON_NONE define (Zi Yan and Vlastimil Babka).
- Patch 3 (new): convert all 'int reason' parameters in the migration
callchain to 'enum migrate_reason' so the type system reflects the
actual semantics.
- Patch 7: make threshold_fops a single line.
- Link: https://lore.kernel.org/all/20260626020522.28619-1-ye.liu@xxxxxxxxx/
v2:
- Add cover letter (no code changes).
- Link: https://lore.kernel.org/all/20260623065234.31866-2-ye.liu@xxxxxxxxx/
This series collects a few cleanups for mm/page_owner.c that have been
accumulated while reading through the file. There is no functional
change -- the goal is to make the code easier to read and maintain.
Patch 1 consolidates three identical PageBuddy skip blocks into a
single skip_buddy_pages() helper, eliminating the duplication and
keeping the lockless-read comment in one place.
Patch 2 replaces the -1 magic number used for "never migrated" with a
proper MR_NEVER member in enum migrate_reason, and adds the
corresponding "never_migrated" string in the MIGRATE_REASON trace
macro.
Patch 3 follows up by converting the remaining 'int reason' parameters
throughout the migration and hugetlb callchains to 'enum migrate_reason',
making the type explicit and gaining compiler checking. The 'short
last_migrate_reason' struct field in page_owner is intentionally left
as 'short' since it is per-page metadata where size matters.
Patch 4 hoists the CONFIG_MEMCG guard out of print_page_owner_memcg()'s
body so that the real implementation and the empty stub are two clearly
separate definitions, the common kernel idiom.
Patch 5 adds a missing \n to the count_threshold debugfs attribute
format string so that cat(1) output is properly terminated.
Patch 6 moves free_ts_nsec from the allocation summary line to the
free section in __dump_page_owner(), grouping it with free_pid and
free_tgid where it logically belongs. This also makes the dump
output consistent with print_page_owner().
Patch 7 drops the redundant page_owner_ prefix from file-scoped static
symbols (stack_fops, threshold_fops, etc.). Since they cannot collide
across translation units, the prefix carries no information.
The series is based on v6.17-rc1 and has been compile-tested with and
without CONFIG_MEMCG.
Ye Liu (7):
mm/page_owner: extract skip_buddy_pages() helper to unify buddy page
skipping
mm/page_owner: add MR_NEVER to enum migrate_reason and use it for
last_migrate_reason
mm: use enum migrate_reason instead of int for migration reason
parameters
mm/page_owner: hoist CONFIG_MEMCG to function level for
print_page_owner_memcg()
mm/page_owner: add missing newline to count_threshold format string
mm/page_owner: move free_ts_nsec output to free section in
__dump_page_owner()
mm/page_owner: drop redundant page_owner prefix from static symbols
include/linux/hugetlb.h | 9 +--
include/linux/migrate.h | 6 +-
include/linux/migrate_mode.h | 1 +
include/linux/page_owner.h | 7 +-
include/trace/events/migrate.h | 11 ++--
mm/hugetlb.c | 3 +-
mm/migrate.c | 12 ++--
mm/page_owner.c | 115 +++++++++++++++++----------------
8 files changed, 88 insertions(+), 76 deletions(-)
--
2.43.0