1. 20 Dec, 2016 1 commit
    • Sandrine Bailleux's avatar
      Fix integer overflows in BL1 FWU code · 949a52d2
      Sandrine Bailleux authored
      
      
      Before adding a base address and a size to compute the end
      address of an image to copy or authenticate, check this
      won't result in an integer overflow. If it does then consider
      the input arguments are invalid.
      
      As a result, bl1_plat_mem_check() can now safely assume the
      end address (computed as the sum of the base address and size
      of the memory region) doesn't overflow, as the validation is
      done upfront in bl1_fwu_image_copy/auth(). A debug assertion
      has been added nonetheless in the ARM implementation in order
      to help catching such problems, should bl1_plat_mem_check()
      be called in a different context in the future.
      
      Fixes TFV-1: Malformed Firmware Update SMC can result in copy
      of unexpectedly large data into secure memory
      
      Change-Id: I8b8f8dd4c8777705722c7bd0e8b57addcba07e25
      Signed-off-by: default avatarSandrine Bailleux <sandrine.bailleux@arm.com>
      Signed-off-by: default avatarDan Handley <dan.handley@arm.com>
      949a52d2
  2. 15 Dec, 2016 1 commit
    • dp-arm's avatar
      tbbr: Fix updating of Non-Trusted NV counter · d35dee23
      dp-arm authored
      
      
      The previous code required that a certificate be signed with the ROT
      key before the platform's NV counter could be updated with the value
      in the certificate.  This implies that the Non-Trusted NV counter was
      not being updated for Non-Trusted content certificates, as they cannot
      be signed with the ROT key in the TBBR CoT scheme.
      
      The code is reworked to only allow updating the platform's Trusted NV
      counter when a certificate protected by the Trusted NV counter is
      signed with the ROT key.
      
      Content certificates protected by the Non-Trusted NV counter are
      allowed to update the platform's Non-Trusted NV counter, assuming
      that the certificate value is higher than the platform's value.
      
      A new optional platform API has been introduced, named
      plat_set_nv_ctr2().  Platforms may choose to implement it and perform
      additional checks based on the authentication image descriptor before
      modifying the NV counters.  A default weak implementation is available
      that just calls into plat_set_nv_ctr().
      
      Fixes ARM-software/tf-issues#426
      
      Change-Id: I4fc978fd28a3007bc0cef972ff1f69ad0413b79c
      Signed-off-by: default avatardp-arm <dimitris.papastamos@arm.com>
      d35dee23
  3. 14 Dec, 2016 2 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 1 commit
    • Jeenu Viswambharan's avatar
      Define and use no_ret macro where no return is expected · a806dad5
      Jeenu Viswambharan authored
      
      
      There are many instances in ARM Trusted Firmware where control is
      transferred to functions from which return isn't expected. Such jumps
      are made using 'bl' instruction to provide the callee with the location
      from which it was jumped to. Additionally, debuggers infer the caller by
      examining where 'lr' register points to. If a 'bl' of the nature
      described above falls at the end of an assembly function, 'lr' will be
      left pointing to a location outside of the function range. This misleads
      the debugger back trace.
      
      This patch defines a 'no_ret' macro to be used when jumping to functions
      from which return isn't expected. The macro ensures to use 'bl'
      instruction for the jump, and also, for debug builds, places a 'nop'
      instruction immediately thereafter (unless instructed otherwise) so as
      to leave 'lr' pointing within the function range.
      
      Change-Id: Ib34c69fc09197cfd57bc06e147cc8252910e01b0
      Co-authored-by: default avatarDouglas Raillard <douglas.raillard@arm.com>
      Signed-off-by: default avatarJeenu Viswambharan <jeenu.viswambharan@arm.com>
      a806dad5
  6. 01 Dec, 2016 1 commit
    • 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
  7. 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
  8. 22 Nov, 2016 1 commit
  9. 16 Nov, 2016 9 commits
  10. 07 Nov, 2016 2 commits
    • Caesar Wang's avatar
      rockchip: remove no needed code for rk3399 · 06077161
      Caesar Wang authored
      
      
      We have do something for clocks gate.
      
      Fox example as the below:
      susped:
      clk_gate_con_save();
      clk_gate_con_disable();
      
      resume:
      clk_gate_con_restore();
      --
      
      SO, add the plls_suspend_prepare() and plls_resume_finish() are not
      necessary to S2R, that will save S2R time if remove them.
      
      BRANCH=none
      BUG=chrome-os-partner:58870,chrome-os-partner:55934
      TEST=build kevin, two dogfooders with suspend_stress_test
      passing 3000 cycles and still going on.
      
      Change-Id: Icfbabc0b3ea8d2b5108d4f3de99a803b6d459669
      Signed-off-by: default avatarCaesar Wang <wxt@rock-chips.com>
      06077161
    • Caesar Wang's avatar
      rockchip: disable watchdog during suspend · a14e0916
      Caesar Wang authored
      
      
      The CA53 and CM0 WDT clock gating in rk3399 SGRF, and ATF is in charge of
      it because the kernel can't touch SGRF.
      
      Basically the WDT didn't stop at suspend time, it just switched from the
      24M to the 32k clock. That meant that the WDT would fire if you slept for
      long enough. In other word, the watchdog timer over count will increase to
      750 (24*1000/32) times.
      The RK3399 HW watchdog interval is 21 seconds. When machine enters the
      suspend, the watchdog will reset the system after 35.7 (750/21) hours.
      
      BUG=chrome-os-partner:59257
      TEST=daisydog checked and set value, powerd_dbus_suspend to verify.
      
      Change-Id: I88bb2a05b7d67d5ffd292f9d05d033ae9a6a3593
      Signed-off-by: default avatarCaesar Wang <wxt@rock-chips.com>
      a14e0916
  11. 03 Nov, 2016 2 commits
    • Julius Werner's avatar
      rockchip: Add proper dependency tracking to M0 Makefile · 71581c9c
      Julius Werner authored
      
      
      This patch adds dependency rule generation and inclusion to the M0
      Makefile, so that M0 objects will get correctly remade with an
      incremental build if a header file they included changed.
      
      Change-Id: I2067bd9fd4d9dad3e77a09cbf09c7b4db3c1eda5
      Signed-off-by: default avatarJulius Werner <jwerner@chromium.org>
      71581c9c
    • Julius Werner's avatar
      rockchip: Clean up parent directory creation for M0 · e77ade28
      Julius Werner authored
      
      
      The dependencies in the M0 Makefile are not correctly laid out, which
      may lead to errors with make -j if the binary target gets evaluated
      before the target that creates the directory. In addition, the M0
      Makefile just calls mkdir without using the platform-independent macros
      from the main ARM TF build system. This patch fixes those issues,
      removes some unused (and broken) M0 build targets and merges the two M0
      output directories into one (since there's no real point splitting it up
      and it creates more hassle).
      
      Change-Id: Ia5002479cf9c57fea7aefa8ca88e373df3a51f61
      Signed-off-by: default avatarJulius Werner <jwerner@chromium.org>
      e77ade28
  12. 26 Oct, 2016 5 commits
  13. 24 Oct, 2016 5 commits
  14. 21 Oct, 2016 1 commit
  15. 12 Oct, 2016 1 commit
    • dp-arm's avatar
      Introduce ARM SiP service · f10796a0
      dp-arm authored
      
      
      This patch adds ARM SiP service for use by ARM standard platforms.
      This service is added to support the SMC interface for the Performance
      measurement framework(PMF).
      
      Change-Id: I26f5712f9ab54f5f721dd4781e35a16f40aacc44
      Signed-off-by: default avatardp-arm <dimitris.papastamos@arm.com>
      f10796a0
  16. 28 Sep, 2016 1 commit
  17. 23 Sep, 2016 1 commit
    • Sandrine Bailleux's avatar
      Whitelist version 9.6 of Foundation FVP · 4faa4a1d
      Sandrine Bailleux authored
      This prevents a warning being emitted in the console during FVP
      configuration setup when using the Foundation FVP 9.6 onwards.
      
      Change-Id: I685b8bd0dbd0119af4b0cb3f7d708fcc08e99561
      4faa4a1d
  18. 21 Sep, 2016 3 commits
    • Yatharth Kochar's avatar
      AArch32: Add support for ARM Cortex-A32 MPCore Processor · 03a3042b
      Yatharth Kochar authored
      This patch adds ARM Cortex-A32 MPCore Processor support
      in the CPU specific operations framework. It also includes
      this support for the Base FVP port.
      
      Change-Id: If3697b88678df737c29f79cf3fa1ea2cb6fa565d
      03a3042b
    • Yatharth Kochar's avatar
      AArch32: Support in SP_MIN to receive arguments from BL2 · d9915518
      Yatharth Kochar authored
      This patch adds support in SP_MIN to receive generic and
      platform specific arguments from BL2.
      
      The new signature is as following:
          void sp_min_early_platform_setup(void *from_bl2,
               void *plat_params_from_bl2);
      
      ARM platforms have been modified to use this support.
      
      Note: Platforms may break if using old signature.
            Default value for RESET_TO_SP_MIN is changed to 0.
      
      Change-Id: I008d4b09fd3803c7b6231587ebf02a047bdba8d0
      d9915518
    • Yatharth Kochar's avatar
      AArch32: Add ARM platform changes in BL2 · 6fe8aa2f
      Yatharth Kochar authored
      This patch adds ARM platform changes in BL2 for AArch32 state.
      It instantiates a descriptor array for ARM platforms describing
      image and entrypoint information for `SCP_BL2`, `BL32` and `BL33`.
      It also enables building of BL2 for ARCH=aarch32.
      
      Change-Id: I60dc7a284311eceba401fc789311c50ac746c51e
      6fe8aa2f