mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
Replace all 'int reason' function parameters that carry migrate_reason
values with the proper 'enum migrate_reason' type. This makes the intent
explicit and leverages compiler type checking. The affected subsystems
are:
- page_owner: __folio_set_owner_migrate_reason(),
folio_set_owner_migrate_reason()
- migrate: migrate_pages(), migrate_pages_sync(),
migrate_pages_batch(), migrate_folios_move(),
migrate_hugetlbs(), unmap_and_move_huge_page()
- hugetlb: move_hugetlb_state(), htlb_allow_alloc_fallback()
- trace: mm_migrate_pages and mm_migrate_pages_start events
The 'short last_migrate_reason' struct field and internal helper parameter
in page_owner are intentionally left as 'short' since they store per-page
metadata where size matters.
No functional change.
Link: https://lore.kernel.org/20260714015117.78351-4-ye.liu@linux.dev
Signed-off-by: Ye Liu <ye.liu@linux.dev>
Reviewed-by: Zi Yan <ziy@nvidia.com>
Reviewed-by: Vlastimil Babka (SUSE) <vbabka@kernel.org>
Reviewed-by: Lorenzo Stoakes <ljs@kernel.org>
Acked-by: David Hildenbrand (Arm) <david@kernel.org>
Cc: Brendan Jackman <jackmanb@google.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Suren Baghdasaryan <surenb@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
80 lines
2.5 KiB
C
80 lines
2.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __LINUX_PAGE_OWNER_H
|
|
#define __LINUX_PAGE_OWNER_H
|
|
|
|
#include <linux/jump_label.h>
|
|
#include <linux/migrate_mode.h>
|
|
|
|
#ifdef CONFIG_PAGE_OWNER
|
|
extern struct static_key_false page_owner_inited;
|
|
extern struct page_ext_operations page_owner_ops;
|
|
|
|
extern void __reset_page_owner(struct page *page, unsigned short order);
|
|
extern void __set_page_owner(struct page *page,
|
|
unsigned short order, gfp_t gfp_mask);
|
|
extern void __split_page_owner(struct page *page, int old_order,
|
|
int new_order);
|
|
extern void __folio_copy_owner(struct folio *newfolio, struct folio *old);
|
|
void __folio_set_owner_migrate_reason(struct folio *folio, enum migrate_reason reason);
|
|
extern void __dump_page_owner(const struct page *page);
|
|
extern void pagetypeinfo_showmixedcount_print(struct seq_file *m,
|
|
pg_data_t *pgdat, struct zone *zone);
|
|
|
|
static inline void reset_page_owner(struct page *page, unsigned short order)
|
|
{
|
|
if (static_branch_unlikely(&page_owner_inited))
|
|
__reset_page_owner(page, order);
|
|
}
|
|
|
|
static inline void set_page_owner(struct page *page,
|
|
unsigned short order, gfp_t gfp_mask)
|
|
{
|
|
if (static_branch_unlikely(&page_owner_inited))
|
|
__set_page_owner(page, order, gfp_mask);
|
|
}
|
|
|
|
static inline void split_page_owner(struct page *page, int old_order,
|
|
int new_order)
|
|
{
|
|
if (static_branch_unlikely(&page_owner_inited))
|
|
__split_page_owner(page, old_order, new_order);
|
|
}
|
|
static inline void folio_copy_owner(struct folio *newfolio, struct folio *old)
|
|
{
|
|
if (static_branch_unlikely(&page_owner_inited))
|
|
__folio_copy_owner(newfolio, old);
|
|
}
|
|
static inline void folio_set_owner_migrate_reason(struct folio *folio, enum migrate_reason reason)
|
|
{
|
|
if (static_branch_unlikely(&page_owner_inited))
|
|
__folio_set_owner_migrate_reason(folio, reason);
|
|
}
|
|
static inline void dump_page_owner(const struct page *page)
|
|
{
|
|
if (static_branch_unlikely(&page_owner_inited))
|
|
__dump_page_owner(page);
|
|
}
|
|
#else
|
|
static inline void reset_page_owner(struct page *page, unsigned short order)
|
|
{
|
|
}
|
|
static inline void set_page_owner(struct page *page,
|
|
unsigned short order, gfp_t gfp_mask)
|
|
{
|
|
}
|
|
static inline void split_page_owner(struct page *page, int old_order,
|
|
int new_order)
|
|
{
|
|
}
|
|
static inline void folio_copy_owner(struct folio *newfolio, struct folio *folio)
|
|
{
|
|
}
|
|
static inline void folio_set_owner_migrate_reason(struct folio *folio, enum migrate_reason reason)
|
|
{
|
|
}
|
|
static inline void dump_page_owner(const struct page *page)
|
|
{
|
|
}
|
|
#endif /* CONFIG_PAGE_OWNER */
|
|
#endif /* __LINUX_PAGE_OWNER_H */
|