alpha: simplify detection of memory zone boundaries
[sfrench/cifs-2.6.git] / arch / alpha / mm / numa.c
index a24cd13e71cbfd9d7330a20fd8fcbfe91db35dc0..5ad6087de1d65140e589c90b24214da6ceef97bf 100644 (file)
@@ -202,8 +202,7 @@ setup_memory(void *kernel_end)
 
 void __init paging_init(void)
 {
-       unsigned int    nid;
-       unsigned long   zones_size[MAX_NR_ZONES] = {0, };
+       unsigned long   max_zone_pfn[MAX_NR_ZONES] = {0, };
        unsigned long   dma_local_pfn;
 
        /*
@@ -215,19 +214,10 @@ void __init paging_init(void)
         */
        dma_local_pfn = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT;
 
-       for_each_online_node(nid) {
-               unsigned long start_pfn = NODE_DATA(nid)->node_start_pfn;
-               unsigned long end_pfn = start_pfn + NODE_DATA(nid)->node_present_pages;
+       max_zone_pfn[ZONE_DMA] = dma_local_pfn;
+       max_zone_pfn[ZONE_NORMAL] = max_pfn;
 
-               if (dma_local_pfn >= end_pfn - start_pfn)
-                       zones_size[ZONE_DMA] = end_pfn - start_pfn;
-               else {
-                       zones_size[ZONE_DMA] = dma_local_pfn;
-                       zones_size[ZONE_NORMAL] = (end_pfn - start_pfn) - dma_local_pfn;
-               }
-               node_set_state(nid, N_NORMAL_MEMORY);
-               free_area_init_node(nid, zones_size, start_pfn, NULL);
-       }
+       free_area_init(max_zone_pfn);
 
        /* Initialize the kernel's ZERO_PGE. */
        memset((void *)ZERO_PGE, 0, PAGE_SIZE);