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>
This commit is contained in:
parent
57247d9cbf
commit
f63963f048
|
@ -620,7 +620,7 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label)
|
||||||
char initrd_str[22];
|
char initrd_str[22];
|
||||||
char mac_str[29] = "";
|
char mac_str[29] = "";
|
||||||
char ip_str[68] = "";
|
char ip_str[68] = "";
|
||||||
int bootm_argc = 3;
|
int bootm_argc = 2;
|
||||||
int len = 0;
|
int len = 0;
|
||||||
ulong kernel_addr;
|
ulong kernel_addr;
|
||||||
void *buf;
|
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"));
|
strcpy(bootm_argv[2], getenv("ramdisk_addr_r"));
|
||||||
strcat(bootm_argv[2], ":");
|
strcat(bootm_argv[2], ":");
|
||||||
strcat(bootm_argv[2], getenv("filesize"));
|
strcat(bootm_argv[2], getenv("filesize"));
|
||||||
} else {
|
|
||||||
bootm_argv[2] = "-";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (get_relfile_envaddr(cmdtp, label->kernel, "kernel_addr_r") < 0) {
|
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])
|
if (!bootm_argv[3])
|
||||||
bootm_argv[3] = getenv("fdt_addr");
|
bootm_argv[3] = getenv("fdt_addr");
|
||||||
|
|
||||||
if (bootm_argv[3])
|
if (bootm_argv[3]) {
|
||||||
|
if (!bootm_argv[2])
|
||||||
|
bootm_argv[2] = "-";
|
||||||
bootm_argc = 4;
|
bootm_argc = 4;
|
||||||
|
}
|
||||||
|
|
||||||
kernel_addr = genimg_get_kernel_addr(bootm_argv[1]);
|
kernel_addr = genimg_get_kernel_addr(bootm_argv[1]);
|
||||||
buf = map_sysmem(kernel_addr, 0);
|
buf = map_sysmem(kernel_addr, 0);
|
||||||
|
|
Loading…
Reference in New Issue