> OK, this looks definitely better. I will have to check that all the > required state is initialized properly. Considering the above > explanation I would simply fold the follow up patch into this one. It is > not so large it would get hard to review and you would make it clear why > the work is done. I will review this work, once Oscar combines patches 4 & 5 as Michal suggested. > > > +/* > > + * Set up the zone data structures: > > + * - mark all pages reserved > > + * - mark all memory queues empty > > + * - clear the memory bitmaps > > + * > > + * NOTE: pgdat should get zeroed by caller. > > + * NOTE: this function is only called during early init. > > + */ > > +static void __paginginit free_area_init_core(struct pglist_data *pgdat) > > now that this function is called only from the early init code we can > make it s@__paginginit@__init@ AFAICS. True, in patch 5. Also, zone_init_internals() should be marked as __paginginit. Thank you, Pavel