* [U-Boot] [PATCH 0/3] Boot from the bootable paritions
@ 2015-02-19 20:53 Sjoerd Simons
2015-02-19 20:53 ` [U-Boot] [PATCH 1/3] part: Add support for list filtering on bootable partitions Sjoerd Simons
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Sjoerd Simons @ 2015-02-19 20:53 UTC (permalink / raw)
To: u-boot
In the discussion after the submission of the "Let the distro boot command scan
all partitions" patchset it became clear the general consensus was that
u-boot should not simply scan all partitions but instead only partitions with
the bootable flag set, falling back to parition 1 as was previously done.
This set of patches implements that
Sjoerd Simons (3):
part: Add support for list filtering on bootable partitions
config_cmd_default.h: Add 'env exists' command
config_distro_bootcmd.h: Prefer booting from bootable paritions
common/cmd_part.c | 48 ++++++++++++++++++++++++++++++-----------
include/config_cmd_default.h | 1 +
include/config_distro_bootcmd.h | 3 ++-
3 files changed, 39 insertions(+), 13 deletions(-)
--
2.1.4
^ permalink raw reply [flat|nested] 6+ messages in thread* [U-Boot] [PATCH 1/3] part: Add support for list filtering on bootable partitions 2015-02-19 20:53 [U-Boot] [PATCH 0/3] Boot from the bootable paritions Sjoerd Simons @ 2015-02-19 20:53 ` Sjoerd Simons 2015-02-24 0:40 ` Stephen Warren 2015-02-19 20:53 ` [U-Boot] [PATCH 2/3] config_cmd_default.h: Add 'env exists' command Sjoerd Simons ` (2 subsequent siblings) 3 siblings, 1 reply; 6+ messages in thread From: Sjoerd Simons @ 2015-02-19 20:53 UTC (permalink / raw) To: u-boot Add an optional -bootable parameter to the part list commands to only put the list of bootable partitions in the environment variable Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk> --- common/cmd_part.c | 48 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/common/cmd_part.c b/common/cmd_part.c index c99f527..e1fe641 100644 --- a/common/cmd_part.c +++ b/common/cmd_part.c @@ -53,29 +53,52 @@ static int do_part_list(int argc, char * const argv[]) { int ret; block_dev_desc_t *desc; + char *var = NULL; + bool bootable = false; + int i; - if (argc < 2 || argc > 3) + if (argc < 2) return CMD_RET_USAGE; + for (i = 2; i < argc; i++) { + if (argv[i][0] == '-') { + if (!strcmp(argv[i], "-bootable")) { + bootable = true; + } else { + printf("Unknown option %s\n", argv[i]); + return CMD_RET_USAGE; + } + } else if (var == NULL) { + var = argv[i]; + } else { + printf("duplicated varname\n"); + return CMD_RET_USAGE; + } + } + ret = get_device(argv[0], argv[1], &desc); if (ret < 0) return 1; - if (argc == 3) { + if (var != NULL) { int p; - char str[512] = { 0, }; + char str[512] = { '\0', }; disk_partition_t info; for (p = 1; p < 128; p++) { + char t[5]; int r = get_partition_info(desc, p, &info); - if (r == 0) { - char t[5]; - sprintf(t, "%s%d", str[0] ? " " : "", p); - strcat(str, t); - } + if (r != 0) + continue; + + if (bootable && !info.bootable) + continue; + + sprintf(t, "%s%d", str[0] ? " " : "", p); + strcat(str, t); } - setenv(argv[2], str); + setenv(var, str); return 0; } @@ -98,7 +121,7 @@ static int do_part(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) } U_BOOT_CMD( - part, 5, 1, do_part, + part, CONFIG_SYS_MAXARGS, 1, do_part, "disk partition related commands", "part uuid <interface> <dev>:<part>\n" " - print partition UUID\n" @@ -106,6 +129,7 @@ U_BOOT_CMD( " - set environment variable to partition UUID\n" "part list <interface> <dev>\n" " - print a device's partition table\n" - "part list <interface> <dev> <varname>\n" - " - set environment variable to the list of partitions" + "part list <interface> <dev> [flags] <varname>\n" + " - set environment variable to the list of partitions\n" + " flags can be -bootable (list only bootable partitions)" ); -- 2.1.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH 1/3] part: Add support for list filtering on bootable partitions 2015-02-19 20:53 ` [U-Boot] [PATCH 1/3] part: Add support for list filtering on bootable partitions Sjoerd Simons @ 2015-02-24 0:40 ` Stephen Warren 0 siblings, 0 replies; 6+ messages in thread From: Stephen Warren @ 2015-02-24 0:40 UTC (permalink / raw) To: u-boot On 02/19/2015 01:53 PM, Sjoerd Simons wrote: > Add an optional -bootable parameter to the part list commands to only > put the list of bootable partitions in the environment variable > diff --git a/common/cmd_part.c b/common/cmd_part.c > + for (i = 2; i < argc; i++) { > + if (argv[i][0] == '-') { > + if (!strcmp(argv[i], "-bootable")) { > + bootable = true; > + } else { > + printf("Unknown option %s\n", argv[i]); > + return CMD_RET_USAGE; > + } > + } else if (var == NULL) { > + var = argv[i]; > + } else { > + printf("duplicated varname\n"); > + return CMD_RET_USAGE; > + } > + } I'd prefer that to validate the command-line doesn't have multiple variable names, or the variable name specified before the -bootable flag, so that only the following options are valid: ... var ... -bootable var and not: ... var1 var2 ... var -bootable etc. This could be tightened up later I suppose. Other than that, this series looks good at a quick glance, so: Acked-by: Stephen Warren <swarren@nvidia.com> ^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH 2/3] config_cmd_default.h: Add 'env exists' command 2015-02-19 20:53 [U-Boot] [PATCH 0/3] Boot from the bootable paritions Sjoerd Simons 2015-02-19 20:53 ` [U-Boot] [PATCH 1/3] part: Add support for list filtering on bootable partitions Sjoerd Simons @ 2015-02-19 20:53 ` Sjoerd Simons 2015-02-19 20:53 ` [U-Boot] [PATCH 3/3] config_distro_bootcmd.h: Prefer booting from bootable paritions Sjoerd Simons 2015-02-20 7:10 ` [U-Boot] [PATCH 0/3] Boot from the " Hans de Goede 3 siblings, 0 replies; 6+ messages in thread From: Sjoerd Simons @ 2015-02-19 20:53 UTC (permalink / raw) To: u-boot env exists allows scripts to query whether an environment variable exists. Enable by default as it adds only a trivial amount of code and can be useful in scripts. Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk> --- include/config_cmd_default.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/config_cmd_default.h b/include/config_cmd_default.h index 73c9544..e79a13b 100644 --- a/include/config_cmd_default.h +++ b/include/config_cmd_default.h @@ -21,6 +21,7 @@ #define CONFIG_CMD_CONSOLE /* coninfo */ #define CONFIG_CMD_ECHO /* echo arguments */ #define CONFIG_CMD_EDITENV /* editenv */ +#define CONFIG_CMD_ENV_EXISTS /* query whether env variables exists */ #define CONFIG_CMD_FPGA /* FPGA configuration Support */ #define CONFIG_CMD_IMI /* iminfo */ #define CONFIG_CMD_ITEST /* Integer (and string) test */ -- 2.1.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH 3/3] config_distro_bootcmd.h: Prefer booting from bootable paritions 2015-02-19 20:53 [U-Boot] [PATCH 0/3] Boot from the bootable paritions Sjoerd Simons 2015-02-19 20:53 ` [U-Boot] [PATCH 1/3] part: Add support for list filtering on bootable partitions Sjoerd Simons 2015-02-19 20:53 ` [U-Boot] [PATCH 2/3] config_cmd_default.h: Add 'env exists' command Sjoerd Simons @ 2015-02-19 20:53 ` Sjoerd Simons 2015-02-20 7:10 ` [U-Boot] [PATCH 0/3] Boot from the " Hans de Goede 3 siblings, 0 replies; 6+ messages in thread From: Sjoerd Simons @ 2015-02-19 20:53 UTC (permalink / raw) To: u-boot List bootable partitions and only scan those for bootable files, falling back to partition 1 if there are no bootable partitions Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk> --- include/config_distro_bootcmd.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h index 07a0b3b..ad2dda1 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h @@ -197,7 +197,8 @@ "done\0" \ \ "scan_dev_for_boot_part=" \ - "part list ${devtype} ${devnum} devplist; " \ + "part list ${devtype} ${devnum} -bootable devplist; " \ + "env exists devplist || setenv devplist 1; " \ "for bootpart in ${devplist}; do " \ "if fstype ${devtype} ${devnum}:${bootpart} " \ "bootfstype; then " \ -- 2.1.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH 0/3] Boot from the bootable paritions 2015-02-19 20:53 [U-Boot] [PATCH 0/3] Boot from the bootable paritions Sjoerd Simons ` (2 preceding siblings ...) 2015-02-19 20:53 ` [U-Boot] [PATCH 3/3] config_distro_bootcmd.h: Prefer booting from bootable paritions Sjoerd Simons @ 2015-02-20 7:10 ` Hans de Goede 3 siblings, 0 replies; 6+ messages in thread From: Hans de Goede @ 2015-02-20 7:10 UTC (permalink / raw) To: u-boot Hi, On 19-02-15 21:53, Sjoerd Simons wrote: > In the discussion after the submission of the "Let the distro boot command scan > all partitions" patchset it became clear the general consensus was that > u-boot should not simply scan all partitions but instead only partitions with > the bootable flag set, falling back to parition 1 as was previously done. > > This set of patches implements that Thanks for working on this. Since the initial scan all partitions patch-set is in v2015.04, I believe that we should add this one to v2015.04 too, so that we do not change behavior after the official v2015.04 release. So I've taken the liberty to review this, to expedite the process of getting this upstream. All 3 patches look good to me and are: Reviewed-by: Hans de Goede <hdegoede@redhat.com> Regards, Hans ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-02-24 0:40 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-02-19 20:53 [U-Boot] [PATCH 0/3] Boot from the bootable paritions Sjoerd Simons 2015-02-19 20:53 ` [U-Boot] [PATCH 1/3] part: Add support for list filtering on bootable partitions Sjoerd Simons 2015-02-24 0:40 ` Stephen Warren 2015-02-19 20:53 ` [U-Boot] [PATCH 2/3] config_cmd_default.h: Add 'env exists' command Sjoerd Simons 2015-02-19 20:53 ` [U-Boot] [PATCH 3/3] config_distro_bootcmd.h: Prefer booting from bootable paritions Sjoerd Simons 2015-02-20 7:10 ` [U-Boot] [PATCH 0/3] Boot from the " Hans de Goede
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox