Re: EDK2 on RPi3 was: Re: u-boot debug, was: Re: U-boot on RPI3, sees disk but won't boot it
Date: Tue, 25 Oct 2022 03:32:17 UTC
On 2022-Oct-24, at 17:50, bob prohaska <fbsd@www.zefox.net> wrote: > On Mon, Oct 24, 2022 at 11:50:11AM -0700, Mark Millard wrote: >> >> bootcode.bin is only likely to help stages before >> u-boot.bin starts. If it makes to to u-boot.bin >> starting, bootcode.bin is then likely irrelevant >> from then on. >> >> In fact bootcoce.bin is what loads the start*.elf Typo fix: bootcode.bin >> that is used. If the start*.elf starts, bootcode.bin >> is likely irrelevant past that point. >> > I've put the console output at > http://www.zefox.net/~fbsd/rpi2/20221024/boot_console > in case it's of interest. It was a RPi2B v1.1 (Cortex-A7 form of armv7). It was a U-Boot 2022.04 based boot sequence for the U-Boot stage. swapon: /dev/sdda0s2b: No such file or directory looks like us has an incorrect "sd" between "/" and "da0s2b". I've not seen/noticed the following before: QUOTE ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib /usr/local/lib/compat/pkg /usr/local/lib/compat/pkg Soft Float compatibility ldconfig path: ldconfig: illegal option -- o usage: ldconfig [-32] [-elf] [-Rimrv] [-f hints_file] [directory | file ...] END QUOTE But, to my knowledge, "Soft Float" is not in use any more (by default, anyway). It might be that something is left over from long ago? Looking, I see: QUOTE author Warner Losh <imp@FreeBSD.org> 2022-01-07 05:34:18 +0000 committer Warner Losh <imp@FreeBSD.org> 2022-01-07 05:34:18 +0000 commit d418bc27e601ec6bba0506d0efb62eca5eda5ab8 (patch) tree 14a7fb6ba93ab48d7e1c746a09e7d1d5de6f897e /libexec/rc/rc.d/ldconfig parent b68d6892ba8aa14470e94a408b43ce4d8b1761da (diff) download src-d418bc27e601ec6bba0506d0efb62eca5eda5ab8.tar.gz src-d418bc27e601ec6bba0506d0efb62eca5eda5ab8.zip libsoft: Remove runtime ldconfig support for libsoft Remove the runtime support for running ldconfig at boot to cache lists of libsoft libbraries. END QUOTE ( Note: /libexec/rc/rc.d/ldconfig is installed to /etc/rc.d/ldconfig .) Your /etc/rc.d/ldconfig script seems to have not been updated by use of etcupdate or mergemaster or other such. (How much else is also out of date? How much of what you have for /etc/ and the like goes back to 2022-Jan-07 or before?) > There are a surprising number > of what look like complaints/errors, but it boots anyway. > >> >>> The interest I expressed in EDK2 appears to have been misguided, >>> or at least premature. I was hoping it might be a more tractable >>> replacement for u-boot, but it's equally inscrutable to an amateur. >> >> >> Was this based on mina ports before vs. after: Another wonderful typo of mine: "mina". >> QUOTE >> author Mark Millard <marklmi26-fbsd@yahoo.com> 2022-10-21 21:47:14 +0000 >> committer Lorenzo Salvadore <salvadore@FreeBSD.org> 2022-10-21 22:00:03 +0000 >> > > After. Before it failed in the expected way. After, it succeeded, but > built edk2 for macchiatobin that wasn't useful. I couldn't figure out > how to make poudriere attempt to build the needed rpi3 flavor (The FLAVORS material below is more for providing background in building flavored ports than for EDK2 specifically, but using EDK2 as the example . . .) The sysutils/edk2/Makefile has: FLAVORS= macchiatobin fvp rpi3 rpi4 xen_x64 bhyve qemu_x64 qemu_i386 Being listed first, macchiatobin is the default flavor. To specify a flavor explicitly on the poudriere bulk command, use notation like one or more of the following on the command line: sysutils/edk2@macchiatobin sysutils/edk2@fvp sysutils/edk2@rpi3 sysutils/edk2@rpi4 So the last 2 of those 4 are the ones that fit your context. (The later ones in the FLAVORS list have: ONLY_FOR_ARCHS=amd64 .) Other than flavors handling . . . I've commented before that I'm not aware of an armv7 EDK2. So no coverage of an RPi2 v1.1 as far as I know. ( Also known via any of its dtb names, such as: bcm2709-rpi-2-b.dtb . bcm2710-rpi-2-b.dtb is the v1.2 aarch64 variant.) The RPi3 EDK2 only supplies the RPi* firmware that it gets via curl when the official RPi3 pftf EDK2 ( https://github.com/pftf/RPi3 ) related builds are done: - name: Download Raspberry Pi support files run: | curl -O -L https://github.com/raspberrypi/firmware/raw/master/boot/bootcode.bin curl -O -L https://github.com/raspberrypi/firmware/raw/master/boot/fixup.dat curl -O -L https://github.com/raspberrypi/firmware/raw/master/boot/start.elf curl -O -L https://github.com/raspberrypi/firmware/raw/master/boot/bcm2710-rpi-3-b.dtb curl -O -L https://github.com/raspberrypi/firmware/raw/master/boot/bcm2710-rpi-3-b-plus.dtb curl -O -L https://github.com/raspberrypi/firmware/raw/master/boot/bcm2710-rpi-cm3.dtb (FreeBSD's port does not deal with such things at all.) So no bcm2710-rpi-2-b.dtb . I do not know if the RPi3 EDK2 would be well behaved with an appropriate vintage bcm2710-rpi-2-b.dtb added or not. I've never tried such. I forgot to mention that the offical RPI4 pftf EDK2 ( https://github.com/pftf/RPi4 ) related build has 2 patches to EDK2: - name: Patch EDK2 repositories run: | patch --binary -d edk2 -p1 -i ../0001-MdeModulePkg-UefiBootManagerLib-Signal-ReadyToBoot-o.patch patch --binary -d edk2-platforms -p1 -i ../0002-Check-for-Boot-Discovery-Policy-change.patch These would not be in the FreeBSD port's build. FYI, for the RPi4 EDK2: - name: Download Raspberry Pi support files run: | curl -O -L ${{ env.RPI_FIRMWARE_URL }}/raw/${{ env.START_ELF_VERSION }}/boot/fixup4.dat curl -O -L ${{ env.RPI_FIRMWARE_URL }}/raw/${{ env.START_ELF_VERSION }}/boot/start4.elf curl -O -L ${{ env.RPI_FIRMWARE_URL }}/raw/${{ env.DTB_VERSION }}/boot/bcm2711-rpi-4-b.dtb curl -O -L ${{ env.RPI_FIRMWARE_URL }}/raw/${{ env.DTB_VERSION }}/boot/bcm2711-rpi-cm4.dtb curl -O -L ${{ env.RPI_FIRMWARE_URL }}/raw/${{ env.DTB_VERSION }}/boot/bcm2711-rpi-400.dtb curl -O -L ${{ env.RPI_FIRMWARE_URL }}/raw/${{ env.DTBO_VERSION }}/boot/overlays/miniuart-bt.dtbo curl -O -L ${{ env.RPI_FIRMWARE_URL }}/raw/${{ env.DTBO_VERSION }}/boot/overlays/upstream-pi4.dtbo mkdir overlays mv *.dtbo overlays (I add and use disable-bt.stbo . They do mention its use in some instructions someplace.) > and didn't > find a flavor for rpi2. This was on a Pi4 running -current. I supplied notes about RPi2B's earlier, above. > It's unclear to me if edk2 offers any advantage over u-boot, at least > when u-boot works. I only suggested EDK2 because U-Boot was not working well and there might be a chance that EDK2 might work better for for that stage in one or more of your detailed contexts. (No claim that this would improve FreeBSD kernel handling of any RPi*/bridge/drive combinations --or the earlier RPi* firmware stage.) If it does not work better for any, I'd suggeste avoiding being outside the somewhat supported FreeBSD RPi* context: avoid EDK2. (I use both styles of booting, but I'm odd.) I'll note that the main ports has updated U-Boot's from 2022.04 to 2022.10 . No clue if you might see behavioral changes for the U-Boot stage if you update. Also, Warner L. has checked in a fix for main FreeBSD's EFI loader build ( in stand/efi/ ) for armv7(/armv6). The next snapshot for armv7 main [so: 14] should have it. > I think HPS's changes to usb probably did help, Good. > but > won't know for a while yet given the erratic nature of the troubles. Yep. === Mark Millard marklmi at yahoo.com