All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 00/14] env: Multiple env support and env transition for sunxi
@ 2017-11-28 10:24 Maxime Ripard
  2017-11-28 10:24 ` [U-Boot] [PATCH 01/14] cmd: nvedit: Get rid of the env lookup Maxime Ripard
                   ` (14 more replies)
  0 siblings, 15 replies; 83+ messages in thread
From: Maxime Ripard @ 2017-11-28 10:24 UTC (permalink / raw)
  To: u-boot

Hi,

Here is an attempt at transitioning away from the MMC raw environment to a
FAT-based one. 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

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.

Let me know what you think,
Maxime

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 (14):
  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: 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 +-
 env/Kconfig                       |  69 +++++------
 env/common.c                      |   2 +-
 env/env.c                         | 198 +++++++++++++++++++------------
 env/fat.c                         |   9 +-
 env/mmc.c                         |   1 +-
 include/asm-generic/global_data.h |   1 +-
 include/environment.h             |  14 +-
 9 files changed, 192 insertions(+), 122 deletions(-)

base-commit: c253573f3e269fd9a24ee6684d87dd91106018a5
-- 
git-series 0.9.1

^ permalink raw reply	[flat|nested] 83+ messages in thread

end of thread, other threads:[~2018-01-11 15:35 UTC | newest]

Thread overview: 83+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-28 10:24 [U-Boot] [PATCH 00/14] env: Multiple env support and env transition for sunxi Maxime Ripard
2017-11-28 10:24 ` [U-Boot] [PATCH 01/14] cmd: nvedit: Get rid of the env lookup Maxime Ripard
2017-12-05 10:08   ` Andre Przywara
2017-12-29  3:13   ` Simon Glass
2017-11-28 10:24 ` [U-Boot] [PATCH 02/14] env: Rename env_driver_lookup_default and env_get_default_location Maxime Ripard
2017-12-05 10:08   ` Andre Przywara
2017-12-29  3:13   ` Simon Glass
2017-11-28 10:24 ` [U-Boot] [PATCH 03/14] env: Pass additional parameters to the env lookup function Maxime Ripard
2017-12-05 10:09   ` Andre Przywara
2017-12-08  8:25     ` Maxime Ripard
2017-12-29  3:13   ` Simon Glass
2018-01-05  9:27     ` Maxime Ripard
2017-11-28 10:24 ` [U-Boot] [PATCH 04/14] env: Make the env save message a bit more explicit Maxime Ripard
2017-12-05 10:09   ` Andre Przywara
2017-12-29  3:13   ` Simon Glass
2017-11-28 10:24 ` [U-Boot] [PATCH 05/14] env: Make it explicit where we're loading our environment from Maxime Ripard
2017-12-05 10:09   ` Andre Przywara
2017-12-29  3:13     ` Simon Glass
2017-11-28 10:24 ` [U-Boot] [PATCH 06/14] env: fat: Make the debug messages play a little nicer Maxime Ripard
2017-12-05 10:10   ` Andre Przywara
2017-11-28 10:24 ` [U-Boot] [PATCH 07/14] env: mmc: " Maxime Ripard
2017-12-05 10:10   ` Andre Przywara
2017-11-28 10:24 ` [U-Boot] [PATCH 08/14] env: common: " Maxime Ripard
2017-12-05 10:10   ` Andre Przywara
2017-11-28 10:24 ` [U-Boot] [PATCH 09/14] env: Support multiple environments Maxime Ripard
2017-12-05 10:10   ` Andre Przywara
2017-12-29  3:13   ` Simon Glass
2017-11-28 10:24 ` [U-Boot] [PATCH 10/14] env: Initialise all the environments Maxime Ripard
2017-11-28 12:24   ` Quentin Schulz
2017-11-28 12:29     ` Maxime Ripard
2017-12-05 10:11   ` Andre Przywara
2017-12-29  3:13   ` Simon Glass
2017-11-28 10:24 ` [U-Boot] [PATCH 11/14] env: Allow to build multiple environments in Kconfig Maxime Ripard
2017-12-05 10:11   ` Andre Przywara
2017-12-29  3:13   ` Simon Glass
2017-11-28 10:24 ` [U-Boot] [PATCH 12/14] env: Mark env_get_location as weak Maxime Ripard
2017-12-05 10:14   ` Andre Przywara
2017-12-29  3:13   ` Simon Glass
2018-01-05  9:29     ` Maxime Ripard
2018-01-08  4:52       ` Simon Glass
2018-01-09 13:10         ` Maxime Ripard
2018-01-09 16:05           ` Tom Rini
2018-01-11 15:35             ` Maxime Ripard
2017-11-28 10:24 ` [U-Boot] [PATCH 13/14] sunxi: Transition from the MMC to a FAT-based environment Maxime Ripard
2017-12-05 10:28   ` Andre Przywara
2017-12-08  8:42     ` Maxime Ripard
2017-12-19 13:12     ` [U-Boot] ARM64 Allwinner Binary Size Maxime Ripard
2017-12-19 13:15       ` Tom Rini
2017-12-19 13:26         ` Maxime Ripard
2017-12-19 13:30           ` Tom Rini
2017-12-19 14:09             ` Maxime Ripard
2017-12-19 14:16               ` Emmanuel Vadot
2017-12-19 14:20               ` Tom Rini
2017-12-19 14:22                 ` Andre Przywara
2017-12-19 14:24                   ` Tom Rini
2017-12-19 13:28       ` Alexander Graf
2017-12-19 13:31         ` Tom Rini
2017-12-19 14:13         ` Maxime Ripard
2017-12-19 13:38       ` Andre Przywara
2017-12-19 13:51         ` Mark Kettenis
2017-12-19 14:17           ` Andre Przywara
2017-12-20  9:31             ` Mark Kettenis
2017-12-19 14:20         ` Maxime Ripard
2017-12-19 14:27           ` Andre Przywara
2017-12-19 14:38             ` Jagan Teki
2017-12-19 14:41               ` Chen-Yu Tsai
2017-12-19 14:50                 ` Maxime Ripard
2017-12-19 14:41               ` Andre Przywara
2017-12-19 15:36             ` Maxime Ripard
2017-12-19 15:44               ` Tom Rini
2017-12-19 15:50               ` Jagan Teki
2017-12-20  2:02               ` André Przywara
2017-12-19 13:41       ` Mark Kettenis
2017-12-19 15:24         ` Maxime Ripard
2017-12-19 22:35           ` Mark Kettenis
2017-12-20  1:55           ` André Przywara
2017-12-20  7:15             ` Maxime Ripard
2017-12-20  7:42               ` Mark Kettenis
2017-12-20  9:20                 ` Maxime Ripard
2017-11-28 10:24 ` [U-Boot] [PATCH 14/14] env: sunxi: Enable FAT-based environment support by default Maxime Ripard
2017-12-05 10:30   ` Andre Przywara
2017-12-07 20:09 ` [U-Boot] [PATCH 00/14] env: Multiple env support and env transition for sunxi Tom Rini
2017-12-08  9:05   ` 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.