On Sat, 2011-08-20 at 08:01 +0200, Albert ARIBAUD wrote:
What exactly prevents ARM Linux from booting when FDT or initrd are above 768MB? Can this limitation not be lifter on the Linux side?
I don't think it reasonably can be.
I have to start by saying that I am in no way a Linux VM expert. But...
With Linux HIGHMEM configured the last 1/4GB of the kernel virtual address space is reserved for a few things, including explicitly mapping in parts of the last 1/4GB of physical memory as needed. I just don't think the VM subsystem is initialized enough to do this remapping so early, even if one wanted to make the calls. Indeed, I don't see how it could be initialized this early since the FDT can contain information about physical memory.
Some other platforms limit u-boot to accessing the first 8MB of RAM using CONFIG_SYS_BOOTMAPSZ, but that resulted in a failure to boot in my test. I did not chase down exactly why that approach failed.
+#ifndef CONFIG_SYS_LINUX_LOWMEM_MAX_SIZE +#define CONFIG_SYS_LINUX_LOWMEM_MAX_SIZE (768*1024*1024) +#endif
I'd tend to think that if no max size was defined, then we should not limit.
I was just going with the example already in place for powerpc. I'm reluctant to change this without having more background on why it's this way now.
-dl