Hey all,
i tried to setup a fip.bin and add 3 images (bl31, bl32 and bl33).
./fiptool --verbose create --soc-fw bl31.bin --nt-fw bl33.bin --tos-fw bl32.bin fip.bin
When i check the generated fip.bin with fiptool info it shows me all my three images in the fip.bin
EL3 Runtime Firmware BL31: offset=0xB0, size=0x13644, cmdline="--soc-fw"
Secure Payload BL32 (Trusted OS): offset=0x136F4, size=0x18D864, cmdline="--tos-fw"
Non-Trusted Firmware BL33: offset=0x1A0F58, size=0x9692E, cmdline="--nt-fw"
But during bootup the BL2 finds only the image id =3 and image id=5 which is BL32 and BL33. Why he is not finding the bl32?
Thanks for youre short help.
Regards
Torsten
Hi, This Thursday Jul 11th Kathleen Capella from Arm's TF-A team will
present: **Using the SMC Fuzzing Module in TF-A** This presentation will
show how you might get started with fuzz testing using the SMC fuzzing
module in TF-A. I will demonstrate the basic fuzzer features, how to add
SMC calls/test cases and how to make use of the module's integration with
tf-a-tests and the TF-A CI. Regards, Olivier.
TF-A Tech Forum
Thursday Jul 11, 2024 ⋅ 5pm – 6pm
Central European Time - Paris
We run an open technical forum call for anyone to participate and it is not
restricted to Trusted Firmware project members. It will operate under the
guidance of the TF TSC. Feel free to forward this invite to colleagues.
Invites are via the TF-A mailing list and also published on the Trusted
Firmware website. Details are here:
https://www.trustedfirmware.org/meetings/tf-a-technical-forum/Trusted
Firmware is inviting you to a scheduled Zoom meeting.Join Zoom
Meetinghttps://linaro-org.zoom.us/my/trustedfirmware?pwd=VktXcm5MNUUyVVM4R0k3ZUtvdU84QT09
One tap mobile+16465588656,,9159704974# US (New
York)+16699009128,,9159704974# US (San Jose)Dial by your location +1
646 558 8656 US (New York) +1 669 900 9128 US (San Jose) 877
853 5247 US Toll-free 888 788 0099 US Toll-freeMeeting ID: 915 970
4974Find your local number: https://zoom.us/u/ad27hc6t7h
Guests
marek.bykowski(a)gmail.com
okash.khawaja(a)gmail.com
tf-a(a)lists.trustedfirmware.org
Hi, On Thursday Jul 18th 2024 Rohit Mathew from Arm's Infra solutions team
will present: ** NUMA-Aware PER-CPU Framework: Enhancing Latency and
Storage Efficiency** With the increasing prevalence of multi-chip
platforms, it is crucial for software written for Trusted Firmware-A to be
NUMA-aware. The PER-CPU framework addresses this need by distributing the
allocation of per-CPU objects across different NUMA nodes. This approach
reduces NUMA latency and balances the allocation load, leading to improved
performance and efficiency. Regards, Olivier.
NUMA-Aware PER-CPU Framework: Enhancing Latency and Storage Efficiency
Thursday Jul 18, 2024 ⋅ 5pm – 5:50pm
Central European Time - Paris
Location
zoom, see dial-in information below
https://www.google.com/maps/search/zoom,+see+dial-in+information+below?hl=en
NUMA-Aware PER-CPU Framework: Enhancing Latency and Storage EfficiencyWith
the increasing prevalence of multi-chip platforms, it is crucial for
software written for Trusted Firmware-A to be NUMA-aware. The PER-CPU
framework addresses this need by distributing the allocation of per-CPU
objects across different NUMA nodes. This approach reduces NUMA latency and
balances the allocation load, leading to improved performance and
efficiency.Dial In Information:Trusted Firmware is inviting you to a
scheduled Zoom meeting.Join Zoom
Meetinghttps://linaro-org.zoom.us/j/9159704974?pwd=VktXcm5MNUUyVVM4R0k3ZUtvdU84QT09Meeting
ID: 915 970 4974Passcode: Mj6NdM---One tap mobile+13462487799,,9159704974#
US (Houston)+16694449171,,9159704974# US---Dial by your location• +1 346
248 7799 US (Houston)• +1 669 444 9171 US• +1 669 900 9128 US (San Jose)•
+1 719 359 4580 US• +1 253 205 0468 US• +1 253 215 8782 US (Tacoma)• +1 646
931 3860 US• +1 689 278 1000 US• +1 301 715 8592 US (Washington DC)• +1 305
224 1968 US• +1 309 205 3325 US• +1 312 626 6799 US (Chicago)• +1 360 209
5623 US• +1 386 347 5053 US• +1 507 473 4847 US• +1 564 217 2000 US• +1 646
558 8656 US (New York)• 833 548 0276 US Toll-free• 833 548 0282 US
Toll-free• 833 928 4608 US Toll-free• 833 928 4609 US Toll-free• 833 928
4610 US Toll-free• 877 853 5247 US Toll-free• 888 788 0099 US
Toll-freeMeeting ID: 915 970 4974Find your local number:
https://linaro-org.zoom.us/u/aZXJZYXK
Hi All,
I am trying to compile the latest ATF on Raspberry Pi 5 but it fails.
This is the same for all the other Arm64 architecture I have.
Earlier versions of ATF were able to compile on-board with native gcc.
Well with CROSS_COMPILE it works fine on x86_64 machine.
alarm@raspberrypi:~/Downloads/trusted-firmware-a$ make PLAT=rpi5 DEBUG=1
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The configured AArch64 C compiler could
not be identified and may not be supported:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: aarch64-none-elf-gcc
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The default AArch64 C compiler is:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: aarch64-none-elf-gcc
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The following tools are supported:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: - Arm® Compiler for Embedded `armclang`
make_helpers/toolchain.mk:344: - LLVM Clang (`clang`)
make_helpers/toolchain.mk:344: - GNU GCC (`gcc`)
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The build system will treat this C
compiler as GNU GCC (`gcc`).
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The configured AArch64 C preprocessor
could not be identified and may not be supported:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: aarch64-none-elf-gcc
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The default AArch64 C preprocessor is:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: aarch64-none-elf-gcc
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The following tools are supported:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: - Arm® Compiler for Embedded `armclang`
make_helpers/toolchain.mk:344: - LLVM Clang (`clang`)
make_helpers/toolchain.mk:344: - GNU GCC (`gcc`)
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The build system will treat this C
preprocessor as GNU GCC (`gcc`).
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The configured AArch64 assembler could
not be identified and may not be supported:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: aarch64-none-elf-gcc
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The default AArch64 assembler is:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: aarch64-none-elf-gcc
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The following tools are supported:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: - Arm® Compiler for Embedded `armclang`
make_helpers/toolchain.mk:344: - LLVM Clang (`clang`)
make_helpers/toolchain.mk:344: - GNU GCC (`gcc`)
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The build system will treat this
assembler as GNU GCC (`gcc`).
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The configured AArch64 linker could not
be identified and may not be supported:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: aarch64-none-elf-gcc
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The default AArch64 linker is:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: aarch64-none-elf-gcc
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The following tools are supported:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: - Arm® Compiler for Embedded `armclang`
make_helpers/toolchain.mk:344: - Arm® Compiler for Embedded `armlink`
make_helpers/toolchain.mk:344: - LLVM Clang (`clang`)
make_helpers/toolchain.mk:344: - LLVM LLD (`lld`)
make_helpers/toolchain.mk:344: - GNU GCC (`gcc`)
make_helpers/toolchain.mk:344: - GNU LD (`ld.bfd`)
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The build system will treat this linker
as GNU GCC (`gcc`).
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The configured AArch64 object copier
could not be identified and may not be supported:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: aarch64-none-elf-objcopy
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The default AArch64 object copier is:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: aarch64-none-elf-objcopy
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The following tools are supported:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: - Arm® Compiler for Embedded `fromelf`
make_helpers/toolchain.mk:344: - LLVM `llvm-objcopy`
make_helpers/toolchain.mk:344: - GNU `objcopy`
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The build system will treat this object
copier as GNU `objcopy`.
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The configured AArch64 object dumper
could not be identified and may not be supported:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: aarch64-none-elf-objdump
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The default AArch64 object dumper is:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: aarch64-none-elf-objdump
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The following tools are supported:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: - Arm® Compiler for Embedded `fromelf`
make_helpers/toolchain.mk:344: - LLVM `llvm-objdump`
make_helpers/toolchain.mk:344: - GNU `objdump`
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The build system will treat this object
dumper as GNU `objdump`.
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The configured AArch64 archiver could
not be identified and may not be supported:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: aarch64-none-elf-gcc-ar
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The default AArch64 archiver is:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: aarch64-none-elf-gcc-ar
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The following tools are supported:
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: - Arm® Compiler for Embedded `armar`
make_helpers/toolchain.mk:344: - LLVM `llvm-ar`
make_helpers/toolchain.mk:344: - GNU `ar`
make_helpers/toolchain.mk:344:
make_helpers/toolchain.mk:344: The build system will treat this
archiver as GNU `ar`.
make_helpers/toolchain.mk:344:
/bin/sh: 1: aarch64-none-elf-gcc: not found
/bin/sh: 1: aarch64-none-elf-gcc: not found
CC bl31/bl31_context_mgmt.c
make: aarch64-none-elf-gcc: No such file or directory
make: *** [Makefile:1514:
/home/alarm/Downloads/trusted-firmware-a/build/rpi5/debug/bl31/bl31_context_mgmt.o]
Error 127
alarm@raspberrypi:~/Downloads/trusted-firmware-a$
alarm@raspberrypi:~/Downloads/trusted-firmware-a$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/12/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian
12.2.0-14' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs
--enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2
--prefix=/usr --with-gcc-major-version-only --program-suffix=-12
--program-prefix=aarch64-linux-gnu- --enable-shared
--enable-linker-build-id --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --libdir=/usr/lib
--enable-nls --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new
--enable-gnu-unique-object --disable-libquadmath
--disable-libquadmath-support --enable-plugin --enable-default-pie
--with-system-zlib --enable-libphobos-checking=release
--with-target-system-zlib=auto --enable-objc-gc=auto
--enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror
--enable-checking=release --build=aarch64-linux-gnu
--host=aarch64-linux-gnu --target=aarch64-linux-gnu
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (Debian 12.2.0-14)
Thanks
-Anand
Hi Feifan Qian,
Trapping GPF to EL3 is permitted by the architecture, however I don't believe TF-A provides such option.
In general for TF-A's reference software stacks, a GPF is trapped first at EL2 (hence SCR_EL3.GPF=0).
E.g.
In a system implementing RME, the RMM (@ R-EL2) traps a GPF occurring in an R-EL1/0 Realm (or R-EL2 itself).
Similarly, in the secure world, the SPM (@ S-EL2) traps a GPF occurring in a S-EL1/0 secure partition (or S-EL2 itself).
Regards,
Olivier.
________________________________
From: 钱非凡 <qianfeifan(a)iie.ac.cn>
Sent: 01 July 2024 08:52
To: tf-a-owner(a)lists.trustedfirmware.org <tf-a-owner(a)lists.trustedfirmware.org>
Subject: Questions about the Fault Handling of GPFs
Dear experts,
I have been learning the Fault Handling of the Granule Protection
Fault in Arm CCA. Upon studying the Arm Document, I discovered that the
GPF bit in the SCR_EL3 register controls whether the fault handling of
GPFs occurs in EL3 or not. In addition, I noted that
`include/arch/aarch64/arch.h` defines a macro `#define SCR_GPF_BIT
(UL(1) << 48)`, yet I could not find any reference to this macro in the
source code.
I want to know that whether ATF has implemented the fault handling
of GPFs or if this is a feature to be expected in the future. If its
not, how can I implement this. Any guidance or advice you could provide
would be greatly appreciated.
Sincerely,
Feifan Qian