On Mon, 2007-07-02 at 20:16 +0200, Robert Millan wrote: > Hi, > > I spotted another regression, caused by the following commits: > > 2007-02-21 Hollis Blanchard <[EMAIL PROTECTED]> > > * kern/powerpc/ieee1275/init.c (HEAP_SIZE): Removed. > (HEAP_LIMIT): New macro. > (grub_claim_heap): Claim memory up to `heaplimit'. > > 2007-02-21 Hollis Blanchard <[EMAIL PROTECTED]> > > * conf/powerpc-ieee1275.rmk (kernel_elf_LDFLAGS): Link at 64KB. > * kern/powerpc/ieee1275/init.c (_end): Add declaration. > (_start): Likewise. > (grub_arch_modules_addr): Return address after `_end'. > * util/powerpc/ieee1275/grub-mkimage.c: Include grub/misc.h. > (load_modules): Use new parameter as `p_paddr' and `p_vaddr'. > (add_segments): Calculate `_end' from phdr size and location. > (ALIGN_UP): Moved to ... > * include/grub/misc.h: here. > * include/grub/powerpc/ieee1275/kernel.h (GRUB_IEEE1275_MOD_ALIGN): > New macro. > (GRUB_IEEE1275_MODULE_BASE): Removed. > > They move GRUB from being able to initialise and fire up the menu (although > still unable to access disks), to abort with: > > kern/mm.c: grub_error (GRUB_ERR_OUT_OF_MEMORY, "out of memory");
This is probably because grub_mm_init_region() was never called, or wasn't called enough. > Unfortunately my limited expertise doesn't let me figure out what these > changes > are doing. I'm attaching a reverse diff of the commit, such that when applied > to HEAD makes GRUB work again (verified) [1]. Perhaps someone can make sense > of it. This problem could be caused by firmware presenting an incorrect /memory/available property. I would instrument grub_available_iterate() and heap_init() to confirm. That property lists unclaimed areas of memory, which are free for us to use as heap. The memory used for firmware itself (including exception handlers at 0), and the memory used by the loaded ELF file (GRUB), are missing from /memory/available, so we know not to try to use those regions for the heap. If that is in fact the problem (which wouldn't surprise me given this particular firmware's track record), then we'll have to add some hardcoded hack particularly for Efika in grub_machine_init(), bypassing the more general code we have now. -Hollis _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel