diff options
author | York Sun <york.sun@nxp.com> | 2016-09-01 16:28:21 +0800 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2016-09-07 08:49:02 -0400 |
commit | f63963f048fd34735a2862936dbd0615d7342f8b (patch) | |
tree | 4d948d4032c8b3c1e8dfc230e19839b36367d3de /cmd/pxe.c | |
parent | 57247d9cbf1f0b55c3922e89c6516336d51a355b (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>
Diffstat (limited to 'cmd/pxe.c')
-rw-r--r-- | cmd/pxe.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -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); |