1. 13 Dec, 2016 4 commits
    • Antonio Nino Diaz's avatar
      Forbid block descriptors in initial xlat table levels · 2240f45b
      Antonio Nino Diaz authored
      
      
      In AArch64, depending on the granularity of the translation tables,
      level 0 and/or level 1 of the translation tables may not support block
      descriptors, only table descriptors.
      
      This patch introduces a check to make sure that, even if theoretically
      it could be possible to create a block descriptor to map a big memory
      region, a new subtable will be created to describe its mapping.
      
      Change-Id: Ieb9c302206bfa33fbaf0cdc6a5a82516d32ae2a7
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      2240f45b
    • Antonio Nino Diaz's avatar
      ARM platforms: Replace address space size defines · e60e74bd
      Antonio Nino Diaz authored
      
      
      The now deprecated ADDR_SPACE_SIZE has been replaced by the two
      defines PLAT_PHY_ADDR_SPACE_SIZE and PLAT_VIRT_ADDR_SPACE_SIZE.
      
      Change-Id: I027a2f02f47ab2f679b8979a6dbfb0f08270a1a4
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      e60e74bd
    • Antonio Nino Diaz's avatar
      Add PLAT_xxx_ADDR_SPACE_SIZE definitions · 0029624f
      Antonio Nino Diaz authored
      
      
      Added the definitions `PLAT_PHY_ADDR_SPACE_SIZE` and
      `PLAT_VIRT_ADDR_SPACE_SIZE` which specify respectively the physical
      and virtual address space size a platform can use.
      
      `ADDR_SPACE_SIZE` is now deprecated. To maintain compatibility, if any
      of the previous defines aren't present, the value of `ADDR_SPACE_SIZE`
      will be used instead.
      
      For AArch64, register ID_AA64MMFR0_EL1 is checked to calculate the
      max PA supported by the hardware and to verify that the previously
      mentioned definition is valid. For AArch32, a 40 bit physical
      address space is considered.
      
      Added asserts to check for overflows.
      
      Porting guide updated.
      
      Change-Id: Ie8ce1da5967993f0c94dbd4eb9841fc03d5ef8d6
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      0029624f
    • Antonio Nino Diaz's avatar
      Assert correct granularity when mapping a PA · d3d6c6e3
      Antonio Nino Diaz authored
      
      
      Each translation table level entry can only map a given virtual
      address onto physical addresses of the same granularity. For example,
      with the current configuration, a level 2 entry maps blocks of 2 MB,
      so the physical address must be aligned to 2 MB. If the address is not
      aligned, the MMU will just ignore the lower bits.
      
      This patch adds an assertion to make sure that physical addresses are
      always aligned to the correct boundary.
      
      Change-Id: I0ab43df71829d45cdbe323301b3053e08ca99c2c
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      d3d6c6e3
  2. 12 Dec, 2016 1 commit
  3. 08 Dec, 2016 5 commits
  4. 07 Dec, 2016 2 commits
    • Soby Mathew's avatar
      Allow ARM Standard platforms to dynamically define PSCI capability · 5486a965
      Soby Mathew authored
      
      
      The capabilities exposed by the PSCI generic layer depends on the hooks
      populated by the platform in `plat_arm_psci_pm_ops`. Currently ARM
      Standard platforms statically define this structure. However, some
      platforms may want to modify the hooks at runtime before registering
      them with the generic layer.
      
      This patch introduces a new ARM platform layer API
      `plat_arm_psci_override_pm_ops` which allows the platform to probe
      the power controller and modify `plat_arm_psci_pm_ops` if required.
      Consequently, 'plat_arm_psci_pm_ops' is no longer qualified as
      `const` on ARM Standard platforms.
      
      Change-Id: I7dbb44b7bd36c20ec14ded5ee45a96816ca2ab9d
      Signed-off-by: default avatarSoby Mathew <soby.mathew@arm.com>
      5486a965
    • Soby Mathew's avatar
      Introduce SCP power management abstraction · b12a2b49
      Soby Mathew authored
      
      
      This patch introduces an additional layer of abstraction between
      CSS power management hooks and the SCPI driver. A new set of APIs
      are introduced in order to abstract out power management operations
      from underlying communication mechanism with the SCP.
      
      The SCPI and the associated MHU drivers are moved into a `drivers`
      folder in CSS. The new SCP communication abstraction layer is added
      in the `drivers/scp` folder. The existing CSS power management
      uses the new APIs to reflect this abstraction.
      
      Change-Id: I7d775129fc0558e9703c2724523fb8f0a916838c
      Signed-off-by: default avatarSoby Mathew <soby.mathew@arm.com>
      b12a2b49
  5. 05 Dec, 2016 5 commits
  6. 01 Dec, 2016 5 commits
    • David Cunado's avatar
      Reset EL2 and EL3 configurable controls · 939f66d6
      David Cunado authored
      
      
      This patch resets EL2 and EL3 registers that have architecturally
      UNKNOWN values on reset and that also provide EL2/EL3 configuration
      and trap controls.
      
      Specifically, the EL2 physical timer is disabled to prevent timer
      interrups into EL2 - CNTHP_CTL_EL2 and CNTHP_CTL for AArch64 and AArch32,
      respectively.
      
      Additionally, for AArch64, HSTR_EL2 is reset to avoid unexpected traps of
      non-secure access to certain system registers at EL1 or lower.
      
      For AArch32, the patch also reverts the reset to SDCR which was
      incorrectly added in a previous change.
      
      Change-Id: If00eaa23afa7dd36a922265194ccd6223187414f
      Signed-off-by: default avatarDavid Cunado <david.cunado@arm.com>
      939f66d6
    • davidcunado-arm's avatar
      Merge pull request #771 from geesun/C99 · fbb3afbd
      davidcunado-arm authored
      For C99 compliance, changed the unsigned char/short bitfield to unsigned int bitfields
      fbb3afbd
    • Qixiang.Xu's avatar
      emmc/sd: for C99 compliance, changed the unsigned char/short bitfield to unsigned int bitfields · 80d4d748
      Qixiang.Xu authored
      
      
      C99 restricts bitfields type is signed and unsigned integer or _Bool.
      See section 6.7.2.1 Structure and union specifiers.
      "A bit-field shall have a type that is a qualified or unqualified version
       of _Bool, signed int, unsigned int, or some other implementation-defined type."
      
      Since the compiler packs bitfields anyways, actual data layout in the structure is unaffected.
      Signed-off-by: default avatarAlex Nemirovsky <alex.nemirovsky@cortina-access.com>
      80d4d748
    • Yatharth Kochar's avatar
      AArch32: Miscellaneous fixes in the AArch32 code · 69d59e0c
      Yatharth Kochar authored
      
      
      This patch makes following miscellaneous fixes:
      * pl011_console.S: Fixed the bit mask used to check if the
        transmit FIFO is full or empty.
      * smcc_macros.S: Added `_fsxc` suffix while updating the SPSR.
        By default the assembler assumes `_fc` suffix which does not
        update all the fields in SPSR. By adding `_fsxc` suffix all
        the fields gets updated.
      * platform_helpers.S: Removed the weak definition for
        `plat_my_core_pos()` as this is a mandatory function which
        needs to be defined by all platforms.
      
      Change-Id: I8302292533c943686fff8d7c749a07132c052a3b
      Signed-off-by: default avatarYatharth Kochar <yatharth.kochar@arm.com>
      69d59e0c
    • davidcunado-arm's avatar
      Merge pull request #769 from sandrine-bailleux-arm/sb/trusty-assert-init · bc8f9b84
      davidcunado-arm authored
      Check Trusty is present during the SPD's initialization
      bc8f9b84
  7. 30 Nov, 2016 2 commits
  8. 29 Nov, 2016 1 commit
  9. 25 Nov, 2016 1 commit
  10. 24 Nov, 2016 1 commit
    • Soren Brinkmann's avatar
      rk3399: Add CFI debug information to SRAM functions · aa2345e9
      Soren Brinkmann authored
      Commit b91d935f
      ("Add CFI debug frame information for ASM functions") modifies the
      assembly macros 'func' and 'endfunc' to include CFI debug frame
      information.
      
      The rockchip platform uses a custom version of the 'func' macro with the
      common 'endfunc' macro. The custom macro wasn't updated in
      b91d935f resulting in the following
      build error:
        plat/rockchip/rk3399/drivers/pmu/plat_pmu_macros.S: Assembler messages:
        plat/rockchip/rk3399/drivers/pmu/plat_pmu_macros.S:155: Error: .cfi_endproc without corresponding .cfi_startproc
        Makefile:532: recipe for target 'build/rk3399/release/bl31/plat_helpers.o' failed
        make: *** [build/rk3399/release/bl31/plat_helpers.o] Error 1
      
      Fixing this by updating the sram_func macro in the rk3399 port.
      
      Fixes: b91d935f
      
       ("Add CFI debug frame information for ASM functions")
      Signed-off-by: default avatarSoren Brinkmann <soren.brinkmann@xilinx.com>
      aa2345e9
  11. 23 Nov, 2016 4 commits
  12. 22 Nov, 2016 4 commits
  13. 21 Nov, 2016 4 commits
    • Soby Mathew's avatar
      Fix normal memory bakery lock implementation · 95c12559
      Soby Mathew authored
      
      
      This patch fixes an issue in the normal memory bakery lock
      implementation. During assertion of lock status, there is a possibility
      that the assertion could fail. This is because the previous update done
      to the lock status by the owning CPU when not participating in cache
      coherency could result in stale data in the cache due to cache maintenance
      operations not propagating to all the caches. This patch fixes this issue
      by doing an extra read cache maintenance operation prior to the assertion.
      
      Fixes ARM-software/tf-issues#402
      
      Change-Id: I0f38a7c52476a4f58e17ebe0141d256d198be88d
      Signed-off-by: default avatarSoby Mathew <soby.mathew@arm.com>
      95c12559
    • Douglas Raillard's avatar
      Add CFI debug frame information for ASM functions · b91d935f
      Douglas Raillard authored
      
      
      This allows the debugger to print the callstack when there is an
      assembly function in the callstack.
      
      It will work as long as the CFA pointer (frame pointer) location is not
      modified (i.e. x29 is not touched in AArch64 state). It is the case in
      almost all assembly functions, so this patch improves the average
      debugging experience. Call stacks from the debugger should still be
      interpreted with care. In more complex functions, one could use .cfi*
      directives to inform the debugger about the new location of the CFA
      pointer.
      
      Change-Id: I9dabfbc033b45e8528e67f4823c17de7bf02fa24
      Signed-off-by: default avatarDouglas Raillard <douglas.raillard@arm.com>
      b91d935f
    • danh-arm's avatar
      Merge pull request #759 from douglas-raillard-arm/dr/cosmetic_vectors_tables · 6fd8d3f8
      danh-arm authored
      Cosmetic change to exception table
      6fd8d3f8
    • danh-arm's avatar
      Merge pull request #758 from douglas-raillard-arm/dr/doc_interrupt_handler · 18c7c2df
      danh-arm authored
      Docs: Clarify IRQ/FIQ handler API in Interrupt Design Guide
      18c7c2df
  14. 17 Nov, 2016 1 commit
    • Douglas Raillard's avatar
      Docs: Clarify IRQ/FIQ handler API in Interrupt Design Guide · 94a8ca24
      Douglas Raillard authored
      
      
      The API description currently states that interrupt handlers
      (interrupt_type_handler_t pointers) SHOULD return a pointer
      to the target cpu_context.
      
      This patch rewords the description of the interrupts handlers to state
      that it MUST return a pointer to the target security context. It also
      warns about potential portability issue. Specifically, this pointer is
      not used on AArch64 and calls to context library APIs must be used to
      ask BL31 to return to a specific context. However, this could change in
      the future and interrupt handlers must always return the pointer.
      
      Change-Id: I3f82a046de4d7a5b51a8cbebe7eb2a00dbbdb4f0
      Signed-off-by: default avatarDouglas Raillard <douglas.raillard@arm.com>
      94a8ca24