u-boot DT configuration node

Mark Kettenis mark.kettenis at xs4all.nl
Thu Apr 2 13:34:46 CEST 2020


> From: Michal Simek <michal.simek at xilinx.com>
> Date: Thu, 2 Apr 2020 08:05:36 +0200
> 
> On 01. 04. 20 20:09, Mark Kettenis wrote:
> >> From: Michal Simek <michal.simek at xilinx.com>
> >> Date: Wed, 1 Apr 2020 11:23:13 +0200
> >>
> >> Hi Rob and others,
> >>
> >> for couple of years already u-boot is using config node in root DT for
> >> u-boot configuration.
> >>
> >> Here is one example in u-boot source code.
> >> https://gitlab.denx.de/u-boot/u-boot/-/blob/master/arch/arm/dts/exynos5250-spring.dts#L47
> >>
> >> And here is dt binding description
> >> https://gitlab.denx.de/u-boot/u-boot/-/blob/master/doc/device-tree-bindings/config.txt
> >>
> >> I was checking dt binding specification and there no such a thing
> >> described there. It means I expect this is more adhoc u-boot solution.
> >> We have reached the point where could be beneficial to put some u-boot
> >> specific configurations to DT.
> >>
> >> Actually I have done similar thing some time ago too by using chosen
> >> node and add xilinx specific property there to point to eeprom.
> >> https://gitlab.denx.de/u-boot/u-boot/-/blob/master/arch/arm/dts/zynqmp-zcu102-revA.dts#L39
> >>
> >> I think it is a time to discuss it and do it properly.
> >>
> >> First of all my question is where we could list SW prefixes to make sure
> >> that they are listed and everybody is aware about it. We have
> >> vendor-prefixes and we should have a way to record also prefixes for sw
> >> projects. U-Boot is using u-boot. Xen has file in the kernel with using
> >> xen prefix. At least these two should be listed.
> > 
> > OpenBSD is using "openbsd," as a prefix.  I've always thought it would
> > be good to have it listed in the list of vendor prefixes there.  In an
> > open source world it shouldn't matter whether an entity sells
> > something or not.  And in fact "inux," is already there.  And so is
> > "qemu,".
> 
> Good we have more.
> 
> 
> > 
> >> Next my question is what is the recommended way to pass sw specific
> >> parameters via DT? I think using chosen node is more appropriate then
> >> adhoc config node. Or is there a better way how this should be done?
> > 
> > On OpenBSD we do indeed use the the chosen node to pass information
> > between the bootloader and the kernel.
> 
> Can you please point me to any example or description what you are
> adding there?

Here is an example of what the chosen node looks like:

    Node 0x2220
            name: 'chosen'
            openbsd,uefi-mmap-desc-ver: 00000001
            openbsd,uefi-mmap-desc-size: 00000030
            openbsd,uefi-mmap-size: 00000540
            openbsd,uefi-mmap-start: 00000081.fbe37df8
            openbsd,uefi-system-table: 00000081.ff910018
            openbsd,bootduid: 1b33bbab.1613122f
            bootargs: 'sd0a:/bsd'
            stdout-path: '/smb/serial at e1010000'

The openbsd,uefi-* proprties are effectively the same those already
documented for linux and xen.  The openbsd,bootduid contains the
unique idea of the boot disk such that the kernel can find it and use
it as its root disk.  There is also an openbsd,bootmac property to
support netbooting, and openbsd,sr-bootuuid and openbsd,sr-bootkey
properties to support booting from software raid with full disk
encryption.  The actual key is zeroed out as soon as possible by the
kernel.

This all is pretty much a private interface between the boot loader
and the kernel though.

For booting on arm64 systems that use ACPI instead of a device tree,
the bootloader creates its own minimal device tree that contains a few
specific nodes that use compatible properties wuth an "openbsd,"
prefix.  But once again that is a private interface between bootloader
and kernel.

Cheers,

Mark


More information about the U-Boot mailing list