瀏覽代碼

[SPARC64]: Initialize LMB tables.

Call lmb_add() on available regions, and call lmb_reserve()
on the main kernel image and the ramdisk (if any).

Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller 17 年之前
父節點
當前提交
3b2a7e23a9
共有 1 個文件被更改,包括 13 次插入1 次删除
  1. 13 1
      arch/sparc64/mm/init.c

+ 13 - 1
arch/sparc64/mm/init.c

@@ -24,6 +24,7 @@
 #include <linux/cache.h>
 #include <linux/sort.h>
 #include <linux/percpu.h>
+#include <linux/lmb.h>
 
 #include <asm/head.h>
 #include <asm/system.h>
@@ -910,6 +911,8 @@ static void __init find_ramdisk(unsigned long phys_base)
 
 		initrd_start = ramdisk_image;
 		initrd_end = ramdisk_image + sparc_ramdisk_size;
+
+		lmb_reserve(initrd_start, initrd_end);
 	}
 #endif
 }
@@ -1337,15 +1340,24 @@ void __init paging_init(void)
 		sun4v_ktsb_init();
 	}
 
+	lmb_init();
+
 	/* Find available physical memory... */
 	read_obp_memory("available", &pavail[0], &pavail_ents);
 
 	phys_base = 0xffffffffffffffffUL;
-	for (i = 0; i < pavail_ents; i++)
+	for (i = 0; i < pavail_ents; i++) {
 		phys_base = min(phys_base, pavail[i].phys_addr);
+		lmb_add(pavail[i].phys_addr, pavail[i].reg_size);
+	}
+
+	lmb_reserve(kern_base, kern_size);
 
 	find_ramdisk(phys_base);
 
+	lmb_analyze();
+	lmb_dump_all();
+
 	set_bit(0, mmu_context_bmap);
 
 	shift = kern_base + PAGE_OFFSET - ((unsigned long)KERNBASE);