blob: 964b13cd5c47402f08e6389681be0dcbb9d6e413 [file] [log] [blame]
Paul Beesley5c928952019-10-24 11:57:00 +00001Change Log & Release Notes
2==========================
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02003
4Please note that the Trusted Firmware-A Tests version follows the Trusted
5Firmware-A version for simplicity. At any point in time, TF-A Tests version
6`x.y` aims at testing TF-A version `x.y`. Different versions of TF-A and TF-A
7Tests are not guaranteed to be compatible. This also means that a version
8upgrade on the TF-A-Tests side might not necessarily introduce any new feature.
9
Harrison Mutai0ed12502025-05-09 08:51:02 +000010Version 2.13
11------------
12
13New features
14^^^^^^^^^^^^
15
16More features and tests are introduced in this release to enhance validation and
17support in the following areas:
18
19- Realm Management Extension
20- FF-A and SPM Testing
21- Fuzzing Framework
22- System Functionality Tests (e.g., PointerAuth, RAS registers, SMCCC feature
23 availability, FPMR access)
24- Firmware Handoff
25- Platform Enhancements
26
27Realm Management Extension
28^^^^^^^^^^^^^^^^^^^^^^^^^^
29
30 - Added and updated tests for `FEAT_MPAM` on Realms.
31 - Added AUX RTT support for planes.
32 - Added MbedTLS as a submodule.
33 - Added PCIe helpers.
34 - Added support for planes shared buffer.
35 - Added support for RSI Planes ABI.
36 - Added support for s2poe/pie for planes.
37 - Added test for multi REC planes.
38 - Added test for RSI_PLANE_REG_READ/WRITE command.
39 - Added test for validating RTT calls.
40 - Added test case to enter all planes.
41 - Added tests for realm attestation.
42 - Allocated memory for multiple planes.
43 - Called `RMI_PDEV` ABIs from host realm management.
44 - Enhanced Realm memory exception tests for planes.
45 - Extended RIPAS tests for planes.
46 - Fixed `rmi_realm_params` structure not being zeroed upon realm creation.
47 - Fixed bug in `RMI_RTT_SET_S2AP` command helper.
48 - Fixed multi REC PMU tests.
49 - Fixed PMU save/restore registers.
50 - Fixed position of `RTT_S2AP_INDIRECT` bit in `RmiFeatureRegister0`.
51 - Fixed Realm PMU tests.
52 - Fixed Realm tests marking all memory as RAM.
53 - Fixed the LPA2 flag setting for BRBE test.
54 - Handled permission fault for planes.
55 - Made PCIe tests default for testing.
56 - Undelegated PDEV granules upon DA ABI failure so later tests do not fail.
57 - Validated NS EL1/EL2 context is preserved by RMM.
58
59TFTF
60^^^^
61
62- SPM/FF-A Testing:
63
64 - Added a second instance of the Cactus S-EL1 partition to validate HOB generation.
65 - Added support for PPI timer interrupts.
66 - Added v1.2 fields to RXTX header.
67 - Fixed indirect messaging tests by adding ME handling.
68 - Introduced an enum type for FF-A errors.
69 - Refilled TX buffer after undelegation.
70 - Skipped CPU cycle allocation for SP vCPU to reach message loop.
71 - Skipped enabling/disabling SRI physical interrupts in TFTF.
72 - Specify the secure partition package for an SP
73
74- New Tests
75
76 - Fuzzing Enhancements
77
78 - Added fuzzing for vendor EL3 SMCCC calls.
79 - Enabled capability for randomized fuzzing inputs.
80 - Fixed single-feature testing behaviour.
81 - Introduced support for all SDEI calls, and the FF-A interface.
82
83 - Functionality Tests
84
85 - Added RAS system registers access test.
86 - Added test for `SMCCC_ARCH_WORKAROUND_4`.
87 - Added test for ARMv8.3 PointerAuth instructions.
88 - Added test for FPMR register access.
89 - Added tests for `SMCCC_ARCH_FEATURE_AVAILABILITY`.
90 - Added two new features and fixed TRNDR handling in availability tests
91 - Check SCTLR2, THE and D128 sysregs read/writes work as expected.
92 - Denied prohibited ABIs during `CPU_OFF` PSCI message handling.
93 - Evaluated EL3–RMM IDE KM interface in TRP.
94 - Validated `psci_is_last_cpu_to_idle_at_pwrlvl`.
95 - Verified save/restore logic for `BRBCR_EL1`.
96
97 - Firmware Handoff
98
99 - Added AArch32 handoff tests.
100 - Imported Measured Boot drivers from TF-A to support event log testing.
101 - Added tests for validating an event log received from a Transfer List.
102
103- Platforms:
104
105 - Versal NET
106
107 - Provided fix to prevent continuous interrupts by properly cleaning up
108 TTC timer in cancel routine.
109
110 - Versal
111
112 - Added platform specific function to return custom entry address.
113 - Updated Versal-2 test skip list.
114 - Updated Versal-2 TFTF and UART base address.
115
116 - Neoverse-RD
117
118 - Added TFTF support for RD-V3 platform.
119 - Deprecated and remove NRD1, RD-N1-Edge, RD-V1, SGI-575 platform
120 variants.
121
122- Miscellaneous
123
124 - Added `bdf` macro.
125 - Added `xpaci` instruction to exception report.
126 - Added build flag to control support for CPU_OFF PSCI message.
127 - Added Cortex-X925 and updated Cortex-X4 to Errata ABI.
128 - Added HOB definitions to TFTF.
129 - Added MbedTLS support and updated version to v3.6.3.
130 - Added new interface to get an invalid entrypoint address.
131 - Added register definitions needed for SMCCC_ARCH_FEATURE_AVAILABILITY
132 - Added split workaround check in Errata ABI test.
133 - Added support for SMC calls with no ret vals in x8.
134 - Updated ARM GCC toolchain requirements to 14.2.Rel1.
135 - Updated Cortex-A710 errata list.
136
137Cactus (Secure-EL1 FF-A test partition)
138~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
139
140 - Added boot-time prints for Cactus-StMM HOB list.
141 - Added support for receiving PSCI messages through direct request framework message.
142 - Added mapping for boot information regions.
143 - Moved StMM to Cactus tertiary.
144
145Issues resolved since last release
146^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
147
148 - Applied fix to synchronize SME context before it is used.
149 - Fixed reporting of BRBE support with later revisions.
150 - Fixed compile error in `test_irq_spurious_gicv2.c`.
151
Harrison Mutaicf898bb2024-11-15 09:43:11 +0000152Version 2.12
153------------
154
155New features
156^^^^^^^^^^^^
157
158- More tests are made available in this release to help validate the
159 functionalities in the following areas:
160
161 - FF-A
162 - Realm Management Extension
163 - EL3 Runtime
164 - New Platform ports
165
166TFTF
167^^^^
168
169- SPM/FF-A Testing:
170
171 - Added tests to attest SPMC handles GPF in memory sharing ABIs:
172
173 - FFA_MEM_RETRIEVE_REQ
174 - FFA_MEM_FRAG_RX/TX
175 - FFA_MEM_RELINQUISH
176
177 - Added tests using the SMC64 ABI version for the FF-A memory management
178 interfaces.
179 - Tests to attest the SPMC is doing the necessary context management
180 of SME registers.
181 - Check that SRI delay flag use from normal world results in an error.
182 - FF-A Setup and discovery interfaces:
183
184 - FFA_VERSION called restricted to be used until first FF-A call,
185 from a given endpoint is handled.
186 - FFA_FEATURES tests changed to cater for feature return based on
187 EL of the FF-A endpoint, and the security state it relates to.
188 - FFA_PARTITION_INFO_GET changed to report support of indirect
189 messaging.
190
191 - New tests
192
193 - Added AMU counter restriction (RAZ) test.
194 - Added test to validate EL1 and EL2 registers during context switch.
195 - Added PCIe DOE library and tests.
196 - Added tests for newly supported features FEAT_FGT2, LS64_ACCDATA,
197 FEAT_Debugv8p9.
198 - Added test for 64-byte load/store instructions introduced by LS64.
199 - Added asymmetric feature testing for FEAT_SPE, FEAT_TRBE, and FEAT_TCR2.
200 - Added a new test suite supported by EL3 SPMC.
201 - Added SDEI tests for attempting to bind too many events.
202 - Added test suite to exercise SIMD context management with Cactus SP
203 (supported by EL3 SPMC).
204
205- Platforms
206
207 - Corstone-1000:
208
209 - Updated test skip list.
210
211 - FVP:
212
213 - Added PCIe support.
214
215 - Neoverse-RD:
216
217 - Defined naming convention for CSS macros.
218 - Introduced flash and ROS macros.
219 - Introduced timer and watchdog macros.
220 - Refactored header files for first gen platforms.
221 - refactored header files for second gen platforms.
222 - Removed deprecated header files.
223
224 - Versal-2:
225
226 - Added support for AMD Versal Gen 2 platform.
227 - Added AMD Versal Gen 2 documentation.
228
229- Miscellaneous:
230
231 - Added skeleton for asymmetric feature testing capability.
232 - Added asymmetric tests to skip when features are not present on a core.
233 - Added test to ensure arch timer in NWd is honored across world switch.
234 - Added test to confirm errata 2938996/2726228 workaround by checking
235 trbe_el1 access.
236 - Fixed GICD_ITARGETSR assertion to relax check on unicore systems.
237 - Fixed expect to print file and line number on failure for easier debugging.
238 - Fixed TRBE extension test to skip on Cortex-A520 and Cortex-X4 due to errata.
239 - Refactored to register undef_injection_handler only during register accesses
240 for better control over exceptions.
241 - Fixed firmware handoff register convention value to match updated spec.
242 - Updated toolchain requirements.
243
244Realm Management Extension
245^^^^^^^^^^^^^^^^^^^^^^^^^^
246
247 - Set number of num_bps and num_wps.
248 - Updated rsi_ipa_state_get() function.
249 - Increased maximum number of RECs.
250 - Use random start REC.
251 - Added specific tests for FEAT_LPA2 on RMI tests.
252 - Added support for FEAT_LPA2 to the Realm Extension tests.
253 - Added test for rtt_fold unassigned.
254 - Added test for rtt_fold assigned.
255 - Unified SIMD test cases.
256 - Fixed pauth exception test.
257 - Fix(realm): cater for removal of SH from rtte.
258 - Fixed RMI and RSI definitions to match RMM Specification 1.0-rel0-rc1.
259 - Fixed RMI commands arguments descriptions.
260 - Fixed calculation of Realm's REC index.
261 - Fixed host_realm_init_ipa_state()'s retry path.
262 - Fixed realm initialisation code.
263 - Separated pool creation from Realm creation helpers.
264 - Fixed tests passing with TRP but not with RMM.
265
266Cactus (Secure-EL1 FF-A test partition)
267~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
268
269 - Added support for Cactus SP to boot on EL3 SPMC.
270 - Added fix to skip computing linear core id.
271 - Fixed cactus_mm verbosity on some tests.
272
273Issues resolved since last release
274^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
275
276 - Added "build" directory dependency to ensure correct ordering
277 on slow systems.
278 - Fixed race condition in tests_list generation by using grouped target.
279 - Fixed virtual timer enablement by moving it to command handler.
280 - Fixed test case test_smccc_callee_preserved.
281 - Updated definitions for sysregs on older toolchains.
282 - Fixed undef_injection_handler to clarify it catches both undef injections
283 and EL2 register traps.
284
Juan Pablo Conde5a1f7bf2024-05-18 22:14:41 -0500285Version 2.11
286------------
287
288New features
289^^^^^^^^^^^^
290
291- More tests are made available in this release to help validate the
292 functionalities in the following areas:
293
294 - FF-A
295 - Realm Management Extension
296 - EL3 Runtime
297 - New Platform ports
298 - Negative Boot-Test Framework
299
300TFTF
301~~~~
302
303- SPM/FF-A testing:
304
305 - Added test to ensure MTE registers are restored upon context switch.
306 - Indirect message: Added framework code and tests (messaging VMs to SPs;
307 aborted FFA_MSG_SEND2 call from both SPs and TFTF).
308 - Added framework notification helpers.
309 - Added test to check that NWd can't lend/donate realm memory.
310 - Added test that accesses all constituents descriptors of memory share.
311 - Test to validate of GPC with memory sharing.
312 - Test FFA_FEATURES to obtain interrupt IDs for: Notification Pending
313 Interrupt, Schedule Receiver Interrupt and Managed Exit.
314 - Increase test coverage for FFA_RXTX_MAP/FFA_RXTX_UNMAP.
315 - Test to check that FFA_FEATURES returns max RX/TX buffer size.
316 - Added helper functions for getting string representations of function.
317 identifiers and error codes.
318 - Added impdef field to ffa_memory_access structures.
319 - Updated FF-A version for sp_test_ffa.c and memory sharing tests to v1.2.
320 - Refactored helpers that use bitfields for memory access bitmaps.
321 - Refactored ffa_memory_access constructors.
322 - Renamed SPM cpu_features to SIMD.
323 - In FFA_MSG_SEND_DIRECT_REQ/FFA_MSG_DRIECT_REQ2 calls return
324 FFA_ERROR(FFA_BUSY), with establishing cycling dependencies.
325 - Added validation to detect if FFA_SECONDARY_EP_REGISTER is supported.
326 - Tests for Hypervisor retrieve request: contents checks, fragmented request,
327 verify receivers.
328 - Test to verify FFA_MEM_LEND/FFA_MEM_DONATE in a RME enabled platform.
329 - Fixed a few arguments used in the hypervisor retrieve request tests.
330 - Fixed notifications test to clean-up after itself (destroy bitmap for
331 receiver VM in SPMC).
332 allocated for the VM in the SPMC.
333 - Exercise DMA isolation for secure access to Non-Secure memory.
334
335- New tests:
336
337 - Introduced UNDEF injection test.
338 - Added test for SMC vendor-specific service.
339 - Added test for PMF version check via SMC.
340 - Refactored to group all SMC tests.
341 - Tested trusted key certificate corruption.
342
343- Platforms:
344
345 - SGI:
346
347 - Replaced references to "SGI"/"sgi" for neoverse_rd.
348 - Renamed "CSS_SGI" macro prefixes to "NRD".
349 - Moved APIs and types to "nrd" prefix.
350 - Replaced build-option prefix to "NRD".
351 - Regrouped "sgi" and "rdinfra" to "neoverse_rd".
352 - Increased the number of XLAT tables.
353
354 - Versal:
355
356 - Skip hanging TSP test cases.
357 - Updated test skip list.
358
359 - Versal NET:
360
361 - Removed TSP tests from skip list.
362 - Updated test skip list.
363 - Temporarily disabled the hanging TSP test cases.
364 - Corrected core position function.
365
366 - TC:
367
368 - Updated UART base for TFTF.
369 - Made TC0 TFTF code generic to TC.
370
371 - Xilinx:
372
373 - Moved TTC_CLK_SEL_OFFSET to platform_def.h.
374 - Added Xilinx platforms to docs.
375 - Updated test skip list.
376
377 - ZynqMP:
378
379 - Introduced platform support.
380 - Added documentation.
381
382- Miscellaneous:
383
384 - Refactored DebugFS and PMF as vendor-specific el3 services.
385 - Added Cortex-A520, Cortex-X3 and Cortex-X4 cpu structures for errata ABI.
386 - Added SMCCCv1.3 SVE hint bit support in TFTF framework.
387 - Added TSP testing, multi-CPU capability, new test function and enhanced.
388 performance for SMC fuzzing.
389 - Added MPAM system registers access test.
390 - Updated register signature for Firmware Handoff.
391 - Updated toolchain requirements in docs.
392 - Updated links to TF-A Tests issues tracker.
393 - Refactored SDEI test to align with new SPSR config.
394 - Removed some tests from extensive test list.
395 - Moved test suite "SP exceptions" from 'tests-spm.xml' into.
396 'tests-memory-access.xml'.
397 - Disabled RWX segment warnings for the EL3 payload.
398
399Realm Management Extension (RME)
400~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
401
402 - Added test for enabling pmu with multiple rec.
403 - Added testcase for access outside realm IPA space.
404 - Added ability to overwrite s2sz for creating realm.
405 - Added tests for PAS transitions.
406 - Added test for FEAT_DIT.
407 - Test realm PAuth state is preserved.
408 - Added testcase for Synchronous external aborts.
409 - Added testcase for REC exit due to Data/Instr abort.
410 - Removed unwanted arg from realm API.
411 - Fixed realm_printf string.
412 - New API to create and activate realm.
413 - Testcase for multiple realms.
414 - Added support for multiple realm.
415 - Removed pack_realm build target.
416 - Test to use SVE hint bit feature.
417 - Removed unwanted host_rmi_rtt_init_ripas.
418 - Testcase for multiple REC validations.
419 - Changed Realm create and execute API.
420 - Testcase for RMI_RTT_SET_RIPAS reject.
421 - Added testcase for multiple REC on multiple CPUs.
422 - Added support for RSI_IPA_STATE_GET/SET.
423 - Added realm_print_exception for Realm payload.
424 - Force max IPA size on Realms to 48 bits.
425 - Fixed Realm destroy API.
426 - Fixed Realm vbar_el1 load address.
427 - Fixed return value of host_enter_realm_execute call.
428 - Fixed host_call structure should be per rec.
429 - Fixed issue in RTT teardown.
430 - Fixed initialization of RIPAS is incorrectly done on TFTF.
431 - Fixed host_realm_init_ipa_state() is called with wrong args.
432
433Cactus (Secure-EL1 FF-A test partition)
434~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
435
436 - Added SMMU test engine header file.
437 - Added MEMCPY and RAND48 to the SMMU test engine.
438 - Added ability to send indirect messages.
439 - Added support for fake RAS handler command.
440 - Replaced tftf_smc with ffa_service_call.
441 - Refactored cactus to handle expect exception.
442 - Refactored first cactus SP to use FFA_CONSOLE_LOG instead of UART.
443 - Replaced platform_get_core_pos with macro that retrieves vCPU index.
444
445Issues resolved since last release
446^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
447
448 - Check for null before calling I/O policy callback.
449 - Mapped NS buffer only if needed for SMMU tests.
450 - Fixed comments referencing "SGI platform".
451 - Specified properties to corresponding memory region nodes.
452 - Increased TESTCASE_OUTPUT_MAX_SIZE for printf.
453 - Save and restore SMCR_EL2 upon CPU suspend and resume.
454
Juan Pablo Conde67fc3702023-11-13 17:46:50 -0600455Version 2.10
456------------
457
458New features
459^^^^^^^^^^^^
460
461- More tests are made available in this release to help validate the
462 functionalities in the following areas:
463
464 - FF-A
465 - Realm Management Extension
466 - EL3 Runtime
467 - New Platform ports
468
469TFTF
470~~~~
471
472- FF-A testing:
473
474 - Fixing FF-A version tests and expected error codes.
475 - Remove SPM tests from AArch32 builds.
476 - Support extended set of registers with FF-A calls.
477 - Fix use of instruction permissions in FF-A memory sharing tests.
478 - Extend memory sharing tests that use the clear memory flags.
479 - Test that memory from Root World/Realm can't be shared.
480 - Test the compliance to SMCCC at the non-secure physical instance.
481 - Exercise secure eSPI interrupt handling.
482
483- New tests:
484
485 - Added test for Errata management firmware interface.
486 - Added basic firmware handoff tests.
487 - Test to verify SErrors synchronized at EL3 boundry.
488 - Introduced RAS KFH support test.
489 - Modified FEAT_FGT test to check for init values.
490 - Updated test_psci_stat.c to support more power states.
491
492- Platforms:
493
494 - TC:
495
496 - Made TC0 TFTF code generic to TC.
497
498 - Versal:
499
500 - Added platform support and platform specific cases.
501 - Added Versal documentation.
502
503 - Versal NET:
504
505 - Added platform support and platform specific cases.
506 - Added Versal NET documentation.
507
508 - Xilinx:
509 - Reorganized timer code into common path.
510
511- Miscellaneous:
512
513 - Added helper routines to read, write and compare SVE and FPU registers.
514 - New CPU feature detection helpers.
515 - Introduced clang toolchain support and added python generate_test_list
516 script.
517 - Docs: Updated toolchain requirements and added maintainers for AMD-Xilinx.
518 - Tidy setup and discovery logs.
519 - Added note on building TFA-Tests using clang docs.
520 - Added SME helper routines and added Streaming SVE support.
521 - Introduced SError exception handler.
522 - Updated toolchain requirements documentation.
523 - Check for support for ESPI before testing it.
524
525Realm Management Extension (RME)
526~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
527
528 - Added SVE Realm tests and tests for EAC1.
529 - Test to intermittently switch to Realm while doing NS SVE and Streaming
530 SVE ops.
531 - Added tests to check NS SME ID registers and configurations.
532 - Added test to check if RMM doesn't leak Realm contents in SVE registers.
533 - Test to check if non SVE Realm gets undefined abort.
534 - Test to check various SIMD state preserved across NS/RL switch.
535 - Added test to check swtich SME registers to SIMD state.
536 - Testcase for CPU_ON denied.
537 - Test for multiple REC single CPU.
538 - Test for PAuth in Realm.
539 - Enhanced FPU state verification test.
540 - Modified API of RMI_RTT_*_RIPAS, changed handling.
541 - Removed RIPAS_UNDEFINED and modified RIPAS/HIPAS definitions for EAC2.
542 - Removed RMI_VALID_NS status and RMI_ERROR_IN_USE error code
543 RMI_RTT_UNMAP_UNPROTECTED and update API of data/rtt functions.
544 - Updated RSI_VERSION, RMI_VERSION and modified rmi_realm_params structure.
545 - Added support for PMU as per RMM Specification 1.0-eac2.
546 - Added PSCI API to Realms and API for REC force exit.
547 - Added support for multiple REC and CPU and data buffer to pass arg to REC.
548 - Set size of RsiHostCall.gprs[] to 31.
549 - Passing RD pointer in arg0 register X1.
550 - Added host call to flush Realm prints.
551 - Aligned Realm stack.
552 - Introduced new build flag for RME stack and appended realm.bin at end of
553 tftf.bin.
554
555Cactus (Secure-EL1 test partition)
556~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
557
558 - Test discovery of EL3 SPMD managed SPs.
559 - Configure partitions load-address from SP layout file.
560 - Use the non-secure memory attribute in descriptor obtain from
561 FFA_MEM_RETRIEVE_RESP.
562 - SPs configured with a unique boot-order field in their respective
563 manifests.
564 - Test to the FFA_PARTITION_INFO_GET_REGS interface.
565 - Defined memory security state attribute for memory transaction desciptor.
566
567Issues resolved since last release
568^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
569
570 - Fixed incremental build issue with Realm payload and build dependency
571 in test-realms-payload.
572 - SME: use of rdsvl instead of rdvl, enable SME/SME2 during arch init,
573 align test vector arrays to 16 bytes.
574 - SVE: representing Z0-Z31 as array of bytes and moved operation to a lib
575 routine.
576 - Fixed issue in processing dynamic relocations for AArch64.
577 - Reclaim and check for shared memory now supported.
578 - FPU replaced read with write of random value to fpsr/fpcr.
579 - Disabled RMI tests when building for AArch32 architecture.
580 - Fixed command id passed to Realm to compare FPU registers.
581 - Fixed broken links in docs landing page and made generate_test_list
582 backward compatible.
583 - XLAT: added support for 52 bit PA size with 4KB granularity.
584 - Fixed stress test for XLAT v2.
585 - RAS: Moved wait logic from assembly to C and renamed SDEI related
586 functions/events.
587
Juan Pablo Conde0a0f6742023-05-13 00:20:15 -0500588Version 2.9
589-----------
590
591New features
592^^^^^^^^^^^^
593
594- More tests are made available in this release to help validate the
595 functionalities in the following areas:
596
597 - FF-A Features
598 - Realm Management Extension
599 - New Architecture Specific features related to v8.8
600 - New platform ports
601
602TFTF
603~~~~
604
605- FF-A testing:
606
607 - Reordered logs in the memory sharing tests.
608 - Memory share bumped to v1.1 EAC0.
609 - Updated tests for FFA_FEATURES(FFA_MEM_RETRIEVE_REQ).
610 - Fixed issues with RXTX buffer unmapping and dependencies on tests.
611 - Added check for execution state property of partitions.
612
613- New tests:
614
615 - Tests for Errata management firmware interface.
616 - Ensure FPU state registers context is preserved in RL/SE/NS.
617 - Modified FEAT_HCX test to also check for HCRX_EL2 init value.
618 - Added basic SME2 tests.
619 - PSCI tests for OS-initiated mode.
620 - Added "nop" test to be used in conjunction with TFX.
621 - Introduced capability to generate Sync External Aborts (EA) in TFTF.
622 - New test to generate an SError.
623 - Tests to check whether the PMU is functional and if the state is
624 preserved when switching worlds. PMEVTYPER.evtCount width extended.
625 - Added support for more SPE versions.
626
627- Platforms:
628
629 - RD-N2-Cfg3:
630
631 - Added TFTF support.
632
633- Miscellaneous:
634
635 - SIMD/FPU save/restore routine moved to common lib.
636 - Updated toolchain requirements documentation.
637 - Update SME/Mortlach tests.
638 - Unified Firmware First handling of lower EL EA.
639 - Moved trusted wdog API to spm_common.
640 - Added the ability to skip tests for AArch32.
641 - Added config file to allow doc defaults be changed.
642 - Modified tests for FEAT_RNG_TRAP.
643 - Moved 'Stress test timer framework' to a new test suite
644 'tests-timer-stress'.
645 - Support for new binutils versions.
646 - Removed deprecated SPM libs and test code.
647
648
649Realm Management Extension (RME)
650~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
651
652 - Added helper macro for RME tests.
653 - Test Secure interrupt can preempt Realm EL1.
654 - Added PMU Realm tests.
655 - Added BP_OPTION to REALM_CFLAGS to allow build realm payload with
656 BTI/Pauth support.
657 - Fixed build issues introduced by the TFTF Realm extension
658 enhancement tests.
659 - Test case return codes updated according to RMM Bet0 specification.
660 - Fixed build problem related to rmi_rec_enter verbose log.
661 - Added randomization of SMC RMI commands parameters and checking of
662 X4-X7 return values as per SMCCC v1.2.
663
664Cactus (Secure-EL1 test partition)
665~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
666
667 - Use of FFA_CONSOLE_LOG for debug logs.
668 - Test for consecutive same memory donation to other partitions.
669 - Now validating NWd can't share forbidden addresses.
670 - Support for registering irq handlers.
671 - Fixed attributes for NS memory region.
672 - Removal of memory regions not page-aligned.
673 - Added check for core linear id matching id passed by SPMC.
674
675Issues resolved since last release
676^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
677
678 - Build issue for older toolchains and other failures resolved.
679 - Dropped invalid access test from CI.
680 - Now checking that the PMU is supported before using any of it.
681 - Use of write instead of read to generate an SError to avoid sync
682 exceptions instead.
683 - Fixed broken link to TRNG_FW documentation.
684 - INIT_TFTF_MAILBOX() is called first for the invalid access test.
685
Juan Pablo Conde47e64d42022-11-16 18:33:40 -0500686Version 2.8
687-----------
688
689New features
690^^^^^^^^^^^^
691- More tests are made available in this release to help validate the
692 functionalities in the following areas:
693
694 - FF-A Features
695 - Realm Management Extension
696 - New Architecture Specific features related to v8.8
697 - New platform ports
698
699TFTF
700~~~~
701
702- FF-A testing:
703
704 - UUID included in partition information descriptors.
705 - Checks for size of partition information descriptors.
706 - Renamed FFA_MSG_RUN ABI function to FFA_RUN and allowed it to return from
707 Waiting state.
708 - Made ffa_tests available for Ivy.
709 - Updated verbose message log structure.
710 - Prevented generate_json.sh from being called more than once by requiring
711 a list of partitions to be supplied.
712 - Added a temporary workaround for unexpected affinity info state to prevent
713 a system panic.
714 - Added test to exercise FFA_CONSOLE_LOG ABI.
715
716 - FF-A v1.1 Secure interrupts
717
718 - Added managed exit to first and second SP in call chain.
719 - Added test to exercise managed exit by two SPs in a call chain.
720 - Added tests to exercise NS interrupt being queued and signaled to SP.
721
722- New tests:
723
724 - Tests for SVE operations in Normal World and discover SVE vector length.
725 - Added cleanup TRNG service tests.
726 - Added test for SMCCC_ARCH_WORKAROUND_3.
727 - Updated PAuth helpers to support QARMA3 algorithm.
728 - Added tests for RNG_TRAP.
729
730- Platforms:
731
732 - SGI:
733
734 - Introduced platform variant build option.
735 - Re-organized header files.
736 - Migrated to secure uart port for routing tftf logs.
737
738 - N1SDP:
739
740 - Added TFTF support for N1SDP.
741
742 - RD-N2:
743
744 - Added TFTF support for RD-N2.
745
746 - RD-N2-Cfg1:
747
748 - Added TFTF support for RD-N2-Cfg1.
749
750 - RD-V1:
751
752 - Added TFTF support for RD-V1.
753
754- Miscellaneous:
755
756 - Added a missing ISB instruction in SME test.
757 - Refactor to make some helper functions re-usable.
758 - Updated build command to clean EL3 payload image.
759 - Move renaming of the primary dts file for ivy partitions.
760 - Added check that verifies if a platform supports el3_payload before
761 building it.
762 - Updated memory share test to meet Hafnium specification.
763 - Updated toolchain requirements documentation.
764
765
766Realm Management Extension (RME)
767~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
768
769 - Added Realm payload management capabilities to TFTF to act as a NS Host.
770 - Added test to verify that RMM and SPM can co-exist and work properly.
771 - Added function to reset delegated buffers to non-delegated state.
772 - Re-used existing wait_for_non_lead_cpus() function helper.
773 - Refactored RMI FID macros to simplify usage.
774 - Added userguide for realm payload testing.
775
776Cactus (Secure-EL1 test partition)
777~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
778
779 - Corrected some tests message types from ERROR to VERBOSE.
780 - Increased the cactus number of xlat to allow the use of 48b PA size for
781 memory sharing between SPs.
782 - Introduced a new direct request message command to resume after managed
783 exit.
784 - Skip enabling virtual maintenance interrupts explicitly.
785 - Allowed sender to resume interrupted target vCPU.
786 - Added support for handling managed exit through vIRQ.
787 - Added support for discovering interrupt IDs of managed exit signals.
788 - Specified action in response to NS interrupt in manifest.
789
790Ivy (Secure-EL0 test partition)
791~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
792
793 - Allowed testing using VHE.
794 - Allowed Ivy partitions to use ffa_helpers functions.
795 - Requirement of common name for Ivy partitions for consistency.
796 - Specified action in response to NS interrupt in manifest.
797
798Issues resolved since last release
799^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
800
801 - Fixed SME header guard name.
802 - Fixed response for incorrect direct message request for FF-A.
803
Jayanth Dodderi Chidanand090491b2022-05-03 15:05:11 +0100804Version 2.7
805-----------
806
807New features
808^^^^^^^^^^^^
809- More tests are made available in this release to help validate the
810 functionalities in the following areas:
811
812 - FF-A Features
813 - New Architecture Specific features related to v8.7
814 - New platform port
815
816TFTF
817~~~~
818
819- FF-A testing:
820
821 - FF-A partition information structure is updated to include UUIDs.
822 - Memory Management helper functions are refactored to fetch the details
823 of smc call failures in tftf and cactus.
824 - Added test to validate memory sharing operations from SP to NS-endpoint
825 are denied by SPMC.
826 - Added test to ensure an endpoint that sets its version to v1.0 receives
827 v1.0 partition information descriptors as defined in v1.0 FF-A
828 specification.
829 - Added test to validate that memory is cleared on memory sharing operations
830 between normal world and secure world.
831
832 - FF-A v1.1 Secure interrupts
833
834 - Added support to enhance the secure interrupt handling test.
835 - Support for registering and unregistering custom handler that is
836 invoked by SP at the tail end of the virtual interrupt processing.
837 - Added support for querying the ID of the last serviced virtual interrupt.
838
839- New tests:
840
841 - Added test to validate that realm region access is being prevented from
842 normal world.
843 - Added test to validate that secure region access is being prevented from
844 normal world.
845 - Added test to validate that secure region access is being prevented from
846 realm world.
847 - Added test to validate that root region access is being prevented from
848 realm world.
849 - Added a test for v8.7 Advanced floating-point behavior (FEAT_AFP).
850 - Added a SPE test that reads static profiling system registers
851 of available SPE version i.e. FEAT_SPE/FEAT_SPEv1p1/FEAT_SPEv1p2.
852 - Added a test to validate functionality of WFET and WFIT instructions
853 introduced by v8.7 FEAT_WFxT.
854 - Added basic SME tests to ensure feature enablement by EL3 is proper for
855 its usage at lower non-secure ELs.
856 - Added test to check Data Independent timing (DIT) field of PSTATE is
857 retained on exception.
858 - Added test to ensure that EL3 has properly enabled access to FEAT_BRBE
859 from non-secure ELs.
860
861- Platforms:
862
863 - Add initial platform support for corstone1000.
864
865 - TC:
866
867 - Support for notification in tertiary SP manifest.
868
869 - FVP:
870
871 - Support to provide test memory addresses to validate the invalid
872 memory access test from tftf(ns-el2).
873
874- Miscellaneous:
875
876 - Added support to configure the physical/virtual address space for FVP.
877 - Added common header file for defining macros with size to support all the
878 platforms.
879 - Introduced handler for synchronous exceptions (AArch64).
880 - Added macros to extract the ISS portion of an ELx ESR exception syndrome
881 register.
882 - Support to dynamically map/unmap test region to validate invalid memory
883 access tests.
884 - Added support to receive boot information through secure partitions,
885 according to the FF-A v1.1 EAC0 specification.
886 - Added an helper API function from SPM test suite to initialize FFA-mailbox
887 and enable FF-A based message with SP.
888 - Updated the build string to display the rc-tagged version.
889
890Cactus (Secure-EL1 test partition)
891~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
892
893 - Added test for nonsecure memory sharing between Secure Partitions(SPs).
894 - Added test to validate that a realm region cannot be accessed from secure
895 world.
896 - Added test to permit checking a root region cannot be accessed from secure
897 world.
898 - Extended the test command CACTUS_MEM_SEND_CMD to add support for memory
899 sharing flags.
900 - Added support to save the state of general purpose registers x0-x4 at the
901 entry to cold boot and restore them before jumping to entrypoint of cactus.
902
903Issues resolved since last release
904^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
905
906 - Fixed a bug to align RMI FIDs with SMCCC.
907 - Fixed encoding of vCPU and receiver IDs in the FFA_NOTIFICATION_GET
908 interface to comply with the FF-A v1.1 beta0 specification.
909 - Fixed memory retrieve request attributes by enforcing them to be inner
910 shareable rather than outer.
911 - Fixed static memory mapping of EL3 in EL2.
912 - Fixed a spurious error log message with memory share test.
913 - Aligning RMI FIDs with SMCCC.
914 - Fixed PSCI system suspend test suite execution in a four world system.
915 - Configured the build system to use DWARF 4 standard for debug builds with
916 ArmDS.
917 - Introduced macro IRQ_TWDOG_INTID for the Tegra210, Tegra186 and Tegra194
918 platforms to fix the compilation failures.
919
Madhukar Pappireddyda69f822021-11-09 16:05:54 -0600920Version 2.6
921-----------
922
923New features
924^^^^^^^^^^^^
925- More tests are made available in this release to help validate the
926 functionalities in the following areas:
927
928 - Firmware Framework for Arm A-profile(FF-A)
929 - Realm Management Extensions(RME)
930 - Embedded Trace Extension and Trace Buffer Extension (ETE and TRBE)
931
932TFTF
933~~~~
934
935- FF-A testing:
936
937 - Update FF-A version to v1.1
938 - Added helpers for SPM tests to check partition info of SPs from normal
939 world.
940 - Added tests to check for ffa_features supported.
941 - Added test for FFA_RXTX_UNMAP ABI.
942 - Added test for FFA_SPM_ID_GET.
943 - FF-A v1.1 Notifications
944
945 - Added test for notifications bitmap create and destroy ABIs.
946 - Added test for notifications set and get ABIs.
947 - Added test for notification INFO_GET ABI.
948 - Added test to check notifications pending interrupt is injected into
949 and handled by the expected vCPU in a MP setup.
950 - Added test for signaling from MP SP to UP SP.
951 - Added test to check notifications interrupt IDs retrieved with
952 FFA_FEATURES ABI.
953 - Added test to check functionality of notifications scheduled receiver
954 interrupt.
955
956 - FF-A v1.1 Secure interrupts
957
958 - Added support for handling secure interrupts in Cactus SP.
959 - Added several tests to exercise secure interrupt handling while SP
960 is in WAITING/RUNNING/BLOCKED state.
961
962- New tests:
963
964 - Enabled SVE tests
965 - Added test for trace system registers access.
966 - Added test for trace filter control registers access.
967 - Added test for trace buffer control registers access.
968 - Added test to check PSTATE in SDEI handler.
969 - Added test to check if HCRX_EL2 is accessible.
970
971- Platforms:
972
973 - TC0:
974
975 - Support for direct messaging with managed exit.
976 - Support for building S-EL0 Ivy partition.
977
978 - FVP:
979
980 - Update Cactus secure partitions to indicate Managed exit support.
981
982- Miscellaneous
983
984 - Added random seed generation capability and ability to specify build
985 parameters for SMC Fuzzer tool.
986
987Cactus (Secure-EL1 test partition)
988~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
989
990 - Added helper for Cactus SP sleep.
991 - Added test commands to request use of notifications interfaces.
992 - Added several commands that generate direct message requests to assist in
993 testing secure interrupt handling and notifications features in FF-A v1.1
994 - Added support for SP805 Trusted Watchdog module.
995
996Ivy (Secure-EL1 test partition)
997~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
998
999 - Add shim layer to Ivy partition and enable PIE.
1000 - Define Ivy partition manifest and use FF-A for message handling.
1001 - Prepare S-EL1/0 enviroment for enabling S-EL0 application.
1002
1003Realm Management Extension(RME)
1004~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1005
1006 - Added tests to run RMI and SPM on multiple CPUs concurrently.
1007 - Added tests for multi CPU delegation and fail conditions.
1008 - Added tests to query RMI version on multiple CPUs.
1009
1010Issues resolved since last release
1011^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1012
1013 - Fixed Ivy partition start address for TC0.
1014 - Fixed SP manifests to use little endian format UUID.
1015 - Fixed a bug in memory sharing test for Cactus SP.
1016 - Invalidate data cache for NS_BL1U and NS_BL2U images.
1017 - Fixed attributes to Read-Write only for memory regions described in partition
1018 manifests.
1019
Bipin Ravi7afea032021-05-06 14:32:52 -05001020Version 2.5
1021-----------
1022
1023New features
1024^^^^^^^^^^^^
1025- More tests are made available in this release to help validate the
1026 functionalities in the following areas:
Madhukar Pappireddyb1193f92023-05-18 16:50:41 -05001027
Bipin Ravi7afea032021-05-06 14:32:52 -05001028 - True Random Number Generator (TRNG) test scenarios.
1029 - Multicore / Power State Controller Interface (PSCI) tests.
1030 - v8.6 Activity Monitors Unit (AMU) enhancements test scenarios.
1031 - Secure Partition Manager (SPM) / Firmware Framework (FF-A) v1.0 testing.
1032 - Interrupt Handling between Non-secure and Secure world.
1033 - Direct messages and memory sharing between Secure Partitions(SP).
1034 - Many tests to exercise FF-A v1.0 ABIs.
1035 - SPM saving/restoring the NS SIMD context enabling a normal world FF-A
1036 endpoint (TFTF) and a secure partition to use SIMD vectors and
1037 instructions independently.
1038
1039TFTF
1040~~~~
1041
1042- SPM / FF-A v1.0 testing.
1043 - Refactor FF-A memory sharing tests
1044 - Created helper functions to initialize ffa_memory_region and to send
1045 the respective memory region to the SP, making it possible to reuse
1046 the logic in SP-to-SP memory share tests.
1047 - Added comments to document relevant aspects about memory sharing.
1048
1049 - Trigger direct messaging between SPs.
1050 - Use cactus command 'CACTUS_REQ_ECHO_SEND_CMD' to make cactus SPs
1051 communicate with each other using direct message interfaces.
1052
1053 - Added helpers for SPM tests.
1054 - Checking SPMC has expected FFA_VERSION.
1055 - Checking that expected FF-A endpoints are deployed in the system.
1056 - Getting global TFTF mailbox.
1057
1058- Replace '.inst' AArch64 machine directives with CPU Memory Tagging Extension
1059 instructions in 'test_mte_instructions' function.
1060
1061- Add build option for Arm Feature Modifiers.
1062 - This patch adds a new ARM_ARCH_FEATURE build option to add support
1063 for compiler's feature modifiers.
1064
1065- Enable 8 cores support for Theodul DSU(DynamIQ Shared Unit) for the
1066 Total Compute (TC0) platform.
1067
1068- New tests:
1069
1070 - Remove redundant code and add better tests for TRNG SMCs.
1071 - Tests that the Version, Features, and RND calls conform to the spec.
1072
1073 - New tests for v8.6 AMU enhancements (FEAT_AMUv1p1)
1074 - Make sure AMU offsets are being saved and restored properly.
1075
1076 - Tests to request SP-to-SP memory share.
1077
1078 - SP-to-SP direct messaging deadlock test.
1079 - TFTF sends CACTUS_REQ_DEADLOCK_CMD to cactus SP.
1080
1081Cactus(Secure-EL1 test partition)
1082~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1083
1084- Enable managed exit for primary cactus secure partition.
1085
1086- Helper commands needed for interrupt testing.
1087
1088- Add handler from managed exit FIQ interrupt.
1089
1090- Make ffa_id global.
1091
1092- Implement HF_INTERRUPT_ENABLE Hafnium hypervisor call wrapper. With this
1093 service, a secure partition calls into the SPMC to enable/disable a
1094 particular virtual interrupt.
1095
1096- Invalidate the data cache for the cactus image.
1097
1098- Helper commands needed for interrupt testing.
1099 - CACTUS_SLEEP_CMD & CACTUS_INTERRUPT_CMD added.
1100
1101- Decouple exception handling from tftf framework.
1102 - With new interrupt related tests coming up in Cactus, added separate
1103 exception handler code for irq/fiq in Cactus.
1104
1105- Hypervisor calls moved to a separate module.
1106
1107- Add secondary entry point register function.
1108
1109- Declare third SP instance as UP SP.
1110
1111- Provision a cold boot path for secondary cores (or secondary pinned
1112 execution contexts).
1113
1114- Tidy message loop, commands definitions, direct messaging API definitions.
1115
1116- Helpers for error logging after FF-A calls.
1117
1118- Properly placing Cactus test files.
1119
1120- Tidying FF-A Memory Sharing tests.
1121
1122- Use CACTUS_ECHO_CMD in direct message tests.
1123
1124- Refactor handling of commands.
1125 - Added helper macros to define a command handler, build a command table
1126 in which each element is a pair of the handler and respective command
1127 ID. Available tests have been moved to their own command handler.
1128
1129- Extend arguments in commands responses.
1130 - In the test commands framework, added template to extend number of
1131 values to include in a command response.
1132
1133- Check FF-A return is a valid direct response.
1134 - Added a helper function to check if return of FFA_MSG_SEND_DIRECT_REQ
1135 is FFA_MSG_SEND_DIRECT_RESP.
1136
1137- FFA_MSG_DIRECT_RESP call extended to use 5 registers.
1138
1139- Added accessors for arguments from FF-A calls.
1140 - Some accessors for arguments from FF-A calls, namely for func id, error
1141 code, and direct message destination/source.
1142
1143- Use virtual counter for sp_sleep.
1144 - Changes sp_sleep() to use virtual counter instead of physical counter.
1145
1146- Checks if SIMD vectors are preserved in the normal world while transitioning
1147 from normal world to secure world and back to normal world.
1148
1149- Tidying common code to tftf and cactus.
1150
1151- Refactor cactus_test_cmds.h to incorporate static inline functions instead
1152 of macros to enforce type checking.
1153
1154- Removed reference to Hafnium in name from helper function and macro to
1155 make them generic.
1156
1157- For consistency added the cmd id 'CACTUS_MEM_SEND_CMD'.
1158
1159- Add command to request memory sharing between SPs.
1160
1161- Add & handle commands 'CACTUS_REQ_ECHO_CMD' and 'CACTUS_ECHO_CMD'.
1162
1163- Update README with list of sample partitions.
1164
1165- Remove reference to PSA from xml test file.
1166
1167- Reduce tests verbosity in release mode.
1168 - Update few NOTICE messages to VERBOSE/INFO.
1169
1170- Fix conversion issues on cactus responses.
1171
1172- Create RXTX map/configure helper macros and use them.
1173
1174- Update OP-TEE version used for testing to 3.10.
1175 - SPMC as S-EL1 tests using OP-TEE depend on a static binary stored as
1176 a CI file. This binary corresponds to a build of OP-TEE v3.10.
1177
1178- Add uart2 to device-regions node.
1179 - First SP no longer has an open access to the full system peripheral
1180 range and devices must be explicitly declared in the SP manifest.
1181
1182- New tests:
1183
1184 - Test for exercising SMMUv3 driver to perform stage2 translation.
1185
1186 - Test handling of non-secure interrupt while running SP.
1187
1188 - Add secondary cores direct messaging test for SPM.
1189
1190 - Testing deadlock by FF-A direct message.
1191 - Added command CACTUS_DEADLOCK_CMD to file cactus_test_cmds.h to create
1192 a deadlock scenario using FF-A direct message interfaces.
1193
1194 - Test SP-to-SP memory share operations
1195 - Handle 'CACTUS_REQ_MEM_SEND_CMD' by sending memory to the receiver SP.
1196
1197 - Implemented test to validate FFA_RXTX_MAP ABI.
1198
Manish V Badarkhe86600a82020-10-04 18:33:44 +01001199Version 2.4
1200-----------
1201
1202New features
1203^^^^^^^^^^^^
1204- More tests are made available in this release to help validate the
1205 functionalities in the following areas:
1206 - SMCCC.
1207 - New architecture specific features.
1208 - FF-A features.
1209 - New platform ports.
1210
1211- Various improvements to test framework and test suite such as documentation,
1212 removing un-necessary dependencies, etc.
1213
1214TFTF
1215~~~~
1216
1217- Remove dependencies from FVP to generic code by converting some FVP platform
1218 specific macros to the common macros.
1219
1220- Remove make as a package dependency to compile TF-A test code.
1221
1222- Move defaults values and macro defs in a separate folder from Makefile.
1223
1224- Allow alternate stdout to be used apart from pl011 UART.
1225
1226- Get FVP platform's topology from build options to make FVP platform
1227 configuration more flexible and eliminate test errors when the platform
1228 is configured with number of CPUs less than default values in the makefile.
1229
1230- Update the FIP corrupt address which is used to corrupt BL2 image that helps
1231 to trigger firmware update process.
1232
1233- Add explicit barrier before sev() in tftf_send_event_common API to avoid
1234 core hang.
1235
1236- Align output properly on issuing make help_tests by removing dashes
1237 and sort tests.
1238
1239- Moved a few FVP and Juno specific defined from common header files to platform
1240 specific header files.
1241
1242- Replace SPCI with PSA FF-A in code as SPCI is now called as FF-A.
1243
1244- Add owner field to sp_layout generation to differentiate owner of SP which
1245 could either be Silicon Provider or Platform provider.
1246
1247- Add v8.5 Branch Target Identifier(BTI) support in TFTF.
1248
1249- Remove dependency on SYS_CNT_BASE1 to read the memory mapped timers.
1250
1251- Enables SError aborts for all CPUs, during their power on sequence.
1252
1253- Documentation:
1254
1255 - Use conditional assignment on sphinx variables so that they can be
1256 overwritten by environment and/or command line.
1257
1258 - Add support for documentation build as a target in Makefile.
1259
1260 - Update list of maintainers.
1261
1262 - Update documentation to explain how to locally build the documentation.
1263
1264 - Add .editorconfig from TF-A to define the coding style.
1265
1266 - Fix documentation to include 'path/to' prefix when specifying tftf.bin on
1267 make fip cmd.
1268
1269 - Use docker to build documentation.
1270
1271 - Replace SPCI with PSA FF-A in documentation as SPCI is now called
1272 as FF-A.
1273
1274- NVIDIA Tegra194:
1275
1276 - Skip CPU suspend tests requiring SGI as wake source as Tegra194 platforms
1277 do not support CPU suspend power down and cannot be woken up with an SGI.
1278
1279 - Disable some system suspend test cases.
1280
1281 - Create dummy SMMU context for system resume to allow the System Resume
1282 Firmware to complete without any errors or warnings.
1283
1284 - Increase RTC step value to 5ms as RTC consumes 250us for each register
1285 read/write. Increase the step value to 5ms to cover all the register
1286 read/write in program_timer().
1287
1288 - Skip some timer framework validation tests as CPUs on Tegra194 platforms
1289 cannot be woken up with the RTC timer interrupt after power off.
1290
1291 - Introduce per-CPU Hypervisor Timer Interrupt ID.
1292
1293 - Skip PSCI STAT tests requiring PSTATE_TYPE_POWERDOWN as Tegra194 platforms
1294 do not support CPU suspend with state type as PSTATE_TYPE_POWERDOWN.
1295
1296 - Disable boot requirement tests as Tegra194 platforms do not support memory
1297 mapped timers.
1298
1299 - Skips the test "Create all power states and validate EL3 power state parsing"
1300 from the "EL3 power state parser validation" test suite as it is not in
1301 sync with this expectation.
1302
1303 - Moved reset, timers. wake, watchdog drivers from Tegra194 specific folder to
1304 common driver folder so that these drivers can be used for other NVIDIA platforms.
1305
1306- New tests:
1307
1308 - Add test for SDEI RM_ANY routing mode.
1309
1310 - Add initial platform support for TC0.
1311
1312 - Add SMC fuzzing module test.
1313
1314 - Add test case for SMCCC_ARCH_SOC_ID feature.
1315
1316 - Add test that supports ARMv8.6-FGT in TF-A.
1317
1318 - Add test that supports ARMv8.6-ECV in TF-A.
1319
1320 - Add test for FFA_VERSION interface.
1321
1322 - Add test for FFA_FEATURES interface.
1323
1324 - Add console driver for the TI UART 16550.
1325
1326 - Add tests for FF-A memory sharing interfaces between tftf
1327 and cactus secure partitions.
1328
1329 - NVIDIA Tegra194:
1330
1331 - Introduce platform port for Tegra194 to to initialize the tftf
1332 framework and execute tests on the CPUs.
1333
1334 - Introduce power management support.
1335
1336 - Introduce support for RTC as wake source.
1337
1338 - Introduce system reset functionality test.
1339
1340 - Introduce watchdog timer test.
1341
1342 - Introduce support for NVIDIA Denver CPUs.
1343
1344 - Introduce RAS uncorrectable error injection test.
1345
1346 - Introduce tests to verify the Video Memory resize interface.
1347
1348 - Introduce test to inject RAS corrected errors for all supported
1349 nodes from all CPUs.
1350
1351 - Introduce a test to get return value from SMC SiP function
1352 TEGRA_SIP_GET_SMMU_PER.
1353
1354 - NVIDIA Tegra196:
1355
1356 - Introduce initial support for Tegra186 platforms.
1357
1358 - NVIDIA Tegra210:
1359
1360 - Introduce initial support for Tegra210 platforms.
1361
1362Secure partition - Cactus
1363~~~~~~~~~~~~~~~~~~~~~~~~~
1364
1365- TFTF doesn't need to boot Secondary Cactus as Hafnium now boots all
1366 partitions according to "boot-order" field value in the partition
1367 manifests.
1368
1369- Remove test files related to deprecated SPCI Alpha specification and
1370 SPRT interface.
1371
1372- Select different stdout device at runtime as primary VM can access
1373 to UART while secondary VM's use hypervisor call to SPM for debug
1374 logging.
1375
1376- An SP maps its RX/TX buffers in its EL1&0 Stage-1 translation regime.
1377 The same RX/TX buffers are mapped by the SPMC in the SP's EL1&0
1378 Stage-2 translation regime during boot time.
1379
1380- Update memory/device region nodes in manifest. Memory region has 3
1381 entries such as RX buffer, TX buffer and dummy. These memory region
1382 entries are mapped with attributes as "RX buffer: read-only",
1383 "TX buffer: read-write" and "dummy: read-write-execute".
1384 Device region mapped with read-write attribute.
1385
1386- Create tertiary partition without RX_TX region specified to test the
1387 RXTX_MAP API.
1388
1389- Add third partition to ffa_partition_info_get test to test that a
1390 partition can successfully get information about the third cactus
1391 partition.
1392
1393- Map RXTX region to third partition to point the mailbox to this RXTX
1394 region.
1395
1396- Adjust the number of EC context to max number of PEs as per the FF-A
1397 specification mandating that a SP must either "Implement as many ECs
1398 as the number of PEs (in case of a "multi-processor" SP with pinned
1399 contexts)" or "Implement a single EC (in case of a migratable
1400 "uni-processor" SP).
1401
1402- Updated cactus test payload and TFTF ids as it is decided to have
1403 secure partition FF-A ids in the range from 0x8001 to 0xfffe, 0x8000
1404 and 0xffff FF-A ids are reserved for the SPMC and the SPMD respectively
1405 and in the non-secure worlds, FF-A id 0 is reserved for the hypervisor
1406 and 1 to 0x7fff FF-A ids are reserved for VMs.
1407
1408- Break the message loop on bad message request instead of replying
1409 with the FF-A error ABI to the SPMC.
1410
1411- Remove deprecated hypervisor calls spm_vm_get_count and spm_vcpu_get_count.
1412 Instead use FFA_PARTITION_INFO_GET discovery ABI.
1413
1414- Implement hvc call 'SPM_INTERRUPT_GET' to get interrupt id.
1415
1416- Re-structure platform dependent files by moving platform dependent files
1417 and macros to platform specific folder.
1418
1419- Adjust partition info get properties to support receipt of direct
1420 message request.
1421
1422- New tests:
1423
1424 - Add FFA Version Test.
1425
1426 - Add FFA_FEATURES test.
1427
1428 - Add FFA_MEM_SHARE test
1429
1430 - Add FFA_MEM_LEND test.
1431
1432 - Add FFA_MEM_DONATE test.
1433
1434 - Add FFA_PARTITION_INFO_GET test.
1435
1436 - Add exception/interrupt framework.
1437
1438 - Add cactus support for TC0 platform.
1439
1440Issues resolved since last release
1441^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1442
1443- Update link to SMCCC specification.
1444
1445- Trim down the top-level readme file to give brief overview of the project
1446 and also fix/update a number of broken/out-dated links in it.
1447
1448- Bug fix in Multicore IRQ spurious test.
1449
1450- Fix memory regions mapping with no NS bit set.
1451
1452- Reenable PSCI NODE_HW_STATE test which was disabled earlier due to
1453 outdated SCP firmware.
1454
1455- Fix Aarch32 zeromem() function by avoiding infinite loop in 'zeromem'
1456 function and optimizing 'memcpy4' function.
1457
1458- Add missing help_tests info on help target in the top-level Makefile.
1459
1460- Trim down the readme file as it does not need to provide detailed
1461 information, instead it can simply be a landing page providing a brief
1462 overview of the project and redirecting the reader to RTD for further
1463 information.
1464
1465- Fix maximum number of CPUs in DSU cluster by setting maximum number of CPUs
1466 in DSU cluster to 8.
1467
Madhukar Pappireddybced2f32020-04-08 15:44:38 -05001468Version 2.3
1469-----------
1470
1471New features
1472^^^^^^^^^^^^
1473
1474- More tests are made available in this release to help validate
1475 the functionality of TF-A.
1476
1477- CI upgraded to use GCC 9.2-2019.12 toolchain for tf-a-tests.
1478
1479- Various improvements to test framework and test suite.
1480
1481TFTF
1482~~~~
1483
1484- Support for extended register usage as per SMCCC v1.2 specification.
1485
1486- Support for FVP platforms with SMT capabilities.
1487
1488- Improved support for documentation through addition of basic Sphinx
1489 configuration and Makefile similar to TF-A repository.
1490
1491- Enhancement to libc library synchronous to TF-A code base.
1492
1493- ARMv8.3-PAuth enabled for all FWU tests in TFTF.
1494
1495- TFTF made RFC 4122 compliant by converting UUIDs to network order format.
1496
1497- Build improvement by deprecating custom AARCH64/AARCH32 macros in favor of
1498 __arch64__ macro provided by compiler.
1499
1500- Support for HVC as a SMCCC conduit in TFTF.
1501
1502- New tests:
1503
1504 - AArch32 tests for checking if PMU counters leak in secure world.
1505
1506 - Add new debug filesystem (debugfs) test.
1507
1508 - Add a SPCI direct messaging test targeting bare-metal cactus SP.
1509
1510
1511Secure partitions
1512~~~~~~~~~~~~~~~~~
1513
1514Cactus
1515~~~~~~
1516
1517- Several build improvements and symbol relocation fixup to make it position
1518 independent executable.
1519
1520- Update of sample manifest to SPCI Beta1 format.
1521
1522- Support for generating JSON file as required by TF-A.
1523
1524Issues resolved since last release
1525^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1526
1527- Makefile bug fix for performing parallel builds.
1528
1529- Add missing D-cache invalidation of RW memory in tftf_entrypoint to safeguard
1530 against possible corruption.
1531
1532- Fixes in GIC drivers to support base addresses beyond 4G range.
1533
1534- Fix build with XML::LibXML 2.0202 Perl module
1535
1536Known issues and limitations
1537^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1538
1539The sections below list the known issues and limitations of each test image
1540provided in this repository. Unless and otherwise stated, issues and limitations
1541stated in previous release continue to exist in this release.
1542
1543TFTF
1544~~~~
1545- NODE_HW_STATE test has been temporarily disabled for sgi575 platform due to a
1546 dependency on SCP binaries version 2.5
1547
Paul Beesley5c928952019-10-24 11:57:00 +00001548Version 2.2
1549-----------
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -05001550
1551New features
Paul Beesley5c928952019-10-24 11:57:00 +00001552^^^^^^^^^^^^
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -05001553
1554- A wide range of tests are made available in this release to help validate
1555 the functionality of TF-A.
1556
1557- Various improvements to test framework and test suite.
1558
1559TFTF
Paul Beesley5c928952019-10-24 11:57:00 +00001560~~~~
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -05001561
1562- Enhancement to xlat table library synchronous to TF-A code base.
1563
1564- Enabled strict alignment checks (SCTLR.A & SCTLR.SA) in all images.
1565
1566- Support for a simple console driver. Currently it serves as a placeholder
1567 with empty functions.
1568
1569- A topology helper API is added in the framework to get parent node info.
1570
1571- Support for FVP with clusters having upto 8 CPUs.
1572
1573- Enhanced linker script to separate code and RO data sections.
1574
1575- Relax SMC calls tests. The SMCCC specification recommends Trusted OSes to
1576 mitigate the risk of leaking information by either preserving the register
1577 state over the call, or returning a constant value, such as zero, in each
1578 register. Tests only allowed the former behaviour and have been extended to
1579 allow the latter as well.
1580
1581- Pointer Authentication enabled on warm boot path with individual APIAKey
1582 generation for each CPU.
1583
1584- New tests:
1585
1586 - Basic unit tests for xlat table library v2.
1587
1588 - Tests for validating SVE support in TF-A.
1589
1590 - Stress tests for dynamic xlat table library.
1591
1592 - PSCI test to measure latencies when turning ON a cluster.
1593
1594 - Series of AArch64 tests that stress the secure world to leak sensitive
1595 counter values.
1596
1597 - Test to validate PSCI SYSTEM_RESET call.
1598
1599 - Basic tests to validate Memory Tagging Extensions are being enabled and
1600 ensuring no undesired leak of sensitive data occurs.
1601
1602- Enhanced tests:
1603
1604 - Improved tests for Pointer Authentication support. Checks are performed
1605 to see if pointer authentication keys are accessible as well as validate
1606 if secure keys are being leaked after a PSCI version call or TSP call.
1607
1608 - Improved AMU test to remove unexecuted code iterating over Group1 counters
1609 and fix the conditional check of AMU Group0 counter value.
1610
1611Secure partitions
Paul Beesley5c928952019-10-24 11:57:00 +00001612~~~~~~~~~~~~~~~~~
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -05001613
1614A new Secure Partition Quark is introduced in this release.
1615
1616Quark
Paul Beesley5c928952019-10-24 11:57:00 +00001617~~~~~
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -05001618
1619The Quark test secure partition provided is a simple service which returns a
1620magic number. Further, a simple test is added to test if Quark is functional.
1621
1622Issues resolved since last release
Paul Beesley5c928952019-10-24 11:57:00 +00001623^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -05001624
1625- Bug fix in libc memchr implementation.
1626
1627- Bug fix in calculation of number of CPUs.
1628
1629- Streamlined SMC WORKAROUND_2 test and fixed a false fail on Cortex-A76 CPU.
1630
1631- Pointer Authentication support is now available for secondary CPUs and the
1632 corresponding tests are stable in this release.
1633
1634Known issues and limitations
Paul Beesley5c928952019-10-24 11:57:00 +00001635^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -05001636
1637The sections below list the known issues and limitations of each test image
1638provided in this repository. Unless and otherwise stated, issues and limitations
1639stated in previous release continue to exist in this release.
1640
1641TFTF
Paul Beesley5c928952019-10-24 11:57:00 +00001642~~~~
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -05001643- Multicore spurious interrupt test is observed to have unstable behavior. As a
1644 temporary solution, this test is skipped for AArch64 Juno configurations.
1645
1646- Generating SVE instructions requires `O3` compilation optimization. Since the
1647 current build structure does not allow compilation flag modification for
1648 specific files, the function which tests support for SVE has been pre-compiled
1649 and added as an assembly file.
1650
1651
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001652
Paul Beesley5c928952019-10-24 11:57:00 +00001653Version 2.1
1654-----------
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001655
1656New features
Paul Beesley5c928952019-10-24 11:57:00 +00001657^^^^^^^^^^^^
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001658
1659- Add initial support for testing Secure Partition Client Interface (SPCI)
1660 and Secure Partition Run-Time (SPRT) standards.
1661
1662 Exercise the full communication flow throughout the software stack, involving:
1663
1664 - A Secure-EL0 test partition as the Trusted World agent.
1665
1666 - TFTF as the Normal World agent.
1667
1668 - The Secure Partition Manager (SPM) in TF-A.
1669
1670- Various stability improvements, code refactoring and clean ups.
1671
1672TFTF
Paul Beesley5c928952019-10-24 11:57:00 +00001673~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001674
1675- Reorganize tests build infrastructure to allow the selection of a subset of
1676 tests.
1677
1678- Reorganize the platform layer for improved clarity and simplicity.
1679
1680- Sanitise inclusion of drivers header files.
1681
1682- Enhance the test report format for improved clarity and conciseness.
1683
1684- Dump CPU registers when hitting an unexpected exception. Previously, this
1685 would silently loop forever.
1686
1687- Import libc from TF-A to better align the two code bases.
1688
1689- New tests:
1690
1691 - SPM tests for exercising communication through either the MM or SPCI/SPRT
1692 interfaces.
1693
1694 - SMC calling convention tests.
1695
1696 - Initial tests for Armv8.3 Pointer Authentication support (experimental).
1697
1698- New platform ports:
1699
1700 - `Arm SGI-575`_ FVP.
1701
1702 - Hikey960 board (experimental).
1703
1704 - `Arm Neoverse Reference Design N1 Edge (RD-N1-Edge)`_ FVP (experimental).
1705
1706Secure partitions
Paul Beesley5c928952019-10-24 11:57:00 +00001707~~~~~~~~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001708
1709We now have 3 Secure Partitions to test the SPM implementation in TF-A.
1710
1711Cactus-MM
1712'''''''''
1713
1714The Cactus test secure partition provided in version 2.0 has been renamed into
1715"*Cactus-MM*". It is still responsible for testing the SPM implementation based
1716on the Arm Management Mode Interface.
1717
1718Cactus
1719''''''
1720
1721This is a new test secure partition (as the former "*Cactus*" has been renamed
1722into "*Cactus-MM*", see above).
1723
1724Unlike *Cactus-MM*, this image tests the SPM implementation based on the SPCI
1725and SPRT draft specifications.
1726
1727It runs in Secure-EL0 and performs the following tasks:
1728
1729- Test that TF-A has correctly setup the secure partition environment (access
1730 to cache maintenance operations, to floating point registers, etc.)
1731
1732- Test that TF-A accepts to change data access permissions and instruction
1733 permissions on behalf of Cactus for memory regions the latter owns.
1734
1735- Test communication with SPM through SPCI/SPRT interfaces.
1736
1737Ivy
1738'''
1739
1740This is also a new test secure partition. It is provided in order to test
1741multiple partitions support in TF-A. It is derived from Cactus and essentially
1742provides the same services but with different identifiers at the moment.
1743
1744EL3 payload
Paul Beesley5c928952019-10-24 11:57:00 +00001745~~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001746
1747- New platform ports:
1748
1749 - `Arm SGI-575`_ FVP.
1750
1751 - `Arm Neoverse Reference Design N1 Edge (RD-N1-Edge)`_ FVP (experimental).
1752
1753Issues resolved since last release
Paul Beesley5c928952019-10-24 11:57:00 +00001754^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001755
1756- The GICv2 spurious IRQ test is no longer Juno-specific. It is now only
1757 GICv2-specific.
1758
1759- The manual tests in AArch32 state now work properly. After investigation,
1760 we identified that this issue was not AArch32 specific but concerned any
1761 test relying on state information persisting across reboots. It was due to
1762 an incorrect build configuration.
1763
1764- Cactus-MM now successfully links with GNU toolchain 7.3.1.
1765
1766Known issues and limitations
Paul Beesley5c928952019-10-24 11:57:00 +00001767^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001768
1769The sections below lists the known issues and limitations of each test image
1770provided in this repository.
1771
1772TFTF
Paul Beesley5c928952019-10-24 11:57:00 +00001773~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001774
1775The TFTF test image might be conceptually sub-divided further in 2 parts: the
1776tests themselves, and the test framework they are based upon.
1777
1778Test framework
Paul Beesley5c928952019-10-24 11:57:00 +00001779~~~~~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001780
1781- Some stability issues.
1782
1783- No mechanism to abort tests when they time out (e.g. this could be
1784 implemented using a watchdog).
1785
1786- No convenient way to include or exclude tests on a per-platform basis.
1787
1788- Power domains and affinity levels are considered equivalent but they may
1789 not necessarily be.
1790
1791- Need to provide better support to alleviate duplication of test code. There
1792 are some recurrent test patterns for which helper functions should be
1793 provided. For example, bringing up all CPUs on the platform and executing the
1794 same function on all of them, or programming an interrupt and waiting for it
1795 to trigger.
1796
1797- Every CPU that participates in a test must return from the test function. If
1798 it does not - e.g. because it powered itself off for testing purposes - then
1799 the test framework will wait forever for this CPU. This limitation is too
1800 restrictive for some tests.
1801
1802- No protection against interrupted flash operations. If the target is reset
1803 while some data is written to flash, the test framework might behave
1804 incorrectly on reset.
1805
1806- When compiling the code, if the generation of the ``tests_list.c`` and/or
1807 ``tests_list.h`` files fails, the build process is not aborted immediately
1808 and will only fail later on.
1809
1810- The directory layout requires further improvements. Most of the test
1811 framework code has been moved under the ``tftf/`` directory to better isolate
1812 it but this effort is not complete. As a result, there are still some TFTF
1813 files scattered around.
1814
1815- Pointer Authentication testing is experimental and incomplete at this stage.
1816 It is only enabled on the primary CPU on the cold boot.
1817
1818Tests
Paul Beesley5c928952019-10-24 11:57:00 +00001819~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001820
1821- Some tests are implemented for AArch64 only and are skipped on AArch32.
1822
1823- Some tests are not robust enough:
1824
1825 - Some tests might hang in some circumstances. For example, they might wait
1826 forever for a condition to become true.
1827
1828 - Some tests rely on arbitrary time delays instead of proper synchronization
1829 when executing order-sensitive steps.
1830
1831 - Some tests have been implemented in a practical manner: they seem to work
1832 on actual hardware but they make assumptions that are not guaranteed by
1833 the Arm architecture. Therefore, they might fail on some other platforms.
1834
1835- PSCI stress tests are very unreliable and will often hang. The root cause is
1836 not known for sure but this might be due to bad synchronization between CPUs.
1837
1838- The GICv2 spurious IRQ test sometimes fails with the following error message:
1839
1840 ``SMC @ lead CPU returned 0xFFFFFFFF 0x8 0xC``
1841
1842 The root cause is unknown.
1843
1844- The FWU tests take a long time to complete. This is because they wait for the
1845 watchdog to reset the system. On FVP, TF-A configures the watchdog period to
1846 about 4 min. This limit is excessive for an automated testing context and
1847 leaves the user without feedback and unable to determine if the tests are
1848 proceeding properly.
1849
1850- The test "Target timer to a power down cpu" sometimes fails with the
1851 following error message:
1852
1853 ``Expected timer switch: 4 Actual: 3``
1854
1855 The root cause is unknown.
1856
1857FWU images
Paul Beesley5c928952019-10-24 11:57:00 +00001858~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001859
1860- The FWU tests do not work on the revC of the Base AEM FVP. They only work on
1861 the revB.
1862
1863- NS-BL1U and NS-BL2U images reuse TFTF-specific code for legacy reasons. This
1864 is not a clean design and may cause confusion.
1865
1866Test secure partitions (Cactus, Cactus-MM, Ivy)
Paul Beesley5c928952019-10-24 11:57:00 +00001867~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001868
1869- This is experimental code. It's likely to change a lot as the secure
1870 partition software architecture evolves.
1871
1872- Supported on AArch64 FVP platform only.
1873
1874All test images
Paul Beesley5c928952019-10-24 11:57:00 +00001875~~~~~~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001876
1877- TF-A Tests are derived from a fork of TF-A so:
1878
1879 - they've got some code in common but lag behind on some features.
1880
1881 - there might still be some irrelevant references to TF-A.
1882
1883- Some design issues.
1884 E.g. TF-A Tests inherited from the I/O layer of TF-A, which still needs a
1885 major rework.
1886
1887- Cannot build TF-A Tests with Clang. Only GCC is supported.
1888
1889- The build system does not cope well with parallel building. The user should
1890 not attempt to run multiple jobs in parallel with the ``-j`` option of `GNU
1891 make`.
1892
1893- The build system does not properly track build options. A clean build must be
1894 performed every time a build option changes.
1895
1896- UUIDs are not compliant to RFC 4122.
1897
1898- No floating point support. The code is compiled with GCC flag
1899 ``-mgeneral-regs-only``, which prevents the compiler from generating code
1900 that accesses floating point registers. This might limit some test scenarios.
1901
1902- The documentation is too lightweight.
1903
1904- Missing instruction barriers in some places before reading the system counter
1905 value. As a result, the CPU could speculatively read it and any delay loop
1906 calculations might be off (because based on stale values). We need to examine
1907 all such direct reads of the ``CNTPCT_EL0`` register and replace them with a
1908 call to ``syscounter_read()`` where appropriate.
1909
Paul Beesley5c928952019-10-24 11:57:00 +00001910Version 2.0
1911-----------
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001912
1913New features
Paul Beesley5c928952019-10-24 11:57:00 +00001914^^^^^^^^^^^^
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001915
1916This is the first public release of the Trusted Firmware-A Tests source code.
1917
1918TFTF
Paul Beesley5c928952019-10-24 11:57:00 +00001919~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001920
1921- Provides a baremetal test framework to exercise TF-A features through its
1922 ``SMC`` interface.
1923
1924- Integrates easily with TF-A: the TFTF binary is packaged in the FIP image
1925 as a ``BL33`` component.
1926
1927- Standalone binary that runs on the target without human intervention (except
1928 for some specific tests that require a manual target reset).
1929
1930- Designed for multi-core testing. The various sub-frameworks allow maximum
1931 parallelism in order to stress the firmware.
1932
1933- Displays test results on the UART output. This may then be parsed by an
1934 external tool and integrated in a continuous integration system.
1935
1936- Supports running in AArch64 (NS-EL2 or NS-EL1) and AArch32 states.
1937
1938- Supports parsing a tests manifest (XML file) listing the tests to include in
1939 the binary.
1940
1941- Detects most platform features at run time (e.g. topology, GIC version, ...).
1942
1943- Provides a topology enumeration framework. Allows tests to easily go through
1944 affinity levels and power domain nodes.
1945
1946- Provides an event framework to synchronize CPU operations in a multi-core
1947 context.
1948
1949- Provides a timer framework. Relies on a single global timer to generate
1950 interrupts for all CPUs in the system. This allows tests to easily program
1951 interrupts on demand to use as a wake-up event source to come out of CPU
1952 suspend state for example.
1953
1954- Provides a power-state enumeration framework. Abstracts the valid power
1955 states supported on the platform.
1956
1957- Provides helper functions for power management operations (CPU hotplug,
1958 CPU suspend, system suspend, ...) with proper saving of the hardware state.
1959
1960- Supports rebooting the platform at the end of each test for greater
1961 independence between tests.
1962
1963- Supports interrupting and resuming a test session. This relies on storing
1964 test results in non-volatile memory (e.g. flash).
1965
1966FWU images
Paul Beesley5c928952019-10-24 11:57:00 +00001967~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001968
1969- Provides example code to exercise the Firmware Update feature of TF-A.
1970
1971- Tests the robustness of the FWU state machine implemented in the TF-A by
1972 sending valid and invalid authentication, copy and image execution requests
1973 to the TF-A BL1 image.
1974
1975EL3 test payload
Paul Beesley5c928952019-10-24 11:57:00 +00001976~~~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001977
1978- Tests the ability of TF-A to load an EL3 payload.
1979
1980Cactus test secure partition
Paul Beesley5c928952019-10-24 11:57:00 +00001981~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001982
1983- Tests that TF-A has correctly setup the secure partition environment: it
1984 should be allowed to perform cache maintenance operations, access floating
1985 point registers, etc.
1986
1987- Tests the ability of a secure partition to request changing data access
1988 permissions and instruction permissions of memory regions it owns.
1989
1990- Tests the ability of a secure partition to handle StandaloneMM requests.
1991
1992Known issues and limitations
Paul Beesley5c928952019-10-24 11:57:00 +00001993^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001994
1995The sections below lists the known issues and limitations of each test image
1996provided in this repository.
1997
1998TFTF
Paul Beesley5c928952019-10-24 11:57:00 +00001999~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02002000
2001The TFTF test image might be conceptually sub-divided further in 2 parts: the
2002tests themselves, and the test framework they are based upon.
2003
2004Test framework
Paul Beesley5c928952019-10-24 11:57:00 +00002005~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02002006
2007- Some stability issues.
2008
2009- No mechanism to abort tests when they time out (e.g. this could be
2010 implemented using a watchdog).
2011
2012- No convenient way to include or exclude tests on a per-platform basis.
2013
2014- Power domains and affinity levels are considered equivalent but they may
2015 not necessarily be.
2016
2017- Need to provide better support to alleviate duplication of test code. There
2018 are some recurrent test patterns for which helper functions should be
2019 provided. For example, bringing up all CPUs on the platform and executing the
2020 same function on all of them, or programming an interrupt and waiting for it
2021 to trigger.
2022
2023- Every CPU that participates in a test must return from the test function. If
2024 it does not - e.g. because it powered itself off for testing purposes - then
2025 the test framework will wait forever for this CPU. This limitation is too
2026 restrictive for some tests.
2027
2028- No protection against interrupted flash operations. If the target is reset
2029 while some data is written to flash, the test framework might behave
2030 incorrectly on reset.
2031
2032- When compiling the code, if the generation of the tests_list.c and/or
2033 tests_list.h files fails, the build process is not aborted immediately and
2034 will only fail later on.
2035
2036- The directory layout is confusing. Most of the test framework code has been
2037 moved under the ``tftf/`` directory to better isolate it but this effort is
2038 not complete. As a result, there are still some TFTF files scattered around.
2039
2040Tests
Paul Beesley5c928952019-10-24 11:57:00 +00002041~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02002042
2043- Some tests are implemented for AArch64 only and are skipped on AArch32.
2044
2045- Some tests are not robust enough:
2046
2047 - Some tests might hang in some circumstances. For example, they might wait
2048 forever for a condition to become true.
2049
2050 - Some tests rely on arbitrary time delays instead of proper synchronization
2051 when executing order-sensitive steps.
2052
2053 - Some tests have been implemented in a practical manner: they seem to work
2054 on actual hardware but they make assumptions that are not guaranteed by
2055 the Arm architecture. Therefore, they might fail on some other platforms.
2056
2057- PSCI stress tests are very unreliable and will often hang. The root cause is
2058 not known for sure but this might be due to bad synchronization between CPUs.
2059
2060- The GICv2 spurious IRQ test is Juno-specific. In reality, it should only be
2061 GICv2-specific. It should be reworked to remove any platform-specific
2062 assumption.
2063
2064- The GICv2 spurious IRQ test sometimes fails with the following error message:
2065
2066 ``SMC @ lead CPU returned 0xFFFFFFFF 0x8 0xC``
2067
2068 The root cause is unknown.
2069
2070- The manual tests in AArch32 mode do not work properly. They save some state
2071 information into non-volatile memory in order to detect the reset reason but
2072 this state does not appear to be retained. As a result, these tests keep
2073 resetting infinitely.
2074
2075- The FWU tests take a long time to complete. This is because they wait for the
2076 watchdog to reset the system. On FVP, TF-A configures the watchdog period to
2077 about 4 min. This is way too long in an automated testing context. Besides,
2078 the user gets not feedback, which may let them think that the tests are not
2079 working properly.
2080
2081- The test "Target timer to a power down cpu" sometimes fails with the
2082 following error message:
2083
2084 ``Expected timer switch: 4 Actual: 3``
2085
2086 The root cause is unknown.
2087
2088FWU images
Paul Beesley5c928952019-10-24 11:57:00 +00002089~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02002090
Sandrine Bailleux7af6c6d2018-10-22 17:09:07 +02002091- The FWU tests do not work on the revC of the Base AEM FVP. They only work on
2092 the revB.
2093
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02002094- NS-BL1U and NS-BL2U images reuse TFTF-specific code for legacy reasons. This
2095 is not a clean design and may cause confusion.
2096
2097Cactus test secure partition
Paul Beesley5c928952019-10-24 11:57:00 +00002098~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02002099
2100- Cactus is experimental code. It's likely to change a lot as the secure
2101 partition software architecture evolves.
2102
2103- Fails to link with GNU toolchain 7.3.1.
2104
2105- Cactus is supported on AArch64 FVP platform only.
2106
2107All test images
Paul Beesley5c928952019-10-24 11:57:00 +00002108~~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02002109
2110- TF-A Tests are derived from a fork of TF-A so:
2111
2112 - they've got some code in common but lag behind on some features.
2113
2114 - there might still be some irrelevant references to TF-A.
2115
2116- Some design issues.
2117 E.g. TF-A Tests inherited from the I/O layer of TF-A, which still needs a
2118 major rework.
2119
2120- Cannot build TF-A Tests with Clang. Only GCC is supported.
2121
2122- The build system does not cope well with parallel building. The user should
2123 not attempt to run multiple jobs in parallel with the ``-j`` option of `GNU
2124 make`.
2125
2126- The build system does not properly track build options. A clean build must be
2127 performed every time a build option changes.
2128
2129- SMCCC v2 is not properly supported.
2130
2131- UUIDs are not compliant to RFC 4122.
2132
2133- No floating point support. The code is compiled with GCC flag
2134 ``-mgeneral-regs-only``, which prevents the compiler from generating code
2135 that accesses floating point registers. This might limit some test scenarios.
2136
2137- The documentation is too lightweight.
2138
2139--------------
2140
Harrison Mutai0ed12502025-05-09 08:51:02 +00002141*Copyright (c) 2018-2025, Arm Limited. All rights reserved.*
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01002142
2143.. _Arm Neoverse Reference Design N1 Edge (RD-N1-Edge): https://developer.arm.com/products/system-design/reference-design/neoverse-reference-design
2144.. _Arm SGI-575: https://developer.arm.com/products/system-design/fixed-virtual-platforms