diff mbox

[U-Boot] api_storage: Fix non-first storage device enumeration

Message ID 1442226095-12652-1-git-send-email-afaerber@suse.de
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Andreas Färber Sept. 14, 2015, 10:21 a.m. UTC
When enabling CONFIG_API and chain-loading GRUB2 on jetson-tk1, only the
eMMC would show up as (hd0), but not the SD card, leading to GRUB not
finding its configuration and modules, falling back to a rescue shell.

This is because enum_ended would get set for !more after returning a
cookie for the first MMC device in group 3.

Fix this by properly setting the "more" argument also in the case of the
first storage device of a group.

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 api/api_storage.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Tom Rini Sept. 15, 2015, 9:34 p.m. UTC | #1
On Mon, Sep 14, 2015 at 12:21:34PM +0200, Andreas Färber wrote:

> When enabling CONFIG_API and chain-loading GRUB2 on jetson-tk1, only the
> eMMC would show up as (hd0), but not the SD card, leading to GRUB not
> finding its configuration and modules, falling back to a rescue shell.
> 
> This is because enum_ended would get set for !more after returning a
> cookie for the first MMC device in group 3.
> 
> Fix this by properly setting the "more" argument also in the case of the
> first storage device of a group.
> 
> Signed-off-by: Andreas Färber <afaerber@suse.de>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/api/api_storage.c b/api/api_storage.c
index b76b07d..ec92ae4 100644
--- a/api/api_storage.c
+++ b/api/api_storage.c
@@ -112,6 +112,11 @@  static int dev_stor_get(int type, int first, int *more, struct device_info *di)
 		else
 			found = 1;
 
+		/* provide hint if there are more devices in
+		 * this group to enumerate */
+		if (1 < specs[type].max_dev)
+			*more = 1;
+
 	} else {
 		for (i = 0; i < specs[type].max_dev; i++)
 			if (di->cookie == (void *)get_dev(specs[type].name, i)) {