ARM: dts: realview: Extend PBX family memory description

Message ID 1476778873-12210-1-git-send-email-linus.walleij@linaro.org
State New
Headers show

Commit Message

Linus Walleij Oct. 18, 2016, 8:21 a.m.
From: Robin Murphy <robin.murphy@arm.com>


All three platforms sharing the later RealView Platform Baseboard memory
map - PBX-A9, PB-A8 and PB11MPCore, provide 512MB of DDR SDRAM on the
baseboard, of which the boot alias at 0x0 maps the first 256MB. Expand
the size of the default memory node to reflect that, and describe the
full memory regions in each board's DTS, but leave those commented by
default to avoid breaking existing bootloaders.

Signed-off-by: Robin Murphy <robin.murphy@arm.com>

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

---
ARM SoC folks: I forgot to send this patch for ARM SoC earlier.
As it is a small change I suggest you just apply it to the ARM
SoC tree as I do not foresee any other RealView work in the near
future. If you think it can go into v4.9 then put it in as a fix,
else just push it to the next merge window.
Robin: sorry for screwing up :(
---
 arch/arm/boot/dts/arm-realview-pba8.dts   | 8 ++++++++
 arch/arm/boot/dts/arm-realview-pbx-a9.dts | 9 +++++++++
 arch/arm/boot/dts/arm-realview-pbx.dtsi   | 4 ++--
 3 files changed, 19 insertions(+), 2 deletions(-)

-- 
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Comments

Robin Murphy Oct. 18, 2016, 10:14 a.m. | #1
On 18/10/16 09:21, Linus Walleij wrote:
> From: Robin Murphy <robin.murphy@arm.com>

> 

> All three platforms sharing the later RealView Platform Baseboard memory

> map - PBX-A9, PB-A8 and PB11MPCore, provide 512MB of DDR SDRAM on the

> baseboard, of which the boot alias at 0x0 maps the first 256MB. Expand

> the size of the default memory node to reflect that, and describe the

> full memory regions in each board's DTS, but leave those commented by

> default to avoid breaking existing bootloaders.

> 

> Signed-off-by: Robin Murphy <robin.murphy@arm.com>

> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

> ---

> ARM SoC folks: I forgot to send this patch for ARM SoC earlier.

> As it is a small change I suggest you just apply it to the ARM

> SoC tree as I do not foresee any other RealView work in the near

> future. If you think it can go into v4.9 then put it in as a fix,

> else just push it to the next merge window.

> Robin: sorry for screwing up :(


No worries - it's gone back in the cupboard now anyway :)

Robin.

> ---

>  arch/arm/boot/dts/arm-realview-pba8.dts   | 8 ++++++++

>  arch/arm/boot/dts/arm-realview-pbx-a9.dts | 9 +++++++++

>  arch/arm/boot/dts/arm-realview-pbx.dtsi   | 4 ++--

>  3 files changed, 19 insertions(+), 2 deletions(-)

> 

> diff --git a/arch/arm/boot/dts/arm-realview-pba8.dts b/arch/arm/boot/dts/arm-realview-pba8.dts

> index d3238c252b59..9f6c92b84f9f 100644

> --- a/arch/arm/boot/dts/arm-realview-pba8.dts

> +++ b/arch/arm/boot/dts/arm-realview-pba8.dts

> @@ -40,6 +40,14 @@

>  		};

>  	};

>  

> +	/*

> +	 * Using the full 512MB of RAM will require bootloader

> +	 * changes to not load the kernel to the alias at 0x0.

> +	 */

> +	memory {

> +		/*reg = <0x70000000 0x20000000>; /* 512 MiB baseboard DDR */

> +	};

> +

>  	pmu: pmu@0 {

>  		compatible = "arm,cortex-a8-pmu";

>  		interrupt-parent = <&intc>;

> diff --git a/arch/arm/boot/dts/arm-realview-pbx-a9.dts b/arch/arm/boot/dts/arm-realview-pbx-a9.dts

> index 90d00b407f85..9fef9188660a 100644

> --- a/arch/arm/boot/dts/arm-realview-pbx-a9.dts

> +++ b/arch/arm/boot/dts/arm-realview-pbx-a9.dts

> @@ -60,6 +60,15 @@

>  		};

