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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux