
On Mar 20, 2008, at 6:16 AM, Wolfgang Denk wrote:
In message 200803201129.06602.sr@denx.de you wrote:
I don't like this either. But I have not come up with a "generic" solution till now. It's not so easy since the 440EPx SDRAM setup code is sometimes common (cpu/ppc4xx/denali_spd_ddr2.c) and sometimes board specific. And it gets even more complicated when ECC initialization is needed too. So currently I have no "better" solution as to do it in a board specific way.
As always, patches implementing a "better" more generic solution are welcome.
At the cost of an #ifdef, this could be added to the memory reservation code in "lib_ppc/board.c", i. e. somewhere after
... 427 * Reserve memory at end of RAM for (top down in that order): 428 * - kernel log buffer 429 * - protected RAM 430 * - LCD framebuffer 431 * - monitor code 432 * - board info struct 433 */ 434 len = (ulong)&_end - CFG_MONITOR_BASE; 435 436 addr = CFG_SDRAM_BASE + get_effective_memsize();
Of course you need to make sure that the linux kernel understands this changed behaviour / shifted addresses, too.
I haven't looked at the exact details but with the new-image branch of u-boot-testing the introduction of using the lmb to keep track of memory regions used might make this a little easier. It clearly will not help in determining when to do a lmb_reserve().
- k