diff options
author | Len Brown <len.brown@intel.com> | 2005-08-29 17:02:17 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2005-08-29 17:02:17 -0400 |
commit | 27a639a92d3289c4851105efcbc2f8b88969194f (patch) | |
tree | 09ee327d3ed3e2c40d5dc3b0f6b283477282deec /arch/x86_64/mm/init.c | |
parent | d395bf12d1ba61437e546eb642f0d7ea666123ff (diff) | |
parent | bf4e70e54cf31dcca48d279c7f7e71328eebe749 (diff) | |
download | talos-op-linux-27a639a92d3289c4851105efcbc2f8b88969194f.tar.gz talos-op-linux-27a639a92d3289c4851105efcbc2f8b88969194f.zip |
Auto-update from upstream
Diffstat (limited to 'arch/x86_64/mm/init.c')
-rw-r--r-- | arch/x86_64/mm/init.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/arch/x86_64/mm/init.c b/arch/x86_64/mm/init.c index 72e4b364ed73..aa4a5189ecee 100644 --- a/arch/x86_64/mm/init.c +++ b/arch/x86_64/mm/init.c @@ -322,18 +322,26 @@ void zap_low_mappings(void) void __init paging_init(void) { { - unsigned long zones_size[MAX_NR_ZONES] = {0, 0, 0}; + unsigned long zones_size[MAX_NR_ZONES]; + unsigned long holes[MAX_NR_ZONES]; unsigned int max_dma; + memset(zones_size, 0, sizeof(zones_size)); + memset(holes, 0, sizeof(holes)); + max_dma = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT; - if (end_pfn < max_dma) + if (end_pfn < max_dma) { zones_size[ZONE_DMA] = end_pfn; - else { + holes[ZONE_DMA] = e820_hole_size(0, end_pfn); + } else { zones_size[ZONE_DMA] = max_dma; + holes[ZONE_DMA] = e820_hole_size(0, max_dma); zones_size[ZONE_NORMAL] = end_pfn - max_dma; + holes[ZONE_NORMAL] = e820_hole_size(max_dma, end_pfn); } - free_area_init(zones_size); + free_area_init_node(0, NODE_DATA(0), zones_size, + __pa(PAGE_OFFSET) >> PAGE_SHIFT, holes); } return; } |