1 ARM Trusted Firmware - version 1.1 2 ================================== 3 4 New features 5 ------------ 6 7 * A prototype implementation of Trusted Board Boot has been added. Boot 8 loader images are verified by BL1 and BL2 during the cold boot path. BL1 and 9 BL2 use the PolarSSL SSL library to verify certificates and images. The 10 OpenSSL library is used to create the X.509 certificates. Support has been 11 added to `fip_create` tool to package the certificates in a FIP. 12 13 * Support for calling CPU and platform specific reset handlers upon entry into 14 BL3-1 during the cold and warm boot paths has been added. This happens after 15 another Boot ROM `reset_handler()` has already run. This enables a developer 16 to perform additional actions or undo actions already performed during the 17 first call of the reset handlers e.g. apply additional errata workarounds. 18 19 * Support has been added to demonstrate routing of IRQs to EL3 instead of 20 S-EL1 when execution is in secure world. 21 22 * The PSCI implementation now conforms to version 1.0 of the PSCI 23 specification. All the mandatory APIs and selected optional APIs are 24 supported. In particular, support for the `PSCI_FEATURES` API has been 25 added. A capability variable is constructed during initialization by 26 examining the `plat_pm_ops` and `spd_pm_ops` exported by the platform and 27 the Secure Payload Dispatcher. This is used by the PSCI FEATURES function 28 to determine which PSCI APIs are supported by the platform. 29 30 * Improvements have been made to the PSCI code as follows. 31 32 * The code has been refactored to remove redundant parameters from 33 internal functions. 34 35 * Changes have been made to the code for PSCI `CPU_SUSPEND`, `CPU_ON` and 36 `CPU_OFF` calls to facilitate an early return to the caller in case a 37 failure condition is detected. For example, a PSCI `CPU_SUSPEND` call 38 returns `SUCCESS` to the caller if a pending interrupt is detected early 39 in the code path. 40 41 * Optional platform APIs have been added to validate the `power_state` and 42 `entrypoint` parameters early in PSCI `CPU_ON` and `CPU_SUSPEND` code 43 paths. 44 45 * PSCI migrate APIs have been reworked to invoke the SPD hook to determine 46 the type of Trusted OS and the CPU it is resident on (if 47 applicable). Also, during a PSCI `MIGRATE` call, the SPD hook to migrate 48 the Trusted OS is invoked. 49 50 * It is now possible to build Trusted Firmware without marking at least an 51 extra page of memory as coherent. The build flag `USE_COHERENT_MEM` can be 52 used to choose between the two implementations. This has been made possible 53 through these changes. 54 55 * An implementation of Bakery locks, where the locks are not allocated in 56 coherent memory has been added. 57 58 * Memory which was previously marked as coherent is now kept coherent 59 through the use of software cache maintenance operations. 60 61 Approximately, 4K worth of memory is saved for each boot loader stage when 62 `USE_COHERENT_MEM=0`. Enabling this option increases the latencies 63 associated with acquire and release of locks. It also requires changes to 64 the platform ports. 65 66 * It is now possible to specify the name of the FIP at build time by defining 67 the `FIP_NAME` variable. 68 69 * Issues with depedencies on the 'fiptool' makefile target have been 70 rectified. The `fip_create` tool is now rebuilt whenever its source files 71 change. 72 73 * The BL3-1 runtime console is now also used as the crash console. The crash 74 console is changed to SoC UART0 (UART2) from the previous FPGA UART0 (UART0) 75 on Juno. In FVP, it is changed from UART0 to UART1. 76 77 * CPU errata workarounds are applied only when the revision and part number 78 match. This behaviour has been made consistent across the debug and release 79 builds. The debug build additionally prints a warning if a mismatch is 80 detected. 81 82 * It is now possible to issue cache maintenance operations by set/way for a 83 particular level of data cache. Levels 1-3 are currently supported. 84 85 * The following improvements have been made to the FVP port. 86 87 * The build option `FVP_SHARED_DATA_LOCATION` which allowed relocation of 88 shared data into the Trusted DRAM has been deprecated. Shared data is 89 now always located at the base of Trusted SRAM. 90 91 * BL2 Translation tables have been updated to map only the region of 92 DRAM which is accessible to normal world. This is the region of the 2GB 93 DDR-DRAM memory at 0x80000000 excluding the top 16MB. The top 16MB is 94 accessible to only the secure world. 95 96 * BL3-2 can now reside in the top 16MB of DRAM which is accessible only to 97 the secure world. This can be done by setting the build flag 98 `FVP_TSP_RAM_LOCATION` to the value `dram`. 99 100 * Separate transation tables are created for each boot loader image. The 101 `IMAGE_BLx` build options are used to do this. This allows each stage to 102 create mappings only for areas in the memory map that it needs. 103 104 * A Secure Payload Dispatcher (OPTEED) for the OP-TEE Trusted OS has been 105 added. Details of using it with ARM Trusted Firmware can be found in 106 [OP-TEE Dispatcher] 107 108 109 110 Issues resolved since last release 111 ---------------------------------- 112 113 * The Juno port has been aligned with the FVP port as follows. 114 115 * Support for reclaiming all BL1 RW memory and BL2 memory by overlaying 116 the BL3-1/BL3-2 NOBITS sections on top of them has been added to the 117 Juno port. 118 119 * The top 16MB of the 2GB DDR-DRAM memory at 0x80000000 is configured 120 using the TZC-400 controller to be accessible only to the secure world. 121 122 * The ARM GIC driver is used to configure the GIC-400 instead of using a 123 GIC driver private to the Juno port. 124 125 * PSCI `CPU_SUSPEND` calls that target a standby state are now supported. 126 127 * The TZC-400 driver is used to configure the controller instead of direct 128 accesses to the registers. 129 130 * The Linux kernel version referred to in the user guide has DVFS and HMP 131 support enabled. 132 133 * DS-5 v5.19 did not detect Version 5.8 of the Cortex-A57-A53 Base FVPs in 134 CADI server mode. This issue is not seen with DS-5 v5.20 and Version 6.2 of 135 the Cortex-A57-A53 Base FVPs. 136 137 138 Known issues 139 ------------ 140 141 * The Trusted Board Boot implementation is a prototype. There are issues with 142 the modularity and scalability of the design. Support for a Trusted 143 Watchdog, firmware update mechanism, recovery images and Trusted debug is 144 absent. These issues will be addressed in future releases. 145 146 * The FVP and Juno ports do not use the hash of the ROTPK stored in the 147 Trusted Key Storage registers to verify the ROTPK in the 148 `plat_match_rotpk()` function. This prevents the correct establishment of 149 the Chain of Trust at the first step in the Trusted Board Boot process. 150 151 * The version of the AEMv8 Base FVP used in this release resets the model 152 instead of terminating its execution in response to a shutdown request using 153 the PSCI `SYSTEM_OFF` API. This issue will be fixed in a future version of 154 the model. 155 156 * GICv3 support is experimental. There are known issues with GICv3 157 initialization in the ARM Trusted Firmware. 158 159 * While this version greatly reduces the on-chip RAM requirements, there are 160 further RAM usage enhancements that could be made. 161 162 * The firmware design documentation for the Test Secure-EL1 Payload (TSP) and 163 its dispatcher (TSPD) is incomplete. Similarly for the PSCI section. 164 165 * The Juno-specific firmware design documentation is incomplete. 166 167 168 ARM Trusted Firmware - version 1.0 169 ================================== 170 171 New features 172 ------------ 173 174 * It is now possible to map higher physical addresses using non-flat virtual 175 to physical address mappings in the MMU setup. 176 177 * Wider use is now made of the per-CPU data cache in BL3-1 to store: 178 179 * Pointers to the non-secure and secure security state contexts. 180 181 * A pointer to the CPU-specific operations. 182 183 * A pointer to PSCI specific information (for example the current power 184 state). 185 186 * A crash reporting buffer. 187 188 * The following RAM usage improvements result in a BL3-1 RAM usage reduction 189 from 96KB to 56KB (for FVP with TSPD), and a total RAM usage reduction 190 across all images from 208KB to 88KB, compared to the previous release. 191 192 * Removed the separate `early_exception` vectors from BL3-1 (2KB code size 193 saving). 194 195 * Removed NSRAM from the FVP memory map, allowing the removal of one 196 (4KB) translation table. 197 198 * Eliminated the internal `psci_suspend_context` array, saving 2KB. 199 200 * Correctly dimensioned the PSCI `aff_map_node` array, saving 1.5KB in the 201 FVP port. 202 203 * Removed calling CPU mpidr from the bakery lock API, saving 160 bytes. 204 205 * Removed current CPU mpidr from PSCI common code, saving 160 bytes. 206 207 * Inlined the mmio accessor functions, saving 360 bytes. 208 209 * Fully reclaimed all BL1 RW memory and BL2 memory on the FVP port by 210 overlaying the BL3-1/BL3-2 NOBITS sections on top of these at runtime. 211 212 * Made storing the FP register context optional, saving 0.5KB per context 213 (8KB on the FVP port, with TSPD enabled and running on 8 CPUs). 214 215 * Implemented a leaner `tf_printf()` function, allowing the stack to be 216 greatly reduced. 217 218 * Removed coherent stacks from the codebase. Stacks allocated in normal 219 memory are now used before and after the MMU is enabled. This saves 768 220 bytes per CPU in BL3-1. 221 222 * Reworked the crash reporting in BL3-1 to use less stack. 223 224 * Optimized the EL3 register state stored in the `cpu_context` structure 225 so that registers that do not change during normal execution are 226 re-initialized each time during cold/warm boot, rather than restored 227 from memory. This saves about 1.2KB. 228 229 * As a result of some of the above, reduced the runtime stack size in all 230 BL images. For BL3-1, this saves 1KB per CPU. 231 232 * PSCI SMC handler improvements to correctly handle calls from secure states 233 and from AArch32. 234 235 * CPU contexts are now initialized from the `entry_point_info`. BL3-1 fully 236 determines the exception level to use for the non-trusted firmware (BL3-3) 237 based on the SPSR value provided by the BL2 platform code (or otherwise 238 provided to BL3-1). This allows platform code to directly run non-trusted 239 firmware payloads at either EL2 or EL1 without requiring an EL2 stub or OS 240 loader. 241 242 * Code refactoring improvements: 243 244 * Refactored `fvp_config` into a common platform header. 245 246 * Refactored the fvp gic code to be a generic driver that no longer has an 247 explicit dependency on platform code. 248 249 * Refactored the CCI-400 driver to not have dependency on platform code. 250 251 * Simplified the IO driver so it's no longer necessary to call `io_init()` 252 and moved all the IO storage framework code to one place. 253 254 * Simplified the interface the the TZC-400 driver. 255 256 * Clarified the platform porting interface to the TSP. 257 258 * Reworked the TSPD setup code to support the alternate BL3-2 259 intialization flow where BL3-1 generic code hands control to BL3-2, 260 rather than expecting the TSPD to hand control directly to BL3-2. 261 262 * Considerable rework to PSCI generic code to support CPU specific 263 operations. 264 265 * Improved console log output, by: 266 267 * Adding the concept of debug log levels. 268 269 * Rationalizing the existing debug messages and adding new ones. 270 271 * Printing out the version of each BL stage at runtime. 272 273 * Adding support for printing console output from assembler code, 274 including when a crash occurs before the C runtime is initialized. 275 276 * Moved up to the latest versions of the FVPs, toolchain, EDK2, kernel, Linaro 277 file system and DS-5. 278 279 * On the FVP port, made the use of the Trusted DRAM region optional at build 280 time (off by default). Normal platforms will not have such a "ready-to-use" 281 DRAM area so it is not a good example to use it. 282 283 * Added support for PSCI `SYSTEM_OFF` and `SYSTEM_RESET` APIs. 284 285 * Added support for CPU specific reset sequences, power down sequences and 286 register dumping during crash reporting. The CPU specific reset sequences 287 include support for errata workarounds. 288 289 * Merged the Juno port into the master branch. Added support for CPU hotplug 290 and CPU idle. Updated the user guide to describe how to build and run on the 291 Juno platform. 292 293 294 Issues resolved since last release 295 ---------------------------------- 296 297 * Removed the concept of top/bottom image loading. The image loader now 298 automatically detects the position of the image inside the current memory 299 layout and updates the layout to minimize fragementation. This resolves the 300 image loader limitations of previously releases. There are currently no 301 plans to support dynamic image loading. 302 303 * CPU idle now works on the publicized version of the Foundation FVP. 304 305 * All known issues relating to the compiler version used have now been 306 resolved. This TF version uses Linaro toolchain 14.07 (based on GCC 4.9). 307 308 309 Known issues 310 ------------ 311 312 * GICv3 support is experimental. The Linux kernel patches to support this are 313 not widely available. There are known issues with GICv3 initialization in 314 the ARM Trusted Firmware. 315 316 * While this version greatly reduces the on-chip RAM requirements, there are 317 further RAM usage enhancements that could be made. 318 319 * The firmware design documentation for the Test Secure-EL1 Payload (TSP) and 320 its dispatcher (TSPD) is incomplete. Similarly for the PSCI section. 321 322 * The Juno-specific firmware design documentation is incomplete. 323 324 * Some recent enhancements to the FVP port have not yet been translated into 325 the Juno port. These will be tracked via the tf-issues project. 326 327 * The Linux kernel version referred to in the user guide has DVFS and HMP 328 support disabled due to some known instabilities at the time of this 329 release. A future kernel version will re-enable these features. 330 331 * DS-5 v5.19 does not detect Version 5.8 of the Cortex-A57-A53 Base FVPs in 332 CADI server mode. This is because the `<SimName>` reported by the FVP in 333 this version has changed. For example, for the Cortex-A57x4-A53x4 Base FVP, 334 the `<SimName>` reported by the FVP is `FVP_Base_Cortex_A57x4_A53x4`, while 335 DS-5 expects it to be `FVP_Base_A57x4_A53x4`. 336 337 The temporary fix to this problem is to change the name of the FVP in 338 `sw/debugger/configdb/Boards/ARM FVP/Base_A57x4_A53x4/cadi_config.xml`. 339 Change the following line: 340 341 <SimName>System Generator:FVP_Base_A57x4_A53x4</SimName> 342 to 343 <SimName>System Generator:FVP_Base_Cortex-A57x4_A53x4</SimName> 344 345 A similar change can be made to the other Cortex-A57-A53 Base FVP variants. 346 347 348 ARM Trusted Firmware - version 0.4 349 ================================== 350 351 New features 352 ------------ 353 354 * Makefile improvements: 355 356 * Improved dependency checking when building. 357 358 * Removed `dump` target (build now always produces dump files). 359 360 * Enabled platform ports to optionally make use of parts of the Trusted 361 Firmware (e.g. BL3-1 only), rather than being forced to use all parts. 362 Also made the `fip` target optional. 363 364 * Specified the full path to source files and removed use of the `vpath` 365 keyword. 366 367 * Provided translation table library code for potential re-use by platforms 368 other than the FVPs. 369 370 * Moved architectural timer setup to platform-specific code. 371 372 * Added standby state support to PSCI cpu_suspend implementation. 373 374 * SRAM usage improvements: 375 376 * Started using the `-ffunction-sections`, `-fdata-sections` and 377 `--gc-sections` compiler/linker options to remove unused code and data 378 from the images. Previously, all common functions were being built into 379 all binary images, whether or not they were actually used. 380 381 * Placed all assembler functions in their own section to allow more unused 382 functions to be removed from images. 383 384 * Updated BL1 and BL2 to use a single coherent stack each, rather than one 385 per CPU. 386 387 * Changed variables that were unnecessarily declared and initialized as 388 non-const (i.e. in the .data section) so they are either uninitialized 389 (zero init) or const. 390 391 * Moved the Test Secure-EL1 Payload (BL3-2) to execute in Trusted SRAM by 392 default. The option for it to run in Trusted DRAM remains. 393 394 * Implemented a TrustZone Address Space Controller (TZC-400) driver. A 395 default configuration is provided for the Base FVPs. This means the model 396 parameter `-C bp.secure_memory=1` is now supported. 397 398 * Started saving the PSCI cpu_suspend 'power_state' parameter prior to 399 suspending a CPU. This allows platforms that implement multiple power-down 400 states at the same affinity level to identify a specific state. 401 402 * Refactored the entire codebase to reduce the amount of nesting in header 403 files and to make the use of system/user includes more consistent. Also 404 split platform.h to separate out the platform porting declarations from the 405 required platform porting definitions and the definitions/declarations 406 specific to the platform port. 407 408 * Optimized the data cache clean/invalidate operations. 409 410 * Improved the BL3-1 unhandled exception handling and reporting. Unhandled 411 exceptions now result in a dump of registers to the console. 412 413 * Major rework to the handover interface between BL stages, in particular the 414 interface to BL3-1. The interface now conforms to a specification and is 415 more future proof. 416 417 * Added support for optionally making the BL3-1 entrypoint a reset handler 418 (instead of BL1). This allows platforms with an alternative image loading 419 architecture to re-use BL3-1 with fewer modifications to generic code. 420 421 * Reserved some DDR DRAM for secure use on FVP platforms to avoid future 422 compatibility problems with non-secure software. 423 424 * Added support for secure interrupts targeting the Secure-EL1 Payload (SP) 425 (using GICv2 routing only). Demonstrated this working by adding an interrupt 426 target and supporting test code to the TSP. Also demonstrated non-secure 427 interrupt handling during TSP processing. 428 429 430 Issues resolved since last release 431 ---------------------------------- 432 433 * Now support use of the model parameter `-C bp.secure_memory=1` in the Base 434 FVPs (see **New features**). 435 436 * Support for secure world interrupt handling now available (see **New 437 features**). 438 439 * Made enough SRAM savings (see **New features**) to enable the Test Secure-EL1 440 Payload (BL3-2) to execute in Trusted SRAM by default. 441 442 * The tested filesystem used for this release (Linaro AArch64 OpenEmbedded 443 14.04) now correctly reports progress in the console. 444 445 * Improved the Makefile structure to make it easier to separate out parts of 446 the Trusted Firmware for re-use in platform ports. Also, improved target 447 dependency checking. 448 449 450 Known issues 451 ------------ 452 453 * GICv3 support is experimental. The Linux kernel patches to support this are 454 not widely available. There are known issues with GICv3 initialization in 455 the ARM Trusted Firmware. 456 457 * Dynamic image loading is not available yet. The current image loader 458 implementation (used to load BL2 and all subsequent images) has some 459 limitations. Changing BL2 or BL3-1 load addresses in certain ways can lead 460 to loading errors, even if the images should theoretically fit in memory. 461 462 * The ARM Trusted Firmware still uses too much on-chip Trusted SRAM. A number 463 of RAM usage enhancements have been identified to rectify this situation. 464 465 * CPU idle does not work on the advertised version of the Foundation FVP. 466 Some FVP fixes are required that are not available externally at the time 467 of writing. This can be worked around by disabling CPU idle in the Linux 468 kernel. 469 470 * Various bugs in ARM Trusted Firmware, UEFI and the Linux kernel have been 471 observed when using Linaro toolchain versions later than 13.11. Although 472 most of these have been fixed, some remain at the time of writing. These 473 mainly seem to relate to a subtle change in the way the compiler converts 474 between 64-bit and 32-bit values (e.g. during casting operations), which 475 reveals previously hidden bugs in client code. 476 477 * The firmware design documentation for the Test Secure-EL1 Payload (TSP) and 478 its dispatcher (TSPD) is incomplete. Similarly for the PSCI section. 479 480 481 ARM Trusted Firmware - version 0.3 482 ================================== 483 484 New features 485 ------------ 486 487 * Support for Foundation FVP Version 2.0 added. 488 The documented UEFI configuration disables some devices that are unavailable 489 in the Foundation FVP, including MMC and CLCD. The resultant UEFI binary can 490 be used on the AEMv8 and Cortex-A57-A53 Base FVPs, as well as the Foundation 491 FVP. 492 493 NOTE: The software will not work on Version 1.0 of the Foundation FVP. 494 495 * Enabled third party contributions. Added a new contributing.md containing 496 instructions for how to contribute and updated copyright text in all files 497 to acknowledge contributors. 498 499 * The PSCI CPU_SUSPEND API has been stabilised to the extent where it can be 500 used for entry into power down states with the following restrictions: 501 - Entry into standby states is not supported. 502 - The API is only supported on the AEMv8 and Cortex-A57-A53 Base FVPs. 503 504 * The PSCI AFFINITY_INFO api has undergone limited testing on the Base FVPs to 505 allow experimental use. 506 507 * Required C library and runtime header files are now included locally in ARM 508 Trusted Firmware instead of depending on the toolchain standard include 509 paths. The local implementation has been cleaned up and reduced in scope. 510 511 * Added I/O abstraction framework, primarily to allow generic code to load 512 images in a platform-independent way. The existing image loading code has 513 been reworked to use the new framework. Semi-hosting and NOR flash I/O 514 drivers are provided. 515 516 * Introduced Firmware Image Package (FIP) handling code and tools. A FIP 517 combines multiple firmware images with a Table of Contents (ToC) into a 518 single binary image. The new FIP driver is another type of I/O driver. The 519 Makefile builds a FIP by default and the FVP platform code expect to load a 520 FIP from NOR flash, although some support for image loading using semi- 521 hosting is retained. 522 523 NOTE: Building a FIP by default is a non-backwards-compatible change. 524 525 NOTE: Generic BL2 code now loads a BL3-3 (non-trusted firmware) image into 526 DRAM instead of expecting this to be pre-loaded at known location. This is 527 also a non-backwards-compatible change. 528 529 NOTE: Some non-trusted firmware (e.g. UEFI) will need to be rebuilt so that 530 it knows the new location to execute from and no longer needs to copy 531 particular code modules to DRAM itself. 532 533 * Reworked BL2 to BL3-1 handover interface. A new composite structure 534 (bl31_args) holds the superset of information that needs to be passed from 535 BL2 to BL3-1, including information on how handover execution control to 536 BL3-2 (if present) and BL3-3 (non-trusted firmware). 537 538 * Added library support for CPU context management, allowing the saving and 539 restoring of 540 - Shared system registers between Secure-EL1 and EL1. 541 - VFP registers. 542 - Essential EL3 system registers. 543 544 * Added a framework for implementing EL3 runtime services. Reworked the PSCI 545 implementation to be one such runtime service. 546 547 * Reworked the exception handling logic, making use of both SP_EL0 and SP_EL3 548 stack pointers for determining the type of exception, managing general 549 purpose and system register context on exception entry/exit, and handling 550 SMCs. SMCs are directed to the correct EL3 runtime service. 551 552 * Added support for a Test Secure-EL1 Payload (TSP) and a corresponding 553 Dispatcher (TSPD), which is loaded as an EL3 runtime service. The TSPD 554 implements Secure Monitor functionality such as world switching and 555 EL1 context management, and is responsible for communication with the TSP. 556 NOTE: The TSPD does not yet contain support for secure world interrupts. 557 NOTE: The TSP/TSPD is not built by default. 558 559 560 Issues resolved since last release 561 ---------------------------------- 562 563 * Support has been added for switching context between secure and normal 564 worlds in EL3. 565 566 * PSCI API calls `AFFINITY_INFO` & `PSCI_VERSION` have now been tested (to 567 a limited extent). 568 569 * The ARM Trusted Firmware build artifacts are now placed in the `./build` 570 directory and sub-directories instead of being placed in the root of the 571 project. 572 573 * The ARM Trusted Firmware is now free from build warnings. Build warnings 574 are now treated as errors. 575 576 * The ARM Trusted Firmware now provides C library support locally within the 577 project to maintain compatibility between toolchains/systems. 578 579 * The PSCI locking code has been reworked so it no longer takes locks in an 580 incorrect sequence. 581 582 * The RAM-disk method of loading a Linux file-system has been confirmed to 583 work with the ARM Trusted Firmware and Linux kernel version (based on 584 version 3.13) used in this release, for both Foundation and Base FVPs. 585 586 587 Known issues 588 ------------ 589 590 The following is a list of issues which are expected to be fixed in the future 591 releases of the ARM Trusted Firmware. 592 593 * The TrustZone Address Space Controller (TZC-400) is not being programmed 594 yet. Use of model parameter `-C bp.secure_memory=1` is not supported. 595 596 * No support yet for secure world interrupt handling. 597 598 * GICv3 support is experimental. The Linux kernel patches to support this are 599 not widely available. There are known issues with GICv3 initialization in 600 the ARM Trusted Firmware. 601 602 * Dynamic image loading is not available yet. The current image loader 603 implementation (used to load BL2 and all subsequent images) has some 604 limitations. Changing BL2 or BL3-1 load addresses in certain ways can lead 605 to loading errors, even if the images should theoretically fit in memory. 606 607 * The ARM Trusted Firmware uses too much on-chip Trusted SRAM. Currently the 608 Test Secure-EL1 Payload (BL3-2) executes in Trusted DRAM since there is not 609 enough SRAM. A number of RAM usage enhancements have been identified to 610 rectify this situation. 611 612 * CPU idle does not work on the advertised version of the Foundation FVP. 613 Some FVP fixes are required that are not available externally at the time 614 of writing. 615 616 * Various bugs in ARM Trusted Firmware, UEFI and the Linux kernel have been 617 observed when using Linaro toolchain versions later than 13.11. Although 618 most of these have been fixed, some remain at the time of writing. These 619 mainly seem to relate to a subtle change in the way the compiler converts 620 between 64-bit and 32-bit values (e.g. during casting operations), which 621 reveals previously hidden bugs in client code. 622 623 * The tested filesystem used for this release (Linaro AArch64 OpenEmbedded 624 14.01) does not report progress correctly in the console. It only seems to 625 produce error output, not standard output. It otherwise appears to function 626 correctly. Other filesystem versions on the same software stack do not 627 exhibit the problem. 628 629 * The Makefile structure doesn't make it easy to separate out parts of the 630 Trusted Firmware for re-use in platform ports, for example if only BL3-1 is 631 required in a platform port. Also, dependency checking in the Makefile is 632 flawed. 633 634 * The firmware design documentation for the Test Secure-EL1 Payload (TSP) and 635 its dispatcher (TSPD) is incomplete. Similarly for the PSCI section. 636 637 638 ARM Trusted Firmware - version 0.2 639 ================================== 640 641 New features 642 ------------ 643 644 * First source release. 645 646 * Code for the PSCI suspend feature is supplied, although this is not enabled 647 by default since there are known issues (see below). 648 649 650 Issues resolved since last release 651 ---------------------------------- 652 653 * The "psci" nodes in the FDTs provided in this release now fully comply 654 with the recommendations made in the PSCI specification. 655 656 657 Known issues 658 ------------ 659 660 The following is a list of issues which are expected to be fixed in the future 661 releases of the ARM Trusted Firmware. 662 663 * The TrustZone Address Space Controller (TZC-400) is not being programmed 664 yet. Use of model parameter `-C bp.secure_memory=1` is not supported. 665 666 * No support yet for secure world interrupt handling or for switching context 667 between secure and normal worlds in EL3. 668 669 * GICv3 support is experimental. The Linux kernel patches to support this are 670 not widely available. There are known issues with GICv3 initialization in 671 the ARM Trusted Firmware. 672 673 * Dynamic image loading is not available yet. The current image loader 674 implementation (used to load BL2 and all subsequent images) has some 675 limitations. Changing BL2 or BL3-1 load addresses in certain ways can lead 676 to loading errors, even if the images should theoretically fit in memory. 677 678 * Although support for PSCI `CPU_SUSPEND` is present, it is not yet stable 679 and ready for use. 680 681 * PSCI API calls `AFFINITY_INFO` & `PSCI_VERSION` are implemented but have not 682 been tested. 683 684 * The ARM Trusted Firmware make files result in all build artifacts being 685 placed in the root of the project. These should be placed in appropriate 686 sub-directories. 687 688 * The compilation of ARM Trusted Firmware is not free from compilation 689 warnings. Some of these warnings have not been investigated yet so they 690 could mask real bugs. 691 692 * The ARM Trusted Firmware currently uses toolchain/system include files like 693 stdio.h. It should provide versions of these within the project to maintain 694 compatibility between toolchains/systems. 695 696 * The PSCI code takes some locks in an incorrect sequence. This may cause 697 problems with suspend and hotplug in certain conditions. 698 699 * The Linux kernel used in this release is based on version 3.12-rc4. Using 700 this kernel with the ARM Trusted Firmware fails to start the file-system as 701 a RAM-disk. It fails to execute user-space `init` from the RAM-disk. As an 702 alternative, the VirtioBlock mechanism can be used to provide a file-system 703 to the kernel. 704 705 706 - - - - - - - - - - - - - - - - - - - - - - - - - - 707 708 _Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved._ 709 710 [OP-TEE Dispatcher]: ./optee-dispatcher.md 711