diff mbox series

[v2,1/2] arm64: dts: qcom: sdm845: add framebuffer reserved memory

Message ID 20230315111947.3807083-1-caleb.connolly@linaro.org (mailing list archive)
State Superseded
Headers show
Series [v2,1/2] arm64: dts: qcom: sdm845: add framebuffer reserved memory | expand

Commit Message

Caleb Connolly March 15, 2023, 11:19 a.m. UTC
The bootloader configures a framebuffer in memory to display splash
screens or other information. This configuration is overriden when the
display pipeline probes, but never unmapped from the SMMU. To prevent
issues from the kernel trying to allocate in this region and to allow
using the framebuffer for debugging, many devices already reserve this
region.

All devices follow MTP and use the same address for this region, Cheza
is a likely exception though I'm not able to validate that.

Some devices only reserve the size needed to store the actual
framebuffer, this is incorrect as on all devices I've checked the full
0x2400000 bytes are mapped.

This patch moves the framebuffer region to sdm845.dtsi and removes it
from each individual device. This ensures that the correct size is
always reserved and prevents having the add the region for each
individual device.

This patch specifically ensures that this region is now reserved on the
OnePlus 6, where it wasn't before.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
---

Changes since v1:
 * Offer more context and justification for this change
 * Make sure Cheza doesn't inherit the node.
---
 arch/arm64/boot/dts/qcom/sdm845-lg-common.dtsi              | 6 ------
 arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts     | 5 -----
 arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts           | 5 -----
 arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi       | 6 ------
 .../arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi | 6 ------
 arch/arm64/boot/dts/qcom/sdm845.dtsi                        | 5 +++++
 arch/arm64/boot/dts/qcom/sdm850.dtsi                        | 2 ++
 7 files changed, 7 insertions(+), 28 deletions(-)

Comments

Bjorn Andersson April 4, 2023, 7:33 p.m. UTC | #1
On Wed, Mar 15, 2023 at 11:19:45AM +0000, Caleb Connolly wrote:
> The bootloader configures a framebuffer in memory to display splash
> screens or other information. This configuration is overriden when the
> display pipeline probes, but never unmapped from the SMMU.

Are you saying that as the SMMU driver clears the register content, this
mapping remains?

> To prevent
> issues from the kernel trying to allocate in this region and to allow
> using the framebuffer for debugging, many devices already reserve this
> region.
> 

What kind of issues do you see?

Regards,
Bjorn

