mirror of
https://github.com/torvalds/linux.git
synced 2025-12-01 07:26:02 +07:00
mm: introduce memdesc_nid()
Remove a conversion from folio to page by passing the folio->flags (which are a copy of the page->flags) to the new memdesc_nid() function. Link: https://lkml.kernel.org/r/20250805172307.1302730-4-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Zi Yan <ziy@nvidia.com> Cc: Shakeel Butt <shakeel.butt@linux.dev> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
56d578c130
commit
eb00fdd84d
@@ -1558,17 +1558,22 @@ static inline int page_zone_id(struct page *page)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NODE_NOT_IN_PAGE_FLAGS
|
#ifdef NODE_NOT_IN_PAGE_FLAGS
|
||||||
int page_to_nid(const struct page *page);
|
int memdesc_nid(memdesc_flags_t mdf);
|
||||||
#else
|
#else
|
||||||
static inline int page_to_nid(const struct page *page)
|
static inline int memdesc_nid(memdesc_flags_t mdf)
|
||||||
{
|
{
|
||||||
return (PF_POISONED_CHECK(page)->flags.f >> NODES_PGSHIFT) & NODES_MASK;
|
return (mdf.f >> NODES_PGSHIFT) & NODES_MASK;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static inline int page_to_nid(const struct page *page)
|
||||||
|
{
|
||||||
|
return memdesc_nid(PF_POISONED_CHECK(page)->flags);
|
||||||
|
}
|
||||||
|
|
||||||
static inline int folio_nid(const struct folio *folio)
|
static inline int folio_nid(const struct folio *folio)
|
||||||
{
|
{
|
||||||
return page_to_nid(&folio->page);
|
return memdesc_nid(folio->flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_NUMA_BALANCING
|
#ifdef CONFIG_NUMA_BALANCING
|
||||||
@@ -1791,14 +1796,14 @@ static inline pg_data_t *page_pgdat(const struct page *page)
|
|||||||
return NODE_DATA(page_to_nid(page));
|
return NODE_DATA(page_to_nid(page));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct zone *folio_zone(const struct folio *folio)
|
|
||||||
{
|
|
||||||
return page_zone(&folio->page);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline pg_data_t *folio_pgdat(const struct folio *folio)
|
static inline pg_data_t *folio_pgdat(const struct folio *folio)
|
||||||
{
|
{
|
||||||
return page_pgdat(&folio->page);
|
return NODE_DATA(folio_nid(folio));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline struct zone *folio_zone(const struct folio *folio)
|
||||||
|
{
|
||||||
|
return &folio_pgdat(folio)->node_zones[folio_zonenum(folio)];
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SECTION_IN_PAGE_FLAGS
|
#ifdef SECTION_IN_PAGE_FLAGS
|
||||||
|
|||||||
@@ -43,11 +43,11 @@ static u8 section_to_node_table[NR_MEM_SECTIONS] __cacheline_aligned;
|
|||||||
static u16 section_to_node_table[NR_MEM_SECTIONS] __cacheline_aligned;
|
static u16 section_to_node_table[NR_MEM_SECTIONS] __cacheline_aligned;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int page_to_nid(const struct page *page)
|
int memdesc_nid(memdesc_flags_t mdf)
|
||||||
{
|
{
|
||||||
return section_to_node_table[memdesc_section(page->flags)];
|
return section_to_node_table[memdesc_section(mdf)];
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(page_to_nid);
|
EXPORT_SYMBOL(memdesc_nid);
|
||||||
|
|
||||||
static void set_section_nid(unsigned long section_nr, int nid)
|
static void set_section_nid(unsigned long section_nr, int nid)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user