[U-Boot] [PATCH 1/1] efi_loader: disk: iterate only over valid block devices
Heinrich Schuchardt
xypron.glpk at gmx.de
Thu Jul 13 16:42:02 UTC 2017
On 07/03/2017 06:07 PM, Alexander Graf wrote:
> 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
>
>
Hello Alex,
in your efi-next tree you now have the prerequisite patch.
Please, pull
https://patchwork.ozlabs.org/patch/778454/
Best regards
Heinrich
More information about the U-Boot
mailing list