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