[PATCH v1 3/4] env: scsi: Add support for partition type GUID based environment

Tom Rini trini at konsulko.com
Fri Jan 9 15:48:09 CET 2026


On Fri, Jan 09, 2026 at 02:21:28PM +0530, Balaji Selvanathan wrote:
> Hi Simon,
> 
> On 1/8/2026 11:12 PM, Simon Glass wrote:
> > Hi Balaji,
> > 
> > On Wed, 7 Jan 2026 at 23:50, Balaji Selvanathan
> > <balaji.selvanathan at oss.qualcomm.com> wrote:
> > > Add support for locating SCSI environment partition using GPT type
> > > GUID instead of unique UUID. This enables the saveenv command to
> > > work with partitions identified by their type rather than unique
> > > identifiers, providing flexibility for systems where partition
> > > UUIDs may vary across devices but types remain constant.
> > > 
> > > Introduce CONFIG_SCSI_ENV_PART_TYPE_GUID configuration option that
> > > allows specifying a partition type GUID for environment storage.
> > > When enabled, the environment subsystem uses the new type GUID
> > > based lookup method via scsi_get_blk_by_type_guid() to find the
> > > first matching partition.
> > > 
> > > This change maintains backward compatibility with the existing
> > > UUID-based approach.
> > > 
> > > Signed-off-by: Balaji Selvanathan <balaji.selvanathan at oss.qualcomm.com>
> > > ---
> > >   env/Kconfig |  7 +++++++
> > >   env/scsi.c  | 13 +++++++++++++
> > >   2 files changed, 20 insertions(+)
> > > 
> > > diff --git a/env/Kconfig b/env/Kconfig
> > > index b312f9b5324..97cb3d05daf 100644
> > > --- a/env/Kconfig
> > > +++ b/env/Kconfig
> > > @@ -768,6 +768,13 @@ config SCSI_ENV_PART_UUID
> > >          help
> > >            UUID of the SCSI partition that you want to store the environment in.
> > > 
> > > +config SCSI_ENV_PART_TYPE_GUID
> > > +       string "SCSI partition type GUID for saving environment"
> > > +       depends on ENV_IS_IN_SCSI
> > > +       help
> > > +         Type GUID of the SCSI partition to store the environment in.
> > > +         Uses the first partition matching this type GUID.
> > > +
> > >   config ENV_USE_DEFAULT_ENV_TEXT_FILE
> > >          bool "Create default environment from file"
> > >          depends on !COMPILE_TEST
> > > diff --git a/env/scsi.c b/env/scsi.c
> > > index 207717e17b1..6182ae26679 100644
> > > --- a/env/scsi.c
> > > +++ b/env/scsi.c
> > > @@ -35,8 +35,13 @@ static inline struct env_scsi_info *env_scsi_get_part(void)
> > >   {
> > >          struct env_scsi_info *ep = &env_part;
> > > 
> > > +#ifdef CONFIG_SCSI_ENV_PART_TYPE_GUID
> > > +       if (scsi_get_blk_by_type_guid(CONFIG_SCSI_ENV_PART_TYPE_GUID, &ep->blk, &ep->part))
> > Can you use if IS_ENABLED(CONFIG_SCSI_ENV_PART_TYPE_GUID)
> > 
> > (we try to avoid #ifdef)
> Thanks for the feedback.
> 
> In this respin https://lore.kernel.org/u-boot/20260109070912.4106466-4-balaji.selvanathan@oss.qualcomm.com/,
> I've introduced a choice statement in env/Kconfig to ensure mutual
> exclusivity between CONFIG_SCSI_ENV_PART_UUID and
> CONFIG_SCSI_ENV_PART_TYPE_GUID.
> 
> Due to this choice-based configuration, only one of these string configs is
> defined at compile time. When I attempted to use `if (IS_ENABLED(...))` for
> the string concatenation cases, I encountered compilation errors because the
> compiler tries to evaluate both branches, but the undefined config macro
> causes an "undeclared identifier" error.
> 
> For example:
> 
> if (IS_ENABLED(CONFIG_SCSI_ENV_PART_USE_TYPE_GUID))
>     env_set_default(CONFIG_SCSI_ENV_PART_TYPE_GUID " partition not found",
> 0);
> else
>     env_set_default(CONFIG_SCSI_ENV_PART_UUID " partition not found", 0); 
> // Error: CONFIG_SCSI_ENV_PART_UUID undeclared
> 
> Given this constraint with mutually exclusive string configs, I've kept the
> #ifdef approach for these specific cases. I understand the preference for
> IS_ENABLED() for its compile-time checking benefits, but in this scenario
> with string concatenation, the preprocessor conditional appears to be
> necessary.
> 
> Would this approach be acceptable, or would you prefer an alternative
> solution?

The way to solve this would be to wrap CONFIG_SCSI_ENV_PART_*UID with
CONFIG_VAL(...), but at that point we've also lost the readability
argument of avoiding #ifdef.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20260109/295447fe/attachment.sig>


More information about the U-Boot mailing list