efi-loader ignores dtb files?

Manuel Stühn freebsdnewbie at freenet.de
Thu Mar 28 18:06:16 UTC 2019


On Wed, 27 Mar 2019 14:35:26 -0500
Kyle Evans <kevans at freebsd.org> wrote:

> On Wed, Mar 27, 2019 at 2:26 PM Manuel Stühn <freebsdnewbie at freenet.de> wrote:
> >
> > While trying to get FreeBSD 12.0 up and running on a NanoPI NEO2
> > (aarch64 Allwinner H5) I'm stumbling over issues with
> > loader/loader.conf.  FreeBSD starts fine, but it uses the
> > devicetree-blob provided by uboot/EFI. I've tried to load the FreeBSD
> > one by adding these lines to loader.conf:
> >
> > sun50i-h5-nanopi-neo2.dtb_load="YES"
> > sun50i-h5-nanopi-neo2.dtb_type="dtb"
> >
> > and put the dtb file into /boot/dtb/sun50i-h5-nanopi-neo2.dtb, but this
> > did not work at all.  It got completely ignored by loader. The rest of
> > the file was read and applied correctly (kernel-modules i'd added for
> > testing purposes were loaded correctly).
> >
> > I tried to load it by hand like this:
> >
> > load -t dtb sun50i-h5-nanopi-neo2.dtb
> >
> > which worked, the dtb file was loaded and used. After consulting
> > loader.conf(5) i found this way to load modules:
> >
> > dtbfile_load="YES"
> > dtbfile_type="dtb"
> > dtbfile_name="sun50i-h5-nanopi-neo2.dtb"
> >
> > and this finally triggered loader(8) to actually load the dtb.
> > Unfortunatley the problem occurred again when i tried to add overlays.
> > Those are, again, not recognized at all:
> >
> > /boot/loader.conf:
> > fdt_overlays="sun50i-nanopi-neo2-codec.dtbo,sun50i-nanopi-neo2-sid.dtbo,sun50i-nanopi-neo2-ths.dtbo"
> >
> > Any ideas?
> 
> Yes- for your first problem, loader doesn't recognize a period as a
> valid module name, so those directives would not have gotten
> recognized as modules to load.

Should it work without period (it does not)?

sun50i-h5-nanopi-neo2_load="YES"
sun50i-h5-nanopi-neo2_type="dtb"


> 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?

> It might be a good idea to drop to loader prompt and trigger overlay
> application. No output at all?
> 
> > BTW, is there a way to keep the u-boot logs printed before the
> > FreeBSD-boot-menu gets drawn? The console gets cleared and erases some
> > (valuable?) information. I was always to slow to stop the boot right
> > after the last line of u-boot and the first of EFI.
> 
> Any reason you need to keep the loader menu? Disabling it
> (beastie_disable="YES") and lack of password prompts will stop the
> screen clearing in recent-ish versions of the lua scripts from head.
> 
> Thanks,
> 
> Kyle Evans


-- 
Manuel


More information about the freebsd-arm mailing list