blob: 8a99d1c5ecc14005a6f75e279f11c52cf16913ee [file] [log] [blame]
Paul Beesley24a6bd62019-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 Conde00f5f6a2022-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 Chidanand8736e4b2022-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 Pappireddy833099c2021-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 Ravi5a312972021-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:
Madhukar Pappireddy1a4299b2023-05-18 16:50:41 -0500351
Bipin Ravi5a312972021-05-06 14:32:52 -0500352 - True Random Number Generator (TRNG) test scenarios.
353 - Multicore / Power State Controller Interface (PSCI) tests.
354 - v8.6 Activity Monitors Unit (AMU) enhancements test scenarios.
355 - Secure Partition Manager (SPM) / Firmware Framework (FF-A) v1.0 testing.
356 - Interrupt Handling between Non-secure and Secure world.
357 - Direct messages and memory sharing between Secure Partitions(SP).
358 - Many tests to exercise FF-A v1.0 ABIs.
359 - SPM saving/restoring the NS SIMD context enabling a normal world FF-A
360 endpoint (TFTF) and a secure partition to use SIMD vectors and
361 instructions independently.
362
363TFTF
364~~~~
365
366- SPM / FF-A v1.0 testing.
367 - Refactor FF-A memory sharing tests
368 - Created helper functions to initialize ffa_memory_region and to send
369 the respective memory region to the SP, making it possible to reuse
370 the logic in SP-to-SP memory share tests.
371 - Added comments to document relevant aspects about memory sharing.
372
373 - Trigger direct messaging between SPs.
374 - Use cactus command 'CACTUS_REQ_ECHO_SEND_CMD' to make cactus SPs
375 communicate with each other using direct message interfaces.
376
377 - Added helpers for SPM tests.
378 - Checking SPMC has expected FFA_VERSION.
379 - Checking that expected FF-A endpoints are deployed in the system.
380 - Getting global TFTF mailbox.
381
382- Replace '.inst' AArch64 machine directives with CPU Memory Tagging Extension
383 instructions in 'test_mte_instructions' function.
384
385- Add build option for Arm Feature Modifiers.
386 - This patch adds a new ARM_ARCH_FEATURE build option to add support
387 for compiler's feature modifiers.
388
389- Enable 8 cores support for Theodul DSU(DynamIQ Shared Unit) for the
390 Total Compute (TC0) platform.
391
392- New tests:
393
394 - Remove redundant code and add better tests for TRNG SMCs.
395 - Tests that the Version, Features, and RND calls conform to the spec.
396
397 - New tests for v8.6 AMU enhancements (FEAT_AMUv1p1)
398 - Make sure AMU offsets are being saved and restored properly.
399
400 - Tests to request SP-to-SP memory share.
401
402 - SP-to-SP direct messaging deadlock test.
403 - TFTF sends CACTUS_REQ_DEADLOCK_CMD to cactus SP.
404
405Cactus(Secure-EL1 test partition)
406~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
407
408- Enable managed exit for primary cactus secure partition.
409
410- Helper commands needed for interrupt testing.
411
412- Add handler from managed exit FIQ interrupt.
413
414- Make ffa_id global.
415
416- Implement HF_INTERRUPT_ENABLE Hafnium hypervisor call wrapper. With this
417 service, a secure partition calls into the SPMC to enable/disable a
418 particular virtual interrupt.
419
420- Invalidate the data cache for the cactus image.
421
422- Helper commands needed for interrupt testing.
423 - CACTUS_SLEEP_CMD & CACTUS_INTERRUPT_CMD added.
424
425- Decouple exception handling from tftf framework.
426 - With new interrupt related tests coming up in Cactus, added separate
427 exception handler code for irq/fiq in Cactus.
428
429- Hypervisor calls moved to a separate module.
430
431- Add secondary entry point register function.
432
433- Declare third SP instance as UP SP.
434
435- Provision a cold boot path for secondary cores (or secondary pinned
436 execution contexts).
437
438- Tidy message loop, commands definitions, direct messaging API definitions.
439
440- Helpers for error logging after FF-A calls.
441
442- Properly placing Cactus test files.
443
444- Tidying FF-A Memory Sharing tests.
445
446- Use CACTUS_ECHO_CMD in direct message tests.
447
448- Refactor handling of commands.
449 - Added helper macros to define a command handler, build a command table
450 in which each element is a pair of the handler and respective command
451 ID. Available tests have been moved to their own command handler.
452
453- Extend arguments in commands responses.
454 - In the test commands framework, added template to extend number of
455 values to include in a command response.
456
457- Check FF-A return is a valid direct response.
458 - Added a helper function to check if return of FFA_MSG_SEND_DIRECT_REQ
459 is FFA_MSG_SEND_DIRECT_RESP.
460
461- FFA_MSG_DIRECT_RESP call extended to use 5 registers.
462
463- Added accessors for arguments from FF-A calls.
464 - Some accessors for arguments from FF-A calls, namely for func id, error
465 code, and direct message destination/source.
466
467- Use virtual counter for sp_sleep.
468 - Changes sp_sleep() to use virtual counter instead of physical counter.
469
470- Checks if SIMD vectors are preserved in the normal world while transitioning
471 from normal world to secure world and back to normal world.
472
473- Tidying common code to tftf and cactus.
474
475- Refactor cactus_test_cmds.h to incorporate static inline functions instead
476 of macros to enforce type checking.
477
478- Removed reference to Hafnium in name from helper function and macro to
479 make them generic.
480
481- For consistency added the cmd id 'CACTUS_MEM_SEND_CMD'.
482
483- Add command to request memory sharing between SPs.
484
485- Add & handle commands 'CACTUS_REQ_ECHO_CMD' and 'CACTUS_ECHO_CMD'.
486
487- Update README with list of sample partitions.
488
489- Remove reference to PSA from xml test file.
490
491- Reduce tests verbosity in release mode.
492 - Update few NOTICE messages to VERBOSE/INFO.
493
494- Fix conversion issues on cactus responses.
495
496- Create RXTX map/configure helper macros and use them.
497
498- Update OP-TEE version used for testing to 3.10.
499 - SPMC as S-EL1 tests using OP-TEE depend on a static binary stored as
500 a CI file. This binary corresponds to a build of OP-TEE v3.10.
501
502- Add uart2 to device-regions node.
503 - First SP no longer has an open access to the full system peripheral
504 range and devices must be explicitly declared in the SP manifest.
505
506- New tests:
507
508 - Test for exercising SMMUv3 driver to perform stage2 translation.
509
510 - Test handling of non-secure interrupt while running SP.
511
512 - Add secondary cores direct messaging test for SPM.
513
514 - Testing deadlock by FF-A direct message.
515 - Added command CACTUS_DEADLOCK_CMD to file cactus_test_cmds.h to create
516 a deadlock scenario using FF-A direct message interfaces.
517
518 - Test SP-to-SP memory share operations
519 - Handle 'CACTUS_REQ_MEM_SEND_CMD' by sending memory to the receiver SP.
520
521 - Implemented test to validate FFA_RXTX_MAP ABI.
522
Manish V Badarkheab787a52020-10-04 18:33:44 +0100523Version 2.4
524-----------
525
526New features
527^^^^^^^^^^^^
528- More tests are made available in this release to help validate the
529 functionalities in the following areas:
530 - SMCCC.
531 - New architecture specific features.
532 - FF-A features.
533 - New platform ports.
534
535- Various improvements to test framework and test suite such as documentation,
536 removing un-necessary dependencies, etc.
537
538TFTF
539~~~~
540
541- Remove dependencies from FVP to generic code by converting some FVP platform
542 specific macros to the common macros.
543
544- Remove make as a package dependency to compile TF-A test code.
545
546- Move defaults values and macro defs in a separate folder from Makefile.
547
548- Allow alternate stdout to be used apart from pl011 UART.
549
550- Get FVP platform's topology from build options to make FVP platform
551 configuration more flexible and eliminate test errors when the platform
552 is configured with number of CPUs less than default values in the makefile.
553
554- Update the FIP corrupt address which is used to corrupt BL2 image that helps
555 to trigger firmware update process.
556
557- Add explicit barrier before sev() in tftf_send_event_common API to avoid
558 core hang.
559
560- Align output properly on issuing make help_tests by removing dashes
561 and sort tests.
562
563- Moved a few FVP and Juno specific defined from common header files to platform
564 specific header files.
565
566- Replace SPCI with PSA FF-A in code as SPCI is now called as FF-A.
567
568- Add owner field to sp_layout generation to differentiate owner of SP which
569 could either be Silicon Provider or Platform provider.
570
571- Add v8.5 Branch Target Identifier(BTI) support in TFTF.
572
573- Remove dependency on SYS_CNT_BASE1 to read the memory mapped timers.
574
575- Enables SError aborts for all CPUs, during their power on sequence.
576
577- Documentation:
578
579 - Use conditional assignment on sphinx variables so that they can be
580 overwritten by environment and/or command line.
581
582 - Add support for documentation build as a target in Makefile.
583
584 - Update list of maintainers.
585
586 - Update documentation to explain how to locally build the documentation.
587
588 - Add .editorconfig from TF-A to define the coding style.
589
590 - Fix documentation to include 'path/to' prefix when specifying tftf.bin on
591 make fip cmd.
592
593 - Use docker to build documentation.
594
595 - Replace SPCI with PSA FF-A in documentation as SPCI is now called
596 as FF-A.
597
598- NVIDIA Tegra194:
599
600 - Skip CPU suspend tests requiring SGI as wake source as Tegra194 platforms
601 do not support CPU suspend power down and cannot be woken up with an SGI.
602
603 - Disable some system suspend test cases.
604
605 - Create dummy SMMU context for system resume to allow the System Resume
606 Firmware to complete without any errors or warnings.
607
608 - Increase RTC step value to 5ms as RTC consumes 250us for each register
609 read/write. Increase the step value to 5ms to cover all the register
610 read/write in program_timer().
611
612 - Skip some timer framework validation tests as CPUs on Tegra194 platforms
613 cannot be woken up with the RTC timer interrupt after power off.
614
615 - Introduce per-CPU Hypervisor Timer Interrupt ID.
616
617 - Skip PSCI STAT tests requiring PSTATE_TYPE_POWERDOWN as Tegra194 platforms
618 do not support CPU suspend with state type as PSTATE_TYPE_POWERDOWN.
619
620 - Disable boot requirement tests as Tegra194 platforms do not support memory
621 mapped timers.
622
623 - Skips the test "Create all power states and validate EL3 power state parsing"
624 from the "EL3 power state parser validation" test suite as it is not in
625 sync with this expectation.
626
627 - Moved reset, timers. wake, watchdog drivers from Tegra194 specific folder to
628 common driver folder so that these drivers can be used for other NVIDIA platforms.
629
630- New tests:
631
632 - Add test for SDEI RM_ANY routing mode.
633
634 - Add initial platform support for TC0.
635
636 - Add SMC fuzzing module test.
637
638 - Add test case for SMCCC_ARCH_SOC_ID feature.
639
640 - Add test that supports ARMv8.6-FGT in TF-A.
641
642 - Add test that supports ARMv8.6-ECV in TF-A.
643
644 - Add test for FFA_VERSION interface.
645
646 - Add test for FFA_FEATURES interface.
647
648 - Add console driver for the TI UART 16550.
649
650 - Add tests for FF-A memory sharing interfaces between tftf
651 and cactus secure partitions.
652
653 - NVIDIA Tegra194:
654
655 - Introduce platform port for Tegra194 to to initialize the tftf
656 framework and execute tests on the CPUs.
657
658 - Introduce power management support.
659
660 - Introduce support for RTC as wake source.
661
662 - Introduce system reset functionality test.
663
664 - Introduce watchdog timer test.
665
666 - Introduce support for NVIDIA Denver CPUs.
667
668 - Introduce RAS uncorrectable error injection test.
669
670 - Introduce tests to verify the Video Memory resize interface.
671
672 - Introduce test to inject RAS corrected errors for all supported
673 nodes from all CPUs.
674
675 - Introduce a test to get return value from SMC SiP function
676 TEGRA_SIP_GET_SMMU_PER.
677
678 - NVIDIA Tegra196:
679
680 - Introduce initial support for Tegra186 platforms.
681
682 - NVIDIA Tegra210:
683
684 - Introduce initial support for Tegra210 platforms.
685
686Secure partition - Cactus
687~~~~~~~~~~~~~~~~~~~~~~~~~
688
689- TFTF doesn't need to boot Secondary Cactus as Hafnium now boots all
690 partitions according to "boot-order" field value in the partition
691 manifests.
692
693- Remove test files related to deprecated SPCI Alpha specification and
694 SPRT interface.
695
696- Select different stdout device at runtime as primary VM can access
697 to UART while secondary VM's use hypervisor call to SPM for debug
698 logging.
699
700- An SP maps its RX/TX buffers in its EL1&0 Stage-1 translation regime.
701 The same RX/TX buffers are mapped by the SPMC in the SP's EL1&0
702 Stage-2 translation regime during boot time.
703
704- Update memory/device region nodes in manifest. Memory region has 3
705 entries such as RX buffer, TX buffer and dummy. These memory region
706 entries are mapped with attributes as "RX buffer: read-only",
707 "TX buffer: read-write" and "dummy: read-write-execute".
708 Device region mapped with read-write attribute.
709
710- Create tertiary partition without RX_TX region specified to test the
711 RXTX_MAP API.
712
713- Add third partition to ffa_partition_info_get test to test that a
714 partition can successfully get information about the third cactus
715 partition.
716
717- Map RXTX region to third partition to point the mailbox to this RXTX
718 region.
719
720- Adjust the number of EC context to max number of PEs as per the FF-A
721 specification mandating that a SP must either "Implement as many ECs
722 as the number of PEs (in case of a "multi-processor" SP with pinned
723 contexts)" or "Implement a single EC (in case of a migratable
724 "uni-processor" SP).
725
726- Updated cactus test payload and TFTF ids as it is decided to have
727 secure partition FF-A ids in the range from 0x8001 to 0xfffe, 0x8000
728 and 0xffff FF-A ids are reserved for the SPMC and the SPMD respectively
729 and in the non-secure worlds, FF-A id 0 is reserved for the hypervisor
730 and 1 to 0x7fff FF-A ids are reserved for VMs.
731
732- Break the message loop on bad message request instead of replying
733 with the FF-A error ABI to the SPMC.
734
735- Remove deprecated hypervisor calls spm_vm_get_count and spm_vcpu_get_count.
736 Instead use FFA_PARTITION_INFO_GET discovery ABI.
737
738- Implement hvc call 'SPM_INTERRUPT_GET' to get interrupt id.
739
740- Re-structure platform dependent files by moving platform dependent files
741 and macros to platform specific folder.
742
743- Adjust partition info get properties to support receipt of direct
744 message request.
745
746- New tests:
747
748 - Add FFA Version Test.
749
750 - Add FFA_FEATURES test.
751
752 - Add FFA_MEM_SHARE test
753
754 - Add FFA_MEM_LEND test.
755
756 - Add FFA_MEM_DONATE test.
757
758 - Add FFA_PARTITION_INFO_GET test.
759
760 - Add exception/interrupt framework.
761
762 - Add cactus support for TC0 platform.
763
764Issues resolved since last release
765^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
766
767- Update link to SMCCC specification.
768
769- Trim down the top-level readme file to give brief overview of the project
770 and also fix/update a number of broken/out-dated links in it.
771
772- Bug fix in Multicore IRQ spurious test.
773
774- Fix memory regions mapping with no NS bit set.
775
776- Reenable PSCI NODE_HW_STATE test which was disabled earlier due to
777 outdated SCP firmware.
778
779- Fix Aarch32 zeromem() function by avoiding infinite loop in 'zeromem'
780 function and optimizing 'memcpy4' function.
781
782- Add missing help_tests info on help target in the top-level Makefile.
783
784- Trim down the readme file as it does not need to provide detailed
785 information, instead it can simply be a landing page providing a brief
786 overview of the project and redirecting the reader to RTD for further
787 information.
788
789- Fix maximum number of CPUs in DSU cluster by setting maximum number of CPUs
790 in DSU cluster to 8.
791
Madhukar Pappireddyfbac3db2020-04-08 15:44:38 -0500792Version 2.3
793-----------
794
795New features
796^^^^^^^^^^^^
797
798- More tests are made available in this release to help validate
799 the functionality of TF-A.
800
801- CI upgraded to use GCC 9.2-2019.12 toolchain for tf-a-tests.
802
803- Various improvements to test framework and test suite.
804
805TFTF
806~~~~
807
808- Support for extended register usage as per SMCCC v1.2 specification.
809
810- Support for FVP platforms with SMT capabilities.
811
812- Improved support for documentation through addition of basic Sphinx
813 configuration and Makefile similar to TF-A repository.
814
815- Enhancement to libc library synchronous to TF-A code base.
816
817- ARMv8.3-PAuth enabled for all FWU tests in TFTF.
818
819- TFTF made RFC 4122 compliant by converting UUIDs to network order format.
820
821- Build improvement by deprecating custom AARCH64/AARCH32 macros in favor of
822 __arch64__ macro provided by compiler.
823
824- Support for HVC as a SMCCC conduit in TFTF.
825
826- New tests:
827
828 - AArch32 tests for checking if PMU counters leak in secure world.
829
830 - Add new debug filesystem (debugfs) test.
831
832 - Add a SPCI direct messaging test targeting bare-metal cactus SP.
833
834
835Secure partitions
836~~~~~~~~~~~~~~~~~
837
838Cactus
839~~~~~~
840
841- Several build improvements and symbol relocation fixup to make it position
842 independent executable.
843
844- Update of sample manifest to SPCI Beta1 format.
845
846- Support for generating JSON file as required by TF-A.
847
848Issues resolved since last release
849^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
850
851- Makefile bug fix for performing parallel builds.
852
853- Add missing D-cache invalidation of RW memory in tftf_entrypoint to safeguard
854 against possible corruption.
855
856- Fixes in GIC drivers to support base addresses beyond 4G range.
857
858- Fix build with XML::LibXML 2.0202 Perl module
859
860Known issues and limitations
861^^^^^^^^^^^^^^^^^^^^^^^^^^^^
862
863The sections below list the known issues and limitations of each test image
864provided in this repository. Unless and otherwise stated, issues and limitations
865stated in previous release continue to exist in this release.
866
867TFTF
868~~~~
869- NODE_HW_STATE test has been temporarily disabled for sgi575 platform due to a
870 dependency on SCP binaries version 2.5
871
Paul Beesley24a6bd62019-10-24 11:57:00 +0000872Version 2.2
873-----------
Madhukar Pappireddy482079d2019-10-10 02:30:40 -0500874
875New features
Paul Beesley24a6bd62019-10-24 11:57:00 +0000876^^^^^^^^^^^^
Madhukar Pappireddy482079d2019-10-10 02:30:40 -0500877
878- A wide range of tests are made available in this release to help validate
879 the functionality of TF-A.
880
881- Various improvements to test framework and test suite.
882
883TFTF
Paul Beesley24a6bd62019-10-24 11:57:00 +0000884~~~~
Madhukar Pappireddy482079d2019-10-10 02:30:40 -0500885
886- Enhancement to xlat table library synchronous to TF-A code base.
887
888- Enabled strict alignment checks (SCTLR.A & SCTLR.SA) in all images.
889
890- Support for a simple console driver. Currently it serves as a placeholder
891 with empty functions.
892
893- A topology helper API is added in the framework to get parent node info.
894
895- Support for FVP with clusters having upto 8 CPUs.
896
897- Enhanced linker script to separate code and RO data sections.
898
899- Relax SMC calls tests. The SMCCC specification recommends Trusted OSes to
900 mitigate the risk of leaking information by either preserving the register
901 state over the call, or returning a constant value, such as zero, in each
902 register. Tests only allowed the former behaviour and have been extended to
903 allow the latter as well.
904
905- Pointer Authentication enabled on warm boot path with individual APIAKey
906 generation for each CPU.
907
908- New tests:
909
910 - Basic unit tests for xlat table library v2.
911
912 - Tests for validating SVE support in TF-A.
913
914 - Stress tests for dynamic xlat table library.
915
916 - PSCI test to measure latencies when turning ON a cluster.
917
918 - Series of AArch64 tests that stress the secure world to leak sensitive
919 counter values.
920
921 - Test to validate PSCI SYSTEM_RESET call.
922
923 - Basic tests to validate Memory Tagging Extensions are being enabled and
924 ensuring no undesired leak of sensitive data occurs.
925
926- Enhanced tests:
927
928 - Improved tests for Pointer Authentication support. Checks are performed
929 to see if pointer authentication keys are accessible as well as validate
930 if secure keys are being leaked after a PSCI version call or TSP call.
931
932 - Improved AMU test to remove unexecuted code iterating over Group1 counters
933 and fix the conditional check of AMU Group0 counter value.
934
935Secure partitions
Paul Beesley24a6bd62019-10-24 11:57:00 +0000936~~~~~~~~~~~~~~~~~
Madhukar Pappireddy482079d2019-10-10 02:30:40 -0500937
938A new Secure Partition Quark is introduced in this release.
939
940Quark
Paul Beesley24a6bd62019-10-24 11:57:00 +0000941~~~~~
Madhukar Pappireddy482079d2019-10-10 02:30:40 -0500942
943The Quark test secure partition provided is a simple service which returns a
944magic number. Further, a simple test is added to test if Quark is functional.
945
946Issues resolved since last release
Paul Beesley24a6bd62019-10-24 11:57:00 +0000947^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Madhukar Pappireddy482079d2019-10-10 02:30:40 -0500948
949- Bug fix in libc memchr implementation.
950
951- Bug fix in calculation of number of CPUs.
952
953- Streamlined SMC WORKAROUND_2 test and fixed a false fail on Cortex-A76 CPU.
954
955- Pointer Authentication support is now available for secondary CPUs and the
956 corresponding tests are stable in this release.
957
958Known issues and limitations
Paul Beesley24a6bd62019-10-24 11:57:00 +0000959^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Madhukar Pappireddy482079d2019-10-10 02:30:40 -0500960
961The sections below list the known issues and limitations of each test image
962provided in this repository. Unless and otherwise stated, issues and limitations
963stated in previous release continue to exist in this release.
964
965TFTF
Paul Beesley24a6bd62019-10-24 11:57:00 +0000966~~~~
Madhukar Pappireddy482079d2019-10-10 02:30:40 -0500967- Multicore spurious interrupt test is observed to have unstable behavior. As a
968 temporary solution, this test is skipped for AArch64 Juno configurations.
969
970- Generating SVE instructions requires `O3` compilation optimization. Since the
971 current build structure does not allow compilation flag modification for
972 specific files, the function which tests support for SVE has been pre-compiled
973 and added as an assembly file.
974
975
Sandrine Bailleux8cd3cb82019-03-28 09:34:55 +0100976
Paul Beesley24a6bd62019-10-24 11:57:00 +0000977Version 2.1
978-----------
Sandrine Bailleux8cd3cb82019-03-28 09:34:55 +0100979
980New features
Paul Beesley24a6bd62019-10-24 11:57:00 +0000981^^^^^^^^^^^^
Sandrine Bailleux8cd3cb82019-03-28 09:34:55 +0100982
983- Add initial support for testing Secure Partition Client Interface (SPCI)
984 and Secure Partition Run-Time (SPRT) standards.
985
986 Exercise the full communication flow throughout the software stack, involving:
987
988 - A Secure-EL0 test partition as the Trusted World agent.
989
990 - TFTF as the Normal World agent.
991
992 - The Secure Partition Manager (SPM) in TF-A.
993
994- Various stability improvements, code refactoring and clean ups.
995
996TFTF
Paul Beesley24a6bd62019-10-24 11:57:00 +0000997~~~~
Sandrine Bailleux8cd3cb82019-03-28 09:34:55 +0100998
999- Reorganize tests build infrastructure to allow the selection of a subset of
1000 tests.
1001
1002- Reorganize the platform layer for improved clarity and simplicity.
1003
1004- Sanitise inclusion of drivers header files.
1005
1006- Enhance the test report format for improved clarity and conciseness.
1007
1008- Dump CPU registers when hitting an unexpected exception. Previously, this
1009 would silently loop forever.
1010
1011- Import libc from TF-A to better align the two code bases.
1012
1013- New tests:
1014
1015 - SPM tests for exercising communication through either the MM or SPCI/SPRT
1016 interfaces.
1017
1018 - SMC calling convention tests.
1019
1020 - Initial tests for Armv8.3 Pointer Authentication support (experimental).
1021
1022- New platform ports:
1023
1024 - `Arm SGI-575`_ FVP.
1025
1026 - Hikey960 board (experimental).
1027
1028 - `Arm Neoverse Reference Design N1 Edge (RD-N1-Edge)`_ FVP (experimental).
1029
1030Secure partitions
Paul Beesley24a6bd62019-10-24 11:57:00 +00001031~~~~~~~~~~~~~~~~~
Sandrine Bailleux8cd3cb82019-03-28 09:34:55 +01001032
1033We now have 3 Secure Partitions to test the SPM implementation in TF-A.
1034
1035Cactus-MM
1036'''''''''
1037
1038The Cactus test secure partition provided in version 2.0 has been renamed into
1039"*Cactus-MM*". It is still responsible for testing the SPM implementation based
1040on the Arm Management Mode Interface.
1041
1042Cactus
1043''''''
1044
1045This is a new test secure partition (as the former "*Cactus*" has been renamed
1046into "*Cactus-MM*", see above).
1047
1048Unlike *Cactus-MM*, this image tests the SPM implementation based on the SPCI
1049and SPRT draft specifications.
1050
1051It runs in Secure-EL0 and performs the following tasks:
1052
1053- Test that TF-A has correctly setup the secure partition environment (access
1054 to cache maintenance operations, to floating point registers, etc.)
1055
1056- Test that TF-A accepts to change data access permissions and instruction
1057 permissions on behalf of Cactus for memory regions the latter owns.
1058
1059- Test communication with SPM through SPCI/SPRT interfaces.
1060
1061Ivy
1062'''
1063
1064This is also a new test secure partition. It is provided in order to test
1065multiple partitions support in TF-A. It is derived from Cactus and essentially
1066provides the same services but with different identifiers at the moment.
1067
1068EL3 payload
Paul Beesley24a6bd62019-10-24 11:57:00 +00001069~~~~~~~~~~~
Sandrine Bailleux8cd3cb82019-03-28 09:34:55 +01001070
1071- New platform ports:
1072
1073 - `Arm SGI-575`_ FVP.
1074
1075 - `Arm Neoverse Reference Design N1 Edge (RD-N1-Edge)`_ FVP (experimental).
1076
1077Issues resolved since last release
Paul Beesley24a6bd62019-10-24 11:57:00 +00001078^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Sandrine Bailleux8cd3cb82019-03-28 09:34:55 +01001079
1080- The GICv2 spurious IRQ test is no longer Juno-specific. It is now only
1081 GICv2-specific.
1082
1083- The manual tests in AArch32 state now work properly. After investigation,
1084 we identified that this issue was not AArch32 specific but concerned any
1085 test relying on state information persisting across reboots. It was due to
1086 an incorrect build configuration.
1087
1088- Cactus-MM now successfully links with GNU toolchain 7.3.1.
1089
1090Known issues and limitations
Paul Beesley24a6bd62019-10-24 11:57:00 +00001091^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Sandrine Bailleux8cd3cb82019-03-28 09:34:55 +01001092
1093The sections below lists the known issues and limitations of each test image
1094provided in this repository.
1095
1096TFTF
Paul Beesley24a6bd62019-10-24 11:57:00 +00001097~~~~
Sandrine Bailleux8cd3cb82019-03-28 09:34:55 +01001098
1099The TFTF test image might be conceptually sub-divided further in 2 parts: the
1100tests themselves, and the test framework they are based upon.
1101
1102Test framework
Paul Beesley24a6bd62019-10-24 11:57:00 +00001103~~~~~~~~~~~~~~
Sandrine Bailleux8cd3cb82019-03-28 09:34:55 +01001104
1105- Some stability issues.
1106
1107- No mechanism to abort tests when they time out (e.g. this could be
1108 implemented using a watchdog).
1109
1110- No convenient way to include or exclude tests on a per-platform basis.
1111
1112- Power domains and affinity levels are considered equivalent but they may
1113 not necessarily be.
1114
1115- Need to provide better support to alleviate duplication of test code. There
1116 are some recurrent test patterns for which helper functions should be
1117 provided. For example, bringing up all CPUs on the platform and executing the
1118 same function on all of them, or programming an interrupt and waiting for it
1119 to trigger.
1120
1121- Every CPU that participates in a test must return from the test function. If
1122 it does not - e.g. because it powered itself off for testing purposes - then
1123 the test framework will wait forever for this CPU. This limitation is too
1124 restrictive for some tests.
1125
1126- No protection against interrupted flash operations. If the target is reset
1127 while some data is written to flash, the test framework might behave
1128 incorrectly on reset.
1129
1130- When compiling the code, if the generation of the ``tests_list.c`` and/or
1131 ``tests_list.h`` files fails, the build process is not aborted immediately
1132 and will only fail later on.
1133
1134- The directory layout requires further improvements. Most of the test
1135 framework code has been moved under the ``tftf/`` directory to better isolate
1136 it but this effort is not complete. As a result, there are still some TFTF
1137 files scattered around.
1138
1139- Pointer Authentication testing is experimental and incomplete at this stage.
1140 It is only enabled on the primary CPU on the cold boot.
1141
1142Tests
Paul Beesley24a6bd62019-10-24 11:57:00 +00001143~~~~~
Sandrine Bailleux8cd3cb82019-03-28 09:34:55 +01001144
1145- Some tests are implemented for AArch64 only and are skipped on AArch32.
1146
1147- Some tests are not robust enough:
1148
1149 - Some tests might hang in some circumstances. For example, they might wait
1150 forever for a condition to become true.
1151
1152 - Some tests rely on arbitrary time delays instead of proper synchronization
1153 when executing order-sensitive steps.
1154
1155 - Some tests have been implemented in a practical manner: they seem to work
1156 on actual hardware but they make assumptions that are not guaranteed by
1157 the Arm architecture. Therefore, they might fail on some other platforms.
1158
1159- PSCI stress tests are very unreliable and will often hang. The root cause is
1160 not known for sure but this might be due to bad synchronization between CPUs.
1161
1162- The GICv2 spurious IRQ test sometimes fails with the following error message:
1163
1164 ``SMC @ lead CPU returned 0xFFFFFFFF 0x8 0xC``
1165
1166 The root cause is unknown.
1167
1168- The FWU tests take a long time to complete. This is because they wait for the
1169 watchdog to reset the system. On FVP, TF-A configures the watchdog period to
1170 about 4 min. This limit is excessive for an automated testing context and
1171 leaves the user without feedback and unable to determine if the tests are
1172 proceeding properly.
1173
1174- The test "Target timer to a power down cpu" sometimes fails with the
1175 following error message:
1176
1177 ``Expected timer switch: 4 Actual: 3``
1178
1179 The root cause is unknown.
1180
1181FWU images
Paul Beesley24a6bd62019-10-24 11:57:00 +00001182~~~~~~~~~~
Sandrine Bailleux8cd3cb82019-03-28 09:34:55 +01001183
1184- The FWU tests do not work on the revC of the Base AEM FVP. They only work on
1185 the revB.
1186
1187- NS-BL1U and NS-BL2U images reuse TFTF-specific code for legacy reasons. This
1188 is not a clean design and may cause confusion.
1189
1190Test secure partitions (Cactus, Cactus-MM, Ivy)
Paul Beesley24a6bd62019-10-24 11:57:00 +00001191~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sandrine Bailleux8cd3cb82019-03-28 09:34:55 +01001192
1193- This is experimental code. It's likely to change a lot as the secure
1194 partition software architecture evolves.
1195
1196- Supported on AArch64 FVP platform only.
1197
1198All test images
Paul Beesley24a6bd62019-10-24 11:57:00 +00001199~~~~~~~~~~~~~~~
Sandrine Bailleux8cd3cb82019-03-28 09:34:55 +01001200
1201- TF-A Tests are derived from a fork of TF-A so:
1202
1203 - they've got some code in common but lag behind on some features.
1204
1205 - there might still be some irrelevant references to TF-A.
1206
1207- Some design issues.
1208 E.g. TF-A Tests inherited from the I/O layer of TF-A, which still needs a
1209 major rework.
1210
1211- Cannot build TF-A Tests with Clang. Only GCC is supported.
1212
1213- The build system does not cope well with parallel building. The user should
1214 not attempt to run multiple jobs in parallel with the ``-j`` option of `GNU
1215 make`.
1216
1217- The build system does not properly track build options. A clean build must be
1218 performed every time a build option changes.
1219
1220- UUIDs are not compliant to RFC 4122.
1221
1222- No floating point support. The code is compiled with GCC flag
1223 ``-mgeneral-regs-only``, which prevents the compiler from generating code
1224 that accesses floating point registers. This might limit some test scenarios.
1225
1226- The documentation is too lightweight.
1227
1228- Missing instruction barriers in some places before reading the system counter
1229 value. As a result, the CPU could speculatively read it and any delay loop
1230 calculations might be off (because based on stale values). We need to examine
1231 all such direct reads of the ``CNTPCT_EL0`` register and replace them with a
1232 call to ``syscounter_read()`` where appropriate.
1233
Paul Beesley24a6bd62019-10-24 11:57:00 +00001234Version 2.0
1235-----------
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001236
1237New features
Paul Beesley24a6bd62019-10-24 11:57:00 +00001238^^^^^^^^^^^^
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001239
1240This is the first public release of the Trusted Firmware-A Tests source code.
1241
1242TFTF
Paul Beesley24a6bd62019-10-24 11:57:00 +00001243~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001244
1245- Provides a baremetal test framework to exercise TF-A features through its
1246 ``SMC`` interface.
1247
1248- Integrates easily with TF-A: the TFTF binary is packaged in the FIP image
1249 as a ``BL33`` component.
1250
1251- Standalone binary that runs on the target without human intervention (except
1252 for some specific tests that require a manual target reset).
1253
1254- Designed for multi-core testing. The various sub-frameworks allow maximum
1255 parallelism in order to stress the firmware.
1256
1257- Displays test results on the UART output. This may then be parsed by an
1258 external tool and integrated in a continuous integration system.
1259
1260- Supports running in AArch64 (NS-EL2 or NS-EL1) and AArch32 states.
1261
1262- Supports parsing a tests manifest (XML file) listing the tests to include in
1263 the binary.
1264
1265- Detects most platform features at run time (e.g. topology, GIC version, ...).
1266
1267- Provides a topology enumeration framework. Allows tests to easily go through
1268 affinity levels and power domain nodes.
1269
1270- Provides an event framework to synchronize CPU operations in a multi-core
1271 context.
1272
1273- Provides a timer framework. Relies on a single global timer to generate
1274 interrupts for all CPUs in the system. This allows tests to easily program
1275 interrupts on demand to use as a wake-up event source to come out of CPU
1276 suspend state for example.
1277
1278- Provides a power-state enumeration framework. Abstracts the valid power
1279 states supported on the platform.
1280
1281- Provides helper functions for power management operations (CPU hotplug,
1282 CPU suspend, system suspend, ...) with proper saving of the hardware state.
1283
1284- Supports rebooting the platform at the end of each test for greater
1285 independence between tests.
1286
1287- Supports interrupting and resuming a test session. This relies on storing
1288 test results in non-volatile memory (e.g. flash).
1289
1290FWU images
Paul Beesley24a6bd62019-10-24 11:57:00 +00001291~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001292
1293- Provides example code to exercise the Firmware Update feature of TF-A.
1294
1295- Tests the robustness of the FWU state machine implemented in the TF-A by
1296 sending valid and invalid authentication, copy and image execution requests
1297 to the TF-A BL1 image.
1298
1299EL3 test payload
Paul Beesley24a6bd62019-10-24 11:57:00 +00001300~~~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001301
1302- Tests the ability of TF-A to load an EL3 payload.
1303
1304Cactus test secure partition
Paul Beesley24a6bd62019-10-24 11:57:00 +00001305~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001306
1307- Tests that TF-A has correctly setup the secure partition environment: it
1308 should be allowed to perform cache maintenance operations, access floating
1309 point registers, etc.
1310
1311- Tests the ability of a secure partition to request changing data access
1312 permissions and instruction permissions of memory regions it owns.
1313
1314- Tests the ability of a secure partition to handle StandaloneMM requests.
1315
1316Known issues and limitations
Paul Beesley24a6bd62019-10-24 11:57:00 +00001317^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001318
1319The sections below lists the known issues and limitations of each test image
1320provided in this repository.
1321
1322TFTF
Paul Beesley24a6bd62019-10-24 11:57:00 +00001323~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001324
1325The TFTF test image might be conceptually sub-divided further in 2 parts: the
1326tests themselves, and the test framework they are based upon.
1327
1328Test framework
Paul Beesley24a6bd62019-10-24 11:57:00 +00001329~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001330
1331- Some stability issues.
1332
1333- No mechanism to abort tests when they time out (e.g. this could be
1334 implemented using a watchdog).
1335
1336- No convenient way to include or exclude tests on a per-platform basis.
1337
1338- Power domains and affinity levels are considered equivalent but they may
1339 not necessarily be.
1340
1341- Need to provide better support to alleviate duplication of test code. There
1342 are some recurrent test patterns for which helper functions should be
1343 provided. For example, bringing up all CPUs on the platform and executing the
1344 same function on all of them, or programming an interrupt and waiting for it
1345 to trigger.
1346
1347- Every CPU that participates in a test must return from the test function. If
1348 it does not - e.g. because it powered itself off for testing purposes - then
1349 the test framework will wait forever for this CPU. This limitation is too
1350 restrictive for some tests.
1351
1352- No protection against interrupted flash operations. If the target is reset
1353 while some data is written to flash, the test framework might behave
1354 incorrectly on reset.
1355
1356- When compiling the code, if the generation of the tests_list.c and/or
1357 tests_list.h files fails, the build process is not aborted immediately and
1358 will only fail later on.
1359
1360- The directory layout is confusing. Most of the test framework code has been
1361 moved under the ``tftf/`` directory to better isolate it but this effort is
1362 not complete. As a result, there are still some TFTF files scattered around.
1363
1364Tests
Paul Beesley24a6bd62019-10-24 11:57:00 +00001365~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001366
1367- Some tests are implemented for AArch64 only and are skipped on AArch32.
1368
1369- Some tests are not robust enough:
1370
1371 - Some tests might hang in some circumstances. For example, they might wait
1372 forever for a condition to become true.
1373
1374 - Some tests rely on arbitrary time delays instead of proper synchronization
1375 when executing order-sensitive steps.
1376
1377 - Some tests have been implemented in a practical manner: they seem to work
1378 on actual hardware but they make assumptions that are not guaranteed by
1379 the Arm architecture. Therefore, they might fail on some other platforms.
1380
1381- PSCI stress tests are very unreliable and will often hang. The root cause is
1382 not known for sure but this might be due to bad synchronization between CPUs.
1383
1384- The GICv2 spurious IRQ test is Juno-specific. In reality, it should only be
1385 GICv2-specific. It should be reworked to remove any platform-specific
1386 assumption.
1387
1388- The GICv2 spurious IRQ test sometimes fails with the following error message:
1389
1390 ``SMC @ lead CPU returned 0xFFFFFFFF 0x8 0xC``
1391
1392 The root cause is unknown.
1393
1394- The manual tests in AArch32 mode do not work properly. They save some state
1395 information into non-volatile memory in order to detect the reset reason but
1396 this state does not appear to be retained. As a result, these tests keep
1397 resetting infinitely.
1398
1399- The FWU tests take a long time to complete. This is because they wait for the
1400 watchdog to reset the system. On FVP, TF-A configures the watchdog period to
1401 about 4 min. This is way too long in an automated testing context. Besides,
1402 the user gets not feedback, which may let them think that the tests are not
1403 working properly.
1404
1405- The test "Target timer to a power down cpu" sometimes fails with the
1406 following error message:
1407
1408 ``Expected timer switch: 4 Actual: 3``
1409
1410 The root cause is unknown.
1411
1412FWU images
Paul Beesley24a6bd62019-10-24 11:57:00 +00001413~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001414
Sandrine Bailleux7af6c6d2018-10-22 17:09:07 +02001415- The FWU tests do not work on the revC of the Base AEM FVP. They only work on
1416 the revB.
1417
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001418- NS-BL1U and NS-BL2U images reuse TFTF-specific code for legacy reasons. This
1419 is not a clean design and may cause confusion.
1420
1421Cactus test secure partition
Paul Beesley24a6bd62019-10-24 11:57:00 +00001422~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001423
1424- Cactus is experimental code. It's likely to change a lot as the secure
1425 partition software architecture evolves.
1426
1427- Fails to link with GNU toolchain 7.3.1.
1428
1429- Cactus is supported on AArch64 FVP platform only.
1430
1431All test images
Paul Beesley24a6bd62019-10-24 11:57:00 +00001432~~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001433
1434- TF-A Tests are derived from a fork of TF-A so:
1435
1436 - they've got some code in common but lag behind on some features.
1437
1438 - there might still be some irrelevant references to TF-A.
1439
1440- Some design issues.
1441 E.g. TF-A Tests inherited from the I/O layer of TF-A, which still needs a
1442 major rework.
1443
1444- Cannot build TF-A Tests with Clang. Only GCC is supported.
1445
1446- The build system does not cope well with parallel building. The user should
1447 not attempt to run multiple jobs in parallel with the ``-j`` option of `GNU
1448 make`.
1449
1450- The build system does not properly track build options. A clean build must be
1451 performed every time a build option changes.
1452
1453- SMCCC v2 is not properly supported.
1454
1455- UUIDs are not compliant to RFC 4122.
1456
1457- No floating point support. The code is compiled with GCC flag
1458 ``-mgeneral-regs-only``, which prevents the compiler from generating code
1459 that accesses floating point registers. This might limit some test scenarios.
1460
1461- The documentation is too lightweight.
1462
1463--------------
1464
Jayanth Dodderi Chidanand8736e4b2022-05-03 15:05:11 +01001465*Copyright (c) 2018-2022, Arm Limited. All rights reserved.*
Sandrine Bailleux8cd3cb82019-03-28 09:34:55 +01001466
1467.. _Arm Neoverse Reference Design N1 Edge (RD-N1-Edge): https://developer.arm.com/products/system-design/reference-design/neoverse-reference-design
1468.. _Arm SGI-575: https://developer.arm.com/products/system-design/fixed-virtual-platforms