[PATCH 3/5] cmd: env: check real location for env info command
Patrick DELAUNAY
patrick.delaunay at st.com
Mon Jan 27 11:54:32 CET 2020
Hi Wolfgang,
> From: Wolfgang Denk <wd at denx.de>
> Sent: vendredi 24 janvier 2020 14:17
>
> Dear Patrick Delaunay,
>
> In message
> <20200124133332.3.I42c79507524e5ad68e85fd60bbd686c4c59523ae at changeid>
> you wrote:
> > Check the current ENV location, dynamically provided by the weak
> > function env_get_location to be sure that the environment can be
> > persistent.
> >
> > The compilation flag ENV_IS_IN_DEVICE is not enough when the board
> > dynamically select the available storage location (according boot
> > device for example).
> >
> > This patch solves issue for stm32mp1 platform, when the boot device is
> > USB.
> >
> > Signed-off-by: Patrick Delaunay <patrick.delaunay at st.com>
> > ---
> >
> > cmd/nvedit.c | 13 ++++++++++---
> > env/env.c | 18 ------------------
> > include/env_internal.h | 20 ++++++++++++++++++++
> > 3 files changed, 30 insertions(+), 21 deletions(-)
> >
> > diff --git a/cmd/nvedit.c b/cmd/nvedit.c index 3d1054e763..a37b7c094a
> > 100644
> > --- a/cmd/nvedit.c
> > +++ b/cmd/nvedit.c
> > @@ -1269,9 +1269,16 @@ static int do_env_info(cmd_tbl_t *cmdtp, int flag,
> > /* evaluate whether environment can be persisted */
> > if (eval_flags & ENV_INFO_IS_PERSISTED) { #if
> > defined(CONFIG_CMD_SAVEENV) && defined(ENV_IS_IN_DEVICE)
> > - if (!quiet)
> > - printf("Environment can be persisted\n");
> > - eval_results |= ENV_INFO_IS_PERSISTED;
> > + enum env_location loc = env_get_location(ENVOP_SAVE,
>
> Please do not declare variables right in the middle of the code!
Yes, I will modify it....
I am surprised that this issue pas the check patch.
>
> > +++ b/env/env.c
> > @@ -105,24 +105,6 @@ static void env_set_inited(enum env_location location)
> > gd->env_has_init |= BIT(location);
> > }
> >
> > -/**
> > - * env_get_location() - Returns the best env location for a board
> > - * @op: operations performed on the environment
> > - * @prio: priority between the multiple environments, 0 being the
> > - * highest priority
> > - *
> > - * This will return the preferred environment for the given priority.
> > - * This is overridable by boards if they need to.
> > - *
> > - * All implementations are free to use the operation, the priority
> > and
> > - * any other data relevant to their choice, but must take into
> > account
> > - * the fact that the lowest prority (0) is the most important
> > location
> > - * in the system. The following locations should be returned by order
> > - * of descending priorities, from the highest to the lowest priority.
> > - *
> > - * Returns:
> > - * an enum env_location value on success, a negative error code
> > otherwise
> > - */
> > __weak enum env_location env_get_location(enum env_operation op, int
> > prio)
>
> I think it is a really bad idea to remove the comment from the implementation.
> Please keep it here.
Yes I agree .
I will come back on this par.
> > --- a/include/env_internal.h
> > +++ b/include/env_internal.h
> > @@ -209,6 +209,26 @@ struct env_driver {
> >
> > extern struct hsearch_data env_htab;
> >
> > +/**
> > + * env_get_location() - Returns the best env location for a board
> > + * @op: operations performed on the environment
> > + * @prio: priority between the multiple environments, 0 being the
> > + * highest priority
> > + *
> > + * This will return the preferred environment for the given priority.
> > + * This is overridable by boards if they need to.
> > + *
> > + * All implementations are free to use the operation, the priority
> > +and
> > + * any other data relevant to their choice, but must take into
> > +account
> > + * the fact that the lowest prority (0) is the most important
> > +location
> > + * in the system. The following locations should be returned by order
> > + * of descending priorities, from the highest to the lowest priority.
> > + *
> > + * Returns:
> > + * an enum env_location value on success, a negative error code
> > +otherwise */ enum env_location env_get_location(enum env_operation
> > +op, int prio);
>
> If absolutely necessary, copuy only what is needed for API documentation.
Ok
> Best regards,
>
> Wolfgang Denk
>
> --
> DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de "This
> is a test of the Emergency Broadcast System. If this had been an actual
> emergency, do you really think we'd stick around to tell you?"
Thanks
Patrick
More information about the U-Boot
mailing list