blob: 8794e55fc59f3acc9ac8f4e1c4e4fa1cb3f20241 [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
Madhukar Pappireddyda69f822021-11-09 16:05:54 -060010Version 2.6
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 - Firmware Framework for Arm A-profile(FF-A)
19 - Realm Management Extensions(RME)
20 - Embedded Trace Extension and Trace Buffer Extension (ETE and TRBE)
21
22TFTF
23~~~~
24
25- FF-A testing:
26
27 - Update FF-A version to v1.1
28 - Added helpers for SPM tests to check partition info of SPs from normal
29 world.
30 - Added tests to check for ffa_features supported.
31 - Added test for FFA_RXTX_UNMAP ABI.
32 - Added test for FFA_SPM_ID_GET.
33 - FF-A v1.1 Notifications
34
35 - Added test for notifications bitmap create and destroy ABIs.
36 - Added test for notifications set and get ABIs.
37 - Added test for notification INFO_GET ABI.
38 - Added test to check notifications pending interrupt is injected into
39 and handled by the expected vCPU in a MP setup.
40 - Added test for signaling from MP SP to UP SP.
41 - Added test to check notifications interrupt IDs retrieved with
42 FFA_FEATURES ABI.
43 - Added test to check functionality of notifications scheduled receiver
44 interrupt.
45
46 - FF-A v1.1 Secure interrupts
47
48 - Added support for handling secure interrupts in Cactus SP.
49 - Added several tests to exercise secure interrupt handling while SP
50 is in WAITING/RUNNING/BLOCKED state.
51
52- New tests:
53
54 - Enabled SVE tests
55 - Added test for trace system registers access.
56 - Added test for trace filter control registers access.
57 - Added test for trace buffer control registers access.
58 - Added test to check PSTATE in SDEI handler.
59 - Added test to check if HCRX_EL2 is accessible.
60
61- Platforms:
62
63 - TC0:
64
65 - Support for direct messaging with managed exit.
66 - Support for building S-EL0 Ivy partition.
67
68 - FVP:
69
70 - Update Cactus secure partitions to indicate Managed exit support.
71
72- Miscellaneous
73
74 - Added random seed generation capability and ability to specify build
75 parameters for SMC Fuzzer tool.
76
77Cactus (Secure-EL1 test partition)
78~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
79
80 - Added helper for Cactus SP sleep.
81 - Added test commands to request use of notifications interfaces.
82 - Added several commands that generate direct message requests to assist in
83 testing secure interrupt handling and notifications features in FF-A v1.1
84 - Added support for SP805 Trusted Watchdog module.
85
86Ivy (Secure-EL1 test partition)
87~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
88
89 - Add shim layer to Ivy partition and enable PIE.
90 - Define Ivy partition manifest and use FF-A for message handling.
91 - Prepare S-EL1/0 enviroment for enabling S-EL0 application.
92
93Realm Management Extension(RME)
94~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
95
96 - Added tests to run RMI and SPM on multiple CPUs concurrently.
97 - Added tests for multi CPU delegation and fail conditions.
98 - Added tests to query RMI version on multiple CPUs.
99
100Issues resolved since last release
101^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
102
103 - Fixed Ivy partition start address for TC0.
104 - Fixed SP manifests to use little endian format UUID.
105 - Fixed a bug in memory sharing test for Cactus SP.
106 - Invalidate data cache for NS_BL1U and NS_BL2U images.
107 - Fixed attributes to Read-Write only for memory regions described in partition
108 manifests.
109
Bipin Ravi7afea032021-05-06 14:32:52 -0500110Version 2.5
111-----------
112
113New features
114^^^^^^^^^^^^
115- More tests are made available in this release to help validate the
116 functionalities in the following areas:
117 - True Random Number Generator (TRNG) test scenarios.
118 - Multicore / Power State Controller Interface (PSCI) tests.
119 - v8.6 Activity Monitors Unit (AMU) enhancements test scenarios.
120 - Secure Partition Manager (SPM) / Firmware Framework (FF-A) v1.0 testing.
121 - Interrupt Handling between Non-secure and Secure world.
122 - Direct messages and memory sharing between Secure Partitions(SP).
123 - Many tests to exercise FF-A v1.0 ABIs.
124 - SPM saving/restoring the NS SIMD context enabling a normal world FF-A
125 endpoint (TFTF) and a secure partition to use SIMD vectors and
126 instructions independently.
127
128TFTF
129~~~~
130
131- SPM / FF-A v1.0 testing.
132 - Refactor FF-A memory sharing tests
133 - Created helper functions to initialize ffa_memory_region and to send
134 the respective memory region to the SP, making it possible to reuse
135 the logic in SP-to-SP memory share tests.
136 - Added comments to document relevant aspects about memory sharing.
137
138 - Trigger direct messaging between SPs.
139 - Use cactus command 'CACTUS_REQ_ECHO_SEND_CMD' to make cactus SPs
140 communicate with each other using direct message interfaces.
141
142 - Added helpers for SPM tests.
143 - Checking SPMC has expected FFA_VERSION.
144 - Checking that expected FF-A endpoints are deployed in the system.
145 - Getting global TFTF mailbox.
146
147- Replace '.inst' AArch64 machine directives with CPU Memory Tagging Extension
148 instructions in 'test_mte_instructions' function.
149
150- Add build option for Arm Feature Modifiers.
151 - This patch adds a new ARM_ARCH_FEATURE build option to add support
152 for compiler's feature modifiers.
153
154- Enable 8 cores support for Theodul DSU(DynamIQ Shared Unit) for the
155 Total Compute (TC0) platform.
156
157- New tests:
158
159 - Remove redundant code and add better tests for TRNG SMCs.
160 - Tests that the Version, Features, and RND calls conform to the spec.
161
162 - New tests for v8.6 AMU enhancements (FEAT_AMUv1p1)
163 - Make sure AMU offsets are being saved and restored properly.
164
165 - Tests to request SP-to-SP memory share.
166
167 - SP-to-SP direct messaging deadlock test.
168 - TFTF sends CACTUS_REQ_DEADLOCK_CMD to cactus SP.
169
170Cactus(Secure-EL1 test partition)
171~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
172
173- Enable managed exit for primary cactus secure partition.
174
175- Helper commands needed for interrupt testing.
176
177- Add handler from managed exit FIQ interrupt.
178
179- Make ffa_id global.
180
181- Implement HF_INTERRUPT_ENABLE Hafnium hypervisor call wrapper. With this
182 service, a secure partition calls into the SPMC to enable/disable a
183 particular virtual interrupt.
184
185- Invalidate the data cache for the cactus image.
186
187- Helper commands needed for interrupt testing.
188 - CACTUS_SLEEP_CMD & CACTUS_INTERRUPT_CMD added.
189
190- Decouple exception handling from tftf framework.
191 - With new interrupt related tests coming up in Cactus, added separate
192 exception handler code for irq/fiq in Cactus.
193
194- Hypervisor calls moved to a separate module.
195
196- Add secondary entry point register function.
197
198- Declare third SP instance as UP SP.
199
200- Provision a cold boot path for secondary cores (or secondary pinned
201 execution contexts).
202
203- Tidy message loop, commands definitions, direct messaging API definitions.
204
205- Helpers for error logging after FF-A calls.
206
207- Properly placing Cactus test files.
208
209- Tidying FF-A Memory Sharing tests.
210
211- Use CACTUS_ECHO_CMD in direct message tests.
212
213- Refactor handling of commands.
214 - Added helper macros to define a command handler, build a command table
215 in which each element is a pair of the handler and respective command
216 ID. Available tests have been moved to their own command handler.
217
218- Extend arguments in commands responses.
219 - In the test commands framework, added template to extend number of
220 values to include in a command response.
221
222- Check FF-A return is a valid direct response.
223 - Added a helper function to check if return of FFA_MSG_SEND_DIRECT_REQ
224 is FFA_MSG_SEND_DIRECT_RESP.
225
226- FFA_MSG_DIRECT_RESP call extended to use 5 registers.
227
228- Added accessors for arguments from FF-A calls.
229 - Some accessors for arguments from FF-A calls, namely for func id, error
230 code, and direct message destination/source.
231
232- Use virtual counter for sp_sleep.
233 - Changes sp_sleep() to use virtual counter instead of physical counter.
234
235- Checks if SIMD vectors are preserved in the normal world while transitioning
236 from normal world to secure world and back to normal world.
237
238- Tidying common code to tftf and cactus.
239
240- Refactor cactus_test_cmds.h to incorporate static inline functions instead
241 of macros to enforce type checking.
242
243- Removed reference to Hafnium in name from helper function and macro to
244 make them generic.
245
246- For consistency added the cmd id 'CACTUS_MEM_SEND_CMD'.
247
248- Add command to request memory sharing between SPs.
249
250- Add & handle commands 'CACTUS_REQ_ECHO_CMD' and 'CACTUS_ECHO_CMD'.
251
252- Update README with list of sample partitions.
253
254- Remove reference to PSA from xml test file.
255
256- Reduce tests verbosity in release mode.
257 - Update few NOTICE messages to VERBOSE/INFO.
258
259- Fix conversion issues on cactus responses.
260
261- Create RXTX map/configure helper macros and use them.
262
263- Update OP-TEE version used for testing to 3.10.
264 - SPMC as S-EL1 tests using OP-TEE depend on a static binary stored as
265 a CI file. This binary corresponds to a build of OP-TEE v3.10.
266
267- Add uart2 to device-regions node.
268 - First SP no longer has an open access to the full system peripheral
269 range and devices must be explicitly declared in the SP manifest.
270
271- New tests:
272
273 - Test for exercising SMMUv3 driver to perform stage2 translation.
274
275 - Test handling of non-secure interrupt while running SP.
276
277 - Add secondary cores direct messaging test for SPM.
278
279 - Testing deadlock by FF-A direct message.
280 - Added command CACTUS_DEADLOCK_CMD to file cactus_test_cmds.h to create
281 a deadlock scenario using FF-A direct message interfaces.
282
283 - Test SP-to-SP memory share operations
284 - Handle 'CACTUS_REQ_MEM_SEND_CMD' by sending memory to the receiver SP.
285
286 - Implemented test to validate FFA_RXTX_MAP ABI.
287
Manish V Badarkhe86600a82020-10-04 18:33:44 +0100288Version 2.4
289-----------
290
291New features
292^^^^^^^^^^^^
293- More tests are made available in this release to help validate the
294 functionalities in the following areas:
295 - SMCCC.
296 - New architecture specific features.
297 - FF-A features.
298 - New platform ports.
299
300- Various improvements to test framework and test suite such as documentation,
301 removing un-necessary dependencies, etc.
302
303TFTF
304~~~~
305
306- Remove dependencies from FVP to generic code by converting some FVP platform
307 specific macros to the common macros.
308
309- Remove make as a package dependency to compile TF-A test code.
310
311- Move defaults values and macro defs in a separate folder from Makefile.
312
313- Allow alternate stdout to be used apart from pl011 UART.
314
315- Get FVP platform's topology from build options to make FVP platform
316 configuration more flexible and eliminate test errors when the platform
317 is configured with number of CPUs less than default values in the makefile.
318
319- Update the FIP corrupt address which is used to corrupt BL2 image that helps
320 to trigger firmware update process.
321
322- Add explicit barrier before sev() in tftf_send_event_common API to avoid
323 core hang.
324
325- Align output properly on issuing make help_tests by removing dashes
326 and sort tests.
327
328- Moved a few FVP and Juno specific defined from common header files to platform
329 specific header files.
330
331- Replace SPCI with PSA FF-A in code as SPCI is now called as FF-A.
332
333- Add owner field to sp_layout generation to differentiate owner of SP which
334 could either be Silicon Provider or Platform provider.
335
336- Add v8.5 Branch Target Identifier(BTI) support in TFTF.
337
338- Remove dependency on SYS_CNT_BASE1 to read the memory mapped timers.
339
340- Enables SError aborts for all CPUs, during their power on sequence.
341
342- Documentation:
343
344 - Use conditional assignment on sphinx variables so that they can be
345 overwritten by environment and/or command line.
346
347 - Add support for documentation build as a target in Makefile.
348
349 - Update list of maintainers.
350
351 - Update documentation to explain how to locally build the documentation.
352
353 - Add .editorconfig from TF-A to define the coding style.
354
355 - Fix documentation to include 'path/to' prefix when specifying tftf.bin on
356 make fip cmd.
357
358 - Use docker to build documentation.
359
360 - Replace SPCI with PSA FF-A in documentation as SPCI is now called
361 as FF-A.
362
363- NVIDIA Tegra194:
364
365 - Skip CPU suspend tests requiring SGI as wake source as Tegra194 platforms
366 do not support CPU suspend power down and cannot be woken up with an SGI.
367
368 - Disable some system suspend test cases.
369
370 - Create dummy SMMU context for system resume to allow the System Resume
371 Firmware to complete without any errors or warnings.
372
373 - Increase RTC step value to 5ms as RTC consumes 250us for each register
374 read/write. Increase the step value to 5ms to cover all the register
375 read/write in program_timer().
376
377 - Skip some timer framework validation tests as CPUs on Tegra194 platforms
378 cannot be woken up with the RTC timer interrupt after power off.
379
380 - Introduce per-CPU Hypervisor Timer Interrupt ID.
381
382 - Skip PSCI STAT tests requiring PSTATE_TYPE_POWERDOWN as Tegra194 platforms
383 do not support CPU suspend with state type as PSTATE_TYPE_POWERDOWN.
384
385 - Disable boot requirement tests as Tegra194 platforms do not support memory
386 mapped timers.
387
388 - Skips the test "Create all power states and validate EL3 power state parsing"
389 from the "EL3 power state parser validation" test suite as it is not in
390 sync with this expectation.
391
392 - Moved reset, timers. wake, watchdog drivers from Tegra194 specific folder to
393 common driver folder so that these drivers can be used for other NVIDIA platforms.
394
395- New tests:
396
397 - Add test for SDEI RM_ANY routing mode.
398
399 - Add initial platform support for TC0.
400
401 - Add SMC fuzzing module test.
402
403 - Add test case for SMCCC_ARCH_SOC_ID feature.
404
405 - Add test that supports ARMv8.6-FGT in TF-A.
406
407 - Add test that supports ARMv8.6-ECV in TF-A.
408
409 - Add test for FFA_VERSION interface.
410
411 - Add test for FFA_FEATURES interface.
412
413 - Add console driver for the TI UART 16550.
414
415 - Add tests for FF-A memory sharing interfaces between tftf
416 and cactus secure partitions.
417
418 - NVIDIA Tegra194:
419
420 - Introduce platform port for Tegra194 to to initialize the tftf
421 framework and execute tests on the CPUs.
422
423 - Introduce power management support.
424
425 - Introduce support for RTC as wake source.
426
427 - Introduce system reset functionality test.
428
429 - Introduce watchdog timer test.
430
431 - Introduce support for NVIDIA Denver CPUs.
432
433 - Introduce RAS uncorrectable error injection test.
434
435 - Introduce tests to verify the Video Memory resize interface.
436
437 - Introduce test to inject RAS corrected errors for all supported
438 nodes from all CPUs.
439
440 - Introduce a test to get return value from SMC SiP function
441 TEGRA_SIP_GET_SMMU_PER.
442
443 - NVIDIA Tegra196:
444
445 - Introduce initial support for Tegra186 platforms.
446
447 - NVIDIA Tegra210:
448
449 - Introduce initial support for Tegra210 platforms.
450
451Secure partition - Cactus
452~~~~~~~~~~~~~~~~~~~~~~~~~
453
454- TFTF doesn't need to boot Secondary Cactus as Hafnium now boots all
455 partitions according to "boot-order" field value in the partition
456 manifests.
457
458- Remove test files related to deprecated SPCI Alpha specification and
459 SPRT interface.
460
461- Select different stdout device at runtime as primary VM can access
462 to UART while secondary VM's use hypervisor call to SPM for debug
463 logging.
464
465- An SP maps its RX/TX buffers in its EL1&0 Stage-1 translation regime.
466 The same RX/TX buffers are mapped by the SPMC in the SP's EL1&0
467 Stage-2 translation regime during boot time.
468
469- Update memory/device region nodes in manifest. Memory region has 3
470 entries such as RX buffer, TX buffer and dummy. These memory region
471 entries are mapped with attributes as "RX buffer: read-only",
472 "TX buffer: read-write" and "dummy: read-write-execute".
473 Device region mapped with read-write attribute.
474
475- Create tertiary partition without RX_TX region specified to test the
476 RXTX_MAP API.
477
478- Add third partition to ffa_partition_info_get test to test that a
479 partition can successfully get information about the third cactus
480 partition.
481
482- Map RXTX region to third partition to point the mailbox to this RXTX
483 region.
484
485- Adjust the number of EC context to max number of PEs as per the FF-A
486 specification mandating that a SP must either "Implement as many ECs
487 as the number of PEs (in case of a "multi-processor" SP with pinned
488 contexts)" or "Implement a single EC (in case of a migratable
489 "uni-processor" SP).
490
491- Updated cactus test payload and TFTF ids as it is decided to have
492 secure partition FF-A ids in the range from 0x8001 to 0xfffe, 0x8000
493 and 0xffff FF-A ids are reserved for the SPMC and the SPMD respectively
494 and in the non-secure worlds, FF-A id 0 is reserved for the hypervisor
495 and 1 to 0x7fff FF-A ids are reserved for VMs.
496
497- Break the message loop on bad message request instead of replying
498 with the FF-A error ABI to the SPMC.
499
500- Remove deprecated hypervisor calls spm_vm_get_count and spm_vcpu_get_count.
501 Instead use FFA_PARTITION_INFO_GET discovery ABI.
502
503- Implement hvc call 'SPM_INTERRUPT_GET' to get interrupt id.
504
505- Re-structure platform dependent files by moving platform dependent files
506 and macros to platform specific folder.
507
508- Adjust partition info get properties to support receipt of direct
509 message request.
510
511- New tests:
512
513 - Add FFA Version Test.
514
515 - Add FFA_FEATURES test.
516
517 - Add FFA_MEM_SHARE test
518
519 - Add FFA_MEM_LEND test.
520
521 - Add FFA_MEM_DONATE test.
522
523 - Add FFA_PARTITION_INFO_GET test.
524
525 - Add exception/interrupt framework.
526
527 - Add cactus support for TC0 platform.
528
529Issues resolved since last release
530^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
531
532- Update link to SMCCC specification.
533
534- Trim down the top-level readme file to give brief overview of the project
535 and also fix/update a number of broken/out-dated links in it.
536
537- Bug fix in Multicore IRQ spurious test.
538
539- Fix memory regions mapping with no NS bit set.
540
541- Reenable PSCI NODE_HW_STATE test which was disabled earlier due to
542 outdated SCP firmware.
543
544- Fix Aarch32 zeromem() function by avoiding infinite loop in 'zeromem'
545 function and optimizing 'memcpy4' function.
546
547- Add missing help_tests info on help target in the top-level Makefile.
548
549- Trim down the readme file as it does not need to provide detailed
550 information, instead it can simply be a landing page providing a brief
551 overview of the project and redirecting the reader to RTD for further
552 information.
553
554- Fix maximum number of CPUs in DSU cluster by setting maximum number of CPUs
555 in DSU cluster to 8.
556
Madhukar Pappireddybced2f32020-04-08 15:44:38 -0500557Version 2.3
558-----------
559
560New features
561^^^^^^^^^^^^
562
563- More tests are made available in this release to help validate
564 the functionality of TF-A.
565
566- CI upgraded to use GCC 9.2-2019.12 toolchain for tf-a-tests.
567
568- Various improvements to test framework and test suite.
569
570TFTF
571~~~~
572
573- Support for extended register usage as per SMCCC v1.2 specification.
574
575- Support for FVP platforms with SMT capabilities.
576
577- Improved support for documentation through addition of basic Sphinx
578 configuration and Makefile similar to TF-A repository.
579
580- Enhancement to libc library synchronous to TF-A code base.
581
582- ARMv8.3-PAuth enabled for all FWU tests in TFTF.
583
584- TFTF made RFC 4122 compliant by converting UUIDs to network order format.
585
586- Build improvement by deprecating custom AARCH64/AARCH32 macros in favor of
587 __arch64__ macro provided by compiler.
588
589- Support for HVC as a SMCCC conduit in TFTF.
590
591- New tests:
592
593 - AArch32 tests for checking if PMU counters leak in secure world.
594
595 - Add new debug filesystem (debugfs) test.
596
597 - Add a SPCI direct messaging test targeting bare-metal cactus SP.
598
599
600Secure partitions
601~~~~~~~~~~~~~~~~~
602
603Cactus
604~~~~~~
605
606- Several build improvements and symbol relocation fixup to make it position
607 independent executable.
608
609- Update of sample manifest to SPCI Beta1 format.
610
611- Support for generating JSON file as required by TF-A.
612
613Issues resolved since last release
614^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
615
616- Makefile bug fix for performing parallel builds.
617
618- Add missing D-cache invalidation of RW memory in tftf_entrypoint to safeguard
619 against possible corruption.
620
621- Fixes in GIC drivers to support base addresses beyond 4G range.
622
623- Fix build with XML::LibXML 2.0202 Perl module
624
625Known issues and limitations
626^^^^^^^^^^^^^^^^^^^^^^^^^^^^
627
628The sections below list the known issues and limitations of each test image
629provided in this repository. Unless and otherwise stated, issues and limitations
630stated in previous release continue to exist in this release.
631
632TFTF
633~~~~
634- NODE_HW_STATE test has been temporarily disabled for sgi575 platform due to a
635 dependency on SCP binaries version 2.5
636
Paul Beesley5c928952019-10-24 11:57:00 +0000637Version 2.2
638-----------
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -0500639
640New features
Paul Beesley5c928952019-10-24 11:57:00 +0000641^^^^^^^^^^^^
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -0500642
643- A wide range of tests are made available in this release to help validate
644 the functionality of TF-A.
645
646- Various improvements to test framework and test suite.
647
648TFTF
Paul Beesley5c928952019-10-24 11:57:00 +0000649~~~~
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -0500650
651- Enhancement to xlat table library synchronous to TF-A code base.
652
653- Enabled strict alignment checks (SCTLR.A & SCTLR.SA) in all images.
654
655- Support for a simple console driver. Currently it serves as a placeholder
656 with empty functions.
657
658- A topology helper API is added in the framework to get parent node info.
659
660- Support for FVP with clusters having upto 8 CPUs.
661
662- Enhanced linker script to separate code and RO data sections.
663
664- Relax SMC calls tests. The SMCCC specification recommends Trusted OSes to
665 mitigate the risk of leaking information by either preserving the register
666 state over the call, or returning a constant value, such as zero, in each
667 register. Tests only allowed the former behaviour and have been extended to
668 allow the latter as well.
669
670- Pointer Authentication enabled on warm boot path with individual APIAKey
671 generation for each CPU.
672
673- New tests:
674
675 - Basic unit tests for xlat table library v2.
676
677 - Tests for validating SVE support in TF-A.
678
679 - Stress tests for dynamic xlat table library.
680
681 - PSCI test to measure latencies when turning ON a cluster.
682
683 - Series of AArch64 tests that stress the secure world to leak sensitive
684 counter values.
685
686 - Test to validate PSCI SYSTEM_RESET call.
687
688 - Basic tests to validate Memory Tagging Extensions are being enabled and
689 ensuring no undesired leak of sensitive data occurs.
690
691- Enhanced tests:
692
693 - Improved tests for Pointer Authentication support. Checks are performed
694 to see if pointer authentication keys are accessible as well as validate
695 if secure keys are being leaked after a PSCI version call or TSP call.
696
697 - Improved AMU test to remove unexecuted code iterating over Group1 counters
698 and fix the conditional check of AMU Group0 counter value.
699
700Secure partitions
Paul Beesley5c928952019-10-24 11:57:00 +0000701~~~~~~~~~~~~~~~~~
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -0500702
703A new Secure Partition Quark is introduced in this release.
704
705Quark
Paul Beesley5c928952019-10-24 11:57:00 +0000706~~~~~
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -0500707
708The Quark test secure partition provided is a simple service which returns a
709magic number. Further, a simple test is added to test if Quark is functional.
710
711Issues resolved since last release
Paul Beesley5c928952019-10-24 11:57:00 +0000712^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -0500713
714- Bug fix in libc memchr implementation.
715
716- Bug fix in calculation of number of CPUs.
717
718- Streamlined SMC WORKAROUND_2 test and fixed a false fail on Cortex-A76 CPU.
719
720- Pointer Authentication support is now available for secondary CPUs and the
721 corresponding tests are stable in this release.
722
723Known issues and limitations
Paul Beesley5c928952019-10-24 11:57:00 +0000724^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -0500725
726The sections below list the known issues and limitations of each test image
727provided in this repository. Unless and otherwise stated, issues and limitations
728stated in previous release continue to exist in this release.
729
730TFTF
Paul Beesley5c928952019-10-24 11:57:00 +0000731~~~~
Madhukar Pappireddy74ccffa2019-10-10 02:30:40 -0500732- Multicore spurious interrupt test is observed to have unstable behavior. As a
733 temporary solution, this test is skipped for AArch64 Juno configurations.
734
735- Generating SVE instructions requires `O3` compilation optimization. Since the
736 current build structure does not allow compilation flag modification for
737 specific files, the function which tests support for SVE has been pre-compiled
738 and added as an assembly file.
739
740
Sandrine Bailleux88e96a12019-03-28 09:34:55 +0100741
Paul Beesley5c928952019-10-24 11:57:00 +0000742Version 2.1
743-----------
Sandrine Bailleux88e96a12019-03-28 09:34:55 +0100744
745New features
Paul Beesley5c928952019-10-24 11:57:00 +0000746^^^^^^^^^^^^
Sandrine Bailleux88e96a12019-03-28 09:34:55 +0100747
748- Add initial support for testing Secure Partition Client Interface (SPCI)
749 and Secure Partition Run-Time (SPRT) standards.
750
751 Exercise the full communication flow throughout the software stack, involving:
752
753 - A Secure-EL0 test partition as the Trusted World agent.
754
755 - TFTF as the Normal World agent.
756
757 - The Secure Partition Manager (SPM) in TF-A.
758
759- Various stability improvements, code refactoring and clean ups.
760
761TFTF
Paul Beesley5c928952019-10-24 11:57:00 +0000762~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +0100763
764- Reorganize tests build infrastructure to allow the selection of a subset of
765 tests.
766
767- Reorganize the platform layer for improved clarity and simplicity.
768
769- Sanitise inclusion of drivers header files.
770
771- Enhance the test report format for improved clarity and conciseness.
772
773- Dump CPU registers when hitting an unexpected exception. Previously, this
774 would silently loop forever.
775
776- Import libc from TF-A to better align the two code bases.
777
778- New tests:
779
780 - SPM tests for exercising communication through either the MM or SPCI/SPRT
781 interfaces.
782
783 - SMC calling convention tests.
784
785 - Initial tests for Armv8.3 Pointer Authentication support (experimental).
786
787- New platform ports:
788
789 - `Arm SGI-575`_ FVP.
790
791 - Hikey960 board (experimental).
792
793 - `Arm Neoverse Reference Design N1 Edge (RD-N1-Edge)`_ FVP (experimental).
794
795Secure partitions
Paul Beesley5c928952019-10-24 11:57:00 +0000796~~~~~~~~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +0100797
798We now have 3 Secure Partitions to test the SPM implementation in TF-A.
799
800Cactus-MM
801'''''''''
802
803The Cactus test secure partition provided in version 2.0 has been renamed into
804"*Cactus-MM*". It is still responsible for testing the SPM implementation based
805on the Arm Management Mode Interface.
806
807Cactus
808''''''
809
810This is a new test secure partition (as the former "*Cactus*" has been renamed
811into "*Cactus-MM*", see above).
812
813Unlike *Cactus-MM*, this image tests the SPM implementation based on the SPCI
814and SPRT draft specifications.
815
816It runs in Secure-EL0 and performs the following tasks:
817
818- Test that TF-A has correctly setup the secure partition environment (access
819 to cache maintenance operations, to floating point registers, etc.)
820
821- Test that TF-A accepts to change data access permissions and instruction
822 permissions on behalf of Cactus for memory regions the latter owns.
823
824- Test communication with SPM through SPCI/SPRT interfaces.
825
826Ivy
827'''
828
829This is also a new test secure partition. It is provided in order to test
830multiple partitions support in TF-A. It is derived from Cactus and essentially
831provides the same services but with different identifiers at the moment.
832
833EL3 payload
Paul Beesley5c928952019-10-24 11:57:00 +0000834~~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +0100835
836- New platform ports:
837
838 - `Arm SGI-575`_ FVP.
839
840 - `Arm Neoverse Reference Design N1 Edge (RD-N1-Edge)`_ FVP (experimental).
841
842Issues resolved since last release
Paul Beesley5c928952019-10-24 11:57:00 +0000843^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Sandrine Bailleux88e96a12019-03-28 09:34:55 +0100844
845- The GICv2 spurious IRQ test is no longer Juno-specific. It is now only
846 GICv2-specific.
847
848- The manual tests in AArch32 state now work properly. After investigation,
849 we identified that this issue was not AArch32 specific but concerned any
850 test relying on state information persisting across reboots. It was due to
851 an incorrect build configuration.
852
853- Cactus-MM now successfully links with GNU toolchain 7.3.1.
854
855Known issues and limitations
Paul Beesley5c928952019-10-24 11:57:00 +0000856^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Sandrine Bailleux88e96a12019-03-28 09:34:55 +0100857
858The sections below lists the known issues and limitations of each test image
859provided in this repository.
860
861TFTF
Paul Beesley5c928952019-10-24 11:57:00 +0000862~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +0100863
864The TFTF test image might be conceptually sub-divided further in 2 parts: the
865tests themselves, and the test framework they are based upon.
866
867Test framework
Paul Beesley5c928952019-10-24 11:57:00 +0000868~~~~~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +0100869
870- Some stability issues.
871
872- No mechanism to abort tests when they time out (e.g. this could be
873 implemented using a watchdog).
874
875- No convenient way to include or exclude tests on a per-platform basis.
876
877- Power domains and affinity levels are considered equivalent but they may
878 not necessarily be.
879
880- Need to provide better support to alleviate duplication of test code. There
881 are some recurrent test patterns for which helper functions should be
882 provided. For example, bringing up all CPUs on the platform and executing the
883 same function on all of them, or programming an interrupt and waiting for it
884 to trigger.
885
886- Every CPU that participates in a test must return from the test function. If
887 it does not - e.g. because it powered itself off for testing purposes - then
888 the test framework will wait forever for this CPU. This limitation is too
889 restrictive for some tests.
890
891- No protection against interrupted flash operations. If the target is reset
892 while some data is written to flash, the test framework might behave
893 incorrectly on reset.
894
895- When compiling the code, if the generation of the ``tests_list.c`` and/or
896 ``tests_list.h`` files fails, the build process is not aborted immediately
897 and will only fail later on.
898
899- The directory layout requires further improvements. Most of the test
900 framework code has been moved under the ``tftf/`` directory to better isolate
901 it but this effort is not complete. As a result, there are still some TFTF
902 files scattered around.
903
904- Pointer Authentication testing is experimental and incomplete at this stage.
905 It is only enabled on the primary CPU on the cold boot.
906
907Tests
Paul Beesley5c928952019-10-24 11:57:00 +0000908~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +0100909
910- Some tests are implemented for AArch64 only and are skipped on AArch32.
911
912- Some tests are not robust enough:
913
914 - Some tests might hang in some circumstances. For example, they might wait
915 forever for a condition to become true.
916
917 - Some tests rely on arbitrary time delays instead of proper synchronization
918 when executing order-sensitive steps.
919
920 - Some tests have been implemented in a practical manner: they seem to work
921 on actual hardware but they make assumptions that are not guaranteed by
922 the Arm architecture. Therefore, they might fail on some other platforms.
923
924- PSCI stress tests are very unreliable and will often hang. The root cause is
925 not known for sure but this might be due to bad synchronization between CPUs.
926
927- The GICv2 spurious IRQ test sometimes fails with the following error message:
928
929 ``SMC @ lead CPU returned 0xFFFFFFFF 0x8 0xC``
930
931 The root cause is unknown.
932
933- The FWU tests take a long time to complete. This is because they wait for the
934 watchdog to reset the system. On FVP, TF-A configures the watchdog period to
935 about 4 min. This limit is excessive for an automated testing context and
936 leaves the user without feedback and unable to determine if the tests are
937 proceeding properly.
938
939- The test "Target timer to a power down cpu" sometimes fails with the
940 following error message:
941
942 ``Expected timer switch: 4 Actual: 3``
943
944 The root cause is unknown.
945
946FWU images
Paul Beesley5c928952019-10-24 11:57:00 +0000947~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +0100948
949- The FWU tests do not work on the revC of the Base AEM FVP. They only work on
950 the revB.
951
952- NS-BL1U and NS-BL2U images reuse TFTF-specific code for legacy reasons. This
953 is not a clean design and may cause confusion.
954
955Test secure partitions (Cactus, Cactus-MM, Ivy)
Paul Beesley5c928952019-10-24 11:57:00 +0000956~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +0100957
958- This is experimental code. It's likely to change a lot as the secure
959 partition software architecture evolves.
960
961- Supported on AArch64 FVP platform only.
962
963All test images
Paul Beesley5c928952019-10-24 11:57:00 +0000964~~~~~~~~~~~~~~~
Sandrine Bailleux88e96a12019-03-28 09:34:55 +0100965
966- TF-A Tests are derived from a fork of TF-A so:
967
968 - they've got some code in common but lag behind on some features.
969
970 - there might still be some irrelevant references to TF-A.
971
972- Some design issues.
973 E.g. TF-A Tests inherited from the I/O layer of TF-A, which still needs a
974 major rework.
975
976- Cannot build TF-A Tests with Clang. Only GCC is supported.
977
978- The build system does not cope well with parallel building. The user should
979 not attempt to run multiple jobs in parallel with the ``-j`` option of `GNU
980 make`.
981
982- The build system does not properly track build options. A clean build must be
983 performed every time a build option changes.
984
985- UUIDs are not compliant to RFC 4122.
986
987- No floating point support. The code is compiled with GCC flag
988 ``-mgeneral-regs-only``, which prevents the compiler from generating code
989 that accesses floating point registers. This might limit some test scenarios.
990
991- The documentation is too lightweight.
992
993- Missing instruction barriers in some places before reading the system counter
994 value. As a result, the CPU could speculatively read it and any delay loop
995 calculations might be off (because based on stale values). We need to examine
996 all such direct reads of the ``CNTPCT_EL0`` register and replace them with a
997 call to ``syscounter_read()`` where appropriate.
998
Paul Beesley5c928952019-10-24 11:57:00 +0000999Version 2.0
1000-----------
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001001
1002New features
Paul Beesley5c928952019-10-24 11:57:00 +00001003^^^^^^^^^^^^
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001004
1005This is the first public release of the Trusted Firmware-A Tests source code.
1006
1007TFTF
Paul Beesley5c928952019-10-24 11:57:00 +00001008~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001009
1010- Provides a baremetal test framework to exercise TF-A features through its
1011 ``SMC`` interface.
1012
1013- Integrates easily with TF-A: the TFTF binary is packaged in the FIP image
1014 as a ``BL33`` component.
1015
1016- Standalone binary that runs on the target without human intervention (except
1017 for some specific tests that require a manual target reset).
1018
1019- Designed for multi-core testing. The various sub-frameworks allow maximum
1020 parallelism in order to stress the firmware.
1021
1022- Displays test results on the UART output. This may then be parsed by an
1023 external tool and integrated in a continuous integration system.
1024
1025- Supports running in AArch64 (NS-EL2 or NS-EL1) and AArch32 states.
1026
1027- Supports parsing a tests manifest (XML file) listing the tests to include in
1028 the binary.
1029
1030- Detects most platform features at run time (e.g. topology, GIC version, ...).
1031
1032- Provides a topology enumeration framework. Allows tests to easily go through
1033 affinity levels and power domain nodes.
1034
1035- Provides an event framework to synchronize CPU operations in a multi-core
1036 context.
1037
1038- Provides a timer framework. Relies on a single global timer to generate
1039 interrupts for all CPUs in the system. This allows tests to easily program
1040 interrupts on demand to use as a wake-up event source to come out of CPU
1041 suspend state for example.
1042
1043- Provides a power-state enumeration framework. Abstracts the valid power
1044 states supported on the platform.
1045
1046- Provides helper functions for power management operations (CPU hotplug,
1047 CPU suspend, system suspend, ...) with proper saving of the hardware state.
1048
1049- Supports rebooting the platform at the end of each test for greater
1050 independence between tests.
1051
1052- Supports interrupting and resuming a test session. This relies on storing
1053 test results in non-volatile memory (e.g. flash).
1054
1055FWU images
Paul Beesley5c928952019-10-24 11:57:00 +00001056~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001057
1058- Provides example code to exercise the Firmware Update feature of TF-A.
1059
1060- Tests the robustness of the FWU state machine implemented in the TF-A by
1061 sending valid and invalid authentication, copy and image execution requests
1062 to the TF-A BL1 image.
1063
1064EL3 test payload
Paul Beesley5c928952019-10-24 11:57:00 +00001065~~~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001066
1067- Tests the ability of TF-A to load an EL3 payload.
1068
1069Cactus test secure partition
Paul Beesley5c928952019-10-24 11:57:00 +00001070~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001071
1072- Tests that TF-A has correctly setup the secure partition environment: it
1073 should be allowed to perform cache maintenance operations, access floating
1074 point registers, etc.
1075
1076- Tests the ability of a secure partition to request changing data access
1077 permissions and instruction permissions of memory regions it owns.
1078
1079- Tests the ability of a secure partition to handle StandaloneMM requests.
1080
1081Known issues and limitations
Paul Beesley5c928952019-10-24 11:57:00 +00001082^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001083
1084The sections below lists the known issues and limitations of each test image
1085provided in this repository.
1086
1087TFTF
Paul Beesley5c928952019-10-24 11:57:00 +00001088~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001089
1090The TFTF test image might be conceptually sub-divided further in 2 parts: the
1091tests themselves, and the test framework they are based upon.
1092
1093Test framework
Paul Beesley5c928952019-10-24 11:57:00 +00001094~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001095
1096- Some stability issues.
1097
1098- No mechanism to abort tests when they time out (e.g. this could be
1099 implemented using a watchdog).
1100
1101- No convenient way to include or exclude tests on a per-platform basis.
1102
1103- Power domains and affinity levels are considered equivalent but they may
1104 not necessarily be.
1105
1106- Need to provide better support to alleviate duplication of test code. There
1107 are some recurrent test patterns for which helper functions should be
1108 provided. For example, bringing up all CPUs on the platform and executing the
1109 same function on all of them, or programming an interrupt and waiting for it
1110 to trigger.
1111
1112- Every CPU that participates in a test must return from the test function. If
1113 it does not - e.g. because it powered itself off for testing purposes - then
1114 the test framework will wait forever for this CPU. This limitation is too
1115 restrictive for some tests.
1116
1117- No protection against interrupted flash operations. If the target is reset
1118 while some data is written to flash, the test framework might behave
1119 incorrectly on reset.
1120
1121- When compiling the code, if the generation of the tests_list.c and/or
1122 tests_list.h files fails, the build process is not aborted immediately and
1123 will only fail later on.
1124
1125- The directory layout is confusing. Most of the test framework code has been
1126 moved under the ``tftf/`` directory to better isolate it but this effort is
1127 not complete. As a result, there are still some TFTF files scattered around.
1128
1129Tests
Paul Beesley5c928952019-10-24 11:57:00 +00001130~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001131
1132- Some tests are implemented for AArch64 only and are skipped on AArch32.
1133
1134- Some tests are not robust enough:
1135
1136 - Some tests might hang in some circumstances. For example, they might wait
1137 forever for a condition to become true.
1138
1139 - Some tests rely on arbitrary time delays instead of proper synchronization
1140 when executing order-sensitive steps.
1141
1142 - Some tests have been implemented in a practical manner: they seem to work
1143 on actual hardware but they make assumptions that are not guaranteed by
1144 the Arm architecture. Therefore, they might fail on some other platforms.
1145
1146- PSCI stress tests are very unreliable and will often hang. The root cause is
1147 not known for sure but this might be due to bad synchronization between CPUs.
1148
1149- The GICv2 spurious IRQ test is Juno-specific. In reality, it should only be
1150 GICv2-specific. It should be reworked to remove any platform-specific
1151 assumption.
1152
1153- The GICv2 spurious IRQ test sometimes fails with the following error message:
1154
1155 ``SMC @ lead CPU returned 0xFFFFFFFF 0x8 0xC``
1156
1157 The root cause is unknown.
1158
1159- The manual tests in AArch32 mode do not work properly. They save some state
1160 information into non-volatile memory in order to detect the reset reason but
1161 this state does not appear to be retained. As a result, these tests keep
1162 resetting infinitely.
1163
1164- The FWU tests take a long time to complete. This is because they wait for the
1165 watchdog to reset the system. On FVP, TF-A configures the watchdog period to
1166 about 4 min. This is way too long in an automated testing context. Besides,
1167 the user gets not feedback, which may let them think that the tests are not
1168 working properly.
1169
1170- The test "Target timer to a power down cpu" sometimes fails with the
1171 following error message:
1172
1173 ``Expected timer switch: 4 Actual: 3``
1174
1175 The root cause is unknown.
1176
1177FWU images
Paul Beesley5c928952019-10-24 11:57:00 +00001178~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001179
Sandrine Bailleux7af6c6d2018-10-22 17:09:07 +02001180- The FWU tests do not work on the revC of the Base AEM FVP. They only work on
1181 the revB.
1182
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001183- NS-BL1U and NS-BL2U images reuse TFTF-specific code for legacy reasons. This
1184 is not a clean design and may cause confusion.
1185
1186Cactus test secure partition
Paul Beesley5c928952019-10-24 11:57:00 +00001187~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001188
1189- Cactus is experimental code. It's likely to change a lot as the secure
1190 partition software architecture evolves.
1191
1192- Fails to link with GNU toolchain 7.3.1.
1193
1194- Cactus is supported on AArch64 FVP platform only.
1195
1196All test images
Paul Beesley5c928952019-10-24 11:57:00 +00001197~~~~~~~~~~~~~~~
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001198
1199- TF-A Tests are derived from a fork of TF-A so:
1200
1201 - they've got some code in common but lag behind on some features.
1202
1203 - there might still be some irrelevant references to TF-A.
1204
1205- Some design issues.
1206 E.g. TF-A Tests inherited from the I/O layer of TF-A, which still needs a
1207 major rework.
1208
1209- Cannot build TF-A Tests with Clang. Only GCC is supported.
1210
1211- The build system does not cope well with parallel building. The user should
1212 not attempt to run multiple jobs in parallel with the ``-j`` option of `GNU
1213 make`.
1214
1215- The build system does not properly track build options. A clean build must be
1216 performed every time a build option changes.
1217
1218- SMCCC v2 is not properly supported.
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--------------
1229
Madhukar Pappireddybced2f32020-04-08 15:44:38 -05001230*Copyright (c) 2018-2020, Arm Limited. All rights reserved.*
Sandrine Bailleux88e96a12019-03-28 09:34:55 +01001231
1232.. _Arm Neoverse Reference Design N1 Edge (RD-N1-Edge): https://developer.arm.com/products/system-design/reference-design/neoverse-reference-design
1233.. _Arm SGI-575: https://developer.arm.com/products/system-design/fixed-virtual-platforms