efi-loader ignores dtb files?

Manuel Stühn freebsdnewbie at freenet.de
Sun Mar 31 15:57:06 UTC 2019


On Thu, 28 Mar 2019 21:50:48 +0100
Manuel Stühn <freebsdnewbie at freenet.de> wrote:

> On Thu, 28 Mar 2019 14:10:27 -0500
> Kyle Evans <kevans at freebsd.org> wrote:
> 
> > On Thu, Mar 28, 2019 at 1:30 PM Kyle Evans <kevans at freebsd.org> wrote:
> > >
> > > On Thu, Mar 28, 2019 at 1:06 PM Manuel Stühn <freebsdnewbie at freenet.de> wrote:
> > > >
> > > > On Wed, 27 Mar 2019 14:35:26 -0500
> > > > Kyle Evans <kevans at freebsd.org> wrote:
> > > [... snip ...]
> > > > > I'm not sure off-hand why fdt_overlays were not recognized. I would
> > > > > drop to loader prompt and double check that it actually ended up in
> > > > > the environment, but I don't see any reason off-hand that it wouldn't.
> > > >
> > > > I tried to load the overlays from loader prompt by hand like this:
> > > > load -t dtbo sun50i-nanopi-neo2-codec.dtbo
> > > > load -t dtbo sun50i-nanopi-neo2-sid.dtbo
> > > > load -t dtbo sun50i-nanopi-neo2-ths.dtbo
> > > > and they got applied correctly and the corresponding devices appeared in the OS.
> > > >
> > > > As another test I did was to not load the base dtb file via loader.conf but to use the one provided by u-boot/EFI.
> > > > The output looked like this
> > > > [...]
> > > > Using DTB provided by EFI at 0x47ef8000.
> > > > Loading DTB overlays: 'sun50i-nanopi-neo2-codec.dtbo,sun50i-nanopi-neo2-sid,sun50i-nanopi-neo2-ths.dtbo'
> > > > /boot/dtb/overlays/sun50i-nanopi-neo2-codec.dtbo size=0x11a
> > > > /boot/dtb/overlays/sun50i-nanopi-neo2-sid.dtbo size=0x1f5
> > > > /boot/dtb/overlays/sun50i-nanopi-neo2-ths.dtbo size=0x3c5
> > > > applying DTB overlay '/boot/dtb/overlays/sun50i-nanopi-neo2-codec.dtbo'
> > > > applying DTB overlay '/boot/dtb/overlays/sun50i-nanopi-neo2-sid.dtbo'
> > > > applying DTB overlay '/boot/dtb/overlays/sun50i-nanopi-neo2-ths.dtbo'
> > > > failed to apply overlay: FDT_ERR_NOTFOUND
> > > > [...]
> > > > In this case the overlays were found and loaded, but did most likely not match the u-boot dtb file.
> > > >
> > > > Is there an issue with loading overlays in conjunction with manually loading dtb files via loader.conf?
> > > >
> > >
> > > Yes, I see a problem -- try something like [0] (not even compile
> > > tested, but it should work). I'll start working out a more proper
> > > solution.
> > 
> > I've devised a solution that's a little less hacky at [1]. It
> > separates out the loading of overlays from platform_load_dtb into its
> > own platform_load_overlays. I've left it as a platform-specific thing
> > instead of lifting it into the common fdt bits for two reasons:
> > 
> > 1.) We still technically support setting fdt_overlays in the U-Boot
> > environment and honoring that, and
> > 2.) Not all FDT platforms support overlays as they've not been tested,
> > so it's probably best to nop it there for now just in case...
> > 
> > If we're ok with dropping #1 (probably not even used, but we don't
> > have a way of measuring usage there) and OK with adding untested
> > overlay support to powerpc/{ofw,kboot} then this diff drops
> > dramatically and the calls to fdt_platform_load_overlays get replaced
> > with fdt_load_dtb_overlays calls.boot/loader_lua.efi
> > 
> > > [0] https://people.freebsd.org/~kevans/overlay-hack.diff
> > 
> > [1] http://people.freebsd.org/~kevans/overlay-lesshack.diff
> 
> Thank you for your patches. I've been trying patch[1] but unfortunately
> it seems to not work for me. 

The patch[1] _does_ work, actually. I only had to realize
that the loader-files in /boot seem not being involved in booting the
system. After updating /EFI/BOOT/bootaa64.efi with the patched version
of boot/loader_lua.efi all the overlays were applied correctly.

> Due to my lack of knowledge on how to only
> build and install /usr/src/stand 

Only for the records: how to cross-build and install
only /usr/src/stand: 
% export TARGET=arm64
% export TARGET_ARCH=aarch64
% export DESTDIR=/path/to/install
% cd /usr/src/
% make buildenv
% cd /usr/src/stand
% make && make install

> I've built+installed both
> kernel+world, but the described behavior did not change; still no
> overlays when defining a dtb file in loader.conf.

-- 
Manuel


More information about the freebsd-arm mailing list