[U-Boot] [PATCH] rockchip: make_fit_atf.py: fix loadables property set error【请注意,邮件由mark.kettenis at sibelius.xs4all.nl代发】

Kever Yang kever.yang at rock-chips.com
Sat Jul 6 15:02:37 UTC 2019


Hi Mark,


On 07/05/2019 08:03 PM, Mark Kettenis wrote:
>> From: Kever Yang <kever.yang at rock-chips.com>
>> Date: Fri, 5 Jul 2019 19:38:42 +0800
>>
>> Hi Christoph,
>>
>>
>> On 07/05/2019 05:15 PM, Christoph Müllner wrote:
>>> On 04.07.19 11:44, Andy Yan wrote:
>>>> Commit b238e4b00ced ("rockchip: Cleanup of make_fit_atf.py.") set
>>>> firmware = "atf_1";
>>>> loadables = "uboot","atf_1","atf_2";
>>>>
>>>> Actually it should be:
>>>> firmware = "atf_1";
>>>> loadables = "uboot","atf_2","atf_3";
>>> Does "atf_1" not need to be among loadables as well?
>> The "atf_1" not need to be among loadables, or else it will be loaded twice.
>> The loadables suppose to be those firmware not have a entry but need to
>> load by SPL.
>>> My version of the script produces:
>>>
>>> loadables = "uboot","atf_1","atf_2","atf_3";
>>>
>>> And with that I was able to boot mainline ATF.
>> The mainline ATF now have 4 segments instead of 3, I don't know why
>> there is a stand alone 'GNU_STACK' section, so it's able to boot there is
>> one extra segment help, it loads all atf_1, atf_2 and atf_3. Rockchip elf
>> and older mainline ATF do not have the extra 'GNU_STACK' section, and
>> the last atf_3 is not loaded, which lead to the ATF not able to run.
>> Program Headers:
>>   Type           Offset             VirtAddr           PhysAddr
>>                  FileSiz            MemSiz              Flags Align
>>   LOAD           0x0000000000000000 0x0000000000000000 0x0000000000000000
>>                  0x0000000000014058 0x0000000000044000  RWE 10000
>>   LOAD           0x0000000000020000 0x00000000ff3b0000 0x00000000ff3b0000
>>                  0x0000000000001f58 0x0000000000001f58  RWE 10000
>>   LOAD           0x0000000000030000 0x00000000ff8c0000 0x00000000ff8c0000
>>                  0x0000000000002000 0x0000000000003000  RWE 10000
>>   GNU_STACK      0x0000000000000000 0x0000000000000000 0x0000000000000000
>>                  0x0000000000000000 0x0000000000000000  RW     10
>>
>> I will apply this patch as a fix.
> That GNU_STACK segment is produced by your toolchain.  It doesn't
> really make sense to have it for standalone binaries like ATF, and
> there is no reason to load it.  Not all toolchains produce a GNU_STACK
> section.
>
> But the make_fit_atf.py script already checks that the segment type is
> PT_LOAD, so I don't understand what you're trying to fix here.  For me
> things seem to work fine with mainline u-boot and ATF 2.1 on both the
> rock64e and rockpro64.

Looks work fine does not means every thing is correct.

The ATF2.1 works find because of the extra GNU_STACK, but the logical
is not correct.
For mainline ATF 2.1, there are for segments, and SPL loads:
- atf_1 as firmware;
- atf_1, atf_2, atf_3 as loadables;
atf_1 load twice loads twice which is not correct.

For other ATF which not have extra GNU_STACK, eg, rockchip vendor atf at
[0],
the SPL loads:
- atf_1 as firmware;
- atf_1 and atf_2 as loadables;
atf_1 load twice and atf_3 is missing which the ATF is not able to boot.

This patch fix this logic.

Thanks,
- Kever
 
[0]https://github.com/rockchip-linux/rkbin/blob/master/bin/rk33/rk3399_bl31_v1.28.elf

>
>>>> Signed-off-by: Andy Yan <andy.yan at rock-chips.com>
>>>> ---
>>>>
>>>>  arch/arm/mach-rockchip/make_fit_atf.py | 2 +-
>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/arch/arm/mach-rockchip/make_fit_atf.py b/arch/arm/mach-rockchip/make_fit_atf.py
>>>> index 45ec105887..db0ae96ca8 100755
>>>> --- a/arch/arm/mach-rockchip/make_fit_atf.py
>>>> +++ b/arch/arm/mach-rockchip/make_fit_atf.py
>>>> @@ -94,7 +94,7 @@ def append_conf_section(file, cnt, dtname, segments):
>>>>      if segments != 0:
>>>>          file.write(',')
>>>>      for i in range(1, segments):
>>>> -        file.write('"atf_%d"' % (i))
>>>> +        file.write('"atf_%d"' % (i + 1))
>>>>          if i != (segments - 1):
>>>>              file.write(',')
>>>>          else:
>>>>
>>
>>
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> https://lists.denx.de/listinfo/u-boot





More information about the U-Boot mailing list