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