]> err.no Git - linux-2.6/blobdiff - arch/ia64/mm/discontig.c
[IA64] min_low_pfn and max_low_pfn calculation fix
[linux-2.6] / arch / ia64 / mm / discontig.c
index 6eae596c509d5cc5c17a5ebc5b5702f4e6d6bf01..872da7a2accddfbb22db669a7c7cc79db9b347fa 100644 (file)
@@ -37,7 +37,9 @@ struct early_node_data {
        unsigned long pernode_size;
        struct bootmem_data bootmem_data;
        unsigned long num_physpages;
+#ifdef CONFIG_ZONE_DMA
        unsigned long num_dma_physpages;
+#endif
        unsigned long min_pfn;
        unsigned long max_pfn;
 };
@@ -86,9 +88,6 @@ static int __init build_node_maps(unsigned long start, unsigned long len,
                bdp->node_low_pfn = max(epfn, bdp->node_low_pfn);
        }
 
-       min_low_pfn = min(min_low_pfn, bdp->node_boot_start>>PAGE_SHIFT);
-       max_low_pfn = max(max_low_pfn, bdp->node_low_pfn);
-
        return 0;
 }
 
@@ -436,6 +435,7 @@ void __init find_memory(void)
        /* These actually end up getting called by call_pernode_memory() */
        efi_memmap_walk(filter_rsvd_memory, build_node_maps);
        efi_memmap_walk(filter_rsvd_memory, find_pernode_space);
+       efi_memmap_walk(find_max_min_low_pfn, NULL);
 
        for_each_online_node(node)
                if (mem_data[node].bootmem_data.node_low_pfn) {
@@ -478,12 +478,6 @@ void __init find_memory(void)
        max_pfn = max_low_pfn;
 
        find_initrd();
-
-#ifdef CONFIG_CRASH_DUMP
-       /* If we are doing a crash dump, we still need to know the real mem
-        * size before original memory map is reset. */
-        saved_max_pfn = max_pfn;
-#endif
 }
 
 #ifdef CONFIG_SMP
@@ -633,9 +627,11 @@ static __init int count_node_pages(unsigned long start, unsigned long len, int n
        unsigned long end = start + len;
 
        mem_data[node].num_physpages += len >> PAGE_SHIFT;
+#ifdef CONFIG_ZONE_DMA
        if (start <= __pa(MAX_DMA_ADDRESS))
                mem_data[node].num_dma_physpages +=
                        (min(end, __pa(MAX_DMA_ADDRESS)) - start) >>PAGE_SHIFT;
+#endif
        start = GRANULEROUNDDOWN(start);
        start = ORDERROUNDDOWN(start);
        end = GRANULEROUNDUP(end);
@@ -688,7 +684,9 @@ void __init paging_init(void)
        }
 
        memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
+#ifdef CONFIG_ZONE_DMA
        max_zone_pfns[ZONE_DMA] = max_dma;
+#endif
        max_zone_pfns[ZONE_NORMAL] = max_pfn;
        free_area_init_nodes(max_zone_pfns);