Message ID | 30ac99c8d9f378683fd436cf56a738561c870c29.1516723179.git-series.maxime.ripard@free-electrons.com |
---|---|
State | Accepted |
Commit | fb69464eae1ec5aed2ee0e3a9e5533a31ad38bac |
Headers | show |
Series | env: Multiple env support and env transition for sunxi | expand |
On Tue, Jan 23, 2018 at 09:17:01PM +0100, Maxime Ripard wrote: > Now that we have everything in place in the code, let's allow to build > multiple environments backend through Kconfig. > > Reviewed-by: Andre Przywara <andre.przywara@arm.com> > Reviewed-by: Lukasz Majewski <lukma@denx.de> > Reviewed-by: Simon Glass <sjg@chromium.org> > Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Applied to u-boot/master, thanks! -- Tom
On 23.01.2018 21:17, Maxime Ripard wrote: > Now that we have everything in place in the code, let's allow to build > multiple environments backend through Kconfig. > > Reviewed-by: Andre Przywara <andre.przywara@arm.com> > Reviewed-by: Lukasz Majewski <lukma@denx.de> > Reviewed-by: Simon Glass <sjg@chromium.org> > Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> I get a build error when enabling CONFIG_ENV_IS_IN_SPI_FLASH and CONFIG_ENV_IS_IN_MMC at the same time. The build error is in host tools, not in U-Boot or SPL itself. In fact, this is not specific to CONFIG_ENV_IS_IN_SPI_FLASH but to the combination of CONFIG_ENV_IS_IN_MMC and any of the environments marked as ENVCRC- in tools/Makefile. The actual error is that the compiler does not know standard types in efi.h and mmc.h, e.g.: In file included from include/blk.h:11:0, from include/part.h:10, from include/mmc.h:16, from include/environment.h:168, from ./tools/../env/embedded.c:16, from tools/env/embedded.c:2: include/efi.h:32:2: error: unknown type name ‘u8’ u8 b[16]; ^~ I can't think of a correct fix right now... Simon > --- > configs/MPC8313ERDB_NAND_33_defconfig | 1 +- > configs/MPC8313ERDB_NAND_66_defconfig | 1 +- > configs/cl-som-imx7_defconfig | 1 +- > configs/microblaze-generic_defconfig | 1 +- > env/Kconfig | 65 +++++++++++++--------------- > 5 files changed, 35 insertions(+), 34 deletions(-) > > diff --git a/configs/MPC8313ERDB_NAND_33_defconfig b/configs/MPC8313ERDB_NAND_33_defconfig > index 823001583447..b761516d126a 100644 > --- a/configs/MPC8313ERDB_NAND_33_defconfig > +++ b/configs/MPC8313ERDB_NAND_33_defconfig > @@ -22,6 +22,7 @@ CONFIG_CMD_DATE=y > CONFIG_CMD_MTDPARTS=y > CONFIG_MTDIDS_DEFAULT="nand0=e2800000.flash" > CONFIG_MTDPARTS_DEFAULT="mtdparts=e2800000.flash:512k(uboot),128k(env),6m@1m(kernel),-(fs)" > +# CONFIG_ENV_IS_IN_FLASH is not set > CONFIG_ENV_IS_IN_NAND=y > # CONFIG_MMC is not set > CONFIG_MTD_NOR_FLASH=y > diff --git a/configs/MPC8313ERDB_NAND_66_defconfig b/configs/MPC8313ERDB_NAND_66_defconfig > index 2639926ab814..0f2a675ae2cf 100644 > --- a/configs/MPC8313ERDB_NAND_66_defconfig > +++ b/configs/MPC8313ERDB_NAND_66_defconfig > @@ -22,6 +22,7 @@ CONFIG_CMD_DATE=y > CONFIG_CMD_MTDPARTS=y > CONFIG_MTDIDS_DEFAULT="nand0=e2800000.flash" > CONFIG_MTDPARTS_DEFAULT="mtdparts=e2800000.flash:512k(uboot),128k(env),6m@1m(kernel),-(fs)" > +# CONFIG_ENV_IS_IN_FLASH is not set > CONFIG_ENV_IS_IN_NAND=y > # CONFIG_MMC is not set > CONFIG_MTD_NOR_FLASH=y > diff --git a/configs/cl-som-imx7_defconfig b/configs/cl-som-imx7_defconfig > index d37c82cafac1..0c93159032e5 100644 > --- a/configs/cl-som-imx7_defconfig > +++ b/configs/cl-som-imx7_defconfig > @@ -41,6 +41,7 @@ CONFIG_CMD_EXT4=y > CONFIG_CMD_EXT4_WRITE=y > CONFIG_CMD_FAT=y > CONFIG_CMD_FS_GENERIC=y > +# CONFIG_ENV_IS_IN_MMC is not set > CONFIG_ENV_IS_IN_SPI_FLASH=y > CONFIG_SPI_FLASH=y > CONFIG_SPI_FLASH_STMICRO=y > diff --git a/configs/microblaze-generic_defconfig b/configs/microblaze-generic_defconfig > index 5254c0da790a..cc80e8a027c8 100644 > --- a/configs/microblaze-generic_defconfig > +++ b/configs/microblaze-generic_defconfig > @@ -40,7 +40,6 @@ CONFIG_CMD_UBI=y > # CONFIG_CMD_UBIFS is not set > CONFIG_SPL_OF_CONTROL=y > CONFIG_OF_EMBED=y > -CONFIG_ENV_IS_IN_FLASH=y > CONFIG_NETCONSOLE=y > CONFIG_SPL_DM=y > CONFIG_MTD_NOR_FLASH=y > diff --git a/env/Kconfig b/env/Kconfig > index ad5ccc253762..6e2fbf416c12 100644 > --- a/env/Kconfig > +++ b/env/Kconfig > @@ -1,38 +1,18 @@ > menu "Environment" > > -choice > - prompt "Select the location of the environment" > - default ENV_IS_IN_MMC if ARCH_SUNXI > - default ENV_IS_IN_MMC if ARCH_EXYNOS4 > - default ENV_IS_IN_MMC if MX6SX || MX7D > - default ENV_IS_IN_MMC if TEGRA30 || TEGRA124 > - default ENV_IS_IN_MMC if TEGRA_ARMV8_COMMON > - default ENV_IS_IN_FLASH if ARCH_CINTEGRATOR > - default ENV_IS_IN_FLASH if ARCH_INTEGRATOR_CP > - default ENV_IS_IN_FLASH if M548x || M547x || M5282 || MCF547x_8x > - default ENV_IS_IN_FLASH if MCF532x || MCF52x2 > - default ENV_IS_IN_FLASH if MPC86xx || MPC83xx > - default ENV_IS_IN_FLASH if ARCH_MPC8572 || ARCH_MPC8548 || ARCH_MPC8641 > - default ENV_IS_IN_FLASH if SH && !CPU_SH4 > - default ENV_IS_IN_SPI_FLASH if ARMADA_XP > - default ENV_IS_IN_SPI_FLASH if INTEL_BAYTRAIL > - default ENV_IS_IN_SPI_FLASH if INTEL_BRASWELL > - default ENV_IS_IN_SPI_FLASH if INTEL_BROADWELL > - default ENV_IS_IN_SPI_FLASH if NORTHBRIDGE_INTEL_IVYBRIDGE > - default ENV_IS_IN_SPI_FLASH if INTEL_QUARK > - default ENV_IS_IN_SPI_FLASH if INTEL_QUEENSBAY > - default ENV_IS_IN_FAT if ARCH_BCM283X > - default ENV_IS_IN_FAT if MMC_OMAP_HS && TI_COMMON_CMD_OPTIONS > - default ENV_IS_NOWHERE > - help > - At present the environment can be stored in only one place. Use this > - option to select the location. This is either a device (where the > - environemnt information is simply written to a fixed location or > - partition on the device) or a filesystem (where the environment > - information is written to a file). > - > config ENV_IS_NOWHERE > bool "Environment is not stored" > + depends on !ENV_IS_IN_EEPROM > + depends on !ENV_IS_IN_FAT > + depends on !ENV_IS_IN_FLASH > + depends on !ENV_IS_IN_MMC > + depends on !ENV_IS_IN_NAND > + depends on !ENV_IS_IN_NVRAM > + depends on !ENV_IS_IN_ONENAND > + depends on !ENV_IS_IN_REMOTE > + depends on !ENV_IS_IN_SPI_FLASH > + depends on !ENV_IS_IN_UBI > + default y > help > Define this if you don't want to or can't have an environment stored > on a storage medium. In this case the environemnt will still exist > @@ -74,6 +54,8 @@ config ENV_IS_IN_EEPROM > config ENV_IS_IN_FAT > bool "Environment is in a FAT filesystem" > depends on !CHAIN_OF_TRUST > + default y if ARCH_BCM283X > + default y if MMC_OMAP_HS && TI_COMMON_CMD_OPTIONS > select FAT_WRITE > help > Define this if you want to use the FAT file system for the environment. > @@ -84,6 +66,13 @@ config ENV_IS_IN_FAT > config ENV_IS_IN_FLASH > bool "Environment in flash memory" > depends on !CHAIN_OF_TRUST > + default y if ARCH_CINTEGRATOR > + default y if ARCH_INTEGRATOR_CP > + default y if M548x || M547x || M5282 || MCF547x_8x > + default y if MCF532x || MCF52x2 > + default y if MPC86xx || MPC83xx > + default y if ARCH_MPC8572 || ARCH_MPC8548 || ARCH_MPC8641 > + default y if SH && !CPU_SH4 > help > Define this if you have a flash device which you want to use for the > environment. > @@ -157,6 +146,11 @@ config ENV_IS_IN_MMC > bool "Environment in an MMC device" > depends on !CHAIN_OF_TRUST > depends on MMC > + default y if ARCH_SUNXI > + default y if ARCH_EXYNOS4 > + default y if MX6SX || MX7D > + default y if TEGRA30 || TEGRA124 > + default y if TEGRA_ARMV8_COMMON > help > Define this if you have an MMC device which you want to use for the > environment. > @@ -294,6 +288,13 @@ config ENV_IS_IN_REMOTE > config ENV_IS_IN_SPI_FLASH > bool "Environment is in SPI flash" > depends on !CHAIN_OF_TRUST > + default y if ARMADA_XP > + default y if INTEL_BAYTRAIL > + default y if INTEL_BRASWELL > + default y if INTEL_BROADWELL > + default y if NORTHBRIDGE_INTEL_IVYBRIDGE > + default y if INTEL_QUARK > + default y if INTEL_QUEENSBAY > help > Define this if you have a SPI Flash memory device which you > want to use for the environment. > @@ -359,8 +360,6 @@ config ENV_IS_IN_UBI > You will probably want to define these to avoid a really noisy system > when storing the env in UBI. > > -endchoice > - > config ENV_FAT_INTERFACE > string "Name of the block device for the environment" > depends on ENV_IS_IN_FAT
On Thu, Feb 01, 2018 at 11:06:14AM +0100, Simon Goldschmidt wrote: > On 23.01.2018 21:17, Maxime Ripard wrote: > > Now that we have everything in place in the code, let's allow to build > > multiple environments backend through Kconfig. > > > > Reviewed-by: Andre Przywara <andre.przywara@arm.com> > > Reviewed-by: Lukasz Majewski <lukma@denx.de> > > Reviewed-by: Simon Glass <sjg@chromium.org> > > Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> > > I get a build error when enabling CONFIG_ENV_IS_IN_SPI_FLASH and > CONFIG_ENV_IS_IN_MMC at the same time. Is that happening in any of the current defconfig right now? Or is it only when you add more environments? > The build error is in host tools, not in U-Boot or SPL itself. In fact, this > is not specific to CONFIG_ENV_IS_IN_SPI_FLASH but to the combination of > CONFIG_ENV_IS_IN_MMC and any of the environments marked as ENVCRC- in > tools/Makefile. > > The actual error is that the compiler does not know standard types in efi.h > and mmc.h, e.g.: > In file included from include/blk.h:11:0, > from include/part.h:10, > from include/mmc.h:16, > from include/environment.h:168, > from ./tools/../env/embedded.c:16, > from tools/env/embedded.c:2: > include/efi.h:32:2: error: unknown type name ‘u8’ > u8 b[16]; > ^~ > > I can't think of a correct fix right now... I'm not sure what it could be either, that file looks like it would need a quite big rework, in order to be able to operate properly. Do you actually need those? Maybe we can just disable those in Kconfig to forbid such a combination? Maxime -- Maxime Ripard, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering http://bootlin.com
diff --git a/configs/MPC8313ERDB_NAND_33_defconfig b/configs/MPC8313ERDB_NAND_33_defconfig index 823001583447..b761516d126a 100644 --- a/configs/MPC8313ERDB_NAND_33_defconfig +++ b/configs/MPC8313ERDB_NAND_33_defconfig @@ -22,6 +22,7 @@ CONFIG_CMD_DATE=y CONFIG_CMD_MTDPARTS=y CONFIG_MTDIDS_DEFAULT="nand0=e2800000.flash" CONFIG_MTDPARTS_DEFAULT="mtdparts=e2800000.flash:512k(uboot),128k(env),6m@1m(kernel),-(fs)" +# CONFIG_ENV_IS_IN_FLASH is not set CONFIG_ENV_IS_IN_NAND=y # CONFIG_MMC is not set CONFIG_MTD_NOR_FLASH=y diff --git a/configs/MPC8313ERDB_NAND_66_defconfig b/configs/MPC8313ERDB_NAND_66_defconfig index 2639926ab814..0f2a675ae2cf 100644 --- a/configs/MPC8313ERDB_NAND_66_defconfig +++ b/configs/MPC8313ERDB_NAND_66_defconfig @@ -22,6 +22,7 @@ CONFIG_CMD_DATE=y CONFIG_CMD_MTDPARTS=y CONFIG_MTDIDS_DEFAULT="nand0=e2800000.flash" CONFIG_MTDPARTS_DEFAULT="mtdparts=e2800000.flash:512k(uboot),128k(env),6m@1m(kernel),-(fs)" +# CONFIG_ENV_IS_IN_FLASH is not set CONFIG_ENV_IS_IN_NAND=y # CONFIG_MMC is not set CONFIG_MTD_NOR_FLASH=y diff --git a/configs/cl-som-imx7_defconfig b/configs/cl-som-imx7_defconfig index d37c82cafac1..0c93159032e5 100644 --- a/configs/cl-som-imx7_defconfig +++ b/configs/cl-som-imx7_defconfig @@ -41,6 +41,7 @@ CONFIG_CMD_EXT4=y CONFIG_CMD_EXT4_WRITE=y CONFIG_CMD_FAT=y CONFIG_CMD_FS_GENERIC=y +# CONFIG_ENV_IS_IN_MMC is not set CONFIG_ENV_IS_IN_SPI_FLASH=y CONFIG_SPI_FLASH=y CONFIG_SPI_FLASH_STMICRO=y diff --git a/configs/microblaze-generic_defconfig b/configs/microblaze-generic_defconfig index 5254c0da790a..cc80e8a027c8 100644 --- a/configs/microblaze-generic_defconfig +++ b/configs/microblaze-generic_defconfig @@ -40,7 +40,6 @@ CONFIG_CMD_UBI=y # CONFIG_CMD_UBIFS is not set CONFIG_SPL_OF_CONTROL=y CONFIG_OF_EMBED=y -CONFIG_ENV_IS_IN_FLASH=y CONFIG_NETCONSOLE=y CONFIG_SPL_DM=y CONFIG_MTD_NOR_FLASH=y diff --git a/env/Kconfig b/env/Kconfig index ad5ccc253762..6e2fbf416c12 100644 --- a/env/Kconfig +++ b/env/Kconfig @@ -1,38 +1,18 @@ menu "Environment" -choice - prompt "Select the location of the environment" - default ENV_IS_IN_MMC if ARCH_SUNXI - default ENV_IS_IN_MMC if ARCH_EXYNOS4 - default ENV_IS_IN_MMC if MX6SX || MX7D - default ENV_IS_IN_MMC if TEGRA30 || TEGRA124 - default ENV_IS_IN_MMC if TEGRA_ARMV8_COMMON - default ENV_IS_IN_FLASH if ARCH_CINTEGRATOR - default ENV_IS_IN_FLASH if ARCH_INTEGRATOR_CP - default ENV_IS_IN_FLASH if M548x || M547x || M5282 || MCF547x_8x - default ENV_IS_IN_FLASH if MCF532x || MCF52x2 - default ENV_IS_IN_FLASH if MPC86xx || MPC83xx - default ENV_IS_IN_FLASH if ARCH_MPC8572 || ARCH_MPC8548 || ARCH_MPC8641 - default ENV_IS_IN_FLASH if SH && !CPU_SH4 - default ENV_IS_IN_SPI_FLASH if ARMADA_XP - default ENV_IS_IN_SPI_FLASH if INTEL_BAYTRAIL - default ENV_IS_IN_SPI_FLASH if INTEL_BRASWELL - default ENV_IS_IN_SPI_FLASH if INTEL_BROADWELL - default ENV_IS_IN_SPI_FLASH if NORTHBRIDGE_INTEL_IVYBRIDGE - default ENV_IS_IN_SPI_FLASH if INTEL_QUARK - default ENV_IS_IN_SPI_FLASH if INTEL_QUEENSBAY - default ENV_IS_IN_FAT if ARCH_BCM283X - default ENV_IS_IN_FAT if MMC_OMAP_HS && TI_COMMON_CMD_OPTIONS - default ENV_IS_NOWHERE - help - At present the environment can be stored in only one place. Use this - option to select the location. This is either a device (where the - environemnt information is simply written to a fixed location or - partition on the device) or a filesystem (where the environment - information is written to a file). - config ENV_IS_NOWHERE bool "Environment is not stored" + depends on !ENV_IS_IN_EEPROM + depends on !ENV_IS_IN_FAT + depends on !ENV_IS_IN_FLASH + depends on !ENV_IS_IN_MMC + depends on !ENV_IS_IN_NAND + depends on !ENV_IS_IN_NVRAM + depends on !ENV_IS_IN_ONENAND + depends on !ENV_IS_IN_REMOTE + depends on !ENV_IS_IN_SPI_FLASH + depends on !ENV_IS_IN_UBI + default y help Define this if you don't want to or can't have an environment stored on a storage medium. In this case the environemnt will still exist @@ -74,6 +54,8 @@ config ENV_IS_IN_EEPROM config ENV_IS_IN_FAT bool "Environment is in a FAT filesystem" depends on !CHAIN_OF_TRUST + default y if ARCH_BCM283X + default y if MMC_OMAP_HS && TI_COMMON_CMD_OPTIONS select FAT_WRITE help Define this if you want to use the FAT file system for the environment. @@ -84,6 +66,13 @@ config ENV_IS_IN_FAT config ENV_IS_IN_FLASH bool "Environment in flash memory" depends on !CHAIN_OF_TRUST + default y if ARCH_CINTEGRATOR + default y if ARCH_INTEGRATOR_CP + default y if M548x || M547x || M5282 || MCF547x_8x + default y if MCF532x || MCF52x2 + default y if MPC86xx || MPC83xx + default y if ARCH_MPC8572 || ARCH_MPC8548 || ARCH_MPC8641 + default y if SH && !CPU_SH4 help Define this if you have a flash device which you want to use for the environment. @@ -157,6 +146,11 @@ config ENV_IS_IN_MMC bool "Environment in an MMC device" depends on !CHAIN_OF_TRUST depends on MMC + default y if ARCH_SUNXI + default y if ARCH_EXYNOS4 + default y if MX6SX || MX7D + default y if TEGRA30 || TEGRA124 + default y if TEGRA_ARMV8_COMMON help Define this if you have an MMC device which you want to use for the environment. @@ -294,6 +288,13 @@ config ENV_IS_IN_REMOTE config ENV_IS_IN_SPI_FLASH bool "Environment is in SPI flash" depends on !CHAIN_OF_TRUST + default y if ARMADA_XP + default y if INTEL_BAYTRAIL + default y if INTEL_BRASWELL + default y if INTEL_BROADWELL + default y if NORTHBRIDGE_INTEL_IVYBRIDGE + default y if INTEL_QUARK + default y if INTEL_QUEENSBAY help Define this if you have a SPI Flash memory device which you want to use for the environment. @@ -359,8 +360,6 @@ config ENV_IS_IN_UBI You will probably want to define these to avoid a really noisy system when storing the env in UBI. -endchoice - config ENV_FAT_INTERFACE string "Name of the block device for the environment" depends on ENV_IS_IN_FAT