[PATCH] cmd: pxe_utils: sysboot: add label override support
Simon Glass
sjg at chromium.org
Fri Nov 5 03:02:09 CET 2021
Hi Amjad,
On Fri, 22 Oct 2021 at 09:55, Amjad Ouled-Ameur
<aouledameur at baylibre.com> wrote:
>
> This will allow consumers to choose a pxe label at runtime instead of
> having to prompt the user. One good use-case for this, is choosing
> whether or not to apply a dtbo depending on the hardware configuration.
> e.g: for TI's AM335x EVM, it would be convenient to apply a particular
> dtbo only when the J9 jumper is on PRUSS mode. To achieve this, the
> pxe menu should have 2 labels, one with the dtbo and the other without,
> then the "pxe_label_override" env variable should point to the label with
> the dtbo at runtime only when the jumper is on PRUSS mode.
>
> This change can be used for different use-cases and bring more
> flexibilty to consumers who use sysboot/pxe_utils.
>
> if "pxe_label_override" is set but does not exist in the pxe menu,
> the code should fallback to the default label if given, and no failure
> is returned but rather a warning message.
>
> Signed-off-by: Amjad Ouled-Ameur <aouledameur at baylibre.com>
>
> ---
>
> cmd/pxe_utils.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
Can we add this to the docs somewhere?
>
> diff --git a/cmd/pxe_utils.c b/cmd/pxe_utils.c
> index 067c24e5ff4b..b1009f9c7547 100644
> --- a/cmd/pxe_utils.c
> +++ b/cmd/pxe_utils.c
> @@ -1354,9 +1354,11 @@ static struct menu *pxe_menu_to_menu(struct pxe_menu *cfg)
> struct pxe_label *label;
> struct list_head *pos;
> struct menu *m;
> + char *label_override;
> int err;
> int i = 1;
> char *default_num = NULL;
> + char *override_num = NULL;
>
> /*
> * Create a menu and add items for all the labels.
> @@ -1367,6 +1369,8 @@ static struct menu *pxe_menu_to_menu(struct pxe_menu *cfg)
> if (!m)
> return NULL;
>
> + label_override = env_get("pxe_label_override");
> +
> list_for_each(pos, &cfg->labels) {
> label = list_entry(pos, struct pxe_label, list);
>
> @@ -1375,11 +1379,22 @@ static struct menu *pxe_menu_to_menu(struct pxe_menu *cfg)
> menu_destroy(m);
> return NULL;
> }
> + if (label_override &&
> + (strcmp(label->name, label_override) == 0))
!strcmp()
> + override_num = label->num;
> if (cfg->default_label &&
> (strcmp(label->name, cfg->default_label) == 0))
> default_num = label->num;
> }
>
> + if (label_override) {
> + if (override_num)
> + default_num = override_num;
> + else
> + printf("Missing override pxe label: %s\n",
> + label_override);
> + }
> +
> /*
> * After we've created items for each label in the menu, set the
> * menu's default label if one was specified.
> --
> 2.25.1
>
Regards,
Simon
More information about the U-Boot
mailing list