[U-Boot] [PATCH v1 3/5] bootcount: u-boot: Do not increment bootcount if already done in SPL

Tom Rini trini at konsulko.com
Mon Feb 26 15:00:52 UTC 2018


On Mon, Feb 26, 2018 at 03:53:18PM +0100, Lukasz Majewski wrote:
> Hi Tom,
> 
> > On Mon, Feb 26, 2018 at 01:22:44PM +0100, Lukasz Majewski wrote:
> > 
> > > If the CONFIG_SPL_BOOTCOUNT_LIMIT is defined, the bootcount
> > > variable is already incremented after each boot attempt.
> > > 
> > > For that reason we shall not increment it again in u-boot.
> > > 
> > > Signed-off-by: Lukasz Majewski <lukma at denx.de>
> > > ---
> > > 
> > >  common/autoboot.c | 2 ++
> > >  1 file changed, 2 insertions(+)
> > > 
> > > diff --git a/common/autoboot.c b/common/autoboot.c
> > > index 2eef7a04cc..87fca2ea92 100644
> > > --- a/common/autoboot.c
> > > +++ b/common/autoboot.c
> > > @@ -298,7 +298,9 @@ const char *bootdelay_process(void)
> > >  
> > >  #ifdef CONFIG_BOOTCOUNT_LIMIT
> > >  	bootcount = bootcount_load();
> > > +#ifndef CONFIG_SPL_BOOTCOUNT_LIMIT
> > >  	bootcount++;
> > > +#endif
> > >  	bootcount_store(bootcount);
> > >  	env_set_ulong("bootcount", bootcount);
> > >  	bootlimit = env_get_ulong("bootlimit", 10, 0);  
> > 
> > Shouldn't we make the whole bit of code here depend on
> > !CONFIG_SPL_BOOTCOUNT_LIMIT ?  
> 
> Maybe I will try to present the scenario:
> 
> - We do use SPL to boot from either eMMC (if in falcon) or from SPI-NOR
>   (if not in falcon)
> 
> - With bootcount:
> 	-- We may want to boot into eMMC directly, so we need to
> 	increment the bootcount (no matter where it is located).
> 
> 	-- We intentionally (by setting other env variable) or not (by
> 	entering X resets) abort falcon mode boot from SPL and boot to
> 	u-boot (which is in spi-nor).
> 	In this case we do need all the bootcount limit functionality
> 	(i.e. altbootcmd) excluding increment bootcount (as it was
> 	done in SPL).
> 	
> +#ifndef CONFIG_SPL_BOOTCOUNT_LIMIT is only required to achieve this
> goal without making any more code change...

And you have one build that produces the binaries used in both cases,
OK.

> > Or for that matter, re-work the first
> > patch to instead be:
> > bool SUPPORT_BOOTCOUNT "Support bootcount in some way"
> > choice "Bootcount location"
> > bool SPL_BOOTCOUNT_LIMIT "Count boots from POV of SPL"
> > bool BOOTCOUNT_LIMIT "Count boots from POV of full U-Boot"
> > endchoice
> 
> But then SPL_BOOTCOUNT_LIMIT would select BOOTCOUNT_LIMIT to fulfil the
> above scenario.
> 
> > 
> > ?  Looking back at my old series from 2014 to do this, I just had a
> > big warning saying you need to enable bootcount for SPL or for full
> > U-Boot so you would never set BOOTCOUNT_LIMIT if doing SPL bootcount
> > instead.
> 
> Such functionality can be achieved with SPL_BOOTCOUNT_LIMIT depending
> on BOOTCOUNT_LIMIT.
> 
> If SPL_BOOTCOUNT_LIMIT selected, then "[PATCH v1 3/5] bootcount: u-boot:
> Do not increment bootcount if already done in SPL" does its job.

OK, I expect that once this code comes in, it might get complicated a
bit further by other use cases.  But I don't have a specific example I'm
going to implement currently, so I'm OK moving forward here and
expanding it as other cases come up.  Thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180226/ccbcfa8a/attachment.sig>


More information about the U-Boot mailing list