void __init mem_init(void)
 {
-       int codesize, datasize, initsize;
-       int nid;
+       pg_data_t *pgdat;
 
        iommu_init();
 
-       num_physpages = 0;
        high_memory = NULL;
 
-       for_each_online_node(nid) {
-               pg_data_t *pgdat = NODE_DATA(nid);
+       for_each_online_pgdat(pgdat) {
                void *node_high_memory;
 
-               num_physpages += pgdat->node_present_pages;
-
                if (pgdat->node_spanned_pages)
                        free_all_bootmem_node(pgdat);
 
-
                node_high_memory = (void *)__va((pgdat->node_start_pfn +
                                                 pgdat->node_spanned_pages) <<
                                                 PAGE_SHIFT);
 
        vsyscall_init();
 
-       codesize =  (unsigned long) &_etext - (unsigned long) &_text;
-       datasize =  (unsigned long) &_edata - (unsigned long) &_etext;
-       initsize =  (unsigned long) &__init_end - (unsigned long) &__init_begin;
-
-       printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, "
-              "%dk data, %dk init)\n",
-               nr_free_pages() << (PAGE_SHIFT-10),
-               num_physpages << (PAGE_SHIFT-10),
-               codesize >> 10,
-               datasize >> 10,
-               initsize >> 10);
-
-       printk(KERN_INFO "virtual kernel memory layout:\n"
+       mem_init_print_info(NULL);
+       pr_info("virtual kernel memory layout:\n"
                "    fixmap  : 0x%08lx - 0x%08lx   (%4ld kB)\n"
 #ifdef CONFIG_HIGHMEM
                "    pkmap   : 0x%08lx - 0x%08lx   (%4ld kB)\n"