efi-loader ignores dtb files?

Kyle Evans kevans at freebsd.org
Thu Mar 28 19:10:46 UTC 2019


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.

> [0] https://people.freebsd.org/~kevans/overlay-hack.diff

[1] http://people.freebsd.org/~kevans/overlay-lesshack.diff


More information about the freebsd-arm mailing list