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 ([EMAIL PROTECTED]) (gcc version 3.4.3) #21 PREEMPT Fri Nov 30 16:47:32 CET 2007
[...]

[EMAIL PROTECTED]:/# 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@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded

Reply via email to