Hello,
In arch/ppc/qemu/ofmem.c, ofmem appears to be located at OFMEM == 0x05400000 == 84 MiB, with OF_MALLOC_BASE at OFMEM + sizeof(ofmem_t) 4- byte aligned. The upper limit from libopenbios/ofmem_common.c seems to be ofmem_arch_get_heap_top() == "hash base minus fixed value" though, with the hash base being relative to top of RAM.
This means, the malloc zone has a fixed lower limit and grows absolutely with the amount of RAM assigned to QEMU. Is this really intended? The code comment in ofmem.c rather looks like the fixed OFMEM value was taken from a 96 MB memory layout, where it would seem relative to top of RAM with fixed size.
Even worse, like any other memory on ppc this hugeish part of memory is never claimed...
I tried to move ofmem to RAM size - 0x100000 - 64 * 1024 - (32 + 64 + 64) * 1024 - 0x200000, but OpenBIOS just busy-looped and never reached the banner. Has anyone looked into this before? Any ideas what might be going wrong? I tried carefully not to include a call to ofmem_arch_get_private() inside setup_mmu().
Regards, Andreas