Re: [PATCH v4 5/6] of: Add #address-cells/#size-cells in the device-tree root empty node

Rob Herring
2024-12-02T15:48:02Z

On Mon, Dec 02, 2024 at 02:15:17PM +0100, Herve Codina wrote:
> On systems where ACPI is enabled or when a device-tree is not passed to
> the kernel by the bootloader, a device-tree root empty node is created.
> This device-tree root empty node does not have the #address-cells and
> the #size-cells properties
>
> This leads to the use of the default address cells and size cells values
> which are defined in the code to 1 for the address cells value and 1 for
> the size cells value.
>
> According to the devicetree specification and the OpenFirmware standard
> (IEEE 1275-1994) the default value for #address-cells should be 2.
>
> Also, according to the devicetree specification, the #address-cells and
> the #size-cells are required properties in the root node.
>
> The device tree compiler already uses 2 as default value for address
> cells and 1 for size cells. The powerpc PROM code also uses 2 as default
> value for address cells and 1 for size cells. Modern implementation
> should have the #address-cells and the #size-cells properties set and
> should not rely on default values.
>
> On x86, this root empty node is used and the code default values are
> used.
>
> In preparation of the support for device-tree overlay on PCI devices
> feature on x86 (i.e. the creation of the PCI root bus device-tree node),
> the default value for #address-cells needs to be updated. Indeed, on
> x86_64, addresses are on 64bits and the upper part of an address is
> needed for correct address translations. On x86_32 having the default
> value updated does not lead to issues while the upper part of a 64-bit
> value is zero.
>
> Changing the default value for all architectures may break device-tree
> compatibility. Indeed, existing dts file without the #address-cells
> property set in the root node will not be compatible with this
> modification.
>
> Instead of updating default values, add both required #address-cells
> and #size-cells properties in the device-tree empty node.
>
> Use 2 for both properties value in order to fully support 64-bit
> addresses and sizes on systems using this empty root node.
>
> Signed-off-by: Herve Codina <herve.codina@bootlin.com>
> ---
> drivers/of/empty_root.dts | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)

This also fixes unittest hitting a warning added for 6.13. So
I've applied this patch as a fix.

Rob