mirror of https://github.com/torvalds/linux.git
mm/page_owner: simplify zone iteration logic in init_early_allocated_pages()
The current implementation uses nested loops: first iterating over all online nodes, then over zones within each node. This can be simplified by using the for_each_populated_zone() macro which directly iterates through all populated zones. This change: 1. Removes the intermediate init_zones_in_node() function 2. Simplifies init_early_allocated_pages() to use direct zone iteration 3. Updates init_pages_in_zone() to take only zone parameter and access node_id via zone->zone_pgdat The functionality remains identical, but the code is cleaner and more maintainable. Link: https://lkml.kernel.org/r/20250930092153.843109-2-husong@kylinos.cn Signed-off-by: Song Hu <husong@kylinos.cn> Reviewed-by: Vlastimil Babka <vbabka@suse.cz> Reviewed-by: Ye Liu <liuye@kylinos.cn> Acked-by: Vlastimil Babka <vbabka@suse.cz> Cc: Brendan Jackman <jackmanb@google.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@suse.com> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Zi Yan <ziy@nvidia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
9686080d62
commit
ca30ac479e
|
|
@ -769,7 +769,7 @@ static loff_t lseek_page_owner(struct file *file, loff_t offset, int orig)
|
||||||
return file->f_pos;
|
return file->f_pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void init_pages_in_zone(pg_data_t *pgdat, struct zone *zone)
|
static void init_pages_in_zone(struct zone *zone)
|
||||||
{
|
{
|
||||||
unsigned long pfn = zone->zone_start_pfn;
|
unsigned long pfn = zone->zone_start_pfn;
|
||||||
unsigned long end_pfn = zone_end_pfn(zone);
|
unsigned long end_pfn = zone_end_pfn(zone);
|
||||||
|
|
@ -836,28 +836,15 @@ static void init_pages_in_zone(pg_data_t *pgdat, struct zone *zone)
|
||||||
}
|
}
|
||||||
|
|
||||||
pr_info("Node %d, zone %8s: page owner found early allocated %lu pages\n",
|
pr_info("Node %d, zone %8s: page owner found early allocated %lu pages\n",
|
||||||
pgdat->node_id, zone->name, count);
|
zone->zone_pgdat->node_id, zone->name, count);
|
||||||
}
|
|
||||||
|
|
||||||
static void init_zones_in_node(pg_data_t *pgdat)
|
|
||||||
{
|
|
||||||
struct zone *zone;
|
|
||||||
struct zone *node_zones = pgdat->node_zones;
|
|
||||||
|
|
||||||
for (zone = node_zones; zone - node_zones < MAX_NR_ZONES; ++zone) {
|
|
||||||
if (!populated_zone(zone))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
init_pages_in_zone(pgdat, zone);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void init_early_allocated_pages(void)
|
static void init_early_allocated_pages(void)
|
||||||
{
|
{
|
||||||
pg_data_t *pgdat;
|
struct zone *zone;
|
||||||
|
|
||||||
for_each_online_pgdat(pgdat)
|
for_each_populated_zone(zone)
|
||||||
init_zones_in_node(pgdat);
|
init_pages_in_zone(zone);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations page_owner_fops = {
|
static const struct file_operations page_owner_fops = {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue