|
@@ -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;
|
|
|
};
|
|
@@ -633,9 +635,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 +692,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);
|
|
|
|