[U-Boot] FSL PowerPC platform: Not able to boot Linux with ramdisk size > 100MB

Hi Masahiro,
I am not able to boot Linux onF PowerPC platform with ramdisk size > 100MB. I tried u-boot master with top commit as " 5ac5861c4ba851b473e6a24940b412b397627d8d ".
I tried git-bisect and figured out below patch causing this problem. If I revert this patch, Linux boots properly.
commit 20e072f37402c17741f67d9693eaabdd835b80f2 Author: Masahiro Yamada yamada.masahiro@socionext.com Date: Thu Dec 17 17:19:35 2015 +0900
image: check "bootm_low" and "bootm_size" if "initrd_high" is missing
To boot Linux, we should prevent Initramdisk and FDT from going too high.
Currently, boot_relocate_fdt() checks "fdt_high" environment first, and then falls back to getenv_bootm_mapsize() + getenv_bootm_low() if "fdt_high" is missing.
On the other hand, boot_ramdisk_high() only checks "initrd_high" to get the address limit for the Initramdisk. We also want to let this case fall back to getenv_bootm_mapsize() + getenv_bootm_low().
Signed-off-by: Masahiro Yamada yamada.masahiro@socionext.com
Please advise!!
Regards, Prabhakar

On 10/27/2016 04:27 AM, Prabhakar Kushwaha wrote:
Hi Masahiro,
I am not able to boot Linux onF PowerPC platform with ramdisk size > 100MB. I tried u-boot master with top commit as " 5ac5861c4ba851b473e6a24940b412b397627d8d ".
I tried git-bisect and figured out below patch causing this problem. If I revert this patch, Linux boots properly.
commit 20e072f37402c17741f67d9693eaabdd835b80f2 Author: Masahiro Yamada yamada.masahiro@socionext.com Date: Thu Dec 17 17:19:35 2015 +0900
image: check "bootm_low" and "bootm_size" if "initrd_high" is missing To boot Linux, we should prevent Initramdisk and FDT from going too high. Currently, boot_relocate_fdt() checks "fdt_high" environment first, and then falls back to getenv_bootm_mapsize() + getenv_bootm_low() if "fdt_high" is missing. On the other hand, boot_ramdisk_high() only checks "initrd_high" to get the address limit for the Initramdisk. We also want to let this case fall back to getenv_bootm_mapsize() + getenv_bootm_low(). Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Please advise!!
On PPC the initrd does not need to be loaded within the boot mapping. This assumption of what the absence of initrd_high means is not universally appropriate. Why not just set initrd_high on the platforms that need it?
-Scott

Thanks Scott,
-----Original Message----- From: Scott Wood Sent: Friday, October 28, 2016 10:41 AM To: Prabhakar Kushwaha prabhakar.kushwaha@nxp.com; u- boot@lists.denx.de; yamada.masahiro@socionext.com Cc: york sun york.sun@nxp.com Subject: Re: FSL PowerPC platform: Not able to boot Linux with ramdisk size > 100MB
On 10/27/2016 04:27 AM, Prabhakar Kushwaha wrote:
Hi Masahiro,
I am not able to boot Linux onF PowerPC platform with ramdisk size > 100MB. I tried u-boot master with top commit as "
5ac5861c4ba851b473e6a24940b412b397627d8d ".
I tried git-bisect and figured out below patch causing this problem. If I revert
this patch, Linux boots properly.
commit 20e072f37402c17741f67d9693eaabdd835b80f2 Author: Masahiro Yamada yamada.masahiro@socionext.com Date: Thu Dec 17 17:19:35 2015 +0900
image: check "bootm_low" and "bootm_size" if "initrd_high" is missing To boot Linux, we should prevent Initramdisk and FDT from going too high. Currently, boot_relocate_fdt() checks "fdt_high" environment first, and then falls back to getenv_bootm_mapsize() + getenv_bootm_low() if "fdt_high" is missing. On the other hand, boot_ramdisk_high() only checks "initrd_high" to get the address limit for the Initramdisk. We also want to let this case fall back to getenv_bootm_mapsize() + getenv_bootm_low(). Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Please advise!!
On PPC the initrd does not need to be loaded within the boot mapping. This assumption of what the absence of initrd_high means is not universally appropriate. Why not just set initrd_high on the platforms that need it?
After setting initrd_high=0xffffffff\0. Now linux is working with > 100M.
--prabhakar

