Thierry Reding – Mon, 11. February 2019 12:09 > From: Thierry Reding <treding@xxxxxxxxxx> > > Commit 482997699ef0 ("ARM: tegra: Fix unit_address_vs_reg DTC warnings > for /memory") inadventently broke device tree ABI by adding a unit- > address to the "/memory" node because the device tree compiler flagged > the missing unit-address as a warning. > > Tegra124 Chromebooks (a.k.a. Nyan) use a bootloader that relies on the > full name of the memory node in device tree being exactly "/memory". It > can be argued whether this was a good decision or not, and some other > bootloaders (such as U-Boot) do accept a unit-address in the name of the > node, but the device tree is an ABI and we can't break existing setups > just because the device tree compiler considers it bad practice to omit > the unit-address nowadays. > > This partially reverts the offending commit and restores device tree ABI > compatibility. > > Fixes: 482997699ef0 ("ARM: tegra: Fix unit_address_vs_reg DTC warnings for > /memory") > Reported-by: Tristan Bastian <tristan-c.bastian@xxxxxx> > Signed-off-by: Thierry Reding <treding@xxxxxxxxxx> > --- > Changes in v2: > - remove memory@80000000 node pulled in from tegra124.dtsi > - add device_type = "memory" property > > arch/arm/boot/dts/tegra124-nyan.dtsi | 17 ++++++++++++++++- > 1 file changed, 16 insertions(+), 1 deletion(-) > > diff --git a/arch/arm/boot/dts/tegra124-nyan.dtsi > b/arch/arm/boot/dts/tegra124-nyan.dtsi > index d5f11d6d987e..bc85b6a166c7 100644 > --- a/arch/arm/boot/dts/tegra124-nyan.dtsi > +++ b/arch/arm/boot/dts/tegra124-nyan.dtsi > @@ -13,10 +13,25 @@ > stdout-path = "serial0:115200n8"; > }; > > - memory@80000000 { > + /* > + * Note that recent version of the device tree compiler (starting with > + * version 1.4.2) warn about this node containing a reg property, but > + * missing a unit-address. However, the bootloader on these Chromebook > + * devices relies on the full name of this node to be exactly /memory. > + * Adding the unit-address causes the bootloader to create a /memory > + * node and write the memory bank configuration to that node, which in > + * turn leads the kernel to believe that the device has 2 GiB of > + * memory instead of the amount detected by the bootloader. > + * > + * The name of this node is effectively ABI and must not be changed. > + */ > + memory { > + device_type = "memory"; > reg = <0x0 0x80000000 0x0 0x80000000>; > }; > > + /delete-node/ memory@80000000; > + > host1x@50000000 { > hdmi@54280000 { > status = "okay"; > -- > 2.19.1 Thanks Thierry Tristan Tested-by: Tristan Bastian <tristan-c.bastian@xxxxxx>