> All devices follow MTP and use the same address for this region, Cheza
> is a likely exception though I'm not able to validate that.
> 
> Some devices only reserve the size needed to store the actual
> framebuffer, this is incorrect as on all devices I've checked the full
> 0x2400000 bytes are mapped.
> 
> This patch moves the framebuffer region to sdm845.dtsi and removes it
> from each individual device. This ensures that the correct size is
> always reserved and prevents having the add the region for each
> individual device.
> 
> This patch specifically ensures that this region is now reserved on the
> OnePlus 6, where it wasn't before.
> 
> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
> ---
> 
> Changes since v1:
>  * Offer more context and justification for this change
>  * Make sure Cheza doesn't inherit the node.
> ---
>  arch/arm64/boot/dts/qcom/sdm845-lg-common.dtsi              | 6 ------
>  arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts     | 5 -----
>  arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts           | 5 -----
>  arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi       | 6 ------
>  .../arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi | 6 ------
>  arch/arm64/boot/dts/qcom/sdm845.dtsi                        | 5 +++++
>  arch/arm64/boot/dts/qcom/sdm850.dtsi                        | 2 ++
>  7 files changed, 7 insertions(+), 28 deletions(-)
> 
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-lg-common.dtsi b/arch/arm64/boot/dts/qcom/sdm845-lg-common.dtsi
> index f942c5afea9b..6a1c674a015b 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-lg-common.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sdm845-lg-common.dtsi
> @@ -93,12 +93,6 @@ spss_mem: memory@99000000 {
>  			no-map;
>  		};
>  
> -		/* Framebuffer region */
> -		memory@9d400000 {
> -			reg = <0x0 0x9d400000 0x0 0x2400000>;
> -			no-map;
> -		};
> -
>  		/* rmtfs lower guard */
>  		memory@f0800000 {
>  			reg = <0 0xf0800000 0 0x1000>;
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts b/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts
> index d37a433130b9..7c2457948a32 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts
> +++ b/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts
> @@ -55,11 +55,6 @@ vreg_s4a_1p8: pm8998-smps4 {
>  	};
>  
>  	reserved-memory {
> -		memory@9d400000 {
> -			reg = <0x0 0x9d400000 0x0 0x02400000>;
> -			no-map;
> -		};
> -
>  		memory@a1300000 {
>  			compatible = "ramoops";
>  			reg = <0x0 0xa1300000 0x0 0x100000>;
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts b/arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts
> index b54e304abf71..4f6b1053c15b 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts
> +++ b/arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts
> @@ -60,11 +60,6 @@ key-vol-up {
>  	};
>  
>  	reserved-memory {
> -		framebuffer_region@9d400000 {
> -			reg = <0x0 0x9d400000 0x0 (1080 * 2160 * 4)>;
> -			no-map;
> -		};
> -
>  		ramoops: ramoops@b0000000 {
>  			compatible = "ramoops";
>  			reg = <0 0xb0000000 0 0x00400000>;
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi b/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi
> index 4984c7496c31..7e273cc0158d 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi
> @@ -79,12 +79,6 @@ vreg_s4a_1p8: pm8998-smps4 {
>  	};
>  
>  	reserved-memory {
> -		/* SONY was cool and didn't diverge from MTP this time, yay! */
> -		cont_splash_mem: memory@9d400000 {
> -			reg = <0x0 0x9d400000 0x0 0x2400000>;
> -			no-map;
> -		};
> -
>  		ramoops@ffc00000 {
>  			compatible = "ramoops";
>  			reg = <0x0 0xffc00000 0x0 0x100000>;
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi
> index e0fda4d754fe..191c2664f721 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi
> @@ -98,12 +98,6 @@ spss_mem: memory@97f00000 {
>  			no-map;
>  		};
>  
> -		/* Cont splash region set up by the bootloader */
> -		cont_splash_mem: framebuffer@9d400000 {
> -			reg = <0 0x9d400000 0 0x2400000>;
> -			no-map;
> -		};
> -
>  		rmtfs_mem: memory@f6301000 {
>  			compatible = "qcom,rmtfs-mem";
>  			reg = <0 0xf6301000 0 0x200000>;
> diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi
> index 479859bd8ab3..ecec2ee46683 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi
> @@ -865,6 +865,11 @@ spss_mem: spss@97b00000 {
>  			no-map;
>  		};
>  
> +		cont_splash_mem: framebuffer@9d400000 {
> +			reg = <0 0x9d400000 0 0x2400000>;
> +			no-map;
> +		};
> +
>  		mdata_mem: mpss-metadata {
>  			alloc-ranges = <0 0xa0000000 0 0x20000000>;
>  			size = <0 0x4000>;
> diff --git a/arch/arm64/boot/dts/qcom/sdm850.dtsi b/arch/arm64/boot/dts/qcom/sdm850.dtsi
> index da9f6fbe32f6..b787575c77a5 100644
> --- a/arch/arm64/boot/dts/qcom/sdm850.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sdm850.dtsi
> @@ -7,6 +7,8 @@
>  
>  #include "sdm845.dtsi"
>  
> +/delete-node/ &cont_splash_mem;
> +
>  &cpu4_opp_table {
>  	cpu4_opp33: opp-2841600000 {
>  		opp-hz = /bits/ 64 <2841600000>;
> -- 
> 2.39.2
>
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/qcom/sdm845-lg-common.dtsi b/arch/arm64/boot/dts/qcom/sdm845-lg-common.dtsi
index f942c5afea9b..6a1c674a015b 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-lg-common.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845-lg-common.dtsi
@@ -93,12 +93,6 @@  spss_mem: memory@99000000 {
 			no-map;
 		};
 
-		/* Framebuffer region */
-		memory@9d400000 {
-			reg = <0x0 0x9d400000 0x0 0x2400000>;
-			no-map;
-		};
-
 		/* rmtfs lower guard */
 		memory@f0800000 {
 			reg = <0 0xf0800000 0 0x1000>;
diff --git a/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts b/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts
index d37a433130b9..7c2457948a32 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts
+++ b/arch/arm64/boot/dts/qcom/sdm845-samsung-starqltechn.dts
@@ -55,11 +55,6 @@  vreg_s4a_1p8: pm8998-smps4 {
 	};
 
 	reserved-memory {
-		memory@9d400000 {
-			reg = <0x0 0x9d400000 0x0 0x02400000>;
-			no-map;
-		};
-
 		memory@a1300000 {
 			compatible = "ramoops";
 			reg = <0x0 0xa1300000 0x0 0x100000>;
diff --git a/arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts b/arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts
index b54e304abf71..4f6b1053c15b 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts
+++ b/arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts
@@ -60,11 +60,6 @@  key-vol-up {
 	};
 
 	reserved-memory {
-		framebuffer_region@9d400000 {
-			reg = <0x0 0x9d400000 0x0 (1080 * 2160 * 4)>;
-			no-map;
-		};
-
 		ramoops: ramoops@b0000000 {
 			compatible = "ramoops";
 			reg = <0 0xb0000000 0 0x00400000>;
diff --git a/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi b/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi
index 4984c7496c31..7e273cc0158d 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi
@@ -79,12 +79,6 @@  vreg_s4a_1p8: pm8998-smps4 {
 	};
 
 	reserved-memory {
-		/* SONY was cool and didn't diverge from MTP this time, yay! */
-		cont_splash_mem: memory@9d400000 {
-			reg = <0x0 0x9d400000 0x0 0x2400000>;
-			no-map;
-		};
-
 		ramoops@ffc00000 {
 			compatible = "ramoops";
 			reg = <0x0 0xffc00000 0x0 0x100000>;
diff --git a/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi
index e0fda4d754fe..191c2664f721 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium-common.dtsi
@@ -98,12 +98,6 @@  spss_mem: memory@97f00000 {
 			no-map;
 		};
 
-		/* Cont splash region set up by the bootloader */
-		cont_splash_mem: framebuffer@9d400000 {
-			reg = <0 0x9d400000 0 0x2400000>;
-			no-map;
-		};
-
 		rmtfs_mem: memory@f6301000 {
 			compatible = "qcom,rmtfs-mem";
 			reg = <0 0xf6301000 0 0x200000>;
diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi
index 479859bd8ab3..ecec2ee46683 100644
--- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi
@@ -865,6 +865,11 @@  spss_mem: spss@97b00000 {
 			no-map;
 		};
 
+		cont_splash_mem: framebuffer@9d400000 {
+			reg = <0 0x9d400000 0 0x2400000>;
+			no-map;
+		};
+
 		mdata_mem: mpss-metadata {
 			alloc-ranges = <0 0xa0000000 0 0x20000000>;
 			size = <0 0x4000>;
diff --git a/arch/arm64/boot/dts/qcom/sdm850.dtsi b/arch/arm64/boot/dts/qcom/sdm850.dtsi
index da9f6fbe32f6..b787575c77a5 100644
--- a/arch/arm64/boot/dts/qcom/sdm850.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm850.dtsi
@@ -7,6 +7,8 @@ 
 
 #include "sdm845.dtsi"
 
+/delete-node/ &cont_splash_mem;
+
 &cpu4_opp_table {
 	cpu4_opp33: opp-2841600000 {
 		opp-hz = /bits/ 64 <2841600000>;