mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 13:43:28 +00:00
board_f: Relocate fdt even if GD_FLG_SKIP_RELOC is set
In case of OF_SEPARATE (!OF_EMBED), the devicetree blob is placed after _end, and fdt_find_separate() always returns _end. There is a .bss section after _end and the section is cleared before relocation. When GD_FLG_SKIP_RELOC is set, relocation is skipped, so the blob is still in .bss section, but will be cleared. As a result, the devicetree become invalid. To avoid this issue, should relocate it regardless of GD_FLG_SKIP_RELOC in reloc_fdt(). Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
ef402577c2
commit
874bf6e0e2
1 changed files with 0 additions and 2 deletions
|
@ -633,8 +633,6 @@ static int init_post(void)
|
||||||
static int reloc_fdt(void)
|
static int reloc_fdt(void)
|
||||||
{
|
{
|
||||||
if (!IS_ENABLED(CONFIG_OF_EMBED)) {
|
if (!IS_ENABLED(CONFIG_OF_EMBED)) {
|
||||||
if (gd->flags & GD_FLG_SKIP_RELOC)
|
|
||||||
return 0;
|
|
||||||
if (gd->new_fdt) {
|
if (gd->new_fdt) {
|
||||||
memcpy(gd->new_fdt, gd->fdt_blob,
|
memcpy(gd->new_fdt, gd->fdt_blob,
|
||||||
fdt_totalsize(gd->fdt_blob));
|
fdt_totalsize(gd->fdt_blob));
|
||||||
|
|
Loading…
Reference in a new issue