From: Patrick DELAUNAY <patrick.delaunay@st.com>
To: u-boot@lists.denx.de
Subject: [PATCH v3 08/14] cmd: env: add env select command
Date: Tue, 30 Jun 2020 11:42:29 +0000 [thread overview]
Message-ID: <acd03330616d4fc6aa85d00e2e5082bb@SFHDAG6NODE3.st.com> (raw)
In-Reply-To: <20200626205447.GE8432@bill-the-cat>
Hi Tom
> From: Tom Rini <trini@konsulko.com>
> Sent: vendredi 26 juin 2020 22:55
>
> On Thu, Jun 25, 2020 at 09:59:52AM +0200, Patrick Delaunay wrote:
>
> > Add the new command 'env select' to force the persistent storage of
> > environment, saved in gd->env_load_prio.
> >
> > Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
> [snip]
> > + /* search priority by driver */
> > + for (prio = 0; (drv = env_driver_lookup(ENVOP_INIT, prio)); prio++) {
> > + if (entry->location == env_get_location(ENVOP_LOAD, prio)) {
> > + /* when priority change, reset the ENV flags */
> > + if (gd->env_load_prio != prio) {
> > + gd->env_load_prio = prio;
> > + gd->env_valid = ENV_INVALID;
> > + gd->flags &= ~GD_FLG_ENV_DEFAULT;
> > + }
> > + printf("OK\n");
> > + return 0;
> > + }
> > + }
>
> So, after we do this, is some follow up env command required to initialize the
> environment to now exist somewhere else? Or will we have initialized all
> configured locations during boot, and don't have to?
> But what will happen if we select say "nand" but it's not present so didn't init. Will
> things fail gracefully (not panic) ? Thanks!
I was not sure if a automatic load was needed in this command, as I add a sparate load command
in this patch I don't add an automatic load => and default env is used
My expected sequence for the env commands was:
env select <target>
env load
...
env save
when user try to select a not compiled backend the command return "driver not found"
(tested on sandbox, I will add unitary test for this point)
or when backend is not accessible by any priority, the select command return pritority not found
manual test on sandbox, with env_locations[] = { ENVL_NOWHERE };
=> env select EXT4
Select Environment on EXT4: priority not found
I don't think that abort can occur for other commands because
- the env backend for all priotity are initialized at boot (env_init use the same loop than env select)
- in all env function (env_load / env_reload / env_save it is tested again
(to check if the backend was correctly initilializaed, if .init() retur 0=
if (!env_has_inited(drv->location))
return -ENODEV;
- all direct acces (in env_get_char for example) are intercepted because gd->env_valid == ENV_INVALID
=> by default (without explicite reload) the default environent is used, exactly when the load failed.
=> "gd->env_addr" is never used
but user can also execute the sequence
env select <target>
env save
and here the command behavior is strange....
because the default is forced on each select
env select EXT4
env load
env select MMC (reset on default environment)
env save
=> I expect at the end of the sequence the EXT4 env was copied in MMC....
But in finally only the default environment is saved in MMC
I don't sure of the expected behavior by user for these commands....
what it is better solution ?
add a option to select command ?
force the load after the select ?
Patrick
next prev parent reply other threads:[~2020-06-30 11:42 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-25 7:59 [PATCH v3 00/14] env: ext4: corrections and add test for env in ext4 Patrick Delaunay
2020-06-25 7:59 ` [PATCH v3 01/14] env: add absolute path at CONFIG_ENV_EXT4_FILE Patrick Delaunay
2020-06-25 7:59 ` [PATCH v3 02/14] env: ext4: set gd->env_valid Patrick Delaunay
2020-06-25 7:59 ` [PATCH v3 03/14] env: sf: avoid space in backend name Patrick Delaunay
2020-06-26 20:54 ` Tom Rini
2020-06-25 7:59 ` [PATCH v3 04/14] env: correctly handle env_load_prio Patrick Delaunay
2020-06-26 20:55 ` Tom Rini
2020-06-25 7:59 ` [PATCH v3 05/14] env: nowhere: add .load ops Patrick Delaunay
2020-06-26 20:55 ` Tom Rini
2020-07-26 20:50 ` Tom Rini
2020-06-25 7:59 ` [PATCH v3 06/14] env: the ops driver load becomes mandatory in struct env_driver Patrick Delaunay
2020-06-26 20:55 ` Tom Rini
2020-06-25 7:59 ` [PATCH v3 07/14] cmd: env: add env load command Patrick Delaunay
2020-06-26 20:55 ` Tom Rini
2020-06-25 7:59 ` [PATCH v3 08/14] cmd: env: add env select command Patrick Delaunay
2020-06-26 20:54 ` Tom Rini
2020-06-30 11:42 ` Patrick DELAUNAY [this message]
2020-06-25 7:59 ` [PATCH v3 09/14] configs: sandbox: activate env in ext4 support Patrick Delaunay
2020-06-25 7:59 ` [PATCH v3 10/14] configs: sandbox: activate command env select and env load Patrick Delaunay
2020-06-25 7:59 ` [PATCH v3 11/14] test: environment in ext4 Patrick Delaunay
2020-07-06 21:53 ` Stephen Warren
2020-06-25 7:59 ` [PATCH v3 12/14] env: ext4: introduce new function env_ext4_save_buffer Patrick Delaunay
2020-06-25 7:59 ` [PATCH v3 13/14] env: ext4: add support of command env erase Patrick Delaunay
2020-06-25 7:59 ` [PATCH v3 14/14] test: sandbox: add test for erase command Patrick Delaunay
2020-07-06 21:54 ` Stephen Warren
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=acd03330616d4fc6aa85d00e2e5082bb@SFHDAG6NODE3.st.com \
--to=patrick.delaunay@st.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox