https://github.com/torvalds/linux
Raw File
Tip revision: 1c7fc5cbc33980acd13d668f1c8f0313d6ae9fd8 authored by Linus Torvalds on 13 January 2019, 22:41:12 UTC
Linux 5.0-rc2
Tip revision: 1c7fc5c
dynamic-resolution-notes.txt
Device Tree Dynamic Resolver Notes
----------------------------------

This document describes the implementation of the in-kernel
Device Tree resolver, residing in drivers/of/resolver.c

How the resolver works
----------------------

The resolver is given as an input an arbitrary tree compiled with the
proper dtc option and having a /plugin/ tag. This generates the
appropriate __fixups__ & __local_fixups__ nodes.

In sequence the resolver works by the following steps:

1. Get the maximum device tree phandle value from the live tree + 1.
2. Adjust all the local phandles of the tree to resolve by that amount.
3. Using the __local__fixups__ node information adjust all local references
   by the same amount.
4. For each property in the __fixups__ node locate the node it references
   in the live tree. This is the label used to tag the node.
5. Retrieve the phandle of the target of the fixup.
6. For each fixup in the property locate the node:property:offset location
   and replace it with the phandle value.
back to top