Reserving small amounts of memory with mem= (MPC85xx, 2.6.15 arch/ppc)

Sylvain Joyeau sylvain.joyeau at gmail.com
Fri Jun 13 05:14:58 EST 2008


Hi,

Residual memory size is what Linux couldn't map with its three CAM
entries. The main figure you can check is the sum of the three first
CAMs   plus residual is what you specified (CAM0+CAM1+CAM2+residuak ==
'mem'). It's not weird to get a residual != 0 when specified memory
size isn't a good combination of power of 2.
Stupid question: have you tried mem=512M and a correct RAM disk address ?
No more comments...

--
sj

2008/6/12 Florian Boelstler <euphoria at arcor.de>:
> Hi,
>
> I ran into problems reserving small amounts of memory using command line
> argument 'mem'.
> Limiting a MPC8540 with 512MB physical available memory down to 256MB has
> been successfully done using U-Boot:
>
> => setenv bootargs console=ttyS0,115200 mem=256M
> => setenv initrd_high 10000000
> => bootm 0x02100000
>
> ## Booting image at 02100000 ...
>   Image Name:   Linux 2.6.15
>   Image Type:   PowerPC Linux Multi-File Image (gzip compressed)
>   Data Size:    6965022 Bytes =  6.6 MB
>   Load Address: 00000000
>   Entry Point:  00000000
>   Contents:
>   Image 0:  1099550 Bytes =  1 MB
>   Image 1:  5865458 Bytes =  5.6 MB
>   Verifying Checksum ... OK
>   Uncompressing Multi-File Image ... OK
> [...]
>   Loading Ramdisk to 0fa68000, end 0ffffff2 ... OK
>
> Memory CAM mapping: CAM0=256Mb, CAM1=0Mb, CAM2=0Mb residual: 0Mb
> Linux version 2.6.15 (flo at escape) (gcc version 3.4.3) #21 PREEMPT Fri Nov 30
> 16:47:32 CET 2007
> [...]
>
> root at mpc0:/# cat /proc/meminfo
> MemTotal:       257272 kB
> MemFree:        226332 kB
> [...]
>
> When a larger size for 'mem' (say 508M for reserving 4M) and appropriate
> 'initrd_high' is used, U-Boot is still able to load the ramdisk to its
> correct place in RAM. However Linux seems to not accept that memory region
> and removes the memory using mem_pieces_remove(), which leads to a crash
> since it cannot access area used for the ramdisk(?).
> In that case output of "residual" for CAM mapping shows a value != 0.
>
> My assumption is that these CAM mappings cannot be used for memory portions
> less than a certain size.
> I need to dig into that, please correct me if I'm wrong.
>
> Linux 2.6.15 build for arch/ppc on custom MPC8540 board (Linux BSP similar
> to MPC8540ads). U-Boot 1.2.0.
>
> Thanks for any suggestions.
>
>  Florian
>
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>



-- 
------------------
Sylvain JOYEAU
Freelance Engineer
Software RT-OS R&D
sylvain.joyeau at gmail.com
Tél: +33-(0)667 477 052
"A good idea is one side of the coin. The other side is the practical
usefulness". J. Liedke.


More information about the Linuxppc-embedded mailing list