On Fri, Nov 8, 2024 at 8:36 AM Herve Codina <herve.codina@xxxxxxxxxxx> 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 doesn't have the #address-cells and the and the? > This leads to the use of the default address cells and size cells values > which are defined in the code to 1 for address cells and 1 for size cells Missing period. > > 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. > > 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 uppert part of a 64bits upper > address 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 required #address-cells and and? > > Signed-off-by: Herve Codina <herve.codina@xxxxxxxxxxx> > --- > drivers/of/empty_root.dts | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/of/empty_root.dts b/drivers/of/empty_root.dts > index cf9e97a60f48..5017579f34dc 100644 > --- a/drivers/of/empty_root.dts > +++ b/drivers/of/empty_root.dts > @@ -2,5 +2,11 @@ > /dts-v1/; > > / { > - > + /* > + * #address-cells/#size-cells are required properties at root node > + * according to the devicetree specification. Use same values as default > + * values mentioned for #address-cells/#size-cells properties. Which default? We have multiple... There's also dtc's idea of default which IIRC is 2 and 1 like OpenFirmware. > + */ > + #address-cells = <0x02>; > + #size-cells = <0x01>; I think we should just do 2 cells for size. Rob