diff mbox series

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

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

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.
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
Artur Weber March 16, 2024, 5:28 p.m. UTC | #6
On 22.02.2024 16:55, Krzysztof Kozlowski wrote:
> 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?

My bad, turns out I didn't test my dt-schemas patch correctly... looks
like this has been *properly* fixed now in latest dt-schema[1][2], and I
no longer get warnings about the linux,usable-memory-range property.
(There are some new warnings though, for some nodes in exynos4.dtsi that
have 2 reg values, but that's out of scope for this patch.)

Sorry for the general confusion, I'll make sure to double-check my
patches next time...

Best regards
Artur

[1] https://github.com/devicetree-org/dt-schema/commit/08eff8e6167e9e0bc1694af6c298b4584105a057
[2] https://github.com/devicetree-org/dt-schema/commit/c95c9ad63c51f8d9cfb258e6f17a8001efab6d64
Krzysztof Kozlowski March 26, 2024, 4:54 p.m. UTC | #7
On Sat, 17 Feb 2024 20:02:47 +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.
> 
> 

Applied, thanks!

[1/1] ARM: dts: exynos4212-tab3: limit usable memory range
      https://git.kernel.org/krzk/linux/c/7bff1d35c1294c011b0269b8eaeb8f930df386fe

Best regards,
diff mbox series

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 {