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