From: Quentin Schulz <quentin.schulz@cherry.de>
To: Marek Vasut <marex@denx.de>, u-boot@lists.denx.de
Cc: Dragan Simic <dsimic@manjaro.org>,
Joe Hershberger <joe.hershberger@ni.com>,
Mattijs Korpershoek <mkorpershoek@baylibre.com>,
Rasmus Villemoes <rasmus.villemoes@prevas.dk>,
Simon Glass <sjg@chromium.org>, Tom Rini <trini@konsulko.com>
Subject: Re: [PATCH v3 1/2] env: mmc: Make redundant env in both eMMC boot partitions consider DT properties
Date: Mon, 24 Feb 2025 11:01:25 +0100 [thread overview]
Message-ID: <94cf226a-c217-4e5d-bc63-60f5b7c4cb3b@cherry.de> (raw)
In-Reply-To: <20250221184732.202336-1-marex@denx.de>
Hi Marek,
On 2/21/25 7:47 PM, Marek Vasut wrote:
> Introduce a new function mmc_env_is_redundant_in_both_boot_hwparts()
> which replaces IS_ENABLED(ENV_MMC_HWPART_REDUND) and internally does
> almost the same check as the macro which assigned ENV_MMC_HWPART_REDUND
> did, and call it in place of IS_ENABLED(ENV_MMC_HWPART_REDUND).
>
> The difference compared to IS_ENABLED(ENV_MMC_HWPART_REDUND) is
> in the last conditional, which does not do plain macro compare
> (CONFIG_ENV_OFFSET == CONFIG_ENV_OFFSET_REDUND), but instead does
> mmc_offset(mmc, 0) == mmc_offset(mmc, 1). If OF_CONTROL is not
> in use, this gets optimized back to original macro compare, but
> if OF_CONTROL is in use, this also takes into account the DT
> properties u-boot,mmc-env-offset and u-boot,mmc-env-offset-redundant.
>
> Signed-off-by: Marek Vasut <marex@denx.de>
> ---
> Cc: Dragan Simic <dsimic@manjaro.org>
> Cc: Joe Hershberger <joe.hershberger@ni.com>
> Cc: Mattijs Korpershoek <mkorpershoek@baylibre.com>
> Cc: Quentin Schulz <quentin.schulz@cherry.de>
> Cc: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Tom Rini <trini@konsulko.com>
> Cc: u-boot@lists.denx.de
> ---
> V2: - Rename mmc_env_hwpart_redund() to mmc_env_is_redundant_in_both_boot_hwparts()
> - Return bool
> V3: - Hide the mmc_env_is_redundant_in_both_boot_hwparts symbol behind __maybe_unused
> as this symbol is called from code gated behind ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
> in env_mmc_load()
> ---
> env/mmc.c | 37 +++++++++++++++++++++----------------
> 1 file changed, 21 insertions(+), 16 deletions(-)
>
> diff --git a/env/mmc.c b/env/mmc.c
> index 379f5ec9be7..353a7ce72fb 100644
> --- a/env/mmc.c
> +++ b/env/mmc.c
> @@ -40,18 +40,6 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> -/*
> - * In case the environment is redundant, stored in eMMC hardware boot
> - * partition and the environment and redundant environment offsets are
> - * identical, store the environment and redundant environment in both
> - * eMMC boot partitions, one copy in each.
> - * */
> -#if (defined(CONFIG_SYS_REDUNDAND_ENVIRONMENT) && \
> - (CONFIG_SYS_MMC_ENV_PART == 1) && \
> - (CONFIG_ENV_OFFSET == CONFIG_ENV_OFFSET_REDUND))
> -#define ENV_MMC_HWPART_REDUND 1
> -#endif
> -
> #if CONFIG_IS_ENABLED(OF_CONTROL)
>
> static int mmc_env_partition_by_name(struct blk_desc *desc, const char *str,
> @@ -217,6 +205,23 @@ static inline s64 mmc_offset(struct mmc *mmc, int copy)
> }
> #endif
>
> +static bool __maybe_unused mmc_env_is_redundant_in_both_boot_hwparts(struct mmc *mmc)
> +{
> + /*
> + * In case the environment is redundant, stored in eMMC hardware boot
> + * partition and the environment and redundant environment offsets are
> + * identical, store the environment and redundant environment in both
> + * eMMC boot partitions, one copy in each.
> + */
> + if (!IS_ENABLED(CONFIG_SYS_REDUNDAND_ENVIRONMENT))
> + return false;
> +
> + if (CONFIG_SYS_MMC_ENV_PART != 1)
> + return false;
> +
> + return mmc_offset(mmc, 0) == mmc_offset(mmc, 1);
This is not always equivalent to the current test of
CONFIG_ENV_OFFSET == CONFIG_ENV_OFFSET_REDUND
Indeed, it only is for when OF_CONTROL isn't set.
I would recommend to keep this check in patch 1, then add another patch
that swaps CONFIG_ENV_OFFSET == CONFIG_ENV_OFFSET_REDUND for
mmc_offset(mmc, 0) == mmc_offset(mmc, 1)
This will allow to use DT properties like
u-boot,mmc-env-offset-redundant and u-boot,mmc-env-offset, which isn't
supported today.
What do you think?
The rest of the diff looks good to me.
Cheers,
Quentin
next prev parent reply other threads:[~2025-02-24 10:01 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-21 18:47 [PATCH v3 1/2] env: mmc: Make redundant env in both eMMC boot partitions consider DT properties Marek Vasut
2025-02-21 18:47 ` [PATCH v3 2/2] env: mmc: Clean up env_mmc_load() ifdeffery Marek Vasut
2025-02-24 9:48 ` Quentin Schulz
2025-02-24 17:50 ` Marek Vasut
2025-02-25 16:34 ` Mattijs Korpershoek
2025-02-24 10:01 ` Quentin Schulz [this message]
2025-02-24 17:49 ` [PATCH v3 1/2] env: mmc: Make redundant env in both eMMC boot partitions consider DT properties Marek Vasut
2025-02-25 9:58 ` Quentin Schulz
2025-02-25 16:30 ` Mattijs Korpershoek
2025-02-28 20:23 ` Tom Rini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=94cf226a-c217-4e5d-bc63-60f5b7c4cb3b@cherry.de \
--to=quentin.schulz@cherry.de \
--cc=dsimic@manjaro.org \
--cc=joe.hershberger@ni.com \
--cc=marex@denx.de \
--cc=mkorpershoek@baylibre.com \
--cc=rasmus.villemoes@prevas.dk \
--cc=sjg@chromium.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.