diff options
Diffstat (limited to 'arch/powerpc/mm/mem.c')
-rw-r--r-- | arch/powerpc/mm/mem.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index be5c506779a7..16def4dcff6d 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/initrd.h> | 31 | #include <linux/initrd.h> |
32 | #include <linux/pagemap.h> | 32 | #include <linux/pagemap.h> |
33 | #include <linux/suspend.h> | 33 | #include <linux/suspend.h> |
34 | #include <linux/lmb.h> | ||
34 | 35 | ||
35 | #include <asm/pgalloc.h> | 36 | #include <asm/pgalloc.h> |
36 | #include <asm/prom.h> | 37 | #include <asm/prom.h> |
@@ -42,7 +43,6 @@ | |||
42 | #include <asm/machdep.h> | 43 | #include <asm/machdep.h> |
43 | #include <asm/btext.h> | 44 | #include <asm/btext.h> |
44 | #include <asm/tlb.h> | 45 | #include <asm/tlb.h> |
45 | #include <asm/lmb.h> | ||
46 | #include <asm/sections.h> | 46 | #include <asm/sections.h> |
47 | #include <asm/vdso.h> | 47 | #include <asm/vdso.h> |
48 | 48 | ||
@@ -111,7 +111,7 @@ int memory_add_physaddr_to_nid(u64 start) | |||
111 | } | 111 | } |
112 | #endif | 112 | #endif |
113 | 113 | ||
114 | int __devinit arch_add_memory(int nid, u64 start, u64 size) | 114 | int arch_add_memory(int nid, u64 start, u64 size) |
115 | { | 115 | { |
116 | struct pglist_data *pgdata; | 116 | struct pglist_data *pgdata; |
117 | struct zone *zone; | 117 | struct zone *zone; |
@@ -175,7 +175,6 @@ void show_mem(void) | |||
175 | 175 | ||
176 | printk("Mem-info:\n"); | 176 | printk("Mem-info:\n"); |
177 | show_free_areas(); | 177 | show_free_areas(); |
178 | printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); | ||
179 | for_each_online_pgdat(pgdat) { | 178 | for_each_online_pgdat(pgdat) { |
180 | unsigned long flags; | 179 | unsigned long flags; |
181 | pgdat_resize_lock(pgdat, &flags); | 180 | pgdat_resize_lock(pgdat, &flags); |
@@ -217,9 +216,11 @@ void __init do_init_bootmem(void) | |||
217 | unsigned long total_pages; | 216 | unsigned long total_pages; |
218 | int boot_mapsize; | 217 | int boot_mapsize; |
219 | 218 | ||
220 | max_pfn = total_pages = lmb_end_of_DRAM() >> PAGE_SHIFT; | 219 | max_pfn = lmb_end_of_DRAM() >> PAGE_SHIFT; |
220 | total_pages = (lmb_end_of_DRAM() - memstart_addr) >> PAGE_SHIFT; | ||
221 | #ifdef CONFIG_HIGHMEM | 221 | #ifdef CONFIG_HIGHMEM |
222 | total_pages = total_lowmem >> PAGE_SHIFT; | 222 | total_pages = total_lowmem >> PAGE_SHIFT; |
223 | max_low_pfn = lowmem_end_addr >> PAGE_SHIFT; | ||
223 | #endif | 224 | #endif |
224 | 225 | ||
225 | /* | 226 | /* |
@@ -245,18 +246,18 @@ void __init do_init_bootmem(void) | |||
245 | * present. | 246 | * present. |
246 | */ | 247 | */ |
247 | #ifdef CONFIG_HIGHMEM | 248 | #ifdef CONFIG_HIGHMEM |
248 | free_bootmem_with_active_regions(0, total_lowmem >> PAGE_SHIFT); | 249 | free_bootmem_with_active_regions(0, lowmem_end_addr >> PAGE_SHIFT); |
249 | 250 | ||
250 | /* reserve the sections we're already using */ | 251 | /* reserve the sections we're already using */ |
251 | for (i = 0; i < lmb.reserved.cnt; i++) { | 252 | for (i = 0; i < lmb.reserved.cnt; i++) { |
252 | unsigned long addr = lmb.reserved.region[i].base + | 253 | unsigned long addr = lmb.reserved.region[i].base + |
253 | lmb_size_bytes(&lmb.reserved, i) - 1; | 254 | lmb_size_bytes(&lmb.reserved, i) - 1; |
254 | if (addr < total_lowmem) | 255 | if (addr < lowmem_end_addr) |
255 | reserve_bootmem(lmb.reserved.region[i].base, | 256 | reserve_bootmem(lmb.reserved.region[i].base, |
256 | lmb_size_bytes(&lmb.reserved, i), | 257 | lmb_size_bytes(&lmb.reserved, i), |
257 | BOOTMEM_DEFAULT); | 258 | BOOTMEM_DEFAULT); |
258 | else if (lmb.reserved.region[i].base < total_lowmem) { | 259 | else if (lmb.reserved.region[i].base < lowmem_end_addr) { |
259 | unsigned long adjusted_size = total_lowmem - | 260 | unsigned long adjusted_size = lowmem_end_addr - |
260 | lmb.reserved.region[i].base; | 261 | lmb.reserved.region[i].base; |
261 | reserve_bootmem(lmb.reserved.region[i].base, | 262 | reserve_bootmem(lmb.reserved.region[i].base, |
262 | adjusted_size, BOOTMEM_DEFAULT); | 263 | adjusted_size, BOOTMEM_DEFAULT); |
@@ -326,7 +327,7 @@ void __init paging_init(void) | |||
326 | (top_of_ram - total_ram) >> 20); | 327 | (top_of_ram - total_ram) >> 20); |
327 | memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); | 328 | memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); |
328 | #ifdef CONFIG_HIGHMEM | 329 | #ifdef CONFIG_HIGHMEM |
329 | max_zone_pfns[ZONE_DMA] = total_lowmem >> PAGE_SHIFT; | 330 | max_zone_pfns[ZONE_DMA] = lowmem_end_addr >> PAGE_SHIFT; |
330 | max_zone_pfns[ZONE_HIGHMEM] = top_of_ram >> PAGE_SHIFT; | 331 | max_zone_pfns[ZONE_HIGHMEM] = top_of_ram >> PAGE_SHIFT; |
331 | #else | 332 | #else |
332 | max_zone_pfns[ZONE_DMA] = top_of_ram >> PAGE_SHIFT; | 333 | max_zone_pfns[ZONE_DMA] = top_of_ram >> PAGE_SHIFT; |
@@ -381,7 +382,7 @@ void __init mem_init(void) | |||
381 | { | 382 | { |
382 | unsigned long pfn, highmem_mapnr; | 383 | unsigned long pfn, highmem_mapnr; |
383 | 384 | ||
384 | highmem_mapnr = total_lowmem >> PAGE_SHIFT; | 385 | highmem_mapnr = lowmem_end_addr >> PAGE_SHIFT; |
385 | for (pfn = highmem_mapnr; pfn < max_mapnr; ++pfn) { | 386 | for (pfn = highmem_mapnr; pfn < max_mapnr; ++pfn) { |
386 | struct page *page = pfn_to_page(pfn); | 387 | struct page *page = pfn_to_page(pfn); |
387 | if (lmb_is_reserved(pfn << PAGE_SHIFT)) | 388 | if (lmb_is_reserved(pfn << PAGE_SHIFT)) |