On 6/2/20 2:05 PM, Rasmus Villemoes wrote:
> On 02/06/2020 13.04, Marek Vasut wrote:
>> On 6/2/20 8:42 AM, Rasmus Villemoes wrote:
>>> On 29/05/2020 19.54, Marek Vasut wrote:
>>>> +config ENV_APPEND
>>>> +  bool "Always append the environment with new data"
>>>> +  default n
>>>> +  help
>>>> +    If defined, the environment hash table is only ever appended with new
>>>> +    data, but the existing hash table can never be dropped and reloaded
>>>> +    with newly imported data. This may be used in combination with static
>>>> +    flags to e.g. to protect variables which must not be modified.
>>>> +
>>>>  config ENV_ACCESS_IGNORE_FORCE
>>>>    bool "Block forced environment operations"
>>>>    default n
>>>> diff --git a/env/env.c b/env/env.c
>>>> index 024d36fdbe..967a9d36d7 100644
>>>> --- a/env/env.c
>>>> +++ b/env/env.c
>>>> @@ -204,7 +204,9 @@ int env_load(void)
>>>>            ret = drv->load();
>>>>            if (!ret) {
>>>>                    printf("OK\n");
>>>> +#if !CONFIG_IS_ENABLED(ENV_APPEND)
>>>>                    return 0;
>>>> +#endif
>>>
>>> Don't use CONFIG_IS_ENABLED() unless you actually introduce both
>>> CONFIG_FOO and CONFIG_SPL_FOO. Otherwise the above
>>> CONFIG_IS_ENABLED(ENV_APPEND) is guaranteed to evaluate to false in SPL.
>>> Of course that only matters if environment support is enabled in SPL,
>>> but some actually use that.
>>
>> We actually want to use CONFIG_IS_ENABLED() as much as possible to make
>> these options future-proof, so that others won't have to chase down all
>> kinds of #ifdef CONFIG stuff and fix it later on for SPL/TPL/etc.
>>
> 
> That makes no sense. You're introducing something whose help text
> doesn't spell out that the option only applies to U-Boot proper, and is
> completely ignored in SPL (since CONFIG_SPL_ENV_APPEND never exists).

Anything which does not explicitly spell _SPL or _TPL is U-Boot only,
except for some remaining options which need fixing.

> The reason it's ignored in SPL is that you use the SPL-or-not-SPL-aware
> CONFIG_IS_ENABLED() helper, and you say that's so that somebody in the
> future can implement CONFIG_SPL_ENV_APPEND?

Yes, because you might need to differentiate between the env behavior in
TPL/SPL/U-Boot.

> If you intend for ENV_APPEND to be something that's either set or not
> set for a given board, then the code needs to use the SPL-agnostic
> IS_ENABLED(CONFIG_ENV_APPEND). If you intend it to be something that can
> be set independently for the env support in SPL vs U-Boot proper, you
> need to add both config options and, as you do, use CONFIG_IS_ENABLED.

I don't have a way to test it in SPL, so I'm not adding untested config
options.

-- 
Best regards,
Marek Vasut

Reply via email to