#include <linux/cache.h>
 #include <linux/sort.h>
 #include <linux/percpu.h>
+#include <linux/lmb.h>
 
 #include <asm/head.h>
 #include <asm/system.h>
 
                initrd_start = ramdisk_image;
                initrd_end = ramdisk_image + sparc_ramdisk_size;
+
+               lmb_reserve(initrd_start, initrd_end);
        }
 #endif
 }
                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);