>  	};

>  

> +	/*

> +	 * There is 1GB of RAM total, but using all of it will require

> +	 * bootloader changes to not load the kernel to the alias at 0x0.

> +	 */

> +	memory {

> +		/*reg = <0x20000000 0x20000000>, /* 512 MiB daughterboard DDR2 */

> +		/*      <0x70000000 0x20000000>; /* 512 MiB baseboard DDR */

> +	};

> +

>  	L2: l2-cache {

>  		compatible = "arm,pl310-cache";

>  		reg = <0x1f002000 0x1000>;

> diff --git a/arch/arm/boot/dts/arm-realview-pbx.dtsi b/arch/arm/boot/dts/arm-realview-pbx.dtsi

> index aeb49c4bd773..8477f667d27c 100644

> --- a/arch/arm/boot/dts/arm-realview-pbx.dtsi

> +++ b/arch/arm/boot/dts/arm-realview-pbx.dtsi

> @@ -38,8 +38,8 @@

>  	};

>  

>  	memory {

> -		/* 128 MiB memory @ 0x0 */

> -		reg = <0x00000000 0x08000000>;

> +		/* 256 MiB alias of baseboard DDR @ 0x0 */

> +		reg = <0x00000000 0x10000000>;

>  	};

>  

>  	/* The voltage to the MMC card is hardwired at 3.3V */

> 



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Russell King - ARM Linux admin Oct. 18, 2016, 10:25 a.m. | #2
On Tue, Oct 18, 2016 at 10:21:13AM +0200, Linus Walleij wrote:
> From: Robin Murphy <robin.murphy@arm.com>

> 

> All three platforms sharing the later RealView Platform Baseboard memory

> map - PBX-A9, PB-A8 and PB11MPCore, provide 512MB of DDR SDRAM on the

> baseboard, of which the boot alias at 0x0 maps the first 256MB. Expand

> the size of the default memory node to reflect that, and describe the

> full memory regions in each board's DTS, but leave those commented by

> default to avoid breaking existing bootloaders.

> 

> Signed-off-by: Robin Murphy <robin.murphy@arm.com>

> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

> ---

> ARM SoC folks: I forgot to send this patch for ARM SoC earlier.

> As it is a small change I suggest you just apply it to the ARM

> SoC tree as I do not foresee any other RealView work in the near

> future. If you think it can go into v4.9 then put it in as a fix,

> else just push it to the next merge window.

