2024-02-17 19:03:01

by Artur Weber

[permalink] [raw]
Subject: [PATCH] ARM: dts: exynos4212-tab3: limit usable memory range

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 <[email protected]>
---
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>;
};

firmware@204f000 {

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

Best regards,
--
Artur Weber <[email protected]>



2024-02-18 10:25:18

by Henrik Grimler

[permalink] [raw]
Subject: Re: [PATCH] ARM: dts: exynos4212-tab3: limit usable memory range

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 <[email protected]>
> ---
> 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 <[email protected]>

> };
>
> firmware@204f000 {
>
> ---
> base-commit: 0f1dd5e91e2ba3990143645faff2bcce2d99778e
> change-id: 20240217-tab3-limit-usable-memory-range-1d1ffa8dc44d
>
> Best regards,
> --
> Artur Weber <[email protected]>
>

2024-02-19 07:44:18

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH] ARM: dts: exynos4212-tab3: limit usable memory range

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 <[email protected]>
> ---
> 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


2024-02-19 19:53:00

by Artur Weber

[permalink] [raw]
Subject: Re: [PATCH] ARM: dts: exynos4212-tab3: limit usable memory range

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 <[email protected]>
>> ---
>> 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
>


2024-02-21 08:26:48

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH] ARM: dts: exynos4212-tab3: limit usable memory range

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 <[email protected]>
>>> ---
>>> 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


2024-02-22 15:56:45

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH] ARM: dts: exynos4212-tab3: limit usable memory range

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 <[email protected]>
>>>> ---
>>>> 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


2024-03-16 17:28:24

by Artur Weber

[permalink] [raw]
Subject: Re: [PATCH] ARM: dts: exynos4212-tab3: limit usable memory range

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 <[email protected]>
>>>>> ---
>>>>> 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


2024-03-26 17:03:04

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH] ARM: dts: exynos4212-tab3: limit usable memory range


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,
--
Krzysztof Kozlowski <[email protected]>