I've recently updated to using the processor-sdk instead of MCSDK and am having some issues getting back to where I was. I was setting mem_reserve=1024M in u-boot, but now when I set it at that I get stuck at "Starting Kernel...". With mem_reserve=512M (default) it boots fine.
I was poking around trying to find out information, and saw this section in the kernel device tree:
cmem_block_mem_0: cmem_block_mem@829000000 {
reg = <0x00000008 0x29000000 0x00000000 0x17000000>;
no-map;
status = "okay";
};
This seems to be going right up to 1024M (and possibly including it?): 0x8 2900 0000 + 0x0 1700 0000 = 0x8 4000 0000
and then I found this page that has this note:
Starting from Processor SDK 2.0.1.x, uboot variable, “mem_reserve”, is no longer used to reserve memory for CMEM. If you still have leftover “mem_reserve” in your uboot environment, please unset it by “setenv mem_reserve” followed by “saveenv”.
I didn't see anything in the processor-sdk about this in the migration guide, and just want to make sure the "correct" way to reserve memory for the DSP (or just to keep it away from Linux using it as memory).
Booting with mem_reserve unset gives this in /proc/iomem:
800000000-81fffffff : System RAM
800008000-8007fb0c3 : Kernel code
80083e000-8008a9c83 : Kernel data
822000000-828ffffff : CMEM
829000000-83fffffff : CMEM
840000000-87fffffff : System RAM
So with all that background, 2 questions:
- Why can't I boot with mem_reserve=1024M? The unset mem_reserve boot shows 1024M in that last system ram section.
- Is the correct way to remove the mem_reserve and setup my device tree to have a CMEM region that takes up 1024M to stop Linux from using it?