* [U-Boot] [PATCH v3 12/15] env: Allow to build multiple environments in Kconfig
@ 2018-02-03 10:23 Goldschmidt Simon
2018-02-05 13:32 ` Maxime Ripard
0 siblings, 1 reply; 7+ messages in thread
From: Goldschmidt Simon @ 2018-02-03 10:23 UTC (permalink / raw)
To: u-boot
On 01.02.2018 20:47, Maxime Ripard wrote:
> 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?
No, this is with my own config. I'm trying out the new feature :-)
>
>> 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?
I planned to have the environment in both SPI flash and eMMC to
be able to use a common U-Boot binary accross multiple boards.
I don't need 'tools/envcrc' though. And this is where the build
error is.
Maybe we could disable the combination for 'tools/envcrc' only?
Simon
^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH v3 12/15] env: Allow to build multiple environments in Kconfig
2018-02-03 10:23 [U-Boot] [PATCH v3 12/15] env: Allow to build multiple environments in Kconfig Goldschmidt Simon
@ 2018-02-05 13:32 ` Maxime Ripard
2018-02-06 8:24 ` Simon Goldschmidt
0 siblings, 1 reply; 7+ messages in thread
From: Maxime Ripard @ 2018-02-05 13:32 UTC (permalink / raw)
To: u-boot
On Sat, Feb 03, 2018 at 10:23:12AM +0000, Goldschmidt Simon wrote:
> On 01.02.2018 20:47, Maxime Ripard wrote:
> > 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?
>
> No, this is with my own config. I'm trying out the new feature :-)
>
> >
> >> 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?
>
> I planned to have the environment in both SPI flash and eMMC to
> be able to use a common U-Boot binary accross multiple boards.
>
> I don't need 'tools/envcrc' though. And this is where the build
> error is.
>
> Maybe we could disable the combination for 'tools/envcrc' only?
Apparently, envcrc is used to generate the CRC of an embedded
environment image inside the U-Boot image, which would be triggered in
some specific cases.
I'm not sure we can disable it without breaking use cases.
in this particular case, it seems that the u8 typedef is done at the
architecture level, and efi.h doesn't include asm/types.h that define
it. Maybe it's as simple as that. Otherwise, it includes linux/types.h
that defines uint8_t, we can use that instead.
Maxime
--
Maxime Ripard, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
http://bootlin.com
-------------- 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/20180205/d25c3c40/attachment.sig>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH v3 12/15] env: Allow to build multiple environments in Kconfig
2018-02-05 13:32 ` Maxime Ripard
@ 2018-02-06 8:24 ` Simon Goldschmidt
2018-02-06 8:45 ` Maxime Ripard
0 siblings, 1 reply; 7+ messages in thread
From: Simon Goldschmidt @ 2018-02-06 8:24 UTC (permalink / raw)
To: u-boot
On 05.02.2018 14:32, Maxime Ripard wrote:
> On Sat, Feb 03, 2018 at 10:23:12AM +0000, Goldschmidt Simon wrote:
>> On 01.02.2018 20:47, Maxime Ripard wrote:
>>> 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?
>> No, this is with my own config. I'm trying out the new feature :-)
>>
>>>> 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?
>> I planned to have the environment in both SPI flash and eMMC to
>> be able to use a common U-Boot binary accross multiple boards.
>>
>> I don't need 'tools/envcrc' though. And this is where the build
>> error is.
>>
>> Maybe we could disable the combination for 'tools/envcrc' only?
> Apparently, envcrc is used to generate the CRC of an embedded
> environment image inside the U-Boot image, which would be triggered in
> some specific cases.
>
> I'm not sure we can disable it without breaking use cases.
I didn't want to suggest removing envcrc. I'd rather wanted to somehow
prevent including "mmc.h" when compiling for envcrc... Anyway, that
would be a hack to make it work for me.
> in this particular case, it seems that the u8 typedef is done at the
> architecture level, and efi.h doesn't include asm/types.h that define
> it. Maybe it's as simple as that. Otherwise, it includes linux/types.h
> that defines uint8_t, we can use that instead.
Digging into this again, it seems clear that this doesn't work since
'u8' is meant for kernel space while user space should use '__u8'.
Envcrc *is* userspace, so using uint8_t everywhere makes more sense.
Simon
^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH v3 12/15] env: Allow to build multiple environments in Kconfig
2018-02-06 8:24 ` Simon Goldschmidt
@ 2018-02-06 8:45 ` Maxime Ripard
0 siblings, 0 replies; 7+ messages in thread
From: Maxime Ripard @ 2018-02-06 8:45 UTC (permalink / raw)
To: u-boot
On Tue, Feb 06, 2018 at 09:24:02AM +0100, Simon Goldschmidt wrote:
> > in this particular case, it seems that the u8 typedef is done at the
> > architecture level, and efi.h doesn't include asm/types.h that define
> > it. Maybe it's as simple as that. Otherwise, it includes linux/types.h
> > that defines uint8_t, we can use that instead.
>
> Digging into this again, it seems clear that this doesn't work since 'u8' is
> meant for kernel space while user space should use '__u8'. Envcrc *is*
> userspace, so using uint8_t everywhere makes more sense.
Yes, but the offending variable is in include/efi.h, which would be
included by both (but probably not intentionally in the envcrc case).
Maxime
--
Maxime Ripard, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
http://bootlin.com
-------------- 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/20180206/ffdeb7f1/attachment.sig>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH v3 00/15] env: Multiple env support and env transition for sunxi
@ 2018-01-23 20:16 Maxime Ripard
2018-01-23 20:17 ` [U-Boot] [PATCH v3 12/15] env: Allow to build multiple environments in Kconfig Maxime Ripard
0 siblings, 1 reply; 7+ messages in thread
From: Maxime Ripard @ 2018-01-23 20:16 UTC (permalink / raw)
To: u-boot
Hi,
Here is a second attempt at transitioning away from the MMC raw environment
to a FAT-based one for Allwinner SoCs. Since the RFC was quite well
received, I actually tested it and fixed a few rough edges.
You'll find the first RFC here for reference:
https://lists.denx.de/pipermail/u-boot/2017-October/310111.html
And the second that originated in this series:
https://lists.denx.de/pipermail/u-boot/2017-November/311608.html
I gave it a travis run, and it passes all tests:
https://travis-ci.org/mripard/u-boot
Thanks!
Maxime
Original description of the patches:
The fundamental issue I'm trying to adress is that we've had for a
very long time the assumption that the main U-Boot binary wouldn't
exceed around 500 bytes.
However, we're starting to get real close to that limit, and are
running out of silver bullets to deal with the consequences of having
a bigger U-Boot binary, the main consequence being that we would
have some overlap between the environment and U-Boot.
One way to address this that has been suggested by Tom is to move away
from the raw MMC environment to a FAT-based one. This would allow us
to slowly migrate away, and eventually remove the MMC-raw option
entirely to reclaim that space for the binary.
That cannot be done in a single release however, since we might have
environments in the wild already that people rely on. And since we
always encouraged people to use the raw MMC environment, noone would
expect that.
This is even worse since some platforms are using the U-Boot
environment to deal with implement their upgrade mechanism, such as
mender.io, and force moving the environment would break any further
upgrade.
The suggested implementation is to allow U-Boot to compile multiple
environments backend at once, based on the work done by Simon. The
default behaviour shouldn't change obviously. We can then piggy-back
on this to tweak on a per-board basis the environment lookup algorithm
to always favour the FAT-based environment and then fallback to the
MMC. It will allow us to migrate a raw-MMC user to a FAT based
solution as soon as they update their environment (assuming that there
is a bootable FAT partition in the system).
This has just been compile tested on sunxi so far, and I'd like
general comments on the approach taken. Obviously, this will need to
work properly before being merged.
Changes from v2:
- Fix a bug showing up on travis that resulted in the vexpress_ca_15 DHCP
unit test failing. This was due to an improper return of ENVL_UNKNOWN.
- Added Simon reviewed-by tag
Changes from v1:
- Collect tags
- Rebased on v2018.01
- Fixed build failures on a couple of boards
- Added back the message and the error code when an environment is
failing
- Added some comments about the printf in environments
- Added a build time check about the number of our locations array to see
if we're overflowing the location variable
- Fixed the drv->init return code being ignored
- Added helpers to manage the init status
- Changed the ENVO prefix for the operations to ENVOP
- Added some comments and documentation
Changes from the RFC:
- Added more useful messages to see where we're loading / saving
- Init all the environments no matter what, and the deal with whatever
env we want to pick at load time
- Added the various tags collected
Maxime Ripard (15):
cmd: nvedit: Get rid of the env lookup
env: Rename env_driver_lookup_default and env_get_default_location
env: Pass additional parameters to the env lookup function
env: Make the env save message a bit more explicit
env: Make it explicit where we're loading our environment from
env: fat: Make the debug messages play a little nicer
env: mmc: Make the debug messages play a little nicer
env: common: Make the debug messages play a little nicer
env: Support multiple environments
env: Initialise all the environments
env: mmc: depends on the MMC framework
env: Allow to build multiple environments in Kconfig
env: Mark env_get_location as weak
sunxi: Transition from the MMC to a FAT-based environment
env: sunxi: Enable FAT-based environment support by default
board/sunxi/board.c | 16 ++-
cmd/nvedit.c | 4 +-
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 | 70 ++++----
env/common.c | 2 +-
env/env.c | 251 +++++++++++++++++++--------
env/fat.c | 25 ++-
env/mmc.c | 1 +-
include/asm-generic/global_data.h | 1 +-
include/environment.h | 15 +-
13 files changed, 266 insertions(+), 123 deletions(-)
base-commit: f3dd87e0b98999a78e500e8c6d2b063ebadf535a
--
git-series 0.9.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH v3 12/15] env: Allow to build multiple environments in Kconfig
2018-01-23 20:16 [U-Boot] [PATCH v3 00/15] env: Multiple env support and env transition for sunxi Maxime Ripard
@ 2018-01-23 20:17 ` Maxime Ripard
2018-02-01 10:06 ` Simon Goldschmidt
0 siblings, 1 reply; 7+ messages in thread
From: Maxime Ripard @ 2018-01-23 20:17 UTC (permalink / raw)
To: u-boot
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>
---
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 at 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 at 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
--
git-series 0.9.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH v3 12/15] env: Allow to build multiple environments in Kconfig
2018-01-23 20:17 ` [U-Boot] [PATCH v3 12/15] env: Allow to build multiple environments in Kconfig Maxime Ripard
@ 2018-02-01 10:06 ` Simon Goldschmidt
2018-02-02 19:47 ` Maxime Ripard
0 siblings, 1 reply; 7+ messages in thread
From: Simon Goldschmidt @ 2018-02-01 10:06 UTC (permalink / raw)
To: u-boot
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 at 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 at 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
^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH v3 12/15] env: Allow to build multiple environments in Kconfig
2018-02-01 10:06 ` Simon Goldschmidt
@ 2018-02-02 19:47 ` Maxime Ripard
0 siblings, 0 replies; 7+ messages in thread
From: Maxime Ripard @ 2018-02-02 19:47 UTC (permalink / raw)
To: u-boot
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
-------------- 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/20180202/a2ec6fd6/attachment.sig>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-02-06 8:45 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-03 10:23 [U-Boot] [PATCH v3 12/15] env: Allow to build multiple environments in Kconfig Goldschmidt Simon
2018-02-05 13:32 ` Maxime Ripard
2018-02-06 8:24 ` Simon Goldschmidt
2018-02-06 8:45 ` Maxime Ripard
-- strict thread matches above, loose matches on Subject: below --
2018-01-23 20:16 [U-Boot] [PATCH v3 00/15] env: Multiple env support and env transition for sunxi Maxime Ripard
2018-01-23 20:17 ` [U-Boot] [PATCH v3 12/15] env: Allow to build multiple environments in Kconfig Maxime Ripard
2018-02-01 10:06 ` Simon Goldschmidt
2018-02-02 19:47 ` Maxime Ripard
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.