ARM: dts: exynos4212-tab3: limit usable memory range

Message ID 20240217-tab3-limit-usable-memory-range-v1-1-49cc9c86a5cc@gmail.com
State New
Headers
Series ARM: dts: exynos4212-tab3: limit usable memory range |

Commit Message

Artur Weber Feb. 17, 2024, 7:02 p.m. UTC
  The stock bootloader on the Samsung Galaxy Tab 3 8.0 provides an
incorrect available memory range over ATAG_MEM. Limit the usable
memory in the DTS to prevent it from doing so, without having to
disable ATAG support.

Signed-off-by: Artur Weber <aweber.kernel@gmail.com>
---
 arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi | 6 ++++++
 1 file changed, 6 insertions(+)


---
base-commit: 0f1dd5e91e2ba3990143645faff2bcce2d99778e
change-id: 20240217-tab3-limit-usable-memory-range-1d1ffa8dc44d

Best regards,
  

Comments

Henrik Grimler Feb. 18, 2024, 10:24 a.m. UTC | #1
Hi Artur,

On Sat, Feb 17, 2024 at 08:02:47PM +0100, Artur Weber wrote:
> The stock bootloader on the Samsung Galaxy Tab 3 8.0 provides an
> incorrect available memory range over ATAG_MEM. Limit the usable
> memory in the DTS to prevent it from doing so, without having to
> disable ATAG support.
> 
> Signed-off-by: Artur Weber <aweber.kernel@gmail.com>
> ---
>  arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi b/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
> index e5254e32aa8f..9bc05961577d 100644
> --- a/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
> +++ b/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
> @@ -45,6 +45,12 @@ chosen {
>  		/* Default S-BOOT bootloader loads initramfs here */
>  		linux,initrd-start = <0x42000000>;
>  		linux,initrd-end = <0x42800000>;
> +
> +		/*
> +		 * Stock bootloader provides incorrect memory size in ATAG_MEM;
> +		 * override it here
> +		 */
> +		linux,usable-memory-range = <0x40000000 0x3fc00000>;

Maybe it would make sense to set the memory reg to
<0x40000000 0x60000000> (1.5 GiB) and move the comment about last
512(/516) MiB being weird/broken here instead.  It looks a bit weird
that the memory range and usable-memory-range are identical, and device tree
should describe hardware, which technically has 1.5 GiB RAM.

From a functional point of view it does not really matter, so in any case:
Reviewed-by: Henrik Grimler <henrik@grimler.se>

>  	};
>  
>  	firmware@204f000 {
> 
> ---
> base-commit: 0f1dd5e91e2ba3990143645faff2bcce2d99778e
> change-id: 20240217-tab3-limit-usable-memory-range-1d1ffa8dc44d
> 
> Best regards,
> -- 
> Artur Weber <aweber.kernel@gmail.com>
>
  
Krzysztof Kozlowski Feb. 19, 2024, 7:44 a.m. UTC | #2
On 17/02/2024 20:02, Artur Weber wrote:
> The stock bootloader on the Samsung Galaxy Tab 3 8.0 provides an
> incorrect available memory range over ATAG_MEM. Limit the usable
> memory in the DTS to prevent it from doing so, without having to
> disable ATAG support.
> 
> Signed-off-by: Artur Weber <aweber.kernel@gmail.com>
> ---
>  arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi b/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
> index e5254e32aa8f..9bc05961577d 100644
> --- a/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
> +++ b/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
> @@ -45,6 +45,12 @@ chosen {
>  		/* Default S-BOOT bootloader loads initramfs here */
>  		linux,initrd-start = <0x42000000>;
>  		linux,initrd-end = <0x42800000>;
> +
> +		/*
> +		 * Stock bootloader provides incorrect memory size in ATAG_MEM;
> +		 * override it here
> +		 */
> +		linux,usable-memory-range = <0x40000000 0x3fc00000>;

Applied and dropped:
 chosen: linux,usable-memory-range:0: [4611686019496935424] is too short

Does not look you tested the bindings.

Please observe that we have dedicated subsystem profile since a release:
https://www.kernel.org/doc/html/latest/process/maintainers.html#arm-samsung-s3c-s5p-and-exynos-arm-architectures

Best regards,
Krzysztof
  
Artur Weber Feb. 19, 2024, 7:49 p.m. UTC | #3
On 19.02.2024 08:44, Krzysztof Kozlowski wrote:
> On 17/02/2024 20:02, Artur Weber wrote:
>> The stock bootloader on the Samsung Galaxy Tab 3 8.0 provides an
>> incorrect available memory range over ATAG_MEM. Limit the usable
>> memory in the DTS to prevent it from doing so, without having to
>> disable ATAG support.
>>
>> Signed-off-by: Artur Weber <aweber.kernel@gmail.com>
>> ---
>>   arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi | 6 ++++++
>>   1 file changed, 6 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi b/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
>> index e5254e32aa8f..9bc05961577d 100644
>> --- a/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
>> +++ b/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
>> @@ -45,6 +45,12 @@ chosen {
>>   		/* Default S-BOOT bootloader loads initramfs here */
>>   		linux,initrd-start = <0x42000000>;
>>   		linux,initrd-end = <0x42800000>;
>> +
>> +		/*
>> +		 * Stock bootloader provides incorrect memory size in ATAG_MEM;
>> +		 * override it here
>> +		 */
>> +		linux,usable-memory-range = <0x40000000 0x3fc00000>;
> 
> Applied and dropped:
>   chosen: linux,usable-memory-range:0: [4611686019496935424] is too short

This seems to be a binding issue; the DT schema expects a 64-bit memory 
address and size, and doesn't allow a 32-bit range. I've tested the DTS 
on my device and this property seems to be handled fine, so I think this 
should allow 32-bit values as well.

I've opened a PR[1] against devicetree-org/dt-schema (where the schema 
for the chosen node is stored) to try and fix this. If my approach is 
incorrect, feel free to comment there as well.

Best regards
Artur

[1] https://github.com/devicetree-org/dt-schema/pull/128

> 
> Does not look you tested the bindings.
> 
> Please observe that we have dedicated subsystem profile since a release:
> https://www.kernel.org/doc/html/latest/process/maintainers.html#arm-samsung-s3c-s5p-and-exynos-arm-architectures
> 
> Best regards,
> Krzysztof
>
  
Krzysztof Kozlowski Feb. 21, 2024, 8:26 a.m. UTC | #4
On 19/02/2024 20:49, Artur Weber wrote:
> On 19.02.2024 08:44, Krzysztof Kozlowski wrote:
>> On 17/02/2024 20:02, Artur Weber wrote:
>>> The stock bootloader on the Samsung Galaxy Tab 3 8.0 provides an
>>> incorrect available memory range over ATAG_MEM. Limit the usable
>>> memory in the DTS to prevent it from doing so, without having to
>>> disable ATAG support.
>>>
>>> Signed-off-by: Artur Weber <aweber.kernel@gmail.com>
>>> ---
>>>   arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi | 6 ++++++
>>>   1 file changed, 6 insertions(+)
>>>
>>> diff --git a/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi b/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
>>> index e5254e32aa8f..9bc05961577d 100644
>>> --- a/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
>>> +++ b/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
>>> @@ -45,6 +45,12 @@ chosen {
>>>   		/* Default S-BOOT bootloader loads initramfs here */
>>>   		linux,initrd-start = <0x42000000>;
>>>   		linux,initrd-end = <0x42800000>;
>>> +
>>> +		/*
>>> +		 * Stock bootloader provides incorrect memory size in ATAG_MEM;
>>> +		 * override it here
>>> +		 */
>>> +		linux,usable-memory-range = <0x40000000 0x3fc00000>;
>>
>> Applied and dropped:
>>   chosen: linux,usable-memory-range:0: [4611686019496935424] is too short
> 
> This seems to be a binding issue; the DT schema expects a 64-bit memory 
> address and size, and doesn't allow a 32-bit range. I've tested the DTS 
> on my device and this property seems to be handled fine, so I think this 
> should allow 32-bit values as well.

Regardless where is the issue: please test before sending.

> 
> I've opened a PR[1] against devicetree-org/dt-schema (where the schema 
> for the chosen node is stored) to try and fix this. If my approach is 
> incorrect, feel free to comment there as well.


According to Rob's comments, the DTS is the issue.

Best regards,
Krzysztof
  
Krzysztof Kozlowski Feb. 22, 2024, 3:55 p.m. UTC | #5
On 21/02/2024 09:26, Krzysztof Kozlowski wrote:
> On 19/02/2024 20:49, Artur Weber wrote:
>> On 19.02.2024 08:44, Krzysztof Kozlowski wrote:
>>> On 17/02/2024 20:02, Artur Weber wrote:
>>>> The stock bootloader on the Samsung Galaxy Tab 3 8.0 provides an
>>>> incorrect available memory range over ATAG_MEM. Limit the usable
>>>> memory in the DTS to prevent it from doing so, without having to
>>>> disable ATAG support.
>>>>
>>>> Signed-off-by: Artur Weber <aweber.kernel@gmail.com>
>>>> ---
>>>>   arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi | 6 ++++++
>>>>   1 file changed, 6 insertions(+)
>>>>
>>>> diff --git a/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi b/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
>>>> index e5254e32aa8f..9bc05961577d 100644
>>>> --- a/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
>>>> +++ b/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
>>>> @@ -45,6 +45,12 @@ chosen {
>>>>   		/* Default S-BOOT bootloader loads initramfs here */
>>>>   		linux,initrd-start = <0x42000000>;
>>>>   		linux,initrd-end = <0x42800000>;
>>>> +
>>>> +		/*
>>>> +		 * Stock bootloader provides incorrect memory size in ATAG_MEM;
>>>> +		 * override it here
>>>> +		 */
>>>> +		linux,usable-memory-range = <0x40000000 0x3fc00000>;
>>>
>>> Applied and dropped:
>>>   chosen: linux,usable-memory-range:0: [4611686019496935424] is too short
>>
>> This seems to be a binding issue; the DT schema expects a 64-bit memory 
>> address and size, and doesn't allow a 32-bit range. I've tested the DTS 
>> on my device and this property seems to be handled fine, so I think this 
>> should allow 32-bit values as well.
> 
> Regardless where is the issue: please test before sending.
> 
>>
>> I've opened a PR[1] against devicetree-org/dt-schema (where the schema 
>> for the chosen node is stored) to try and fix this. If my approach is 
>> incorrect, feel free to comment there as well.
> 
> 
> According to Rob's comments, the DTS is the issue.

With updated dtschema I still see the same warning. Is something else
missing?

Best regards,
Krzysztof
  

Patch

diff --git a/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi b/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
index e5254e32aa8f..9bc05961577d 100644
--- a/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
+++ b/arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi
@@ -45,6 +45,12 @@  chosen {
 		/* Default S-BOOT bootloader loads initramfs here */
 		linux,initrd-start = <0x42000000>;
 		linux,initrd-end = <0x42800000>;
+
+		/*
+		 * Stock bootloader provides incorrect memory size in ATAG_MEM;
+		 * override it here
+		 */
+		linux,usable-memory-range = <0x40000000 0x3fc00000>;
 	};
 
 	firmware@204f000 {