iommu_init();
 
        high_memory = NULL;
+       for_each_online_pgdat(pgdat)
+               high_memory = max_t(void *, high_memory,
+                                   __va(pgdat_end_pfn(pgdat) << PAGE_SHIFT));
 
-       for_each_online_pgdat(pgdat) {
-               void *node_high_memory;
-
-               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);
-               if (node_high_memory > high_memory)
-                       high_memory = node_high_memory;
-       }
+       free_all_bootmem();
 
        /* Set this up early, so we can take care of the zero page */
        cpu_cache_init();