[U-Boot] [PATCH] fastboot: check for alias when looking up partition by name

Lukasz Majewski l.majewski at samsung.com
Fri Mar 20 08:50:10 CET 2015


Hi Steve,

> 
> 
> On 15-03-12 10:17 AM, Michael Scott wrote:
> >
> > On 03/12/2015 09:23 AM, Steve Rae wrote:
> >>
> >>
> >> On 15-03-11 10:02 AM, Michael Scott wrote:
> >>> Implement an alias name check for devices where GPT limitations
> >>> prevent user-friendly partition names such as "boot", "system"
> >>> and "cache". Or, where the actual partition name doesn't match a
> >>> standard partition name used commonly with fastboot.
> >>>
> >>> To set an alias, add an environment setting as follows:
> >>> fastboot_partition_alias_<alias partition name>=<actual partition
> >>> name>
> >>>
> >>> Example: fastboot_partition_alias_boot=LNX
> >>>
> >>> Signed-off-by: Michael Scott <michael.scott at linaro.org>
> >>> Cc: Steve Rae <srae at broadcom.com>
> >>> Cc: Lukasz Majewski <l.majewski at samsung.com>
> >>> ---
> >>>   common/fb_mmc.c             | 26 ++++++++++++++++++++++++--
> >>>   doc/README.android-fastboot |  9 +++++++++
> >>>   2 files changed, 33 insertions(+), 2 deletions(-)
> >>>
> >>> diff --git a/common/fb_mmc.c b/common/fb_mmc.c
> >>> index 75899e4..0c48cf9 100644
> >>> --- a/common/fb_mmc.c
> >>> +++ b/common/fb_mmc.c
> >>> @@ -33,6 +33,28 @@ void fastboot_okay(const char *s)
> >>>       strncat(response_str, s, RESPONSE_LEN - 4 - 1);
> >>>   }
> >>>
> >>> +static int
> >>> get_partition_info_efi_by_name_or_alias(block_dev_desc_t
> >>> *dev_desc,
> >>> +        const char *name, disk_partition_t *info)
> >>> +{
> >>> +    int ret;
> >>> +
> >>> +    ret = get_partition_info_efi_by_name(dev_desc, name, info);
> >>> +    if (ret) {
> >>> +        /* strlen("fastboot_partition_alias_") + 32(part_name) +
> >>> 1 */
> >>> +        char env_alias_name[25 + 32 + 1];
> >>> +        char *aliased_part_name;
> >>> +
> >>> +        /* check for alias */
> >>> +        strcpy(env_alias_name, "fastboot_partition_alias_");
> >>> +        strncat(env_alias_name, name, 32);
> >>> +        aliased_part_name = getenv(env_alias_name);
> >>> +        if (aliased_part_name != NULL)
> >>> +            ret = get_partition_info_efi_by_name(dev_desc,
> >>> +                    aliased_part_name, info);
> >>> +    }
> >>> +    return ret;
> >>> +}
> >>> +
> >>>   static void write_raw_image(block_dev_desc_t *dev_desc,
> >>> disk_partition_t *info,
> >>>           const char *part_name, void *buffer,
> >>>           unsigned int download_bytes)
> >>> @@ -98,7 +120,7 @@ void fb_mmc_flash_write(const char *cmd, void
> >>> *download_buffer,
> >>>           printf("........ success\n");
> >>>           fastboot_okay("");
> >>>           return;
> >>> -    } else if (get_partition_info_efi_by_name(dev_desc, cmd,
> >>> &info)) {
> >>> +    } else if (get_partition_info_efi_by_name_or_alias(dev_desc,
> >>> cmd, &info)) {
> >>>           error("cannot find partition: '%s'\n", cmd);
> >>>           fastboot_fail("cannot find partition");
> >>>           return;
> >>> @@ -136,7 +158,7 @@ void fb_mmc_erase(const char *cmd, char
> >>> *response) return;
> >>>       }
> >>>
> >>> -    ret = get_partition_info_efi_by_name(dev_desc, cmd, &info);
> >>> +    ret = get_partition_info_efi_by_name_or_alias(dev_desc, cmd,
> >>> &info);
> >>>       if (ret) {
> >>>           error("cannot find partition: '%s'", cmd);
> >>>           fastboot_fail("cannot find partition");
> >>> diff --git a/doc/README.android-fastboot
> >>> b/doc/README.android-fastboot index 5526a43..04411e9 100644
> >>> --- a/doc/README.android-fastboot
> >>> +++ b/doc/README.android-fastboot
> >>> @@ -50,6 +50,15 @@ buffer should be as large as possible for a
> >>> platform. The location of the
> >>>   buffer and size are set with CONFIG_USB_FASTBOOT_BUF_ADDR and
> >>>   CONFIG_USB_FASTBOOT_BUF_SIZE.
> >>>
> >>> +Fastboot partition aliases can also be defined for devices where
> >>> GPT +limitations prevent user-friendly partition names such as
> >>> "boot", "system"
> >>> +and "cache".  Or, where the actual partition name doesn't match a
> >>> standard
> >>> +partition name used commonly with fastboot.  Current implentation
> >>> checks
> >>> +aliases when accessing partitions by name (flash_write andThere's
> >>> already a driver
> >> for DWC2 in drivers/usb/gadget/s3c_udc_otg.c . This driver should
> >> really be properly renamed though ;-/  erase functions).
> > Hi Steve,
> >
> > I'm a bit confused with the mention of
> > drivers/usb/gadget/s3c_udc_otg.c and how it relates back this
> > patch.  I'm willing to make any corrections you would
> > like, but may need some clarification.
> Sorry -- I corrupted this (finger trouble!) - please ignore
> >
> >>> +To define a partition alias add an environment variable similar
> >>> to: +fastboot_partition_alias_<alias partition name>=<actual
> >>> partition name> +Example: fastboot_partition_alias_boot=LNX
> >>> +
> >>>   In Action
> >>>   =========
> >>>   Enter into fastboot by executing the fastboot command in u-boot
> >>> and you
> >>>
> >>
> >> An interesting feature (which seems unnecessary to me...) However,
> > A bit of background:
> >
> > We are using fastboot support on Nvidia Jetson-TK1 platform where
> > a GPT limitation sets partition names to 3 letters.
> >
> > IE: LNX = boot, APP = system and UDA = userdata.
> OK -- then this patch makes much more sense!
> - so when the user performs "mmc part", (I'm assuming it will list
> the "3 letter names"), then they perform "fastboot flash LNX
> boot.bin" (which makes sense to me....)
> - or they can setup these aliases and perform "fastboot flash boot
> boot.bin" (I would probably stick with the former myself...)
> Thanks, Steve
> >
> > To present a "normal" fastboot experience to users, we use this
> > patch.
> >
> >> Acked-by: Steve Rae <srae at broadcom.com>
> >
> > Thank you for the Ack!

Are there more comments for this patch?

-- 
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group


More information about the U-Boot mailing list