Hi Andre,
Subject: Re: commit 75fab6496e5fce9a11 ("libc: memset: improve performance by avoiding single byte writes") causing BL31 boot failure on Renesas RZ/G2 platforms.
On 08/10/2020 20:05, Biju Das wrote:
Hi,
I am porting Renesas RZ/G2M[1] platform to TF-A Master branch(commitid: eeb77da646844) . Initially faced a compilation error [2]
which is fixed by using "#define" instead of "static const uint64_t".
What is your exact fix? That compilation error sounds like a more serious issue, I am scratching my head how such a change would really fix
things?
Looks like this issue is related to toolchain, I was using aarch64-linux-gcc-7
on U-buntu 18.04 Host toolchain.
The compilation is error is fixed by the below changes.
#define BL31_RO_BASE BL_CODE_BASE #define BL31_RO_LIMIT BL_CODE_END #define BL31_COHERENT_RAM_BASE BL_COHERENT_RAM_BASE #define BL31_COHERENT_RAM_LIMIT BL_COHERENT_RAM_END
The warning fix should not lead to compilation error with the old
toolchains.
It should be backward compatible to the old toolchains right? Please share
your views.
And do you see this with mainline? I tried:
Yes
$ make bl31 PLAT=rcar LSI=M3 MBEDTLS_DIR=../mbedtls.git on origin/master and it built just fine.
Thanks for the hint, After using the toolchain[1], I got the same results as
your's. it compiles successfully. So the issue is related to using older tool chains.
[1] https://developer.arm.com/tools-and-software/open-source-
software/deve
loper-tools/gnu-toolchain/gnu-a/downloads
Ah, that's a good point. I originally tried on my x86 laptop, where I have a GCC 9 cross toolchain installed. But indeed on my arm64 desktop with Ubuntu 18.04 it fails, as you wrote.
I believe that should be fixed in the code.
Can you file an issue on https://developer.trustedfirmware.org/? Then we can have the discussion there.
Ok. Filed the issue https://developer.trustedfirmware.org/T842
Cheers, Biju
Then on target, found that BL31 is failed to boot[3], which is fixed by reverting the commit 75fab6496e5fce9a11 ("libc: memset: improve performance by avoiding single byte writes"), see
the logs [3].
Mmmh, interesting. Can you build with "DEBUG=1" to get more output from BL31?
Sure Will do and provide feedback.
I see some calls to memset() from code in drivers/renesas/rcar. Can you add some debug prints at the top of memset() to dump the parameters on each call? To see what breaks it?
OK.
Are you using memset on some I/O memory, by any chance? And that doesn't support all access types, like 64-bit stores?
Will check and let you know.
Cheers, Biju
Renesas Electronics Europe GmbH, Geschaeftsfuehrer/President: Carsten Jauch, Sitz der Gesellschaft/Registered office: Duesseldorf, Arcadiastrasse 10, 40472 Duesseldorf, Germany, Handelsregister/Commercial Register: Duesseldorf, HRB 3708 USt-IDNr./Tax identification no.: DE 119353406 WEEE-Reg.-Nr./WEEE reg. no.: DE 14978647