On 07/03/2017 05:34 PM, Simon Glass wrote:
Hi Alex,

On 3 July 2017 at 06:37, Alexander Graf <ag...@suse.de> wrote:
On 06/20/2017 09:39 PM, Andreas Färber wrote:
Am 20.06.2017 um 21:10 schrieb Heinrich Schuchardt:
The efi_loader currently stops iterating over the available
block devices stopping at the first device that fails.
This may imply that no block device is found.

With the patch efi_loader only iterates over valid devices.

It is based on patch
06d592bf52f6 (dm: core: Add uclass_first/next_device_check())
which is currently in u-boot-dm.git.

For testing I used an odroid-c2 with a dts including
&sd_emmc_a {
         status = "okay";
};
This device does not exist on the board and cannot be initialized.

Without the patch:

=> bootefi hello
## Starting EFI application at 01000000 ...
WARNING: Invalid device tree, expect boot to fail
mmc_init: -95, time 1806
Found 0 disks
Hello, world!
## Application terminated, r = 0

With the patch:

=> bootefi hello
## Starting EFI application at 01000000 ...
WARNING: Invalid device tree, expect boot to fail
mmc_init: -95, time 1806
Scanning disk m...@70000.blk...
Scanning disk m...@72000.blk...
Card did not respond to voltage select!
mmc_init: -95, time 9
Scanning disk m...@74000.blk...
Found 3 disks
Hello, world!
## Application terminated, r = 0

Signed-off-by: Heinrich Schuchardt <xypron.g...@gmx.de>
---
   lib/efi_loader/efi_disk.c | 4 ++--
   1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c
index 39e602a868..4e8e7d0ad6 100644
--- a/lib/efi_loader/efi_disk.c
+++ b/lib/efi_loader/efi_disk.c
@@ -289,9 +289,9 @@ int efi_disk_register(void)
   #ifdef CONFIG_BLK
         struct udevice *dev;
   -     for (uclass_first_device(UCLASS_BLK, &dev);
+       for (uclass_first_device_check(UCLASS_BLK, &dev);
              dev;
-            uclass_next_device(&dev)) {
+            uclass_next_device_check(&dev)) {
                 struct blk_desc *desc = dev_get_uclass_platdata(dev);
                 const char *if_typename = dev->driver->name;

Thanks, looks good.

Reviewed-by: Andreas Färber <afaer...@suse.de>

This will be needed for the NanoPi K2 when importing the SDIO-enabled
Linux .dts.

Simon, this patch requires your patches to be in tree first. What's your
plan to move forward here?
It is applied to u-boot-dm/master but was too late for this release,
which should be in a week.

Awesome :). Please CC me on the pull request then, so that I see when I can merge things into mine and apply it there.


Alex

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to