blob: 5b760672434f992ec0e07c55ae23fe4cb7adbb74 [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
Yann Gautier4a8d7582024-04-05 09:55:25 +020010Version 2.10.3
11--------------
12
13Code Refactoring
14^^^^^^^^^^^^^^^^
15
16- ERRATA ABI
17
18 - add the Cortex-X4 cpu struct
19 - update the cpu structs for errata ABI
20
Juan Pablo Conde67fc3702023-11-13 17:46:50 -060021Version 2.10
22------------
23
24New features
25^^^^^^^^^^^^
26
27- More tests are made available in this release to help validate the
28 functionalities in the following areas:
29
30 - FF-A
31 - Realm Management Extension
32 - EL3 Runtime
33 - New Platform ports
34
35TFTF
36~~~~
37
38- FF-A testing:
39
40 - Fixing FF-A version tests and expected error codes.
41 - Remove SPM tests from AArch32 builds.
42 - Support extended set of registers with FF-A calls.
43 - Fix use of instruction permissions in FF-A memory sharing tests.
44 - Extend memory sharing tests that use the clear memory flags.
45 - Test that memory from Root World/Realm can't be shared.
46 - Test the compliance to SMCCC at the non-secure physical instance.
47 - Exercise secure eSPI interrupt handling.
48
49- New tests:
50
51 - Added test for Errata management firmware interface.
52 - Added basic firmware handoff tests.
53 - Test to verify SErrors synchronized at EL3 boundry.
54 - Introduced RAS KFH support test.
55 - Modified FEAT_FGT test to check for init values.
56 - Updated test_psci_stat.c to support more power states.
57
58- Platforms:
59
60 - TC:
61
62 - Made TC0 TFTF code generic to TC.
63
64 - Versal:
65
66 - Added platform support and platform specific cases.
67 - Added Versal documentation.
68
69 - Versal NET:
70
71 - Added platform support and platform specific cases.
72 - Added Versal NET documentation.
73
74 - Xilinx:
75 - Reorganized timer code into common path.
76
77- Miscellaneous:
78
79 - Added helper routines to read, write and compare SVE and FPU registers.
80 - New CPU feature detection helpers.
81 - Introduced clang toolchain support and added python generate_test_list
82 script.
83 - Docs: Updated toolchain requirements and added maintainers for AMD-Xilinx.
84 - Tidy setup and discovery logs.
85 - Added note on building TFA-Tests using clang docs.
86 - Added SME helper routines and added Streaming SVE support.
87 - Introduced SError exception handler.
88 - Updated toolchain requirements documentation.
89 - Check for support for ESPI before testing it.
90
91Realm Management Extension (RME)
92~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
93
94 - Added SVE Realm tests and tests for EAC1.
95 - Test to intermittently switch to Realm while doing NS SVE and Streaming
96 SVE ops.
97 - Added tests to check NS SME ID registers and configurations.
98 - Added test to check if RMM doesn't leak Realm contents in SVE registers.
99 - Test to check if non SVE Realm gets undefined abort.
100 - Test to check various SIMD state preserved across NS/RL switch.
101 - Added test to check swtich SME registers to SIMD state.
102 - Testcase for CPU_ON denied.
103 - Test for multiple REC single CPU.
104 - Test for PAuth in Realm.
105 - Enhanced FPU state verification test.
106 - Modified API of RMI_RTT_*_RIPAS, changed handling.
107 - Removed RIPAS_UNDEFINED and modified RIPAS/HIPAS definitions for EAC2.
108 - Removed RMI_VALID_NS status and RMI_ERROR_IN_USE error code
109 RMI_RTT_UNMAP_UNPROTECTED and update API of data/rtt functions.
110 - Updated RSI_VERSION, RMI_VERSION and modified rmi_realm_params structure.
111 - Added support for PMU as per RMM Specification 1.0-eac2.
112 - Added PSCI API to Realms and API for REC force exit.
113 - Added support for multiple REC and CPU and data buffer to pass arg to REC.
114 - Set size of RsiHostCall.gprs[] to 31.
115 - Passing RD pointer in arg0 register X1.
116 - Added host call to flush Realm prints.
117 - Aligned Realm stack.
118 - Introduced new build flag for RME stack and appended realm.bin at end of
119 tftf.bin.
120
121Cactus (Secure-EL1 test partition)
122~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
123
124 - Test discovery of EL3 SPMD managed SPs.
125 - Configure partitions load-address from SP layout file.
126 - Use the non-secure memory attribute in descriptor obtain from
127 FFA_MEM_RETRIEVE_RESP.
128 - SPs configured with a unique boot-order field in their respective
129 manifests.
130 - Test to the FFA_PARTITION_INFO_GET_REGS interface.
131 - Defined memory security state attribute for memory transaction desciptor.
132
133Issues resolved since last release
134^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
135
136 - Fixed incremental build issue with Realm payload and build dependency
137 in test-realms-payload.
138 - SME: use of rdsvl instead of rdvl, enable SME/SME2 during arch init,
139 align test vector arrays to 16 bytes.
140 - SVE: representing Z0-Z31 as array of bytes and moved operation to a lib
141 routine.
142 - Fixed issue in processing dynamic relocations for AArch64.
143 - Reclaim and check for shared memory now supported.
144 - FPU replaced read with write of random value to fpsr/fpcr.
145 - Disabled RMI tests when building for AArch32 architecture.
146 - Fixed command id passed to Realm to compare FPU registers.
147 - Fixed broken links in docs landing page and made generate_test_list
148 backward compatible.
149 - XLAT: added support for 52 bit PA size with 4KB granularity.
150 - Fixed stress test for XLAT v2.
151 - RAS: Moved wait logic from assembly to C and renamed SDEI related
152 functions/events.
153
Juan Pablo Conde0a0f6742023-05-13 00:20:15 -0500154Version 2.9
155-----------
156
157New features
158^^^^^^^^^^^^
159
160- More tests are made available in this release to help validate the
161 functionalities in the following areas:
162
163 - FF-A Features
164 - Realm Management Extension
165 - New Architecture Specific features related to v8.8
166 - New platform ports
167
168TFTF
169~~~~
170
171- FF-A testing:
172
173 - Reordered logs in the memory sharing tests.
174 - Memory share bumped to v1.1 EAC0.
175 - Updated tests for FFA_FEATURES(FFA_MEM_RETRIEVE_REQ).
176 - Fixed issues with RXTX buffer unmapping and dependencies on tests.
177 - Added check for execution state property of partitions.
178
179- New tests:
180
181 - Tests for Errata management firmware interface.
182 - Ensure FPU state registers context is preserved in RL/SE/NS.
183 - Modified FEAT_HCX test to also check for HCRX_EL2 init value.
184 - Added basic SME2 tests.
185 - PSCI tests for OS-initiated mode.
186 - Added "nop" test to be used in conjunction with TFX.
187 - Introduced capability to generate Sync External Aborts (EA) in TFTF.
188 - New test to generate an SError.
189 - Tests to check whether the PMU is functional and if the state is
190 preserved when switching worlds. PMEVTYPER.evtCount width extended.
191 - Added support for more SPE versions.
192
193- Platforms:
194
195 - RD-N2-Cfg3:
196
197 - Added TFTF support.
198
199- Miscellaneous:
200
201 - SIMD/FPU save/restore routine moved to common lib.
202 - Updated toolchain requirements documentation.
203 - Update SME/Mortlach tests.
204 - Unified Firmware First handling of lower EL EA.
205 - Moved trusted wdog API to spm_common.
206 - Added the ability to skip tests for AArch32.
207 - Added config file to allow doc defaults be changed.
208 - Modified tests for FEAT_RNG_TRAP.
209 - Moved 'Stress test timer framework' to a new test suite
210 'tests-timer-stress'.
211 - Support for new binutils versions.
212 - Removed deprecated SPM libs and test code.
213
214
215Realm Management Extension (RME)
216~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
217
218 - Added helper macro for RME tests.
219 - Test Secure interrupt can preempt Realm EL1.
220 - Added PMU Realm tests.
221 - Added BP_OPTION to REALM_CFLAGS to allow build realm payload with
222 BTI/Pauth support.
223 - Fixed build issues introduced by the TFTF Realm extension
224 enhancement tests.
225 - Test case return codes updated according to RMM Bet0 specification.
226 - Fixed build problem related to rmi_rec_enter verbose log.
227 - Added randomization of SMC RMI commands parameters and checking of
228 X4-X7 return values as per SMCCC v1.2.
229
230Cactus (Secure-EL1 test partition)
231~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
232
233 - Use of FFA_CONSOLE_LOG for debug logs.
234 - Test for consecutive same memory donation to other partitions.
235 - Now validating NWd can't share forbidden addresses.
236 - Support for registering irq handlers.
237 - Fixed attributes for NS memory region.
238 - Removal of memory regions not page-aligned.
239 - Added check for core linear id matching id passed by SPMC.
240
241Issues resolved since last release
242^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
243
244 - Build issue for older toolchains and other failures resolved.
245 - Dropped invalid access test from CI.
246 - Now checking that the PMU is supported before using any of it.
247 - Use of write instead of read to generate an SError to avoid sync
248 exceptions instead.
249 - Fixed broken link to TRNG_FW documentation.
250 - INIT_TFTF_MAILBOX() is called first for the invalid access test.
251
Juan Pablo Conde47e64d42022-11-16 18:33:40 -0500252Version 2.8
253-----------
254
255New features
256^^^^^^^^^^^^
257- More tests are made available in this release to help validate the
258 functionalities in the following areas:
259
260 - FF-A Features
261 - Realm Management Extension
262 - New Architecture Specific features related to v8.8
263 - New platform ports
264
265TFTF
266~~~~
267
268- FF-A testing:
269
270 - UUID included in partition information descriptors.
271 - Checks for size of partition information descriptors.
272 - Renamed FFA_MSG_RUN ABI function to FFA_RUN and allowed it to return from
273 Waiting state.
274 - Made ffa_tests available for Ivy.
275 - Updated verbose message log structure.
276 - Prevented generate_json.sh from being called more than once by requiring
277 a list of partitions to be supplied.
278 - Added a temporary workaround for unexpected affinity info state to prevent
279 a system panic.
280 - Added test to exercise FFA_CONSOLE_LOG ABI.
281
282 - FF-A v1.1 Secure interrupts
283
284 - Added managed exit to first and second SP in call chain.
285 - Added test to exercise managed exit by two SPs in a call chain.
286 - Added tests to exercise NS interrupt being queued and signaled to SP.
287
288- New tests:
289
290 - Tests for SVE operations in Normal World and discover SVE vector length.
291 - Added cleanup TRNG service tests.
292 - Added test for SMCCC_ARCH_WORKAROUND_3.
293 - Updated PAuth helpers to support QARMA3 algorithm.
294 - Added tests for RNG_TRAP.
295
296- Platforms:
297
298 - SGI:
299
300 - Introduced platform variant build option.
301 - Re-organized header files.
302 - Migrated to secure uart port for routing tftf logs.
303
304 - N1SDP:
305
306 - Added TFTF support for N1SDP.
307
308 - RD-N2:
309
310 - Added TFTF support for RD-N2.
311
312 - RD-N2-Cfg1:
313
314 - Added TFTF support for RD-N2-Cfg1.
315
316 - RD-V1:
317
318 - Added TFTF support for RD-V1.
319
320- Miscellaneous:
321
322 - Added a missing ISB instruction in SME test.
323 - Refactor to make some helper functions re-usable.
324 - Updated build command to clean EL3 payload image.
325 - Move renaming of the primary dts file for ivy partitions.
326 - Added check that verifies if a platform supports el3_payload before
327 building it.
328 - Updated memory share test to meet Hafnium specification.
329 - Updated toolchain requirements documentation.
330
331
332Realm Management Extension (RME)
333~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
334
335 - Added Realm payload management capabilities to TFTF to act as a NS Host.
336 - Added test to verify that RMM and SPM can co-exist and work properly.
337 - Added function to reset delegated buffers to non-delegated state.
338 - Re-used existing wait_for_non_lead_cpus() function helper.
339 - Refactored RMI FID macros to simplify usage.
340 - Added userguide for realm payload testing.
341
342Cactus (Secure-EL1 test partition)
343~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
344
345 - Corrected some tests message types from ERROR to VERBOSE.
346 - Increased the cactus number of xlat to allow the use of 48b PA size for
347 memory sharing between SPs.
348 - Introduced a new direct request message command to resume after managed
349 exit.
350 - Skip enabling virtual maintenance interrupts explicitly.
351 - Allowed sender to resume interrupted target vCPU.
352 - Added support for handling managed exit through vIRQ.
353 - Added support for discovering interrupt IDs of managed exit signals.
354 - Specified action in response to NS interrupt in manifest.
355
356Ivy (Secure-EL0 test partition)
357~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
358
359 - Allowed testing using VHE.
360 - Allowed Ivy partitions to use ffa_helpers functions.
361 - Requirement of common name for Ivy partitions for consistency.
362 - Specified action in response to NS interrupt in manifest.
363
364Issues resolved since last release
365^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
366
367 - Fixed SME header guard name.
368 - Fixed response for incorrect direct message request for FF-A.
369
Jayanth Dodderi Chidanand090491b2022-05-03 15:05:11 +0100370Version 2.7
371-----------
372
373New features
374^^^^^^^^^^^^
375- More tests are made available in this release to help validate the
376 functionalities in the following areas:
377
378 - FF-A Features
379 - New Architecture Specific features related to v8.7
380 - New platform port
381
382TFTF
383~~~~
384
385- FF-A testing:
386
387 - FF-A partition information structure is updated to include UUIDs.
388 - Memory Management helper functions are refactored to fetch the details
389 of smc call failures in tftf and cactus.
390 - Added test to validate memory sharing operations from SP to NS-endpoint
391 are denied by SPMC.
392 - Added test to ensure an endpoint that sets its version to v1.0 receives
393 v1.0 partition information descriptors as defined in v1.0 FF-A
394 specification.
395 - Added test to validate that memory is cleared on memory sharing operations
396 between normal world and secure world.
397
398 - FF-A v1.1 Secure interrupts
399
400 - Added support to enhance the secure interrupt handling test.
401 - Support for registering and unregistering custom handler that is
402 invoked by SP at the tail end of the virtual interrupt processing.
403 - Added support for querying the ID of the last serviced virtual interrupt.
404
405- New tests:
406
407 - Added test to validate that realm region access is being prevented from
408 normal world.
409 - Added test to validate that secure region access is being prevented from
410 normal world.
411 - Added test to validate that secure region access is being prevented from
412 realm world.
413 - Added test to validate that root region access is being prevented from
414 realm world.
415 - Added a test for v8.7 Advanced floating-point behavior (FEAT_AFP).
416 - Added a SPE test that reads static profiling system registers
417 of available SPE version i.e. FEAT_SPE/FEAT_SPEv1p1/FEAT_SPEv1p2.
418 - Added a test to validate functionality of WFET and WFIT instructions
419 introduced by v8.7 FEAT_WFxT.
420 - Added basic SME tests to ensure feature enablement by EL3 is proper for
421 its usage at lower non-secure ELs.
422 - Added test to check Data Independent timing (DIT) field of PSTATE is
423 retained on exception.
424 - Added test to ensure that EL3 has properly enabled access to FEAT_BRBE
425 from non-secure ELs.
426
427- Platforms:
428
429 - Add initial platform support for corstone1000.
430
431 - TC:
432
433 - Support for notification in tertiary SP manifest.
434
435 - FVP:
436
437 - Support to provide test memory addresses to validate the invalid
438 memory access test from tftf(ns-el2).
439
440- Miscellaneous:
441
442 - Added support to configure the physical/virtual address space for FVP.
443 - Added common header file for defining macros with size to support all the
444 platforms.
445 - Introduced handler for synchronous exceptions (AArch64).
446 - Added macros to extract the ISS portion of an ELx ESR exception syndrome
447 register.
448 - Support to dynamically map/unmap test region to validate invalid memory
449 access tests.
450 - Added support to receive boot information through secure partitions,
451 according to the FF-A v1.1 EAC0 specification.
452 - Added an helper API function from SPM test suite to initialize FFA-mailbox
453 and enable FF-A based message with SP.
454 - Updated the build string to display the rc-tagged version.
455
456Cactus (Secure-EL1 test partition)
457~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
458
459 - Added test for nonsecure memory sharing between Secure Partitions(SPs).
460 - Added test to validate that a realm region cannot be accessed from secure
461 world.
462 - Added test to permit checking a root region cannot be accessed from secure
463 world.
464 - Extended the test command CACTUS_MEM_SEND_CMD to add support for memory
465 sharing flags.
466 - Added support to save the state of general purpose registers x0-x4 at the
467 entry to cold boot and restore them before jumping to entrypoint of cactus.
468
469Issues resolved since last release
470^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
471
472 - Fixed a bug to align RMI FIDs with SMCCC.
473 - Fixed encoding of vCPU and receiver IDs in the FFA_NOTIFICATION_GET
474 interface to comply with the FF-A v1.1 beta0 specification.
475 - Fixed memory retrieve request attributes by enforcing them to be inner
476 shareable rather than outer.
477 - Fixed static memory mapping of EL3 in EL2.
478 - Fixed a spurious error log message with memory share test.
479 - Aligning RMI FIDs with SMCCC.
480 - Fixed PSCI system suspend test suite execution in a four world system.
481 - Configured the build system to use DWARF 4 standard for debug builds with
482 ArmDS.
483 - Introduced macro IRQ_TWDOG_INTID for the Tegra210, Tegra186 and Tegra194
484 platforms to fix the compilation failures.
485
Madhukar Pappireddyda69f822021-11-09 16:05:54 -0600486Version 2.6
487-----------
488
489New features
490^^^^^^^^^^^^
491- More tests are made available in this release to help validate the
492 functionalities in the following areas:
493
494 - Firmware Framework for Arm A-profile(FF-A)
495 - Realm Management Extensions(RME)
496 - Embedded Trace Extension and Trace Buffer Extension (ETE and TRBE)
497
498TFTF
499~~~~
500
501- FF-A testing:
502
503 - Update FF-A version to v1.1
504 - Added helpers for SPM tests to check partition info of SPs from normal
505 world.
506 - Added tests to check for ffa_features supported.
507 - Added test for FFA_RXTX_UNMAP ABI.
508 - Added test for FFA_SPM_ID_GET.
509 - FF-A v1.1 Notifications
510
511 - Added test for notifications bitmap create and destroy ABIs.
512 - Added test for notifications set and get ABIs.
513 - Added test for notification INFO_GET ABI.
514 - Added test to check notifications pending interrupt is injected into
515 and handled by the expected vCPU in a MP setup.
516 - Added test for signaling from MP SP to UP SP.
517 - Added test to check notifications interrupt IDs retrieved with
518 FFA_FEATURES ABI.
519 - Added test to check functionality of notifications scheduled receiver
520 interrupt.
521
522 - FF-A v1.1 Secure interrupts
523
524 - Added support for handling secure interrupts in Cactus SP.
525 - Added several tests to exercise secure interrupt handling while SP
526 is in WAITING/RUNNING/BLOCKED state.
527
528- New tests:
529
530 - Enabled SVE tests
531 - Added test for trace system registers access.
532 - Added test for trace filter control registers access.
533 - Added test for trace buffer control registers access.
534 - Added test to check PSTATE in SDEI handler.
535 - Added test to check if HCRX_EL2 is accessible.
536
537- Platforms:
538
539 - TC0:
540
541 - Support for direct messaging with managed exit.
542 - Support for building S-EL0 Ivy partition.
543
544 - FVP:
545
546 - Update Cactus secure partitions to indicate Managed exit support.
547
548- Miscellaneous
549
550 - Added random seed generation capability and ability to specify build
551 parameters for SMC Fuzzer tool.
552
553Cactus (Secure-EL1 test partition)
554~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
555
556 - Added helper for Cactus SP sleep.
557 - Added test commands to request use of notifications interfaces.
558 - Added several commands that generate direct message requests to assist in
559 testing secure interrupt handling and notifications features in FF-A v1.1
560 - Added support for SP805 Trusted Watchdog module.
561
562Ivy (Secure-EL1 test partition)
563~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
564
565 - Add shim layer to Ivy partition and enable PIE.
566 - Define Ivy partition manifest and use FF-A for message handling.
567 - Prepare S-EL1/0 enviroment for enabling S-EL0 application.
568
569Realm Management Extension(RME)
570~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
571
572 - Added tests to run RMI and SPM on multiple CPUs concurrently.
573 - Added tests for multi CPU delegation and fail conditions.
574 - Added tests to query RMI version on multiple CPUs.
575
576Issues resolved since last release
577^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
578
579 - Fixed Ivy partition start address for TC0.
580 - Fixed SP manifests to use little endian format UUID.
581 - Fixed a bug in memory sharing test for Cactus SP.
582 - Invalidate data cache for NS_BL1U and NS_BL2U images.
583 - Fixed attributes to Read-Write only for memory regions described in partition
584 manifests.
585
Bipin Ravi7afea032021-05-06 14:32:52 -0500586Version 2.5
587-----------
588
589New features
590^^^^^^^^^^^^
591- More tests are made available in this release to help validate the
592 functionalities in the following areas:
Madhukar Pappireddyb1193f92023-05-18 16:50:41 -0500593
Bipin Ravi7afea032021-05-06 14:32:52 -0500594 - True Random Number Generator (TRNG) test scenarios.
595 - Multicore / Power State Controller Interface (PSCI) tests.
596 - v8.6 Activity Monitors Unit (AMU) enhancements test scenarios.
597 - Secure Partition Manager (SPM) / Firmware Framework (FF-A) v1.0 testing.
598 - Interrupt Handling between Non-secure and Secure world.
599 - Direct messages and memory sharing between Secure Partitions(SP).
600 - Many tests to exercise FF-A v1.0 ABIs.
601 - SPM saving/restoring the NS SIMD context enabling a normal world FF-A
602 endpoint (TFTF) and a secure partition to use SIMD vectors and
603 instructions independently.
604
605TFTF
606~~~~
607
608- SPM / FF-A v1.0 testing.
609 - Refactor FF-A memory sharing tests
610 - Created helper functions to initialize ffa_memory_region and to send
611 the respective memory region to the SP, making it possible to reuse
612 the logic in SP-to-SP memory share tests.
613 - Added comments to document relevant aspects about memory sharing.
614
615 - Trigger direct messaging between SPs.
616 - Use cactus command 'CACTUS_REQ_ECHO_SEND_CMD' to make cactus SPs
617 communicate with each other using direct message interfaces.
618
619 - Added helpers for SPM tests.
620 - Checking SPMC has expected FFA_VERSION.
621 - Checking that expected FF-A endpoints are deployed in the system.
622 - Getting global TFTF mailbox.
623
624- Replace '.inst' AArch64 machine directives with CPU Memory Tagging Extension
625 instructions in 'test_mte_instructions' function.
626
627- Add build option for Arm Feature Modifiers.
628 - This patch adds a new ARM_ARCH_FEATURE build option to add support
629 for compiler's feature modifiers.
630
631- Enable 8 cores support for Theodul DSU(DynamIQ Shared Unit) for the
632 Total Compute (TC0) platform.
633
634- New tests:
635
636 - Remove redundant code and add better tests for TRNG SMCs.
637 - Tests that the Version, Features, and RND calls conform to the spec.
638
639 - New tests for v8.6 AMU enhancements (FEAT_AMUv1p1)
640 - Make sure AMU offsets are being saved and restored properly.
641
642 - Tests to request SP-to-SP memory share.
643
644 - SP-to-SP direct messaging deadlock test.
645 - TFTF sends CACTUS_REQ_DEADLOCK_CMD to cactus SP.
646
647Cactus(Secure-EL1 test partition)
648~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
649
650- Enable managed exit for primary cactus secure partition.
651
652- Helper commands needed for interrupt testing.
653
654- Add handler from managed exit FIQ interrupt.
655
656- Make ffa_id global.
657
658- Implement HF_INTERRUPT_ENABLE Hafnium hypervisor call wrapper. With this
659 service, a secure partition calls into the SPMC to enable/disable a
660 particular virtual interrupt.
661
662- Invalidate the data cache for the cactus image.
663
664- Helper commands needed for interrupt testing.
665 - CACTUS_SLEEP_CMD & CACTUS_INTERRUPT_CMD added.
666
667- Decouple exception handling from tftf framework.
668 - With new interrupt related tests coming up in Cactus, added separate
669 exception handler code for irq/fiq in Cactus.
670
671- Hypervisor calls moved to a separate module.
672
673- Add secondary entry point register function.
674
675- Declare third SP instance as UP SP.
676
677- Provision a cold boot path for secondary cores (or secondary pinned
678 execution contexts).
679
680- Tidy message loop, commands definitions, direct messaging API definitions.
681
682- Helpers for error logging after FF-A calls.
683
684- Properly placing Cactus test files.
685
686- Tidying FF-A Memory Sharing tests.
687
688- Use CACTUS_ECHO_CMD in direct message tests.
689
690- Refactor handling of commands.
691 - Added helper macros to define a command handler, build a command table
692 in which each element is a pair of the handler and respective command
693 ID. Available tests have been moved to their own command handler.
694
695- Extend arguments in commands responses.
696 - In the test commands framework, added template to extend number of
697 values to include in a command response.
698
699- Check FF-A return is a valid direct response.
700 - Added a helper function to check if return of FFA_MSG_SEND_DIRECT_REQ
701 is FFA_MSG_SEND_DIRECT_RESP.
702
703- FFA_MSG_DIRECT_RESP call extended to use 5 registers.
704
705- Added accessors for arguments from FF-A calls.
706 - Some accessors for arguments from FF-A calls, namely for func id, error
707 code, and direct message destination/source.
708
709- Use virtual counter for sp_sleep.
710 - Changes sp_sleep() to use virtual counter instead of physical counter.
711
712- Checks if SIMD vectors are preserved in the normal world while transitioning
713 from normal world to secure world and back to normal world.
714
715- Tidying common code to tftf and cactus.
716
717- Refactor cactus_test_cmds.h to incorporate static inline functions instead
718 of macros to enforce type checking.
719
720- Removed reference to Hafnium in name from helper function and macro to
721 make them generic.
722
723- For consistency added the cmd id 'CACTUS_MEM_SEND_CMD'.
724
725- Add command to request memory sharing between SPs.
726
727- Add & handle commands 'CACTUS_REQ_ECHO_CMD' and 'CACTUS_ECHO_CMD'.
728
729- Update README with list of sample partitions.
730
731- Remove reference to PSA from xml test file.
732
733- Reduce tests verbosity in release mode.
734 - Update few NOTICE messages to VERBOSE/INFO.
735
736- Fix conversion issues on cactus responses.
737
738- Create RXTX map/configure helper macros and use them.
739
740- Update OP-TEE version used for testing to 3.10.
741 - SPMC as S-EL1 tests using OP-TEE depend on a static binary stored as
742 a CI file. This binary corresponds to a build of OP-TEE v3.10.
743
744- Add uart2 to device-regions node.
745 - First SP no longer has an open access to the full system peripheral
746 range and devices must be explicitly declared in the SP manifest.
747
748- New tests:
749
750 - Test for exercising SMMUv3 driver to perform stage2 translation.
751
752 - Test handling of non-secure interrupt while running SP.
753
754 - Add secondary cores direct messaging test for SPM.
755
756 - Testing deadlock by FF-A direct message.
757 - Added command CACTUS_DEADLOCK_CMD to file cactus_test_cmds.h to create
758 a deadlock scenario using FF-A direct message interfaces.
759
760 - Test SP-to-SP memory share operations
761 - Handle 'CACTUS_REQ_MEM_SEND_CMD' by sending memory to the receiver SP.
762
763 - Implemented test to validate FFA_RXTX_MAP ABI.
764
Manish V Badarkhe86600a82020-10-04 18:33:44 +0100765Version 2.4
766-----------
767
768New features
769^^^^^^^^^^^^
770- More tests are made available in this release to help validate the
771 functionalities in the following areas:
772 - SMCCC.
773 - New architecture specific features.
774 - FF-A features.
775 - New platform ports.
776
777- Various improvements to test framework and test suite such as documentation,
778 removing un-necessary dependencies, etc.
779
780TFTF
781~~~~
782
783- Remove dependencies from FVP to generic code by converting some FVP platform
784 specific macros to the common macros.
785
786- Remove make as a package dependency to compile TF-A test code.
787
788- Move defaults values and macro defs in a separate folder from Makefile.
789
790- Allow alternate stdout to be used apart from pl011 UART.
791
792- Get FVP platform's topology from build options to make FVP platform
793 configuration more flexible and eliminate test errors when the platform
794 is configured with number of CPUs less than default values in the makefile.
795
796- Update the FIP corrupt address which is used to corrupt BL2 image that helps
797 to trigger firmware update process.
798
799- Add explicit barrier before sev() in tftf_send_event_common API to avoid
800 core hang.
801
802- Align output properly on issuing make help_tests by removing dashes
803 and sort tests.
804
805- Moved a few FVP and Juno specific defined from common header files to platform
806 specific header files.
807
808- Replace SPCI with PSA FF-A in code as SPCI is now called as FF-A.
809
810- Add owner field to sp_layout generation to differentiate owner of SP which
811 could either be Silicon Provider or Platform provider.
812
813- Add v8.5 Branch Target Identifier(BTI) support in TFTF.
814
815- Remove dependency on SYS_CNT_BASE1 to read the memory mapped timers.
816
817- Enables SError aborts for all CPUs, during their power on sequence.
818
819- Documentation:
820
821 - Use conditional assignment on sphinx variables so that they can be
822 overwritten by environment and/or command line.
823
824 - Add support for documentation build as a target in Makefile.
825
826 - Update list of maintainers.
827
828 - Update documentation to explain how to locally build the documentation.
829
830 - Add .editorconfig from TF-A to define the coding style.
831
832 - Fix documentation to include 'path/to' prefix when specifying tftf.bin on
833 make fip cmd.
834
835 - Use docker to build documentation.
836
837 - Replace SPCI with PSA FF-A in documentation as SPCI is now called
838 as FF-A.
839
840- NVIDIA Tegra194:
841
842 - Skip CPU suspend tests requiring SGI as wake source as Tegra194 platforms
843 do not support CPU suspend power down and cannot be woken up with an SGI.
844
845 - Disable some system suspend test cases.
846
847 - Create dummy SMMU context for system resume to allow the System Resume
848 Firmware to complete without any errors or warnings.
849
850 - Increase RTC step value to 5ms as RTC consumes 250us for each register
851 read/write. Increase the step value to 5ms to cover all the register
852 read/write in program_timer().
853
854 - Skip some timer framework validation tests as CPUs on Tegra194 platforms
855 cannot be woken up with the RTC timer interrupt after power off.
856
857 - Introduce per-CPU Hypervisor Timer Interrupt ID.
858
859 - Skip PSCI STAT tests requiring PSTATE_TYPE_POWERDOWN as Tegra194 platforms
860 do not support CPU suspend with state type as PSTATE_TYPE_POWERDOWN.
861
862 - Disable boot requirement tests as Tegra194 platforms do not support memory
863 mapped timers.
864
865 - Skips the test "Create all power states and validate EL3 power state parsing"
866 from the "EL3 power state parser validation" test suite as it is not in
867 sync with this expectation.
868
869 - Moved reset, timers. wake, watchdog drivers from Tegra194 specific folder to
870 common driver folder so that these drivers can be used for other NVIDIA platforms.
871
872- New tests:
873
874 - Add test for SDEI RM_ANY routing mode.
875
876 - Add initial platform support for TC0.
877
878 - Add SMC fuzzing module test.
879
880 - Add test case for SMCCC_ARCH_SOC_ID feature.
881
882 - Add test that supports ARMv8.6-FGT in TF-A.
883
884 - Add test that supports ARMv8.6-ECV in TF-A.
885
886 - Add test for FFA_VERSION interface.
887
888 - Add test for FFA_FEATURES interface.
889
890 - Add console driver for the TI UART 16550.
891
892 - Add tests for FF-A memory sharing interfaces between tftf
893 and cactus secure partitions.
894
895 - NVIDIA Tegra194:
896
897 - Introduce platform port for Tegra194 to to initialize the tftf
898 framework and execute tests on the CPUs.
899
900 - Introduce power management support.
901
902 - Introduce support for RTC as wake source.
903
904 - Introduce system reset functionality test.
905
906 - Introduce watchdog timer test.
907
908 - Introduce support for NVIDIA Denver CPUs.
909
910 - Introduce RAS uncorrectable error injection test.
911
912 - Introduce tests to verify the Video Memory resize interface.
913
914 - Introduce test to inject RAS corrected errors for all supported
915 nodes from all CPUs.
916
917 - Introduce a test to get return value from SMC SiP function
918 TEGRA_SIP_GET_SMMU_PER.
919
920 - NVIDIA Tegra196:
921
922 - Introduce initial support for Tegra186 platforms.
923
924 - NVIDIA Tegra210:
925
926 - Introduce initial support for Tegra210 platforms.
927
928Secure partition - Cactus
929~~~~~~~~~~~~~~~~~~~~~~~~~
930
931- TFTF doesn't need to boot Secondary Cactus as Hafnium now boots all
932 partitions according to "boot-order" field value in the partition
933 manifests.
934
935- Remove test files related to deprecated SPCI Alpha specification and
936 SPRT interface.
937
938- Select different stdout device at runtime as primary VM can access
939 to UART while secondary VM's use hypervisor call to SPM for debug
940 logging.
941
942- An SP maps its RX/TX buffers in its EL1&0 Stage-1 translation regime.
943 The same RX/TX buffers are mapped by the SPMC in the SP's EL1&0
944 Stage-2 translation regime during boot time.
945
946- Update memory/device region nodes in manifest. Memory region has 3
947 entries such as RX buffer, TX buffer and dummy. These memory region
948 entries are mapped with attributes as "RX buffer: read-only",
949 "TX buffer: read-write" and "dummy: read-write-execute".
950 Device region mapped with read-write attribute.
951
952- Create tertiary partition without RX_TX region specified to test the
953 RXTX_MAP API.
954
955- Add third partition to ffa_partition_info_get test to test that a
956 partition can successfully get information about the third cactus
957 partition.
958
959- Map RXTX region to third partition to point the mailbox to this RXTX
960 region.
961
962- Adjust the number of EC context to max number of PEs as per the FF-A
963 specification mandating that a SP must either "Implement as many ECs
964 as the number of PEs (in case of a "multi-processor" SP with pinned
965 contexts)" or "Implement a single EC (in case of a migratable
966 "uni-processor" SP).
967
968- Updated cactus test payload and TFTF ids as it is decided to have
969 secure partition FF-A ids in the range from 0x8001 to 0xfffe, 0x8000
970 and 0xffff FF-A ids are reserved for the SPMC and the SPMD respectively
971 and in the non-secure worlds, FF-A id 0 is reserved for the hypervisor
972 and 1 to 0x7fff FF-A ids are reserved for VMs.
973
974- Break the message loop on bad message request instead of replying
975 with the FF-A error ABI to the SPMC.
976
977- Remove deprecated hypervisor calls spm_vm_get_count and spm_vcpu_get_count.
978 Instead use FFA_PARTITION_INFO_GET discovery ABI.
979
980- Implement hvc call 'SPM_INTERRUPT_GET' to get interrupt id.
981
982- Re-structure platform dependent files by moving platform dependent files
983 and macros to platform specific folder.
984
985- Adjust partition info get properties to support receipt of direct
986 message request.
987
988- New tests:
989
990 - Add FFA Version Test.
991
992 - Add FFA_FEATURES test.
993
994 - Add FFA_MEM_SHARE test
995
996 - Add FFA_MEM_LEND test.
997
998 - Add FFA_MEM_DONATE test.
999
1000 - Add FFA_PARTITION_INFO_GET test.
1001
1002 - Add exception/interrupt framework.
1003
1004 - Add cactus support for TC0 platform.
1005
1006Issues resolved since last release
1007^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1008
1009- Update link to SMCCC specification.
1010
1011- Trim down the top-level readme file to give brief overview of the project
1012 and also fix/update a number of broken/out-dated links in it.
1013
1014- Bug fix in Multicore IRQ spurious test.
1015
1016- Fix memory regions mapping with no NS bit set.
1017
1018- Reenable PSCI NODE_HW_STATE test which was disabled earlier due to
1019 outdated SCP firmware.
1020
1021- Fix Aarch32 zeromem() function by avoiding infinite loop in 'zeromem'
1022 function and optimizing 'memcpy4' function.
1023
1024- Add missing help_tests info on help target in the top-level Makefile.
1025
1026- Trim down the readme file as it does not need to provide detailed
1027 information, instead it can simply be a landing page providing a brief
1028 overview of the project and redirecting the reader to RTD for further
1029 information.
1030
1031- Fix maximum number of CPUs in DSU cluster by setting maximum number of CPUs
1032 in DSU cluster to 8.
1033
Madhukar Pappireddybced2f32020-04-08 15:44:38 -05001034Version 2.3
1035-----------
1036
1037New features
1038^^^^^^^^^^^^
1039
1040- More tests are made available in this release to help validate
1041 the functionality of TF-A.
1042
1043- CI upgraded to use GCC 9.2-2019.12 toolchain for tf-a-tests.
1044
1045- Various improvements to test framework and test suite.
1046
1047TFTF
1048~~~~
1049
1050- Support for extended register usage as per SMCCC v1.2 specification.
1051
1052- Support for FVP platforms with SMT capabilities.
1053
1054- Improved support for documentation through addition of basic Sphinx
1055 configuration and Makefile similar to TF-A repository.
1056
1057- Enhancement to libc library synchronous to TF-A code base.
1058
1059- ARMv8.3-PAuth enabled for all FWU tests in TFTF.
1060
1061- TFTF made RFC 4122 compliant by converting UUIDs to network order format.
1062
1063- Build improvement by deprecating custom AARCH64/AARCH32 macros in favor of
1064 __arch64__ macro provided by compiler.
1065
1066- Support for HVC as a SMCCC conduit in TFTF.
1067
1068- New tests:
1069
1070 - AArch32 tests for checking if PMU counters leak in secure world.
1071
1072 - Add new debug filesystem (debugfs) test.
1073
1074 - Add a SPCI direct messaging test targeting bare-metal cactus SP.
1075
1076
1077Secure partitions
1078~~~~~~~~~~~~~~~~~
1079
1080Cactus
1081~~~~~~
1082
1083- Several build improvements and symbol relocation fixup to make it position
1084 independent executable.
1085
1086- Update of sample manifest to SPCI Beta1 format.
1087
1088- Support for generating JSON file as required by TF-A.
1089
1090Issues resolved since last release
1091^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1092
1093- Makefile bug fix for performing parallel builds.
1094
1095- Add missing D-cache invalidation of RW memory in tftf_entrypoint to safeguard
1096 against possible corruption.
1097
1098- Fixes in GIC drivers to support base addresses beyond 4G range.
1099
1100- Fix build with XML::LibXML 2.0202 Perl module
1101
1102Known issues and limitations
1103^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1104
1105The sections below list the known issues and limitations of each test image
1106provided in this repository. Unless and otherwise stated, issues and limitations
1107stated in previous release continue to exist in this release.
1108
1109TFTF
1110~~~~
1111- NODE_HW_STATE test has been temporarily disabled for sgi575 platform due to a
1112 dependency on SCP binaries version 2.5
1113
Paul Beesley5c928952019-10-24 11:57:00 +00001114Version 2.2
1115-----------
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -05001116
1117New features
Paul Beesley5c928952019-10-24 11:57:00 +00001118^^^^^^^^^^^^
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -05001119
1120- A wide range of tests are made available in this release to help validate
1121 the functionality of TF-A.
1122
1123- Various improvements to test framework and test suite.
1124
1125TFTF
Paul Beesley5c928952019-10-24 11:57:00 +00001126~~~~
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -05001127
1128- Enhancement to xlat table library synchronous to TF-A code base.
1129
1130- Enabled strict alignment checks (SCTLR.A & SCTLR.SA) in all images.
1131
1132- Support for a simple console driver. Currently it serves as a placeholder
1133 with empty functions.
1134
1135- A topology helper API is added in the framework to get parent node info.
1136
1137- Support for FVP with clusters having upto 8 CPUs.
1138
1139- Enhanced linker script to separate code and RO data sections.
1140
1141- Relax SMC calls tests. The SMCCC specification recommends Trusted OSes to
1142 mitigate the risk of leaking information by either preserving the register
1143 state over the call, or returning a constant value, such as zero, in each
1144 register. Tests only allowed the former behaviour and have been extended to
1145 allow the latter as well.
1146
1147- Pointer Authentication enabled on warm boot path with individual APIAKey
1148 generation for each CPU.
1149
1150- New tests:
1151
1152 - Basic unit tests for xlat table library v2.
1153
1154 - Tests for validating SVE support in TF-A.
1155
1156 - Stress tests for dynamic xlat table library.
1157
1158 - PSCI test to measure latencies when turning ON a cluster.
1159
1160 - Series of AArch64 tests that stress the secure world to leak sensitive
1161 counter values.
1162
1163 - Test to validate PSCI SYSTEM_RESET call.
1164
1165 - Basic tests to validate Memory Tagging Extensions are being enabled and
1166 ensuring no undesired leak of sensitive data occurs.
1167
1168- Enhanced tests:
1169
1170 - Improved tests for Pointer Authentication support. Checks are performed
1171 to see if pointer authentication keys are accessible as well as validate
1172 if secure keys are being leaked after a PSCI version call or TSP call.
1173
1174 - Improved AMU test to remove unexecuted code iterating over Group1 counters
1175 and fix the conditional check of AMU Group0 counter value.
1176
1177Secure partitions
Paul Beesley5c928952019-10-24 11:57:00 +00001178~~~~~~~~~~~~~~~~~
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -05001179
1180A new Secure Partition Quark is introduced in this release.
1181
1182Quark
Paul Beesley5c928952019-10-24 11:57:00 +00001183~~~~~
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -05001184
1185The Quark test secure partition provided is a simple service which returns a
1186magic number. Further, a simple test is added to test if Quark is functional.
1187
1188Issues resolved since last release
Paul Beesley5c928952019-10-24 11:57:00 +00001189^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -05001190
1191- Bug fix in libc memchr implementation.
1192
1193- Bug fix in calculation of number of CPUs.
1194
1195- Streamlined SMC WORKAROUND_2 test and fixed a false fail on Cortex-A76 CPU.
1196
1197- Pointer Authentication support is now available for secondary CPUs and the
1198 corresponding tests are stable in this release.
1199
1200Known issues and limitations
Paul Beesley5c928952019-10-24 11:57:00 +00001201^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -05001202
1203The sections below list the known issues and limitations of each test image
1204provided in this repository. Unless and otherwise stated, issues and limitations
1205stated in previous release continue to exist in this release.
1206
1207TFTF
Paul Beesley5c928952019-10-24 11:57:00 +00001208~~~~
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -05001209- Multicore spurious interrupt test is observed to have unstable behavior. As a
1210 temporary solution, this test is skipped for AArch64 Juno configurations.
1211
1212- Generating SVE instructions requires `O3` compilation optimization. Since the
1213 current build structure does not allow compilation flag modification for
1214 specific files, the function which tests support for SVE has been pre-compiled
1215 and added as an assembly file.
1216
1217
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001218
Paul Beesley5c928952019-10-24 11:57:00 +00001219Version 2.1
1220-----------
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001221
1222New features
Paul Beesley5c928952019-10-24 11:57:00 +00001223^^^^^^^^^^^^
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001224
1225- Add initial support for testing Secure Partition Client Interface (SPCI)
1226 and Secure Partition Run-Time (SPRT) standards.
1227
1228 Exercise the full communication flow throughout the software stack, involving:
1229
1230 - A Secure-EL0 test partition as the Trusted World agent.
1231
1232 - TFTF as the Normal World agent.
1233
1234 - The Secure Partition Manager (SPM) in TF-A.
1235
1236- Various stability improvements, code refactoring and clean ups.
1237
1238TFTF
Paul Beesley5c928952019-10-24 11:57:00 +00001239~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001240
1241- Reorganize tests build infrastructure to allow the selection of a subset of
1242 tests.
1243
1244- Reorganize the platform layer for improved clarity and simplicity.
1245
1246- Sanitise inclusion of drivers header files.
1247
1248- Enhance the test report format for improved clarity and conciseness.
1249
1250- Dump CPU registers when hitting an unexpected exception. Previously, this
1251 would silently loop forever.
1252
1253- Import libc from TF-A to better align the two code bases.
1254
1255- New tests:
1256
1257 - SPM tests for exercising communication through either the MM or SPCI/SPRT
1258 interfaces.
1259
1260 - SMC calling convention tests.
1261
1262 - Initial tests for Armv8.3 Pointer Authentication support (experimental).
1263
1264- New platform ports:
1265
1266 - `Arm SGI-575`_ FVP.
1267
1268 - Hikey960 board (experimental).
1269
1270 - `Arm Neoverse Reference Design N1 Edge (RD-N1-Edge)`_ FVP (experimental).
1271
1272Secure partitions
Paul Beesley5c928952019-10-24 11:57:00 +00001273~~~~~~~~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001274
1275We now have 3 Secure Partitions to test the SPM implementation in TF-A.
1276
1277Cactus-MM
1278'''''''''
1279
1280The Cactus test secure partition provided in version 2.0 has been renamed into
1281"*Cactus-MM*". It is still responsible for testing the SPM implementation based
1282on the Arm Management Mode Interface.
1283
1284Cactus
1285''''''
1286
1287This is a new test secure partition (as the former "*Cactus*" has been renamed
1288into "*Cactus-MM*", see above).
1289
1290Unlike *Cactus-MM*, this image tests the SPM implementation based on the SPCI
1291and SPRT draft specifications.
1292
1293It runs in Secure-EL0 and performs the following tasks:
1294
1295- Test that TF-A has correctly setup the secure partition environment (access
1296 to cache maintenance operations, to floating point registers, etc.)
1297
1298- Test that TF-A accepts to change data access permissions and instruction
1299 permissions on behalf of Cactus for memory regions the latter owns.
1300
1301- Test communication with SPM through SPCI/SPRT interfaces.
1302
1303Ivy
1304'''
1305
1306This is also a new test secure partition. It is provided in order to test
1307multiple partitions support in TF-A. It is derived from Cactus and essentially
1308provides the same services but with different identifiers at the moment.
1309
1310EL3 payload
Paul Beesley5c928952019-10-24 11:57:00 +00001311~~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001312
1313- New platform ports:
1314
1315 - `Arm SGI-575`_ FVP.
1316
1317 - `Arm Neoverse Reference Design N1 Edge (RD-N1-Edge)`_ FVP (experimental).
1318
1319Issues resolved since last release
Paul Beesley5c928952019-10-24 11:57:00 +00001320^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001321
1322- The GICv2 spurious IRQ test is no longer Juno-specific. It is now only
1323 GICv2-specific.
1324
1325- The manual tests in AArch32 state now work properly. After investigation,
1326 we identified that this issue was not AArch32 specific but concerned any
1327 test relying on state information persisting across reboots. It was due to
1328 an incorrect build configuration.
1329
1330- Cactus-MM now successfully links with GNU toolchain 7.3.1.
1331
1332Known issues and limitations
Paul Beesley5c928952019-10-24 11:57:00 +00001333^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001334
1335The sections below lists the known issues and limitations of each test image
1336provided in this repository.
1337
1338TFTF
Paul Beesley5c928952019-10-24 11:57:00 +00001339~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001340
1341The TFTF test image might be conceptually sub-divided further in 2 parts: the
1342tests themselves, and the test framework they are based upon.
1343
1344Test framework
Paul Beesley5c928952019-10-24 11:57:00 +00001345~~~~~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001346
1347- Some stability issues.
1348
1349- No mechanism to abort tests when they time out (e.g. this could be
1350 implemented using a watchdog).
1351
1352- No convenient way to include or exclude tests on a per-platform basis.
1353
1354- Power domains and affinity levels are considered equivalent but they may
1355 not necessarily be.
1356
1357- Need to provide better support to alleviate duplication of test code. There
1358 are some recurrent test patterns for which helper functions should be
1359 provided. For example, bringing up all CPUs on the platform and executing the
1360 same function on all of them, or programming an interrupt and waiting for it
1361 to trigger.
1362
1363- Every CPU that participates in a test must return from the test function. If
1364 it does not - e.g. because it powered itself off for testing purposes - then
1365 the test framework will wait forever for this CPU. This limitation is too
1366 restrictive for some tests.
1367
1368- No protection against interrupted flash operations. If the target is reset
1369 while some data is written to flash, the test framework might behave
1370 incorrectly on reset.
1371
1372- When compiling the code, if the generation of the ``tests_list.c`` and/or
1373 ``tests_list.h`` files fails, the build process is not aborted immediately
1374 and will only fail later on.
1375
1376- The directory layout requires further improvements. Most of the test
1377 framework code has been moved under the ``tftf/`` directory to better isolate
1378 it but this effort is not complete. As a result, there are still some TFTF
1379 files scattered around.
1380
1381- Pointer Authentication testing is experimental and incomplete at this stage.
1382 It is only enabled on the primary CPU on the cold boot.
1383
1384Tests
Paul Beesley5c928952019-10-24 11:57:00 +00001385~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001386
1387- Some tests are implemented for AArch64 only and are skipped on AArch32.
1388
1389- Some tests are not robust enough:
1390
1391 - Some tests might hang in some circumstances. For example, they might wait
1392 forever for a condition to become true.
1393
1394 - Some tests rely on arbitrary time delays instead of proper synchronization
1395 when executing order-sensitive steps.
1396
1397 - Some tests have been implemented in a practical manner: they seem to work
1398 on actual hardware but they make assumptions that are not guaranteed by
1399 the Arm architecture. Therefore, they might fail on some other platforms.
1400
1401- PSCI stress tests are very unreliable and will often hang. The root cause is
1402 not known for sure but this might be due to bad synchronization between CPUs.
1403
1404- The GICv2 spurious IRQ test sometimes fails with the following error message:
1405
1406 ``SMC @ lead CPU returned 0xFFFFFFFF 0x8 0xC``
1407
1408 The root cause is unknown.
1409
1410- The FWU tests take a long time to complete. This is because they wait for the
1411 watchdog to reset the system. On FVP, TF-A configures the watchdog period to
1412 about 4 min. This limit is excessive for an automated testing context and
1413 leaves the user without feedback and unable to determine if the tests are
1414 proceeding properly.
1415
1416- The test "Target timer to a power down cpu" sometimes fails with the
1417 following error message:
1418
1419 ``Expected timer switch: 4 Actual: 3``
1420
1421 The root cause is unknown.
1422
1423FWU images
Paul Beesley5c928952019-10-24 11:57:00 +00001424~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001425
1426- The FWU tests do not work on the revC of the Base AEM FVP. They only work on
1427 the revB.
1428
1429- NS-BL1U and NS-BL2U images reuse TFTF-specific code for legacy reasons. This
1430 is not a clean design and may cause confusion.
1431
1432Test secure partitions (Cactus, Cactus-MM, Ivy)
Paul Beesley5c928952019-10-24 11:57:00 +00001433~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001434
1435- This is experimental code. It's likely to change a lot as the secure
1436 partition software architecture evolves.
1437
1438- Supported on AArch64 FVP platform only.
1439
1440All test images
Paul Beesley5c928952019-10-24 11:57:00 +00001441~~~~~~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001442
1443- TF-A Tests are derived from a fork of TF-A so:
1444
1445 - they've got some code in common but lag behind on some features.
1446
1447 - there might still be some irrelevant references to TF-A.
1448
1449- Some design issues.
1450 E.g. TF-A Tests inherited from the I/O layer of TF-A, which still needs a
1451 major rework.
1452
1453- Cannot build TF-A Tests with Clang. Only GCC is supported.
1454
1455- The build system does not cope well with parallel building. The user should
1456 not attempt to run multiple jobs in parallel with the ``-j`` option of `GNU
1457 make`.
1458
1459- The build system does not properly track build options. A clean build must be
1460 performed every time a build option changes.
1461
1462- UUIDs are not compliant to RFC 4122.
1463
1464- No floating point support. The code is compiled with GCC flag
1465 ``-mgeneral-regs-only``, which prevents the compiler from generating code
1466 that accesses floating point registers. This might limit some test scenarios.
1467
1468- The documentation is too lightweight.
1469
1470- Missing instruction barriers in some places before reading the system counter
1471 value. As a result, the CPU could speculatively read it and any delay loop
1472 calculations might be off (because based on stale values). We need to examine
1473 all such direct reads of the ``CNTPCT_EL0`` register and replace them with a
1474 call to ``syscounter_read()`` where appropriate.
1475
Paul Beesley5c928952019-10-24 11:57:00 +00001476Version 2.0
1477-----------
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001478
1479New features
Paul Beesley5c928952019-10-24 11:57:00 +00001480^^^^^^^^^^^^
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001481
1482This is the first public release of the Trusted Firmware-A Tests source code.
1483
1484TFTF
Paul Beesley5c928952019-10-24 11:57:00 +00001485~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001486
1487- Provides a baremetal test framework to exercise TF-A features through its
1488 ``SMC`` interface.
1489
1490- Integrates easily with TF-A: the TFTF binary is packaged in the FIP image
1491 as a ``BL33`` component.
1492
1493- Standalone binary that runs on the target without human intervention (except
1494 for some specific tests that require a manual target reset).
1495
1496- Designed for multi-core testing. The various sub-frameworks allow maximum
1497 parallelism in order to stress the firmware.
1498
1499- Displays test results on the UART output. This may then be parsed by an
1500 external tool and integrated in a continuous integration system.
1501
1502- Supports running in AArch64 (NS-EL2 or NS-EL1) and AArch32 states.
1503
1504- Supports parsing a tests manifest (XML file) listing the tests to include in
1505 the binary.
1506
1507- Detects most platform features at run time (e.g. topology, GIC version, ...).
1508
1509- Provides a topology enumeration framework. Allows tests to easily go through
1510 affinity levels and power domain nodes.
1511
1512- Provides an event framework to synchronize CPU operations in a multi-core
1513 context.
1514
1515- Provides a timer framework. Relies on a single global timer to generate
1516 interrupts for all CPUs in the system. This allows tests to easily program
1517 interrupts on demand to use as a wake-up event source to come out of CPU
1518 suspend state for example.
1519
1520- Provides a power-state enumeration framework. Abstracts the valid power
1521 states supported on the platform.
1522
1523- Provides helper functions for power management operations (CPU hotplug,
1524 CPU suspend, system suspend, ...) with proper saving of the hardware state.
1525
1526- Supports rebooting the platform at the end of each test for greater
1527 independence between tests.
1528
1529- Supports interrupting and resuming a test session. This relies on storing
1530 test results in non-volatile memory (e.g. flash).
1531
1532FWU images
Paul Beesley5c928952019-10-24 11:57:00 +00001533~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001534
1535- Provides example code to exercise the Firmware Update feature of TF-A.
1536
1537- Tests the robustness of the FWU state machine implemented in the TF-A by
1538 sending valid and invalid authentication, copy and image execution requests
1539 to the TF-A BL1 image.
1540
1541EL3 test payload
Paul Beesley5c928952019-10-24 11:57:00 +00001542~~~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001543
1544- Tests the ability of TF-A to load an EL3 payload.
1545
1546Cactus test secure partition
Paul Beesley5c928952019-10-24 11:57:00 +00001547~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001548
1549- Tests that TF-A has correctly setup the secure partition environment: it
1550 should be allowed to perform cache maintenance operations, access floating
1551 point registers, etc.
1552
1553- Tests the ability of a secure partition to request changing data access
1554 permissions and instruction permissions of memory regions it owns.
1555
1556- Tests the ability of a secure partition to handle StandaloneMM requests.
1557
1558Known issues and limitations
Paul Beesley5c928952019-10-24 11:57:00 +00001559^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001560
1561The sections below lists the known issues and limitations of each test image
1562provided in this repository.
1563
1564TFTF
Paul Beesley5c928952019-10-24 11:57:00 +00001565~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001566
1567The TFTF test image might be conceptually sub-divided further in 2 parts: the
1568tests themselves, and the test framework they are based upon.
1569
1570Test framework
Paul Beesley5c928952019-10-24 11:57:00 +00001571~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001572
1573- Some stability issues.
1574
1575- No mechanism to abort tests when they time out (e.g. this could be
1576 implemented using a watchdog).
1577
1578- No convenient way to include or exclude tests on a per-platform basis.
1579
1580- Power domains and affinity levels are considered equivalent but they may
1581 not necessarily be.
1582
1583- Need to provide better support to alleviate duplication of test code. There
1584 are some recurrent test patterns for which helper functions should be
1585 provided. For example, bringing up all CPUs on the platform and executing the
1586 same function on all of them, or programming an interrupt and waiting for it
1587 to trigger.
1588
1589- Every CPU that participates in a test must return from the test function. If
1590 it does not - e.g. because it powered itself off for testing purposes - then
1591 the test framework will wait forever for this CPU. This limitation is too
1592 restrictive for some tests.
1593
1594- No protection against interrupted flash operations. If the target is reset
1595 while some data is written to flash, the test framework might behave
1596 incorrectly on reset.
1597
1598- When compiling the code, if the generation of the tests_list.c and/or
1599 tests_list.h files fails, the build process is not aborted immediately and
1600 will only fail later on.
1601
1602- The directory layout is confusing. Most of the test framework code has been
1603 moved under the ``tftf/`` directory to better isolate it but this effort is
1604 not complete. As a result, there are still some TFTF files scattered around.
1605
1606Tests
Paul Beesley5c928952019-10-24 11:57:00 +00001607~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001608
1609- Some tests are implemented for AArch64 only and are skipped on AArch32.
1610
1611- Some tests are not robust enough:
1612
1613 - Some tests might hang in some circumstances. For example, they might wait
1614 forever for a condition to become true.
1615
1616 - Some tests rely on arbitrary time delays instead of proper synchronization
1617 when executing order-sensitive steps.
1618
1619 - Some tests have been implemented in a practical manner: they seem to work
1620 on actual hardware but they make assumptions that are not guaranteed by
1621 the Arm architecture. Therefore, they might fail on some other platforms.
1622
1623- PSCI stress tests are very unreliable and will often hang. The root cause is
1624 not known for sure but this might be due to bad synchronization between CPUs.
1625
1626- The GICv2 spurious IRQ test is Juno-specific. In reality, it should only be
1627 GICv2-specific. It should be reworked to remove any platform-specific
1628 assumption.
1629
1630- The GICv2 spurious IRQ test sometimes fails with the following error message:
1631
1632 ``SMC @ lead CPU returned 0xFFFFFFFF 0x8 0xC``
1633
1634 The root cause is unknown.
1635
1636- The manual tests in AArch32 mode do not work properly. They save some state
1637 information into non-volatile memory in order to detect the reset reason but
1638 this state does not appear to be retained. As a result, these tests keep
1639 resetting infinitely.
1640
1641- The FWU tests take a long time to complete. This is because they wait for the
1642 watchdog to reset the system. On FVP, TF-A configures the watchdog period to
1643 about 4 min. This is way too long in an automated testing context. Besides,
1644 the user gets not feedback, which may let them think that the tests are not
1645 working properly.
1646
1647- The test "Target timer to a power down cpu" sometimes fails with the
1648 following error message:
1649
1650 ``Expected timer switch: 4 Actual: 3``
1651
1652 The root cause is unknown.
1653
1654FWU images
Paul Beesley5c928952019-10-24 11:57:00 +00001655~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001656
Sandrine Bailleux7af6c6d2018-10-22 17:09:07 +02001657- The FWU tests do not work on the revC of the Base AEM FVP. They only work on
1658 the revB.
1659
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001660- NS-BL1U and NS-BL2U images reuse TFTF-specific code for legacy reasons. This
1661 is not a clean design and may cause confusion.
1662
1663Cactus test secure partition
Paul Beesley5c928952019-10-24 11:57:00 +00001664~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001665
1666- Cactus is experimental code. It's likely to change a lot as the secure
1667 partition software architecture evolves.
1668
1669- Fails to link with GNU toolchain 7.3.1.
1670
1671- Cactus is supported on AArch64 FVP platform only.
1672
1673All test images
Paul Beesley5c928952019-10-24 11:57:00 +00001674~~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001675
1676- TF-A Tests are derived from a fork of TF-A so:
1677
1678 - they've got some code in common but lag behind on some features.
1679
1680 - there might still be some irrelevant references to TF-A.
1681
1682- Some design issues.
1683 E.g. TF-A Tests inherited from the I/O layer of TF-A, which still needs a
1684 major rework.
1685
1686- Cannot build TF-A Tests with Clang. Only GCC is supported.
1687
1688- The build system does not cope well with parallel building. The user should
1689 not attempt to run multiple jobs in parallel with the ``-j`` option of `GNU
1690 make`.
1691
1692- The build system does not properly track build options. A clean build must be
1693 performed every time a build option changes.
1694
1695- SMCCC v2 is not properly supported.
1696
1697- UUIDs are not compliant to RFC 4122.
1698
1699- No floating point support. The code is compiled with GCC flag
1700 ``-mgeneral-regs-only``, which prevents the compiler from generating code
1701 that accesses floating point registers. This might limit some test scenarios.
1702
1703- The documentation is too lightweight.
1704
1705--------------
1706
Yann Gautier4a8d7582024-04-05 09:55:25 +02001707*Copyright (c) 2018-2024, Arm Limited. All rights reserved.*
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001708
1709.. _Arm Neoverse Reference Design N1 Edge (RD-N1-Edge): https://developer.arm.com/products/system-design/reference-design/neoverse-reference-design
1710.. _Arm SGI-575: https://developer.arm.com/products/system-design/fixed-virtual-platforms