[PATCH u-boot-marvell] arm: mvebu: turris_{omnia,mox}: ensure running bootcmd_rescue always works
Stefan Roese
sr at denx.de
Tue Jun 15 07:20:30 CEST 2021
On 14.06.21 16:45, Marek Behún wrote:
> From: Pali Rohár <pali at kernel.org>
>
> One of the points of putting the rescue boot command into default
> environment is that user can invoke it without physical access to the
> board (without having to press the factory reset button), by running
> run bootcmd_rescue
> in U-Boot's console.
>
> Therefore we have to ensure that bootcmd_rescue is always set to default
> value, regardless of whether the factory reset button was pressed.
> Otherwise the variable will be empty for example after upgrade from
> previous U-Boot.
>
> Fixes: ec3784d62646 ("arm: mvebu: turris_mox: add support for board rescue mode")
> Fixes: 176c3e7760a2 ("arm: mvebu: turris_omnia: support invoking rescue boot from console")
> Signed-off-by: Pali Rohár <pali at kernel.org>
> Signed-off-by: Marek Behún <marek.behun at nic.cz>
Reviewed-by: Stefan Roese <sr at denx.de>
Thanks,
Stefan
> ---
> board/CZ.NIC/turris_mox/turris_mox.c | 14 +++++++++++---
> board/CZ.NIC/turris_omnia/turris_omnia.c | 13 ++++++++++---
> 2 files changed, 21 insertions(+), 6 deletions(-)
>
> diff --git a/board/CZ.NIC/turris_mox/turris_mox.c b/board/CZ.NIC/turris_mox/turris_mox.c
> index 44c272c7cb..428cd23a19 100644
> --- a/board/CZ.NIC/turris_mox/turris_mox.c
> +++ b/board/CZ.NIC/turris_mox/turris_mox.c
> @@ -440,10 +440,18 @@ static bool read_reset_button(void)
>
> static void handle_reset_button(void)
> {
> + const char * const vars[1] = { "bootcmd_rescue", };
> +
> + /*
> + * Ensure that bootcmd_rescue has always stock value, so that running
> + * run bootcmd_rescue
> + * always works correctly.
> + */
> + env_set_default_vars(1, (char * const *)vars, 0);
> +
> if (read_reset_button()) {
> - const char * const vars[3] = {
> + const char * const vars[2] = {
> "bootcmd",
> - "bootcmd_rescue",
> "distro_bootcmd",
> };
>
> @@ -451,7 +459,7 @@ static void handle_reset_button(void)
> * Set the above envs to their default values, in case the user
> * managed to break them.
> */
> - env_set_default_vars(3, (char * const *)vars, 0);
> + env_set_default_vars(2, (char * const *)vars, 0);
>
> /* Ensure bootcmd_rescue is used by distroboot */
> env_set("boot_targets", "rescue");
> diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
> index ade923f599..8b2f94f959 100644
> --- a/board/CZ.NIC/turris_omnia/turris_omnia.c
> +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
> @@ -339,9 +339,17 @@ static int set_regdomain(void)
>
> static void handle_reset_button(void)
> {
> + const char * const vars[1] = { "bootcmd_rescue", };
> int ret;
> u8 reset_status;
>
> + /*
> + * Ensure that bootcmd_rescue has always stock value, so that running
> + * run bootcmd_rescue
> + * always works correctly.
> + */
> + env_set_default_vars(1, (char * const *)vars, 0);
> +
> ret = omnia_mcu_read(CMD_GET_RESET, &reset_status, 1);
> if (ret) {
> printf("omnia_mcu_read failed: %i, reset status unknown!\n",
> @@ -352,9 +360,8 @@ static void handle_reset_button(void)
> env_set_ulong("omnia_reset", reset_status);
>
> if (reset_status) {
> - const char * const vars[3] = {
> + const char * const vars[2] = {
> "bootcmd",
> - "bootcmd_rescue",
> "distro_bootcmd",
> };
>
> @@ -362,7 +369,7 @@ static void handle_reset_button(void)
> * Set the above envs to their default values, in case the user
> * managed to break them.
> */
> - env_set_default_vars(3, (char * const *)vars, 0);
> + env_set_default_vars(2, (char * const *)vars, 0);
>
> /* Ensure bootcmd_rescue is used by distroboot */
> env_set("boot_targets", "rescue");
>
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de
More information about the U-Boot
mailing list