[PATCH v2] cmd: pxe_utils: sysboot: add label override support

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@baylibre.com ---
Changes in v2: - Use !strcmp() instead of strcmp()==0 - Add "pxe_label_override" documentation
boot/pxe_utils.c | 15 +++++++++++++++ doc/README.pxe | 6 ++++++ 2 files changed, 21 insertions(+)
diff --git a/boot/pxe_utils.c b/boot/pxe_utils.c index a7a84f26c1d5..defc806fdc4f 100644 --- a/boot/pxe_utils.c +++ b/boot/pxe_utils.c @@ -1349,9 +1349,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. @@ -1361,6 +1363,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);
@@ -1372,6 +1376,17 @@ static struct menu *pxe_menu_to_menu(struct pxe_menu *cfg) if (cfg->default_label && (strcmp(label->name, cfg->default_label) == 0)) default_num = label->num; + if (label_override && !strcmp(label->name, label_override)) + override_num = label->num; + } + + + if (label_override) { + if (override_num) + default_num = override_num; + else + printf("Missing override pxe label: %s\n", + label_override); }
/* diff --git a/doc/README.pxe b/doc/README.pxe index b67151ca510e..a1f0423adbec 100644 --- a/doc/README.pxe +++ b/doc/README.pxe @@ -92,6 +92,12 @@ pxe boot fdtoverlay_addr_r - location in RAM at which 'pxe boot' will temporarily store fdt overlay(s) before applying them to the fdt blob stored at 'fdt_addr_r'.
+ pxe_label_override - override label to be used, if exists, instead of the + default label. This will allow consumers to choose a pxe label at + runtime instead of having to prompt the user. If "pxe_label_override" is set + but does not exist in the pxe menu, pxe would fallback to the default label if + given, and no failure is returned but rather a warning message. + pxe file format =============== The pxe file format is nearly a subset of the PXELINUX file format; see

Hi Amjad,
On Sat, 13 Nov 2021 at 06:09, Amjad Ouled-Ameur aouledameur@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@baylibre.com
Changes in v2:
- Use !strcmp() instead of strcmp()==0
- Add "pxe_label_override" documentation
boot/pxe_utils.c | 15 +++++++++++++++ doc/README.pxe | 6 ++++++ 2 files changed, 21 insertions(+)
Reviewed-by: Simon Glass sjg@chromium.org
Can I suggest converting the doc to rST?
Regards, Simon

Hi,
Is there any news about this patch please ?
Regards,
Amjad
On 25/11/2021 01:12, Simon Glass wrote:
Hi Amjad,
On Sat, 13 Nov 2021 at 06:09, Amjad Ouled-Ameur aouledameur@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@baylibre.com
Changes in v2:
Use !strcmp() instead of strcmp()==0
Add "pxe_label_override" documentation
boot/pxe_utils.c | 15 +++++++++++++++ doc/README.pxe | 6 ++++++ 2 files changed, 21 insertions(+)
Reviewed-by: Simon Glass sjg@chromium.org
Can I suggest converting the doc to rST?
Regards, Simon

On Sat, Nov 13, 2021 at 9:09 PM Amjad Ouled-Ameur aouledameur@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@baylibre.com
Reviewed-by: Artem Lapkin email2tema@gmail.com
Good and useful idea! why still not accepted ?!
Regards, Art

On Mon, Dec 13, 2021 at 1:27 PM Art Nikpal email2tema@gmail.com wrote:
On Sat, Nov 13, 2021 at 9:09 PM Amjad Ouled-Ameur aouledameur@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@baylibre.com
Reviewed-by: Artem Lapkin email2tema@gmail.com
Good and useful idea! why still not accepted ?!
Regards, Art
Was mistakenly assigned to trini instead of me. I will pull in to my tree. Thanks. Ramon

On Tue, Dec 14, 2021 at 11:11 AM Ramon Fried rfried.dev@gmail.com wrote:
On Mon, Dec 13, 2021 at 1:27 PM Art Nikpal email2tema@gmail.com wrote:
On Sat, Nov 13, 2021 at 9:09 PM Amjad Ouled-Ameur aouledameur@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@baylibre.com
Reviewed-by: Artem Lapkin email2tema@gmail.com
Good and useful idea! why still not accepted ?!
Regards, Art
Was mistakenly assigned to trini instead of me. I will pull in to my tree. Thanks. Ramon
Applied to u-boot-net/next Thanks.

On Sat, Nov 13, 2021 at 3:09 PM Amjad Ouled-Ameur aouledameur@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@baylibre.com
Changes in v2:
- Use !strcmp() instead of strcmp()==0
- Add "pxe_label_override" documentation
boot/pxe_utils.c | 15 +++++++++++++++ doc/README.pxe | 6 ++++++ 2 files changed, 21 insertions(+)
diff --git a/boot/pxe_utils.c b/boot/pxe_utils.c index a7a84f26c1d5..defc806fdc4f 100644 --- a/boot/pxe_utils.c +++ b/boot/pxe_utils.c @@ -1349,9 +1349,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.
@@ -1361,6 +1363,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);
@@ -1372,6 +1376,17 @@ static struct menu *pxe_menu_to_menu(struct pxe_menu *cfg) if (cfg->default_label && (strcmp(label->name, cfg->default_label) == 0)) default_num = label->num;
if (label_override && !strcmp(label->name, label_override))
override_num = label->num;
}
if (label_override) {
if (override_num)
default_num = override_num;
else
printf("Missing override pxe label: %s\n",
label_override); } /*
diff --git a/doc/README.pxe b/doc/README.pxe index b67151ca510e..a1f0423adbec 100644 --- a/doc/README.pxe +++ b/doc/README.pxe @@ -92,6 +92,12 @@ pxe boot fdtoverlay_addr_r - location in RAM at which 'pxe boot' will temporarily store fdt overlay(s) before applying them to the fdt blob stored at 'fdt_addr_r'.
pxe_label_override - override label to be used, if exists, instead of the
default label. This will allow consumers to choose a pxe label at
runtime instead of having to prompt the user. If "pxe_label_override" is set
but does not exist in the pxe menu, pxe would fallback to the default label if
given, and no failure is returned but rather a warning message.
pxe file format
The pxe file format is nearly a subset of the PXELINUX file format; see
2.25.1
Reviewed-by: Ramon Fried rfried.dev@gmail.com
participants (4)
-
Amjad Ouled-Ameur
-
Art Nikpal
-
Ramon Fried
-
Simon Glass