[PATCH 1/3] cmd: pxe: reorder kernel treatment in label_boot

Neil Armstrong neil.armstrong at linaro.org
Fri Oct 28 11:11:58 CEST 2022


On 28/10/2022 11:01, Patrick Delaunay wrote:
> 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 at foss.st.com>
> ---
> 
>   boot/pxe_utils.c | 49 ++++++++++++++++++++++++------------------------
>   1 file changed, 24 insertions(+), 25 deletions(-)
> 
> diff --git a/boot/pxe_utils.c b/boot/pxe_utils.c
> index d5c215ae2c1d..844ab72252bf 100644
> --- a/boot/pxe_utils.c
> +++ b/boot/pxe_utils.c
> @@ -522,6 +522,27 @@ static int label_boot(struct pxe_context *ctx, struct pxe_label *label)
>   		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) {
>   		ulong size;
>   
> @@ -529,21 +550,14 @@ static int label_boot(struct pxe_context *ctx, struct pxe_label *label)
>   					&size) < 0) {
>   			printf("Skipping %s for failure retrieving initrd\n",
>   			       label->name);
> -			return 1;
> +			goto cleanup;
>   		}
>   
>   		initrd_addr_str = env_get("ramdisk_addr_r");
>   		size = snprintf(initrd_str, sizeof(initrd_str), "%s:%lx",
>   				initrd_addr_str, size);
>   		if (size >= sizeof(initrd_str))
> -			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;
> +			goto cleanup;
>   	}
>   
>   	if (label->ipappend & 0x1) {
> @@ -573,7 +587,7 @@ static int label_boot(struct pxe_context *ctx, struct pxe_label *label)
>   			       strlen(label->append ?: ""),
>   			       strlen(ip_str), strlen(mac_str),
>   			       sizeof(bootargs));
> -			return 1;
> +			goto cleanup;
>   		}
>   
>   		if (label->append)
> @@ -588,21 +602,6 @@ static int label_boot(struct pxe_context *ctx, struct pxe_label *label)
>   		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:
>   	 * It handles the following scenarios.


Reviewed-by: Neil Armstrong <neil.armstrong at linaro.org>


More information about the U-Boot mailing list