[PATCH 0/3] env: mmc: fix use of two separate partitions with proper type GUID

Rasmus Villemoes
2024-09-12T13:41:50Z

I always define a disk layout with two separate partitions for the two
copies of the U-Boot environment and, being the one who introduced the
type GUID for such partitions, of course also set those partitions'
type GUID appropriately.

This has worked just fine, but, it turns out, only because I've never
had CONFIG_PARTITION_TYPE_GUID enabled on any of my boards; I've
always just set the offsets of the two partitions via the config
variables CONFIG_ENV_OFFSET(,_REDUND).

I didn't even know that env/mmc.c had learnt to look for the env
partition based on the type GUID, or that that would overrule the
ENV_OFFSET config variables, until I experienced weird random
corruption while doing bringup for an stm32 board, where
PARTITION_TYPE_GUID is automatically set because it is select'ed by
CMD_STM32PROG.

These patches try to fix the code to fit my scheme, while not changing
anything for existing setups that use the two-copies-one-partition
scheme, other than complaining loudly if the system is misconfigured
and avoiding such random corruption of neighbouring partitions.

Rasmus Villemoes (3):
env: mmc: refactor mmc_offset_try_partition()
env: mmc: do not return an offset before the start of the partition
env: mmc: rework mmc_env_partition_by_guid() to work with two separate
partitions

env/mmc.c | 95 ++++++++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 77 insertions(+), 18 deletions(-)

--
2.46.0