On 04/16/2017 09:34 PM, Simon Glass wrote: > Hi Alex, > > On 16 April 2017 at 04:08, Alexander Graf <ag...@suse.de> wrote: >> >> >> On 16.04.17 04:09, Heinrich Schuchardt wrote: >>> >>> On 04/15/2017 11:51 PM, Andreas Färber wrote: >>>> >>>> Am 15.04.2017 um 23:16 schrieb Andreas Färber: >>>>> >>>>> Am 15.04.2017 um 23:04 schrieb Alexander Graf: >>>>>>> >>>>>>> Am 15.04.2017 um 22:34 schrieb Andreas Färber <afaer...@suse.de>: >>>>>>>> >>>>>>>> Am 15.04.2017 um 20:27 schrieb Alexander Graf: >>>>>>>>> >>>>>>>>> On 15.04.17 20:18, Heiner Kallweit wrote: >>>>>>>>>> >>>>>>>>>> Am 15.04.2017 um 17:05 schrieb Andreas Färber: >>>>>>>>>> But for the Vega S95 Telos I needed to disable the first of three >>>>>>>>>> MMC >>>>>>>>>> nodes (SDIO) - otherwise U-Boot would happily iterate over them for >>>>>>>>>> distro boot with Heinrich's patch, but GRUB would come up with no >>>>>>>>>> disks, >>>>>>>>>> so that booting failed. I'm not yet sure why, maybe it's a >>>>>>>>>> UEFI-side >>>>>>>>>> problem in that it is the first MMC device that is absent rather >>>>>>>>>> than >>>>>>>>>> the last one? >>>>>>>>>> >>>>>>>>> I don't own this device so I can just provide a guess. >>>>>>>>> Based on DT the device ordering most likely is: >>>>>>>>> mmc0: SDIO >>>>>>>>> mmc1: SD >>>>>>>>> mmc2: eMMC >>>>>>> >>>>>>> [...] >>>>>>>> >>>>>>>> If grub comes up, distro boot has successfully found the target >>>>>>>> binary >>>>>>>> and executed it. For some reason, grub can not find its boot origin >>>>>>>> though. >>>>>>>> >>>>>>>> Andreas, please add debug prints like the ones below and check that >>>>>>>> the >>>>>>>> device names match: >>>>>>> >>>>>>> >>>>>>> U-Boot 2017.05-rc1-00318-g082535f-dirty (Apr 15 2017 - 22:29:17 +0200) >>>>>>> vega-s95 >>>>>>> >>>>>>> DRAM: 2 GiB >>>>>>> MMC: mmc@70000: 0, mmc@72000: 1, mmc@74000: 2 >>>>>>> Using default environment >>>>>>> >>>>>>> In: serial@4c0 >>>>>>> Out: serial@4c0 >>>>>>> Err: serial@4c0 >>>>>>> Net: eth0: ethernet@c9410000 >>>>>>> Hit any key to stop autoboot: 0 >>>>>>> mmc_init: -95, time 1806 >>>>>>> MMC Device 0 not found >>>>>>> no mmc device at slot 0 >>>>>>> switch to partitions #0, OK >>>>>>> mmc1 is current device >>>>>>> Scanning mmc 1:1... >>>>>>> Setting boot device name to '//boot/dtb/amlogic/meson-gxbb-v' >>>>>>> 20335 bytes read in 43 ms (460.9 KiB/s) >>>>>>> Found EFI removable media binary efi/boot/bootaa64.efi >>>>>>> Setting boot device name to '/efi/boot/bootaa64.efi' >>>>>>> reading efi/boot/bootaa64.efi >>>>>>> 129024 bytes read in 13 ms (9.5 MiB/s) >>>>>>> ## Starting EFI application at 01080000 ... >>>>>>> mmc_init: -95, time 1807 >>>>>>> Found 0 disks >>>>>> >>>>>> >>>>>> That looks like efi_disk didn't manage to enumerate any devices? >>>>> >>>>> >>>>> Apparently. The last line comes from >>>>> lib/efi_loader_efi_disk:efi_disk_register(), and CONFIG_BLK=y. As you >>>>> can see, there is not a single "Scanning disk" line, so I guess we do >>>>> not iterate over uclass devices properly? >>>>> >>>>> On the Odroid-C2 I get this: >>>>> >>>>> Scanning disk m...@72000.blk... >>>>> Card did not respond to voltage select! >>>>> mmc_init: -95, time 9 >>>>> Found 1 disks >>>>> >>>>> Therefore my guess that it matters at what point in time - before or >>>>> after the disk we want - the error accessing an MMC device happens. >>>> >>>> >>>> For comparison, Vega S95 with first MMC node disabled in DT: >>>> >>>> Scanning disk m...@72000.blk... >>>> Adding disk device 'm...@72000.blk' >>>> ** First descriptor is NOT a primary desc on 1:1 ** >>>> Scanning disk m...@74000.blk... >>>> Adding disk device 'm...@74000.blk' >>>> Found 2 disks >>>> >>>> Regards, >>>> Andreas >>>> >>> By adding sd_mmc_a to the odroid-c2.dts I was able to reproduce the >>> problem on the Odroid C2. >>> >>> While booting from SD card via booti still worked >>> bootefi would not find any block device: >>> >>> => bootefi hello >>> ## Starting EFI application at 01000000 ... >>> WARNING: Invalid device tree, expect boot to fail >>> efi_add_memory_map: 0x7cf53000 0x1 2 yes >>> uclass_find_device_by_seq: 0 -1 >>> uclass_find_device_by_seq: 0 0 >>> - -1 -1 >>> - -1 -1 >>> - -1 -1 >>> - not found >>> set_state_simple op missing >>> blk_get_device: if_type=6, devnum=0: m...@70000.blk, 6, 0 >>> mmc_init: -95, time 1807 >>> Found 0 disks >>> efi_add_memory_map: 0x7cf52000 0x1 6 yes >>> do_bootefi_exec:234 Jumping to 0x7cf53148 >>> EFI: Entry efi_cout_output_string(000000007ff94b38, 000000007cf53280) >>> Hello, world! >>> EFI: Entry efi_exit(000000007ffa4598, 0, 0, 0000000000000000) >>> ## Application terminated, r = 0 >>> >>> In the debug output you can see that after trying non-existant >>> m...@70000.blk no further devices are scanned. m...@72000.blk which has >>> the SD card is not enumerated. >> >> >> To me that looks like something wrong with DM code, as there is no explicit >> abort condition in efi_disk_register() for the CONFIG_BLK case. Let's CC >> Simon and ask for help :). > > Reviewed-by: Simon Glass <s...@chromium.org> > > Do you have a board that uses CONFIG_BLK?
make odroid-c2_defconfig results in CONFIG_BLK=y > > Or could we enhance my helloworld test to check the test? I really > don't like having to run grub to find bugs :-) The current debug output is sufficient to demonstrate that the MMC devices are not correctly enumerated for bootefi if the first device cannot be probed. Regards Heinrich Schuchardt _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot