summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYork Sun <york.sun@nxp.com>2016-09-01 16:28:21 +0800
committerTom Rini <trini@konsulko.com>2016-09-07 08:49:02 -0400
commitf63963f048fd34735a2862936dbd0615d7342f8b (patch)
tree4d948d4032c8b3c1e8dfc230e19839b36367d3de
parent57247d9cbf1f0b55c3922e89c6516336d51a355b (diff)
pxe: Fix pxe boot with FIT image
When FIT image is used, a single image provides kernel, device tree and optionally ramdisk. Argc and argv need to be adjusted to support this. Test cases: 1. Booting with legacy images 2. Booting with legacy images without initrd 3. Booting with FIT image Test commands: 1. pxe get && pxe boot 2. sysboot Signed-off-by: York Sun <york.sun@nxp.com> Signed-off-by: Wenbin Song <wenbin.song@nxp.com>
-rw-r--r--cmd/pxe.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/cmd/pxe.c b/cmd/pxe.c
index 9434a18177a..0a07f14ca8f 100644
--- a/cmd/pxe.c
+++ b/cmd/pxe.c
@@ -620,7 +620,7 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label)
char initrd_str[22];
char mac_str[29] = "";
char ip_str[68] = "";
- int bootm_argc = 3;
+ int bootm_argc = 2;
int len = 0;
ulong kernel_addr;
void *buf;
@@ -652,8 +652,6 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label)
strcpy(bootm_argv[2], getenv("ramdisk_addr_r"));
strcat(bootm_argv[2], ":");
strcat(bootm_argv[2], getenv("filesize"));
- } else {
- bootm_argv[2] = "-";
}
if (get_relfile_envaddr(cmdtp, label->kernel, "kernel_addr_r") < 0) {
@@ -785,8 +783,11 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label)
if (!bootm_argv[3])
bootm_argv[3] = getenv("fdt_addr");
- if (bootm_argv[3])
+ if (bootm_argv[3]) {
+ if (!bootm_argv[2])
+ bootm_argv[2] = "-";
bootm_argc = 4;
+ }
kernel_addr = genimg_get_kernel_addr(bootm_argv[1]);
buf = map_sysmem(kernel_addr, 0);