Message ID | 20201211185647.23655-1-philippe.reynes@softathome.com |
---|---|
State | Accepted |
Commit | 4d145f26dd06d9de0c2da3ff2c1f8be1ac9dbd2b |
Delegated to: | Tom Rini |
Headers | show |
Series | bootcount: allow to use this feature on TPL | expand |
On Fri, 11 Dec 2020 at 11:57, Philippe Reynes <philippe.reynes@softathome.com> wrote: > > This commit add an option TPL_BOOTCOUNT_LIMIT to > use bootcount on TPL. > > Signed-off-by: Philippe Reynes <philippe.reynes@softathome.com> > --- > common/spl/Kconfig | 9 ++++++++- > common/spl/spl.c | 4 +++- > drivers/Makefile | 1 + > include/bootcount.h | 6 +++--- > 4 files changed, 15 insertions(+), 5 deletions(-) Reviewed-by: Simon Glass <sjg@chromium.org> We really should have tests for this. We have a way of doing sandbox SPL unit tests now, but not for TPL. I suppose it would be fairly easy to add. > > diff --git a/common/spl/Kconfig b/common/spl/Kconfig > index d8086bd9e8..29c64ebb80 100644 > --- a/common/spl/Kconfig > +++ b/common/spl/Kconfig > @@ -177,7 +177,7 @@ config SPL_BOOTROM_SUPPORT > > config SPL_BOOTCOUNT_LIMIT > bool "Support bootcount in SPL" > - depends on SPL_ENV_SUPPORT > + depends on SPL_ENV_SUPPORT && !TPL_BOOTCOUNT_LIMIT > help > On some boards, which use 'falcon' mode, it is necessary to check > and increment the number of boot attempts. Such boards do not > @@ -1363,6 +1363,13 @@ config TPL_BOARD_INIT > spl_board_init() from board_init_r(). This function should be > provided by the board. > > +config TPL_BOOTCOUNT_LIMIT > + bool "Support bootcount in TPL" > + depends on TPL_ENV_SUPPORT > + help > + If this option is enabled, the TPL will support bootcount. > + For example, it may be useful to choose the device to boot. > + > config TPL_LDSCRIPT > string "Linker script for the TPL stage" > depends on TPL > diff --git a/common/spl/spl.c b/common/spl/spl.c > index 63c48fbf33..c432f14c29 100644 > --- a/common/spl/spl.c > +++ b/common/spl/spl.c > @@ -833,7 +833,9 @@ ulong spl_relocate_stack_gd(void) > #endif > } > > -#if defined(CONFIG_BOOTCOUNT_LIMIT) && !defined(CONFIG_SPL_BOOTCOUNT_LIMIT) > +#if defined(CONFIG_BOOTCOUNT_LIMIT) && \ > + ((!defined(CONFIG_TPL_BUILD) && !defined(CONFIG_SPL_BOOTCOUNT_LIMIT)) || \ > + (defined(CONFIG_TPL_BUILD) && !defined(CONFIG_TPL_BOOTCOUNT_LIMIT))) > void bootcount_store(ulong a) > { > } > diff --git a/drivers/Makefile b/drivers/Makefile > index e371bc32bb..c562a719f7 100644 > --- a/drivers/Makefile > +++ b/drivers/Makefile > @@ -69,6 +69,7 @@ endif > > ifdef CONFIG_TPL_BUILD > > +obj-$(CONFIG_TPL_BOOTCOUNT_LIMIT) += bootcount/ > obj-$(CONFIG_TPL_MPC8XXX_INIT_DDR_SUPPORT) += ddr/fsl/ > > endif > diff --git a/include/bootcount.h b/include/bootcount.h > index cd30403984..b1d1fe53d1 100644 > --- a/include/bootcount.h > +++ b/include/bootcount.h > @@ -69,7 +69,7 @@ void bootcount_store(ulong); > */ > ulong bootcount_load(void); > > -#if defined(CONFIG_SPL_BOOTCOUNT_LIMIT) || defined(CONFIG_BOOTCOUNT_LIMIT) > +#if defined(CONFIG_SPL_BOOTCOUNT_LIMIT) || defined(CONFIG_TPL_BOOTCOUNT_LIMIT) || defined(CONFIG_BOOTCOUNT_LIMIT) > > #if !defined(CONFIG_SYS_BOOTCOUNT_LE) && !defined(CONFIG_SYS_BOOTCOUNT_BE) > # if __BYTE_ORDER == __LITTLE_ENDIAN > @@ -130,7 +130,7 @@ static inline void bootcount_inc(void) > > #ifndef CONFIG_SPL_BUILD > /* Only increment bootcount when no bootcount support in SPL */ > -#ifndef CONFIG_SPL_BOOTCOUNT_LIMIT > +#if !defined(CONFIG_SPL_BOOTCOUNT_LIMIT) && !defined(CONFIG_TPL_BOOTCOUNT_LIMIT) > bootcount_store(++bootcount); > #endif > env_set_ulong("bootcount", bootcount); > @@ -140,5 +140,5 @@ static inline void bootcount_inc(void) > #else > static inline int bootcount_error(void) { return 0; } > static inline void bootcount_inc(void) {} > -#endif /* CONFIG_SPL_BOOTCOUNT_LIMIT || CONFIG_BOOTCOUNT_LIMIT */ > +#endif /* CONFIG_SPL_BOOTCOUNT_LIMIT || CONFIG_TPL_BOOTCOUNT_LIMIT || CONFIG_BOOTCOUNT_LIMIT */ > #endif /* _BOOTCOUNT_H__ */ > -- > 2.17.1 >
On Fri, Dec 11, 2020 at 07:56:47PM +0100, Philippe Reynes wrote: > This commit add an option TPL_BOOTCOUNT_LIMIT to > use bootcount on TPL. > > Signed-off-by: Philippe Reynes <philippe.reynes@softathome.com> > Reviewed-by: Simon Glass <sjg@chromium.org> Applied to u-boot/master, thanks!
diff --git a/common/spl/Kconfig b/common/spl/Kconfig index d8086bd9e8..29c64ebb80 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -177,7 +177,7 @@ config SPL_BOOTROM_SUPPORT config SPL_BOOTCOUNT_LIMIT bool "Support bootcount in SPL" - depends on SPL_ENV_SUPPORT + depends on SPL_ENV_SUPPORT && !TPL_BOOTCOUNT_LIMIT help On some boards, which use 'falcon' mode, it is necessary to check and increment the number of boot attempts. Such boards do not @@ -1363,6 +1363,13 @@ config TPL_BOARD_INIT spl_board_init() from board_init_r(). This function should be provided by the board. +config TPL_BOOTCOUNT_LIMIT + bool "Support bootcount in TPL" + depends on TPL_ENV_SUPPORT + help + If this option is enabled, the TPL will support bootcount. + For example, it may be useful to choose the device to boot. + config TPL_LDSCRIPT string "Linker script for the TPL stage" depends on TPL diff --git a/common/spl/spl.c b/common/spl/spl.c index 63c48fbf33..c432f14c29 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -833,7 +833,9 @@ ulong spl_relocate_stack_gd(void) #endif } -#if defined(CONFIG_BOOTCOUNT_LIMIT) && !defined(CONFIG_SPL_BOOTCOUNT_LIMIT) +#if defined(CONFIG_BOOTCOUNT_LIMIT) && \ + ((!defined(CONFIG_TPL_BUILD) && !defined(CONFIG_SPL_BOOTCOUNT_LIMIT)) || \ + (defined(CONFIG_TPL_BUILD) && !defined(CONFIG_TPL_BOOTCOUNT_LIMIT))) void bootcount_store(ulong a) { } diff --git a/drivers/Makefile b/drivers/Makefile index e371bc32bb..c562a719f7 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -69,6 +69,7 @@ endif ifdef CONFIG_TPL_BUILD +obj-$(CONFIG_TPL_BOOTCOUNT_LIMIT) += bootcount/ obj-$(CONFIG_TPL_MPC8XXX_INIT_DDR_SUPPORT) += ddr/fsl/ endif diff --git a/include/bootcount.h b/include/bootcount.h index cd30403984..b1d1fe53d1 100644 --- a/include/bootcount.h +++ b/include/bootcount.h @@ -69,7 +69,7 @@ void bootcount_store(ulong); */ ulong bootcount_load(void); -#if defined(CONFIG_SPL_BOOTCOUNT_LIMIT) || defined(CONFIG_BOOTCOUNT_LIMIT) +#if defined(CONFIG_SPL_BOOTCOUNT_LIMIT) || defined(CONFIG_TPL_BOOTCOUNT_LIMIT) || defined(CONFIG_BOOTCOUNT_LIMIT) #if !defined(CONFIG_SYS_BOOTCOUNT_LE) && !defined(CONFIG_SYS_BOOTCOUNT_BE) # if __BYTE_ORDER == __LITTLE_ENDIAN @@ -130,7 +130,7 @@ static inline void bootcount_inc(void) #ifndef CONFIG_SPL_BUILD /* Only increment bootcount when no bootcount support in SPL */ -#ifndef CONFIG_SPL_BOOTCOUNT_LIMIT +#if !defined(CONFIG_SPL_BOOTCOUNT_LIMIT) && !defined(CONFIG_TPL_BOOTCOUNT_LIMIT) bootcount_store(++bootcount); #endif env_set_ulong("bootcount", bootcount); @@ -140,5 +140,5 @@ static inline void bootcount_inc(void) #else static inline int bootcount_error(void) { return 0; } static inline void bootcount_inc(void) {} -#endif /* CONFIG_SPL_BOOTCOUNT_LIMIT || CONFIG_BOOTCOUNT_LIMIT */ +#endif /* CONFIG_SPL_BOOTCOUNT_LIMIT || CONFIG_TPL_BOOTCOUNT_LIMIT || CONFIG_BOOTCOUNT_LIMIT */ #endif /* _BOOTCOUNT_H__ */
This commit add an option TPL_BOOTCOUNT_LIMIT to use bootcount on TPL. Signed-off-by: Philippe Reynes <philippe.reynes@softathome.com> --- common/spl/Kconfig | 9 ++++++++- common/spl/spl.c | 4 +++- drivers/Makefile | 1 + include/bootcount.h | 6 +++--- 4 files changed, 15 insertions(+), 5 deletions(-)