1. 26 Jan, 2015 1 commit
  2. 23 Jan, 2015 6 commits
    • Soby Mathew's avatar
      Return success if an interrupt is seen during PSCI CPU_SUSPEND · 22f08973
      Soby Mathew authored
      This patch adds support to return SUCCESS if a pending interrupt is
      detected during a CPU_SUSPEND call to a power down state. The check
      is performed as late as possible without losing the ability to return
      to the caller. This reduces the overhead incurred by a CPU in
      undergoing a complete power cycle when a wakeup interrupt is already
      pending.
      
      Fixes ARM-Software/tf-issues#102
      
      Change-Id: I1aff04a74b704a2f529734428030d1d10750fd4b
      22f08973
    • Soby Mathew's avatar
      Validate power_state and entrypoint when executing PSCI calls · 539dcedb
      Soby Mathew authored
      This patch allows the platform to validate the power_state and
      entrypoint information from the normal world early on in PSCI
      calls so that we can return the error safely. New optional
      pm_ops hooks `validate_power_state` and `validate_ns_entrypoint`
      are introduced to do this.
      
      As a result of these changes, all the other pm_ops handlers except
      the PSCI_ON handler are expected to be successful. Also, the PSCI
      implementation will now assert if a PSCI API is invoked without the
      corresponding pm_ops handler being registered by the platform.
      
      NOTE : PLATFORM PORTS WILL BREAK ON MERGE OF THIS COMMIT. The
      pm hooks have 2 additional optional callbacks and the return type
      of the other hooks have changed.
      
      Fixes ARM-Software/tf-issues#229
      
      Change-Id: I036bc0cff2349187c7b8b687b9ee0620aa7e24dc
      539dcedb
    • Soby Mathew's avatar
      Save 'power_state' early in PSCI CPU_SUSPEND call · 31244d74
      Soby Mathew authored
      This patch adds support to save the "power state" parameter before the
      affinity level specific handlers are called in a CPU_SUSPEND call.
      This avoids the need to pass the power_state as a parameter to the
      handlers and Secure Payload Dispatcher (SPD) suspend spd_pm_ops.
      The power_state arguments in the spd_pm_ops operations are now reserved
      and must not be used. The SPD can query the relevant power_state fields
      by using the psci_get_suspend_afflvl() & psci_get_suspend_stateid() APIs.
      
      NOTE: THIS PATCH WILL BREAK THE SPD_PM_OPS INTERFACE. HENCE THE SECURE
      PAYLOAD DISPATCHERS WILL NEED TO BE REWORKED TO USE THE NEW INTERFACE.
      
      Change-Id: I1293d7dc8cf29cfa6a086a009eee41bcbf2f238e
      31244d74
    • Soby Mathew's avatar
      Rework internal API to save non-secure entry point info · 78879b9a
      Soby Mathew authored
      This patch replaces the internal psci_save_ns_entry() API with a
      psci_get_ns_ep_info() API. The new function splits the work done by the
      previous one such that it populates and returns an 'entry_point_info_t'
      structure with the information to enter the normal world upon completion
      of the CPU_SUSPEND or CPU_ON call. This information is used to populate
      the non-secure context structure separately.
      
      This allows the new internal API `psci_get_ns_ep_info` to return error
      and enable the code to return safely.
      
      Change-Id: Ifd87430a4a3168eac0ebac712f59c93cbad1b231
      78879b9a
    • Soby Mathew's avatar
      PSCI: Check early for invalid CPU state during CPU ON · 2f5aaded
      Soby Mathew authored
      This patch moves the check for valid CPU state during
      PSCI_CPU_ON to before the non secure entry point is programmed
      so as to enable it to return early on error.
      
      Change-Id: I1b1a21be421e2b2a6e33db236e91dee8688efffa
      2f5aaded
    • Soby Mathew's avatar
      Remove `ns_entrypoint` and `mpidr` from parameters in pm_ops · e146f4cc
      Soby Mathew authored
      This patch removes the non-secure entry point information being passed
      to the platform pm_ops which is not needed. Also, it removes the `mpidr`
      parameter for  platform pm hooks which are meant to do power management
      operations only on the current cpu.
      
      NOTE: PLATFORM PORTS MUST BE UPDATED AFTER MERGING THIS COMMIT.
      
      Change-Id: If632376a990b7f3b355f910e78771884bf6b12e7
      e146f4cc
  3. 22 Jan, 2015 5 commits
    • danh-arm's avatar
      Merge pull request #240 from danh-arm/sm/rem_coh_mem · eadd7a1b
      danh-arm authored
      Remove coherent memory v2
      eadd7a1b
    • Soby Mathew's avatar
      Remove coherent memory from the BL memory maps · ab8707e6
      Soby Mathew authored
      This patch extends the build option `USE_COHERENT_MEMORY` to
      conditionally remove coherent memory from the memory maps of
      all boot loader stages. The patch also adds necessary
      documentation for coherent memory removal in firmware-design,
      porting and user guides.
      
      Fixes ARM-Software/tf-issues#106
      
      Change-Id: I260e8768c6a5c2efc402f5804a80657d8ce38773
      ab8707e6
    • Soby Mathew's avatar
      Move bakery algorithm implementation out of coherent memory · 8c5fe0b5
      Soby Mathew authored
      This patch moves the bakery locks out of coherent memory to normal memory.
      This implies that the lock information needs to be placed on a separate cache
      line for each cpu. Hence the bakery_lock_info_t structure is allocated in the
      per-cpu data so as to minimize memory wastage. A similar platform per-cpu
      data is introduced for the platform locks.
      
      As a result of the above changes, the bakery lock api is completely changed.
      Earlier, a reference to the lock structure was passed to the lock implementation.
      Now a unique-id (essentially an index into the per-cpu data array) and an offset
      into the per-cpu data for bakery_info_t needs to be passed to the lock
      implementation.
      
      Change-Id: I1e76216277448713c6c98b4c2de4fb54198b39e0
      8c5fe0b5
    • Soby Mathew's avatar
      Add macros for domain specific barriers. · 5b1cd43b
      Soby Mathew authored
      This patch adds helper macros for barrier operations that specify
      the type of barrier (dmb, dsb) and the shareability domain (system,
      inner-shareable) it affects.
      
      Change-Id: I4bf95103e79da212c4fbdbc13d91ad8ac385d9f5
      5b1cd43b
    • Soby Mathew's avatar
      Remove the wfe() for bounded wait in bakery_lock · d4f4ad90
      Soby Mathew authored
      This patch is an optimization in the bakery_lock_get() function
      which removes the wfe() when waiting for other contenders to choose
      their ticket i.e when their `entering` flag is set. Since the time
      taken to execute bakery_get_ticket() by other contenders is bounded,
      this wait is a bounded time wait. Hence the removal of wfe() and the
      corresponding sev() and dsb() in bakery_get_ticket() may result
      in better time performance during lock acquisition.
      
      Change-Id: I141bb21294226b54cb6e89e7cac0175c553afd8d
      d4f4ad90
  4. 16 Jan, 2015 2 commits
  5. 13 Jan, 2015 1 commit
    • Soby Mathew's avatar
      Invalidate the dcache after initializing cpu-ops · 09997346
      Soby Mathew authored
      This patch fixes a crash due to corruption of cpu_ops
      data structure. During the secondary CPU boot, after the
      cpu_ops has been initialized in the per cpu-data, the
      dcache lines need to invalidated so that the update in
      memory can be seen later on when the dcaches are turned ON.
      Also, after initializing the psci per cpu data, the dcache
      lines are flushed so that they are written back to memory
      and dirty dcache lines are avoided.
      
      Fixes ARM-Software/tf-issues#271
      
      Change-Id: Ia90f55e9882690ead61226eea5a5a9146d35f313
      09997346
  6. 12 Jan, 2015 7 commits
  7. 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
  8. 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
  9. 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
  10. 06 Jan, 2015 1 commit
    • Juan Castillo's avatar
      Specify FIP filename at build time · 7f48fab9
      Juan Castillo authored
      This patch allows to define the name of the FIP at build time by
      defining the FIP_NAME variable. If FIP_NAME is not defined, default
      name 'fip.bin' is used.
      
      Documentation updated accordingly.
      
      Change-Id: Ic41f42aac379b0c958b3dfd02863ba8ba7108710
      7f48fab9
  11. 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
  12. 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
  13. 08 Dec, 2014 2 commits
  14. 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
  15. 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
  16. 11 Nov, 2014 2 commits