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