* [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 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
* [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
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