[...] > -void __meminit > -memmap_init_zone(unsigned long size, int nid, unsigned long zone, > - unsigned long start_pfn) > +void __meminit memmap_init_zone(struct zone *zone) > { > + unsigned long size = zone->spanned_pages; > + int nid = zone_to_nid(zone), zone_id = zone_idx(zone); > + unsigned long start_pfn = zone->zone_start_pfn; > + Nit: reverse Christmas tree. > if (!vmem_map) { > - memmap_init_range(size, nid, zone, start_pfn, start_pfn + size, > + memmap_init_range(size, nid, zone_id, start_pfn, start_pfn + size, > MEMINIT_EARLY, NULL, MIGRATE_MOVABLE); > } else { > struct page *start; > @@ -556,7 +558,7 @@ memmap_init_zone(unsigned long size, int nid, unsigned long zone, > args.start = start; > args.end = start + size; > args.nid = nid; > - args.zone = zone; > + args.zone = zone_id; > > efi_memmap_walk(virtual_memmap_init, &args); > } > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 69ebf75be91c..b2a46ffdaf0b 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -6292,16 +6292,16 @@ static inline u64 init_unavailable_range(unsigned long spfn, unsigned long epfn, > } > #endif > > -void __init __weak memmap_init_zone(unsigned long size, int nid, > - unsigned long zone, > - unsigned long zone_start_pfn) > +void __init __weak memmap_init_zone(struct zone *zone) > { > unsigned long start_pfn, end_pfn, hole_start_pfn = 0; > - unsigned long zone_end_pfn = zone_start_pfn + size; > + int i, nid = zone_to_nid(zone), zone_id = zone_idx(zone); > + unsigned long zone_start_pfn = zone->zone_start_pfn; > + unsigned long zone_end_pfn = zone_start_pfn + zone->spanned_pages; dito. > u64 pgcnt = 0; > - int i; > > for_each_mem_pfn_range(i, nid, &start_pfn, &end_pfn, NULL) { > + unsigned long size; You can just get rid of this parameter IMHO. (Also, there is an empty line missing right now) Apart from that LGTM -- Thanks, David / dhildenb