
For ks2 devices with PAE enabled, the function ft_board_setup() (board/ti/ks2_evm/board.c) is supposed to update at runtime the /chosen fdt node by shifting the initrd start/end addresses into the 36b it address space. Unfortunately, this mechanism doesn't work since the /chosen node has not been populated at the time of the ft_board_setup() call. The root of the issue is that, at some point in u-boot history, the call sequence of fdt_initrd() and ft_board_setup() (common/image-fdt.c) has been inverted: ft_board_setup() is called before fdt_initrd().
Error shown by Linux during startup is: [ 0.000000] INITRD: 0x8fcec000+0x00313dc8 is not a memory region - disabling initrd
I would propose to move the fdt initrd fixup logic from ft_board_setup() to ft_board_setup_ex() since the latter is called esclusively for keystone devices.
Moreover, cmd/fdt.c command should include the call of ft_board_setup_ex() since keystone2 devices will require it.
Nicholas Faustini (2): fdt: add call to ft_board_setup_ex() for ks2 boards board: ks2: move uinitrd fixup logic inside ft_board_setup_ex
board/ti/ks2_evm/board.c | 44 ++++++++++++++++++++-------------------- cmd/fdt.c | 3 +++ 2 files changed, 25 insertions(+), 22 deletions(-)