[U-Boot] [PATCHv2 5/5] env: Finish migration of common ENV options
Tom Rini
trini at konsulko.com
Wed Nov 20 19:56:19 UTC 2019
On Wed, Nov 20, 2019 at 08:39:27PM +0100, Simon Goldschmidt wrote:
> Am 19.11.2019 um 22:52 schrieb Tom Rini:
> > On Tue, Nov 19, 2019 at 10:39:18PM +0100, Simon Goldschmidt wrote:
> > > Am 19.11.2019 um 02:02 schrieb Tom Rini:> - In ARMv8 NXP Layerscape
> > > platforms we also need to make use of
> > > > CONFIG_SYS_RELOC_GD_ENV_ADDR now, do so.
> > > > - On ENV_IS_IN_REMOTE, CONFIG_ENV_OFFSET is never used, drop the define
> > > > to 0.
> > > > - Add Kconfig entry for ENV_ADDR.
> > > > - Make ENV_ADDR / ENV_OFFSET depend on the env locations that use it.
> > > > - Add ENV_xxx_REDUND options that depend on their primary option and
> > > > SYS_REDUNDAND_ENVIRONMENT
> > > > - On a number of PowerPC platforms, use SPL_ENV_ADDR not CONFIG_ENV_ADDR
> > > > for the pre-main-U-Boot environment location.
> > > > - On ENV_IS_IN_SPI_FLASH, check not for CONFIG_ENV_ADDR being set but
> > > > rather it being non-zero, as it will now be zero by default.
> > > > - Rework the env_offset absolute in env/embedded.o to not use
> > > > CONFIG_ENV_OFFSET as it was the only use of ENV_OFFSET within
> > > > ENV_IS_IN_FLASH.
> > > > - Migrate all platforms.
> > > >
> > > > Cc: Wolfgang Denk <wd at denx.de>
> > > > Cc: Joe Hershberger <joe.hershberger at ni.com>
> > > > Cc: Patrick Delaunay <patrick.delaunay at st.com>
> > > > Cc: uboot-stm32 at st-md-mailman.stormreply.com
> > > > Signed-off-by: Tom Rini <trini at konsulko.com>
> > > > ---
> > >
> > > <snip>
> > >
> > > > diff --git a/include/configs/socfpga_common.h
> > > b/include/configs/socfpga_common.h
> > > > index baa214399ff9..05bfef75c0df 100644
> > > > --- a/include/configs/socfpga_common.h
> > > > +++ b/include/configs/socfpga_common.h
> > > > @@ -157,21 +157,13 @@ unsigned int cm_get_qspi_controller_clk_hz(void);
> > > > /*
> > > > * U-Boot environment
> > > > */
> > > > -#if !defined(CONFIG_ENV_SIZE)
> > > > -#define CONFIG_ENV_SIZE (8 * 1024)
> > > > -#endif
> > > >
> > > > /* Environment for SDMMC boot */
> > > > -#if defined(CONFIG_ENV_IS_IN_MMC) && !defined(CONFIG_ENV_OFFSET)
> > > > +#if defined(CONFIG_ENV_IS_IN_MMC)
> > > > #define CONFIG_SYS_MMC_ENV_DEV 0 /* device 0 */
> > > > -#define CONFIG_ENV_OFFSET (34 * 512) /* just after the GPT */
> > > > #endif
> > > >
> > > > /* Environment for QSPI boot */
> > > > -#if defined(CONFIG_ENV_IS_IN_SPI_FLASH) && !defined(CONFIG_ENV_OFFSET)
> > > > -#define CONFIG_ENV_OFFSET 0x00100000
> > > > -#define CONFIG_ENV_SECT_SIZE (64 * 1024)
> > > > -#endif
> > >
> > > Removing paragraphs like this one will break configs that haven't made it to
> > > a mainline defconfig. E.g. for socfpga_socrates_defconfig, you can chose for
> > > the ENV to be saved in SPI instead of MMC as the config supports booting
> > > from all sources.
> > >
> > > How do we proceed with such things? I know that might be non-mainline, but I
> > > think throwing this info away is a step-back, not an improvement.
> > >
> > > [And don't get me wrong: this doesn't affect my downstream boards, they
> > > don't save/load env due to secure boot reasons anyway.]
> >
> > So, I would be happy to see follow up series that add default values for
> > locations for various SoCs. That would address the type of problem
> > you're talking about, I believe.
>
> You mean adding lines like this to env/Kconfig at config ENV_OFFSET
> default 0x00100000 if ARCH_SOCFPGA && ENV_IS_IN_SPI_FLASH
>
> Does that even work? And how well does it scale? I know it's a more
> fundamental problem, but in my opinion, scattering those defaults for every
> arch or board throughout all Kconfig files is not the best solution.
> Although I have to admit I don't have an idea of how to solve it better
> right now...
That does work, it's about what we do for other platforms today, it's
not the best and doesn't scale well.
> > I'd be even happier if someone looked at how Zephyr takes a dts file and
> > generates a header and adapt that to a way for us to have some values be
> > read from a dts* file and turned into a define we can use at build time
> > (not just the OF_PLAT data). That would be a real nice step forward :)
> >
>
> If we have that ENV information in the devicetree, we could just use it and
> dump the defines. No need to convert dts to defines beforehand. Only if dts
> cannot be used, we need something different. But in that case (mostly real
> small SPL, I guess), do we really enable the ENV loading code?
I mention the above mainly because there's a lot of other examples of
this type of problem where yes, we can put a value in Kconfig and have a
default but it's really not the best way forward.
> Anyway, thinking this over, I don't see a way out to keep the SPI env
> locations for socfpga when moving to Kconfig, so for socfpga:
>
> Reviewed-by: Simon Goldschmidt <simon.k.r.goldschmidt at gmail.com>
Thanks!
> BTW: From looking at the include/configs/* changes, CONFIG_SYS_MMC_ENV_DEV
> could be moved to Kconfig, too...
Yes, there's a bunch of other changes that could/should be moved as
well. I'm going down this particular rabbit hole so that I can take the
MTD Makefile/Kconfig clean-up and verify that those changes are still
size neutral. I want to circle back to the env stuff to change a few
things soon including seeing about getting the rest of the easy
migrations done.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20191120/126ade6b/attachment.sig>
More information about the U-Boot
mailing list