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