SPARSEMEM support for Atmel AT91SAM9G45 and M10

Yegor Yefremov yegor_sub1 at visionsystems.de
Wed May 26 09:46:21 EDT 2010


>     I'm resurrecting an old thread
> (http://lists.arm.linux.org.uk/lurker/message/20090914.072902.97115112.en.html)
> about using the two memory banks available
> on Atmel AT91SAM9G45/M10. I managed to make it work on 2.6.30 by
> following Russell King advice on how to configure SPARSEMEM.
>     I submitted a working patch for 2.6.34 here:
> http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=6143/1
> 
> The problem is that I'm unsure how to get rid of the #define that
> forces high_memory value in mm/init.c, should I add a fixup function
> to board-sam9m10g45ek.c to provide meminfo information ?

I've already tested the patch on 2.6.33 and it is working properly. Concerning high_memory value problem I think the cause is how find_node_limits() in arch/arm/m/init.c is implemented. We have two memory banks one starting at 0x70000000 and another at 0x200000000. The virtual mapping looks like this:

0x70000000 -> 0xc0000000
0x20000000 -> 0xc8000000

However find_node_limits() routine is working with physical addresses so the upper limit is 0x70000000 and not 0x20000000 as it should be. As a result max_low is pointing to 0x70000000 and that's why only first bank will be mapped correctly.

How can find_node_limits() be changed to work with virtual addresses?

Regards,
Yegor




More information about the linux-arm mailing list