[yocto] Limit RAM for Linux

Edward Wingate edwingate8 at gmail.com
Tue Jun 9 09:03:59 PDT 2015


Thanks, Nathan, for your help. It worked, with a little oddity I don't
understand.

In my uEnv.txt, I set both fdt_high and initrd_high to 0x10000000 and
fdt/initrd are now loaded to 1st 256 MB:
   Loading Kernel Image ... OK
   Loading Ramdisk to 0f44c000, end 0ffff2f2 ... OK
   Loading Device Tree to 0f443000, end 0f44bf40 ... OK

However, with bootarg "mem=256MB", the kernel doesn't boot.
With "mem=257M", it does:

/proc/iomem:
00000000-100fffff : System RAM
   00008000-00584b03 : Kernel code
   005b6000-0061d5df : Kernel data

I'd be OK with this, but just want to understand why I can't specify
mem=256M?  I could probably also lower initrd_high and fdt_high a bit
more to make mem=256M work, but why would that be necessary?

Also, in the device tree entry for memory, should I leave "reg = <0x0
0x20000000>" or change that to reflect 256MB?  Changing it to "reg =
<0x0 0x10000000>" didn't seem to have any effect.  The mem bootarg
seems to be the thing that actually works to limit the amount of
memory Linux sees.


On Mon, Jun 8, 2015 at 9:45 PM, Nathan Rossi <nathan at nathanrossi.com> wrote:
> On Tue, Jun 9, 2015 at 4:06 AM, Edward Wingate <edwingate8 at gmail.com> wrote:
>
> Those values are generated via u-boot based on the value of fdt_high
> and initrd_high which are set in the u-boot environment. (At least for
> Zynq)
>
> If you have a look at the default environment you will see them set to
> 0x20000000:
> http://git.denx.de/?p=u-boot.git;a=blob;f=include/configs/zynq-common.h;h=1a52e7d538261a9d36b078d61e00e60bf8918227;hb=HEAD#l217
>
> You can override those environment variables with your uEnv.txt file,
> setting it to 0x10000000 will make sure they fdt/initrd is loaded into
> the first 256M.
>
> Regards,
> Nathan
>



More information about the yocto mailing list