kmap_init();
 
        {
-               unsigned long zones_size[MAX_NR_ZONES];
-               unsigned long zholes_size[MAX_NR_ZONES];
-               unsigned long npages;
-               int znum;
+               unsigned long max_zone_pfn[MAX_NR_ZONES] = { 0 };
 
-               for (znum = 0; znum < MAX_NR_ZONES; znum++)
-                       zones_size[znum] = zholes_size[znum] = 0;
+               max_zone_pfn[ZONE_DMA] = max_low_pfn;
+               max_zone_pfn[ZONE_NORMAL] = max_low_pfn;
+               max_zone_pfn[ZONE_HIGHMEM] = highend_pfn;
 
-               npages = max_low_pfn - pfn_base;
-
-               zones_size[ZONE_DMA] = npages;
-               zholes_size[ZONE_DMA] = npages - pages_avail;
-
-               npages = highend_pfn - max_low_pfn;
-               zones_size[ZONE_HIGHMEM] = npages;
-               zholes_size[ZONE_HIGHMEM] = npages - calc_highpages();
-
-               free_area_init_node(0, zones_size, pfn_base, zholes_size);
+               free_area_init(max_zone_pfn);
        }
 }