mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-26 20:37:16 +00:00
cmd: pxe: reorder kernel treatment in label_boot
Reorder kernel treatment in label_boot at the beginning of the function. This patch doesn't change the pxe command behavior, it is only a preliminary step for next patch, build kernel_addr before parsing the label initrd and fdt to build the next bootm arguments. Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
This commit is contained in:
parent
4c56d75117
commit
f723c2778c
1 changed files with 24 additions and 25 deletions
|
@ -521,6 +521,27 @@ static int label_boot(struct pxe_context *ctx, struct pxe_label *label)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (get_relfile_envaddr(ctx, label->kernel, "kernel_addr_r",
|
||||||
|
NULL) < 0) {
|
||||||
|
printf("Skipping %s for failure retrieving kernel\n",
|
||||||
|
label->name);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
kernel_addr = env_get("kernel_addr_r");
|
||||||
|
/* for FIT, append the configuration identifier */
|
||||||
|
if (label->config) {
|
||||||
|
int len = strlen(kernel_addr) + strlen(label->config) + 1;
|
||||||
|
|
||||||
|
fit_addr = malloc(len);
|
||||||
|
if (!fit_addr) {
|
||||||
|
printf("malloc fail (FIT address)\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
snprintf(fit_addr, len, "%s%s", kernel_addr, label->config);
|
||||||
|
kernel_addr = fit_addr;
|
||||||
|
}
|
||||||
|
|
||||||
if (label->initrd) {
|
if (label->initrd) {
|
||||||
ulong size;
|
ulong size;
|
||||||
|
|
||||||
|
@ -528,21 +549,14 @@ static int label_boot(struct pxe_context *ctx, struct pxe_label *label)
|
||||||
&size) < 0) {
|
&size) < 0) {
|
||||||
printf("Skipping %s for failure retrieving initrd\n",
|
printf("Skipping %s for failure retrieving initrd\n",
|
||||||
label->name);
|
label->name);
|
||||||
return 1;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
initrd_addr_str = env_get("ramdisk_addr_r");
|
initrd_addr_str = env_get("ramdisk_addr_r");
|
||||||
size = snprintf(initrd_str, sizeof(initrd_str), "%s:%lx",
|
size = snprintf(initrd_str, sizeof(initrd_str), "%s:%lx",
|
||||||
initrd_addr_str, size);
|
initrd_addr_str, size);
|
||||||
if (size >= sizeof(initrd_str))
|
if (size >= sizeof(initrd_str))
|
||||||
return 1;
|
goto cleanup;
|
||||||
}
|
|
||||||
|
|
||||||
if (get_relfile_envaddr(ctx, label->kernel, "kernel_addr_r",
|
|
||||||
NULL) < 0) {
|
|
||||||
printf("Skipping %s for failure retrieving kernel\n",
|
|
||||||
label->name);
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (label->ipappend & 0x1) {
|
if (label->ipappend & 0x1) {
|
||||||
|
@ -572,7 +586,7 @@ static int label_boot(struct pxe_context *ctx, struct pxe_label *label)
|
||||||
strlen(label->append ?: ""),
|
strlen(label->append ?: ""),
|
||||||
strlen(ip_str), strlen(mac_str),
|
strlen(ip_str), strlen(mac_str),
|
||||||
sizeof(bootargs));
|
sizeof(bootargs));
|
||||||
return 1;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (label->append)
|
if (label->append)
|
||||||
|
@ -587,21 +601,6 @@ static int label_boot(struct pxe_context *ctx, struct pxe_label *label)
|
||||||
printf("append: %s\n", finalbootargs);
|
printf("append: %s\n", finalbootargs);
|
||||||
}
|
}
|
||||||
|
|
||||||
kernel_addr = env_get("kernel_addr_r");
|
|
||||||
|
|
||||||
/* for FIT, append the configuration identifier */
|
|
||||||
if (label->config) {
|
|
||||||
int len = strlen(kernel_addr) + strlen(label->config) + 1;
|
|
||||||
|
|
||||||
fit_addr = malloc(len);
|
|
||||||
if (!fit_addr) {
|
|
||||||
printf("malloc fail (FIT address)\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
snprintf(fit_addr, len, "%s%s", kernel_addr, label->config);
|
|
||||||
kernel_addr = fit_addr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* fdt usage is optional:
|
* fdt usage is optional:
|
||||||
* It handles the following scenarios.
|
* It handles the following scenarios.
|
||||||
|
|
Loading…
Add table
Reference in a new issue