1. 12 Jan, 2015 3 commits
  2. 09 Jan, 2015 1 commit
    • Sandrine Bailleux's avatar
      User Guide: Enable secure memory on Foundation FVP · c451b538
      Sandrine Bailleux authored
      Previously, the User Guide recommended launching the Foundation
      FVP with the parameter --no-secure-memory, which disabled security
      control of the address map. This was due to missing support for
      secure memory regions in v1 of the Foundation FVP. This is no longer
      needed as secure memory is now supported on the Foundation FVP.
      
      This patch updates the User Guide to recommend enabling secure
      memory instead.
      
      Change-Id: Ifae53c10ff6e1c7c6724af20e05a3d3a88f6a5ad
      c451b538
  3. 08 Jan, 2015 1 commit
    • Juan Castillo's avatar
      Bug fix: initialize bl30_image_info fields before use · 92de3565
      Juan Castillo authored
      This patch initializes the version field in the bl30_image_info
      structure when loading BL30. This initialization must be done before
      calling load_image().
      
      Fixes ARM-software/tf-issues#274
      
      Change-Id: I74a05167d66fff51d257ad611abc7b5436e5d912
      92de3565
  4. 07 Jan, 2015 6 commits
    • danh-arm's avatar
      Merge pull request #222 from jbech-linaro/user_guide_toc_links · 23cf7d0f
      danh-arm authored
      Create TOC links in the User Guide markdown file
      23cf7d0f
    • Sandrine Bailleux's avatar
      Prevent optimisation of sysregs accessors calls · 36e2fd01
      Sandrine Bailleux authored
      Calls to system register read accessors functions may be optimised
      out by the compiler if called twice in a row for the same register.
      This is because the compiler is not aware that the result from
      the instruction may be modified by external agents. Therefore, if
      nothing modifies the register between the 2 reads as far as the
      compiler knows then it might consider that it is useless to read
      it twice and emit only 1 call.
      
      This behaviour is faulty for registers that may not have the same
      value if read twice in succession. E.g.: counters, timer
      control/countdown registers, GICv3 interrupt status registers and
      so on.
      
      The same problem happens for calls to system register write
      accessors functions. The compiler might optimise out some calls
      if it considers that it will produce the same result. Again, this
      behaviour is faulty for cases where intermediate writes to these
      registers make a difference in the system.
      
      This patch fixes the problem by making these assembly register
      accesses volatile.
      
      Fixes ARM-software/tf-issues#273
      
      Change-Id: I33903bc4cc4eea8a8d87bc2c757909fbb0138925
      36e2fd01
    • Joakim Bech's avatar
      Create Table of Content links in markdown files · 14a5b346
      Joakim Bech authored
      Fixes arm-software/tf-issues#276
      14a5b346
    • danh-arm's avatar
      Merge pull request #226 from sandrine-bailleux/sb/tf-issues-279 · 61c67804
      danh-arm authored
      fip_create: don't succeed if one of the passed files doesn't exist
      61c67804
    • danh-arm's avatar
      Merge pull request #227 from soby-mathew/sm/afflvl_fix · 02b5678c
      danh-arm authored
      Fix CPU_SUSPEND when invoked with affinity level higher than get_max_aff...
      02b5678c
    • danh-arm's avatar
      Merge pull request #225 from sandrine-bailleux/sb/remove-IRQ_SEC_SGI_8 · 2060f0c0
      danh-arm authored
      Remove IRQ_SEC_SGI_8 constant
      2060f0c0
  5. 12 Dec, 2014 1 commit
    • Soby Mathew's avatar
      Fix CPU_SUSPEND when invoked with affinity level higher than get_max_afflvl() · 264999fc
      Soby Mathew authored
      This patch fixes the assertion failure when CPU_SUSPEND is invoked with
      an affinity level higher than supported by the platform by adding suitable
      checks for affinity level within `psci_cpu_suspend`. Also added suitable
      bound checks within `psci_aff_map_get_idx` to prevent indexing beyond array
      limits.
      
      Fixes ARM-software/tf-issues#260
      
      Change-Id: I04b75c49729e6c6d1983add590f60146c8fc3630
      264999fc
  6. 10 Dec, 2014 2 commits
    • Kévin Petit's avatar
      fip_create: don't succeed if one of the passed files doesn't exist · 38410f80
      Kévin Petit authored
      
      
      If one of the files passed to fip_create on the command line doesn't
      exist, it will print an error message but produce an incomplete
      fip.bin file and report success. This behaviour could potentially
      hide errors made in the command line arguments.
      
      This patch addresses the issue by having the tool bail out if one of
      the supplied files can't be processed.
      Signed-off-by: default avatarKévin Petit <kevin.petit@arm.com>
      
      Fixes ARM-software/tf-issues#279
      
      Change-Id: I1c7d87d09eb4c063005b7969bdaad1d043c29dec
      38410f80
    • Sandrine Bailleux's avatar
      Remove IRQ_SEC_SGI_8 constant · 47ca01e7
      Sandrine Bailleux authored
      In both FVP and Juno ports, IRQ #16, which is a PPI, is incorrectly
      identified as secure SGI #8 through the constant IRQ_SEC_SGI_8.
      This patch removes it.
      
      Fixes ARM-software/tf-issues#282
      
      Change-Id: I9e52d849611ffcd2b1f28e56dd156c5b217ed63e
      47ca01e7
  7. 08 Dec, 2014 2 commits
  8. 04 Dec, 2014 1 commit
    • Soby Mathew's avatar
      Fix the array size of mpidr_aff_map_nodes_t. · 235585b1
      Soby Mathew authored
      This patch fixes the array size of mpidr_aff_map_nodes_t which
      was less by one element.
      
      Fixes ARM-software/tf-issues#264
      
      Change-Id: I48264f6f9e7046a3d0f4cbcd63b9ba49657e8818
      235585b1
  9. 26 Nov, 2014 1 commit
    • Sandrine Bailleux's avatar
      Fix problem of dependencies on the fiptool makefile target · 07deed40
      Sandrine Bailleux authored
      The 'fiptool' target doesn't depend on fip_create's source files,
      neither directly nor indirectly. As a result, the FIP tool is not
      rebuilt whenever its source files change.
      
      This patch makes the ${FIPTOOL} target into a phony target so that the
      FIP tool's sub-makefile is always called. The sub-makefile correctly
      handles the dependencies. It also moves the completion message into
      the sub-makefile so that it is only displayed when the tool is
      actually recompiled.
      
      Fixes ARM-software/tf-issues#278
      
      Change-Id: Ia027519fe51d3c42be30665d1ad20a7b89fa350f
      07deed40
  10. 11 Nov, 2014 2 commits
  11. 10 Nov, 2014 1 commit
    • Achin Gupta's avatar
      Precede a 'sev' with a 'dsb' in bakery lock code · 66ce001e
      Achin Gupta authored
      This patch fixes a bug in the bakery lock implementation where a data
      synchronisation barrier instruction is not issued before sending an event as
      mandated by the ARMv8 ARM. This can cause a event to be signalled before the
      related memory accesses have completed resulting in erroneous execution.
      
      Fixes ARM-software/tf-issues#272
      
      Change-Id: I5ce02bf70afb001d967b9fa4c3f77442931d5349
      66ce001e
  12. 04 Nov, 2014 2 commits
  13. 31 Oct, 2014 2 commits
    • Juan Castillo's avatar
      Juno: Use the generic ARM GIC driver · 33132e64
      Juan Castillo authored
      This patch replaces the usage of the GIC private driver in Juno with
      the generic ARM GIC driver. The private driver is no longer necessary
      and has been removed from the Juno port.
      
      Fixes ARM-software/tf-issues#253
      
      Change-Id: I6aaabc252e5e6fb5fcf44ab6d0febd9b38791056
      33132e64
    • Juan Castillo's avatar
      Improvements to ARM GIC driver · eb57fa56
      Juan Castillo authored
      This patch introduces several improvements to the ARM GIC driver:
      
      * In function gicd_set_itargetsr(), target CPU is specified using
        the same bit mask detailed in the GICD_ITARGETSRn register instead
        of the CPU linear ID, removing the dependency between bit position
        and linear ID in the platform porting. The current CPU bit mask
        may be obtained by reading GICD_ITARGETSR0.
      
      * PPIs and SGIs are initialized in arm_gic_pcpu_distif_setup().
        SPIs are initialized in arm_gic_distif_setup().
      
      * By default, non secure interrupts are assigned the maximum
        priority allowed to a non secure interrupt (defined by
        GIC_HIGHEST_NS_PRIORITY).
      
      * GICR base address is allowed to be NULL for GICv1 and GICv2.
      
      Change-Id: Ie2837fe860d43b2282e582dfdb13c39c6186f232
      eb57fa56
  14. 30 Oct, 2014 1 commit
  15. 29 Oct, 2014 4 commits
    • Soby Mathew's avatar
      Optimize Cortex-A57 cluster power down sequence on Juno · 5541bb3f
      Soby Mathew authored
      This patch optimizes the Cortex-A57 cluster power down sequence by not
      flushing the Level1 data cache. The L1 data cache and the L2 unified
      cache are inclusive. A flush of the L2 by set/way flushes any dirty
      lines from the L1 as well. This is a known safe deviation from the
      Cortex-A57 TRM defined power down sequence. This optimization can be
      enabled by the platform through the 'SKIP_A57_L1_FLUSH_PWR_DWN' build
      flag. Each Cortex-A57 based platform must make its own decision on
      whether to use the optimization.
      
      This patch also renames the cpu-errata-workarounds.md to
      cpu-specific-build-macros.md as this facilitates documentation
      of both CPU Specific errata and CPU Specific Optimization
      build macros.
      
      Change-Id: I299b9fe79e9a7e08e8a0dffb7d345f9a00a71480
      5541bb3f
    • Soby Mathew's avatar
      Optimize barrier usage during Cortex-A57 power down · b1a9631d
      Soby Mathew authored
      This the patch replaces the DSB SY with DSB ISH
      after disabling L2 prefetches during the Cortex-A57
      power down sequence.
      
      Change-Id: I048d12d830c1b974b161224eff079fb9f8ecf52d
      b1a9631d
    • Soby Mathew's avatar
      Apply errata workarounds only when major/minor revisions match. · 7395a725
      Soby Mathew authored
      Prior to this patch, the errata workarounds were applied for any version
      of the CPU in the release build and in the debug build an assert
      failure resulted when the revision did not match. This patch applies
      errata workarounds in the Cortex-A57 reset handler only if the 'variant'
      and 'revision' fields read from the MIDR_EL1 match. In the debug build,
      a warning message is printed for each errata workaround which is not
      applied.
      
      The patch modifies the register usage in 'reset_handler` so
      as to adhere to ARM procedure calling standards.
      
      Fixes ARM-software/tf-issues#242
      
      Change-Id: I51b1f876474599db885afa03346e38a476f84c29
      7395a725
    • Soby Mathew's avatar
      Add support for level specific cache maintenance operations · 8e857916
      Soby Mathew authored
      This patch adds level specific cache maintenance functions
      to cache_helpers.S. The new functions 'dcsw_op_levelx',
      where '1 <= x <= 3', allow to perform cache maintenance by
      set/way for that particular level of cache.  With this patch,
      functions to support cache maintenance upto level 3 have
      been implemented since it is the highest cache level for
      most ARM SoCs.
      
      These functions are now utilized in CPU specific power down
      sequences to implement them as mandated by processor specific
      technical reference manual.
      
      Change-Id: Icd90ce6b51cff5a12863bcda01b93601417fd45c
      8e857916
  16. 28 Oct, 2014 3 commits
  17. 22 Oct, 2014 1 commit
    • Juan Castillo's avatar
      FVP: keep shared data in Trusted SRAM · 20d51cad
      Juan Castillo authored
      This patch deprecates the build option to relocate the shared data
      into Trusted DRAM in FVP. After this change, shared data is always
      located at the base of Trusted SRAM. This reduces the complexity
      of the memory map and the number of combinations in the build
      options.
      
      Fixes ARM-software/tf-issues#257
      
      Change-Id: I68426472567b9d8c6d22d8884cb816f6b61bcbd3
      20d51cad
  18. 21 Oct, 2014 1 commit
    • Vikram Kanigiri's avatar
      Juno: Support entry into a standby state · fc680456
      Vikram Kanigiri authored
      This patch adds support on the Juno platform for entering a wfi in
      response to a PSCI CPU_SUSPEND call where the state type is a
      standby state.
      
      Change-Id: I0a102dee1f8d2ad936c63ad1d1d3ad001a4a4768
      fc680456
  19. 14 Oct, 2014 1 commit
    • Juan Castillo's avatar
      Juno: Reserve some DDR-DRAM for secure use · 740134e6
      Juan Castillo authored
      This patch configures the TrustZone Controller in Juno to split
      the 2GB DDR-DRAM memory at 0x80000000 into Secure and Non-Secure
      regions:
      
      - Secure DDR-DRAM: top 16 MB, except for the last 2 MB which are
        used by the SCP for DDR retraining
      - Non-Secure DDR-DRAM: remaining DRAM starting at base address
      
      Build option PLAT_TSP_LOCATION selects the location of the secure
      payload (BL3-2):
      
      - 'tsram' : Trusted SRAM (default option)
      - 'dram'  : Secure region in the DDR-DRAM (set by the TrustZone
                  controller)
      
      The MMU memory map has been updated to give BL2 permission to load
      BL3-2 into the DDR-DRAM secure region.
      
      Fixes ARM-software/tf-issues#233
      
      Change-Id: I6843fc32ef90aadd3ea6ac4c7f314f8ecbd5d07b
      740134e6
  20. 10 Oct, 2014 1 commit
  21. 09 Oct, 2014 1 commit
    • Juan Castillo's avatar
      Juno: Use TZC-400 driver calls · ef538c6f
      Juan Castillo authored
      This patch replaces direct accesses to the TZC-400 registers by the
      appropiate calls to the generic driver available in the Trusted
      Firmware in order to initialize the TrustZone Controller.
      
      Functions related to the initialization of the secure memory,
      like the TZC-400 configuration, have been moved to a new file
      'plat_security.c'. This reorganization makes easier to set up
      the secure memory from any BL stage.
      
      TZC-400 initialization has been moved from BL1 to BL2 because BL1
      does not access the non-secure memory. It is BL2's responsibility
      to enable and configure the TZC-400 before loading the next BL
      images.
      
      In Juno, BL3-0 initializes some of the platform peripherals, like
      the DDR controller. Thus, BL3-0 must be loaded before configuring
      the TrustZone Controller. As a consequence, the IO layer
      initialization has been moved to early platform initialization.
      
      Fixes ARM-software/tf-issues#234
      
      Change-Id: I83dde778f937ac8d2996f7377e871a2e77d9490e
      ef538c6f
  22. 25 Sep, 2014 2 commits