pxe: Deal with a missing FDT in the bootflow
Move processing of a missing FDT so that it happens before booting, so we can see the result in the bootflow. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -605,21 +605,9 @@ static int label_run_boot(struct pxe_context *ctx, struct pxe_label *label,
|
||||
hextoul(initrd_filesize, NULL));
|
||||
}
|
||||
|
||||
if (!bmi.conf_fdt) {
|
||||
if (!IS_ENABLED(CONFIG_SUPPORT_PASSING_ATAGS) ||
|
||||
strcmp("-", label->fdt))
|
||||
bmi.conf_fdt = env_get("fdt_addr");
|
||||
}
|
||||
|
||||
kernel_addr_r = genimg_get_kernel_addr(kernel_addr);
|
||||
buf = map_sysmem(kernel_addr_r, 0);
|
||||
|
||||
if (!bmi.conf_fdt && genimg_get_format(buf) != IMAGE_FORMAT_FIT) {
|
||||
if (!IS_ENABLED(CONFIG_SUPPORT_PASSING_ATAGS) ||
|
||||
strcmp("-", label->fdt))
|
||||
bmi.conf_fdt = env_get("fdtcontroladdr");
|
||||
}
|
||||
|
||||
/* Try bootm for legacy and FIT format image */
|
||||
if (genimg_get_format(buf) != IMAGE_FORMAT_INVALID &&
|
||||
IS_ENABLED(CONFIG_CMD_BOOTM)) {
|
||||
@@ -786,6 +774,28 @@ static int label_boot(struct pxe_context *ctx, struct pxe_label *label)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (!conf_fdt) {
|
||||
if (!IS_ENABLED(CONFIG_SUPPORT_PASSING_ATAGS) ||
|
||||
strcmp("-", label->fdt))
|
||||
conf_fdt = env_get("fdt_addr");
|
||||
}
|
||||
|
||||
if (!conf_fdt) {
|
||||
ulong kernel_addr_r;
|
||||
void *buf;
|
||||
|
||||
kernel_addr_r = genimg_get_kernel_addr(kernel_addr);
|
||||
buf = map_sysmem(kernel_addr_r, 0);
|
||||
if (genimg_get_format(buf) != IMAGE_FORMAT_FIT) {
|
||||
if (!IS_ENABLED(CONFIG_SUPPORT_PASSING_ATAGS) ||
|
||||
strcmp("-", label->fdt))
|
||||
conf_fdt = env_get("fdtcontroladdr");
|
||||
}
|
||||
unmap_sysmem(buf);
|
||||
}
|
||||
if (ctx->bflow)
|
||||
ctx->bflow->fdt_addr = hextoul(conf_fdt, NULL);
|
||||
|
||||
if (ctx->no_boot)
|
||||
return 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user