> Robin: sorry for screwing up :(


Normally, memory nodes describe different regions of unique memory.
This is not unique memory, but is an alias of some already-described
memory.

The problem with adding the aliased memory addresses is that we end
up needing platform knowledge to reject the "other alias" from the
memory description, which really isn't good.

The only reason it works is that we reject memory nodes where the
physical address < PHYS_OFFSET.  That works provided the alias is
below PHYS_OFFSET, but that isn't always the case.

So, I think it is completely wrong to describe the aliased memory
regions in DT.

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Robin Murphy Oct. 18, 2016, 10:40 a.m. | #3
On 18/10/16 11:25, Russell King - ARM Linux wrote:
> On Tue, Oct 18, 2016 at 10:21:13AM +0200, Linus Walleij wrote:

>> From: Robin Murphy <robin.murphy@arm.com>

>>

>> All three platforms sharing the later RealView Platform Baseboard memory

>> map - PBX-A9, PB-A8 and PB11MPCore, provide 512MB of DDR SDRAM on the

>> baseboard, of which the boot alias at 0x0 maps the first 256MB. Expand

>> the size of the default memory node to reflect that, and describe the

>> full memory regions in each board's DTS, but leave those commented by

>> default to avoid breaking existing bootloaders.

>>

>> Signed-off-by: Robin Murphy <robin.murphy@arm.com>

>> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

>> ---

>> ARM SoC folks: I forgot to send this patch for ARM SoC earlier.

>> As it is a small change I suggest you just apply it to the ARM

>> SoC tree as I do not foresee any other RealView work in the near

>> future. If you think it can go into v4.9 then put it in as a fix,

>> else just push it to the next merge window.

>> Robin: sorry for screwing up :(

> 

> Normally, memory nodes describe different regions of unique memory.

> This is not unique memory, but is an alias of some already-described

> memory.


Well, really, this is _the_ memory, and the 256MB at 0 is the alias, but
only the separate PB11MPCore DTS has the luxury of being correct from
the off, thanks to the precedent of the QEMU PB-A8 model being popular
and expecting to use the low alias.

> The problem with adding the aliased memory addresses is that we end

> up needing platform knowledge to reject the "other alias" from the

> memory description, which really isn't good.

> 

> The only reason it works is that we reject memory nodes where the

> physical address < PHYS_OFFSET.  That works provided the alias is

> below PHYS_OFFSET, but that isn't always the case.


Look again ;) It works perfectly because whilst the information is in
the DTS for completeness, as-is it's not in the DTB that the kernel
gets. And if someone _does_ adjust their kernel load address and
uncomment the .dts node accordingly, the "reg" property from the .dtsi
node gets overridden, not added to, so it's still fine.

Robin.

> 

> So, I think it is completely wrong to describe the aliased memory

> regions in DT.

> 



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Patch

diff --git a/arch/arm/boot/dts/arm-realview-pba8.dts b/arch/arm/boot/dts/arm-realview-pba8.dts
index d3238c252b59..9f6c92b84f9f 100644
--- a/arch/arm/boot/dts/arm-realview-pba8.dts
+++ b/arch/arm/boot/dts/arm-realview-pba8.dts
@@ -40,6 +40,14 @@ 
 		};
 	};
 
+	/*
+	 * Using the full 512MB of RAM will require bootloader
+	 * changes to not load the kernel to the alias at 0x0.
+	 */
+	memory {
+		/*reg = <0x70000000 0x20000000>; /* 512 MiB baseboard DDR */
+	};
+
 	pmu: pmu@0 {
 		compatible = "arm,cortex-a8-pmu";
 		interrupt-parent = <&intc>;
diff --git a/arch/arm/boot/dts/arm-realview-pbx-a9.dts b/arch/arm/boot/dts/arm-realview-pbx-a9.dts
index 90d00b407f85..9fef9188660a 100644
--- a/arch/arm/boot/dts/arm-realview-pbx-a9.dts
+++ b/arch/arm/boot/dts/arm-realview-pbx-a9.dts
@@ -60,6 +60,15 @@ 
 		};
 	};
 
+	/*
+	 * There is 1GB of RAM total, but using all of it will require
+	 * bootloader changes to not load the kernel to the alias at 0x0.
+	 */
+	memory {
+		/*reg = <0x20000000 0x20000000>, /* 512 MiB daughterboard DDR2 */
+		/*      <0x70000000 0x20000000>; /* 512 MiB baseboard DDR */
+	};
+
 	L2: l2-cache {
 		compatible = "arm,pl310-cache";
 		reg = <0x1f002000 0x1000>;
diff --git a/arch/arm/boot/dts/arm-realview-pbx.dtsi b/arch/arm/boot/dts/arm-realview-pbx.dtsi
index aeb49c4bd773..8477f667d27c 100644
--- a/arch/arm/boot/dts/arm-realview-pbx.dtsi
+++ b/arch/arm/boot/dts/arm-realview-pbx.dtsi
@@ -38,8 +38,8 @@ 
 	};
 
 	memory {
-		/* 128 MiB memory @ 0x0 */
-		reg = <0x00000000 0x08000000>;
+		/* 256 MiB alias of baseboard DDR @ 0x0 */
+		reg = <0x00000000 0x10000000>;
 	};
 
 	/* The voltage to the MMC card is hardwired at 3.3V */