On 10/27/2016 10:11 PM, Scott Wood wrote:
On 10/27/2016 04:27 AM, Prabhakar Kushwaha wrote:
Hi Masahiro,
I am not able to boot Linux onF PowerPC platform with ramdisk size > 100MB. I tried u-boot master with top commit as " 5ac5861c4ba851b473e6a24940b412b397627d8d ".
I tried git-bisect and figured out below patch causing this problem. If I revert this patch, Linux boots properly.
commit 20e072f37402c17741f67d9693eaabdd835b80f2 Author: Masahiro Yamada yamada.masahiro@socionext.com Date: Thu Dec 17 17:19:35 2015 +0900
image: check "bootm_low" and "bootm_size" if "initrd_high" is missing To boot Linux, we should prevent Initramdisk and FDT from going too high. Currently, boot_relocate_fdt() checks "fdt_high" environment first, and then falls back to getenv_bootm_mapsize() + getenv_bootm_low() if "fdt_high" is missing. On the other hand, boot_ramdisk_high() only checks "initrd_high" to get the address limit for the Initramdisk. We also want to let this case fall back to getenv_bootm_mapsize() + getenv_bootm_low(). Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Please advise!!
On PPC the initrd does not need to be loaded within the boot mapping. This assumption of what the absence of initrd_high means is not universally appropriate. Why not just set initrd_high on the platforms that need it?
Masahiro,
If I read Scott correctly, he suggests to revert this patch and have the those platforms who need to set initrd_high to do so. I wonder how many of them exist. It makes sense to not restrict the loading if initrd_high is not set.
York

2016-10-29 0:32 GMT+09:00 york sun york.sun@nxp.com:
On 10/27/2016 10:11 PM, Scott Wood wrote:
On 10/27/2016 04:27 AM, Prabhakar Kushwaha wrote:
Hi Masahiro,
I am not able to boot Linux onF PowerPC platform with ramdisk size > 100MB. I tried u-boot master with top commit as " 5ac5861c4ba851b473e6a24940b412b397627d8d ".
I tried git-bisect and figured out below patch causing this problem. If I revert this patch, Linux boots properly.
commit 20e072f37402c17741f67d9693eaabdd835b80f2 Author: Masahiro Yamada yamada.masahiro@socionext.com Date: Thu Dec 17 17:19:35 2015 +0900
image: check "bootm_low" and "bootm_size" if "initrd_high" is missing To boot Linux, we should prevent Initramdisk and FDT from going too high. Currently, boot_relocate_fdt() checks "fdt_high" environment first, and then falls back to getenv_bootm_mapsize() + getenv_bootm_low() if "fdt_high" is missing. On the other hand, boot_ramdisk_high() only checks "initrd_high" to get the address limit for the Initramdisk. We also want to let this case fall back to getenv_bootm_mapsize() + getenv_bootm_low(). Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Please advise!!
On PPC the initrd does not need to be loaded within the boot mapping. This assumption of what the absence of initrd_high means is not universally appropriate. Why not just set initrd_high on the platforms that need it?
Masahiro,
If I read Scott correctly, he suggests to revert this patch and have the those platforms who need to set initrd_high to do so. I wonder how many of them exist. It makes sense to not restrict the loading if initrd_high is not set.
York
I think this part is completely messed up. Every developer (including me) expands or hacks it for his purpose without deep insight.
I do not know why U-Boot relocates initrd and fdt to the tail of memory region.
I want somebody to re-design it.
participants (4)
-
Masahiro Yamada
-
Prabhakar Kushwaha
-
Scott Wood
-
york sun