Re: [PATCH v2 01/10] spl: Decide about Falcon mode boot only once
Alexey Charkov <[email protected]> Tue, 4 Aug 2026 17:29:11 +0400
| Newsgroups | gmane.comp.boot-loaders.u-boot |
|---|---|
| Message-ID | <CAKTNdwHaxhnCy22VPMNnGo9Z=p3DF6zmQ8ixR-EsOpb9crO=Dw@mail.gmail.com> |
Hi Simon, On Tue, Aug 4, 2026 at 5:02=E2=80=AFPM Simon Glass <[email protected]> wrote= : > > Hi Alexey, > > On 2026-07-31T17:10:44, Alexey Charkov <[email protected]> wrote: > > spl: Decide about Falcon mode boot only once > > > > Board implementations of spl_start_uboot() are not required to be > > idempotent - the documented examples sample a GPIO or read a character > > from the SPL console - so calling it more than once can yield different > > answers. > > > > Add spl_falcon_boot(), which calls spl_start_uboot() at most once and > > caches the result. > > > > Signed-off-by: Alexey Charkov <[email protected]> > > > > common/spl/spl.c | 18 ++++++++++++++++++ > > include/spl.h | 11 +++++++++++ > > 2 files changed, 29 insertions(+) > > > diff --git a/common/spl/spl.c b/common/spl/spl.c > > @@ -105,6 +105,24 @@ __weak int spl_start_uboot(void) > > +bool spl_falcon_boot(void) > > +{ > > + static int falcon =3D -1; > > + > > + if (falcon < 0) > > + falcon =3D !spl_start_uboot(); > > + > > + return falcon; > > +} > > Every existing loader (spl_mmc.c, spl_nand.c, etc.) still calls > spl_start_uboot() directly, so the mismatch you describe is still > possible on any of those paths when combined with spl_invoke_atf() - a > button released between the loader's call and spl_falcon_boot() in > spl_atf.c will produce exactly the disagreement this helper is meant > to prevent. Please convert the existing call sites as part of this > patch (or at least the ones on the ATF path), so the caching actually > delivers the guarantee. Alright, will do. I only personally tested the UFS and Maskrom boot-from-RAM, but happy to convert other callers as it doesn't seem to have downsides. > > diff --git a/common/spl/spl.c b/common/spl/spl.c > > @@ -105,6 +105,24 @@ __weak int spl_start_uboot(void) > > +bool spl_falcon_boot(void) > > +{ > > + static int falcon =3D -1; > > Minor - since the return type is bool, I'd find it cleaner to use two > bools (result and 'decided'), or an enum, rather than overloading an > int with a -1 sentinel. It also keeps the value out of .data, which > matters a little in SPL. Sounds good, will adjust in the next version. Thanks a lot! Best regards, Alexey