[U-Boot] [PATCH 1/1] efi_loader: disk: iterate only over valid block devices

Alexander Graf agraf at suse.de
Mon Jul 3 16:07:55 UTC 2017


On 07/03/2017 05:34 PM, Simon Glass wrote:
> Hi Alex,
>
> On 3 July 2017 at 06:37, Alexander Graf <agraf at 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 mmc at 70000.blk...
>>>> Scanning disk mmc at 72000.blk...
>>>> Card did not respond to voltage select!
>>>> mmc_init: -95, time 9
>>>> Scanning disk mmc at 74000.blk...
>>>> Found 3 disks
>>>> Hello, world!
>>>> ## Application terminated, r = 0
>>>>
>>>> Signed-off-by: Heinrich Schuchardt <xypron.glpk at 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 <afaerber at 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



More information about the U-Boot mailing list