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

Alexander Graf agraf at suse.de
Mon Jul 3 12:37:37 UTC 2017


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?


Alex



More information about the U-Boot mailing list