
On Tue, Apr 08, 2014 at 03:05:36PM +0200, Wolfgang Denk wrote:
Dear Nobuhiro,
In message CABMQnV+k+Rmx7E8o-nfBpYg5-nWrXi6Oz_+BCYs-vDNdv_z-rw@mail.gmail.com you wrote:
Please explain why you would want to do this. To me it makes no sense. Either U-Boot knows the correct memory size, then it should pass it to Linux. Or it does not, then U-Boot should be fixed.
For example, I can access the memory of all in the U-Boot, but I may want to control the highmem on Linux,I do not want to show a specific area from kernel and userland.
Is it not sufficient to pass some "mem=" boot argument? We even have automatic support for this in U-Boot (see the CONFIG_PRAM feature).
There's various ways to do this, yes. But it doesn't cover the >4GB case.
Also, I object that your implementation is ARM specific. If such a feature gets added, it should be architecture independent.
I see. But arch_fixup_memory_node() is used by ARM only. So, we see to be dependent on the ARM is only this.
All architectures that support the device tree update the memory size for Linux, so we should find a generic way to handle this. Actually we should always strive to reduce this arhitecture specific code.
Note that ARM provides arch_fixup_memory_node to make sure we have all of the bank information populated and then calls fdt_fixup_memory_banks, while PowerPC just calls fdt_fixup_memory which calls banks with a '1' for number of banks. MIPS (and everyone else) isn't doing anything about this atm, but probably should.
At the high level, we need to see if we _really_ do need to be using arch_fixup_memory_node at all because my gut feeling is (a) we've already always filled in the bank info and if not (b) that is a bug to correct. But I haven't dived in to the relevant code here yet.