On Mon, Jun 13, 2016 at 12:43:59PM +0200, Mark Kettenis wrote: > > Date: Sun, 12 Jun 2016 19:48:24 +0200 > > From: Matthieu Herrb <[email protected]> > > > > Hi, > > > > I'm trying to convert my SabreLite board to boot via efiboot, but > > without success so far. > > > > I'm using the nitrogen6q u-boot from ports > > > > the boot loader is loaded and runs but it > > fails to find the sata disk to load the kernel: > > > > => fatload sata 0:1 0x10800000 efi/boot/bootarm.efi > > reading efi/boot/bootarm.efi > > 65556 bytes read in 9 ms (6.9 MiB/s) > > => fatload sata 0:1 0x13000000 imx6q-sabrelite.dtb > > reading imx6q-sabrelite.dtb > > 36834 bytes read in 8 ms (4.4 MiB/s) > > => bootefi 0x10800000 0x13000000 > > ## Starting EFI application at 0x10800000 ... > > Scanning disks on sata... > > Scanning disks on usb... > > Scanning disks on mmc... > > MMC: no card present > > MMC Device 2 not found > > MMC Device 3 not found > > Found 2 disks > > The firmware found 2 disks. Perhaps there is something wrong with > efiboot boot device selection code. And unfortunately efiboot doesn't > currently support selecting alternative boot devices. > > > >> OpenBSD/armv7 BOOTARM 0.1 > > boot> > > cannot open sd0a:/etc/random.seed: Device not configured > > booting sd0a:/bsd: open sd0a:/bsd: Device not configured > > failed(6). will try /bsd > > boot> > > This suggests that we actually didn't find the boot device. So the > problem might be that the boot device selection code in efiboot > doesn't work for SATA devices.
I played a bit with the u-boot sources, and rebuilt it with the patch
below to print the devname of the disks it found. I get:
=> bootefi 0x10800000 0x13000000
## Starting EFI application at 0x10800000 ...
Scanning disks on sata...
Found 'sata0'
Scanning disks on usb...
Scanning disks on mmc...
Found 'mmc0'
MMC: no card present
MMC Device 2 not found
MMC Device 3 not found
Found 2 disks
ยป OpenBSD/armv7 BOOTARM 0.1
boot>
booting sd0a:/bsd: open sd0a:/bsd: Device not configured
failed(6). will try /bsd
so the sata0 disk is found. now I lost track of how this is passed to
the bootloader. Any hint ?
--- lib/efi_loader/efi_disk.c~ Mon May 16 16:40:32 2016
+++ lib/efi_loader/efi_disk.c Sun Jun 12 17:22:22 2016
@@ -242,6 +242,7 @@
snprintf(devname, sizeof(devname), "%s%d",
cur_drvr->name, i);
efi_disk_add_dev(devname, cur_drvr, desc, i, 0);
+ printf("Found '%s'\n", devname);
disks++;
/*
--
Matthieu Herrb
signature.asc
Description: PGP signature
