1. 01 Nov, 2018 1 commit
    • Sudeep Holla's avatar
      plat: juno: fix build for !CSS_USE_SCMI_DRIVER · 8db71e37
      Sudeep Holla authored
      
      
      When CSS_USE_SCMI_DRIVER is not defined or set to 0, we get the
      following build error.
      
      plat/arm/board/juno/juno_topology.c:16:19: error: ‘CSS_SCMI_PAYLOAD_BASE’ undeclared here (not in a function)
         .scmi_mbx_mem = CSS_SCMI_PAYLOAD_BASE,
                         ^~~~~~~~~~~~~~~~~~~~~
      plat/arm/board/juno/juno_topology.c:17:38: error: ‘CSS_SCMI_MHU_DB_REG_OFF’ undeclared here (not in a function)
         .db_reg_addr = PLAT_CSS_MHU_BASE + CSS_SCMI_MHU_DB_REG_OFF,
                                            ^~~~~~~~~~~~~~~~~~~~~~~
                                            CSS_CPU_PWR_STATE_OFF
      
      Fix the error in order to get function legacy SCPI support functional.
      
      Change-Id: I00cb80db9968aa0be546e33a3a682a2db87719be
      Signed-off-by: default avatarSudeep Holla <sudeep.holla@arm.com>
      8db71e37
  2. 29 Oct, 2018 5 commits
    • Antonio Nino Diaz's avatar
      plat/arm: Fix MISRA defects in SiP SVC handler · 15b94cc1
      Antonio Nino Diaz authored
      
      
      No functional changes.
      
      Change-Id: I9b9f8d3dfde08d57706ad5450de6ff858a55ac01
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      15b94cc1
    • Deepak Pandey's avatar
      plat/arm: Introduce the N1SDP. · 80d37c28
      Deepak Pandey authored
      
      
      This patch adds support for the N1SDP (NeoVerse N1 System Development
      Platform). It is an initial port and additional features are expected
      to be added later.
      
      The port includes only BL31 support as the System Control Processor
      (SCP) is expected to take the role of primary boatloader
      
      Change-Id: Ife17d8215a7bfcc1420204a72205e7ef920d0c10
      Signed-off-by: default avatarDeepak Pandey <Deepak.Pandey@arm.com>
      80d37c28
    • Soby Mathew's avatar
      FVP: Enable PIE for RESET_TO_BL31=1 · fc922ca8
      Soby Mathew authored
      
      
      This patch enabled PIE for FVP when RESET_TO_BL31=1. The references
      to BL31_BASE are replaced by BL31_START as being a symbol exported by
      the linker, will create a dynamic relocation entry in .rela.dyn and
      hence will be fixed up by dynamic linker at runtime. Also, we disable
      RECLAIM_INIT_CODE when PIE is enabled as the init section overlay
      creates some static relocations which cannot be handled by the
      dynamic linker currently.
      
      Change-Id: I86df1b0a8b2a8bbbe7c3f3c0b9a08c86c2963ec0
      Signed-off-by: default avatarSoby Mathew <soby.mathew@arm.com>
      fc922ca8
    • Soby Mathew's avatar
      plat/arm: Use `mov_imm` macro to load immediate values · bd83b396
      Soby Mathew authored
      
      
      This patch makes use of mov_imm macro where possible to load
      immediate values within ARM platform layer.
      
      Change-Id: I02bc7fbc1fa334c9fccf76fbddf515952f9a1298
      Signed-off-by: default avatarSoby Mathew <soby.mathew@arm.com>
      bd83b396
    • Soby Mathew's avatar
      Add helper to return reference to a symbol · 6a7b3005
      Soby Mathew authored
      
      
      This patch adds a utility function to return
      the address of a symbol. By default, the compiler
      generates adr/adrp instruction pair to return
      the reference and this utility is used to override
      this compiler generated to code and use `ldr`
      instruction.
      
      This is needed for Position Independent Executable
      when it needs to reference a symbol which is constant
      and does not depend on the execute address of the
      binary.
      
      For example, on the FVP, the GICv3 register context is
      stored in a secure carveout (arm_el3_tzc_dram) within
      DDR and does not relocate with the BL image. Now if
      BL31 is executing at a different address other than
      the compiled address, using adrp/adr instructions to
      reference this memory will not work as they generate an
      address that is PC relative. The way to get around this
      problem is to reference it as non-PC relative (i.e
      non-relocatable location) via `ldr` instruction.
      
      Change-Id: I5008a951b007144258121690afb68dc8e12ee6f7
      Signed-off-by: default avatarSoby Mathew <soby.mathew@arm.com>
      6a7b3005
  3. 26 Oct, 2018 5 commits
    • Roberto Vargas's avatar
      Convert arm_setup_page_tables into a generic helper · 0916c38d
      Roberto Vargas authored
      
      
      This function is not related to Arm platforms and can be reused by other
      platforms if needed.
      
      Change-Id: Ia9c328ce57ce7e917b825a9e09a42b0abb1a53e8
      Co-authored-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      0916c38d
    • Antonio Nino Diaz's avatar
      xlat: Fix compatibility between v1 and v2 · 03987d01
      Antonio Nino Diaz authored
      
      
      There are several platforms using arm_setup_page_tables(), which is
      supposed to be Arm platform only. This creates several dependency
      problems between platforms.
      
      This patch adds the definition XLAT_TABLES_LIB_V2 to the xlat tables lib
      v2 makefile. This way it is possible to detect from C code which version
      is being used and include the correct header.
      
      The file arm_xlat_tables.h has been renamed to xlat_tables_compat.h and
      moved to a common folder. This way, when in doubt, this header can be
      used to guarantee compatibility, as it includes the correct header based
      on XLAT_TABLES_LIB_V2.
      
      This patch also removes the usage of ARM_XLAT_TABLES_V1 from QEMU (so
      that is now locked in xlat lib v2) and ZynqMP (where it was added as a
      workaround).
      
      Change-Id: Ie1e22a23b44c549603d1402a237a70d0120d3e04
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      03987d01
    • Chandni Cherukuri's avatar
      plat/arm/sgi: add support for SGI-Clark.Ares platform · b62b5b92
      Chandni Cherukuri authored
      
      
      SGI-Clark.Ares platform is a variant of the SGI-Clark platform. It has
      two clusters of four Ares CPUs each. Though very similar to the SGI575
      platform, there are subtle differences. HW_CONFIG and TB_FW_CONFIG dts
      files have been added.
      
      Change-Id: I740a33cbd1c3b1f1984cb56243b46ad379bab3e6
      Signed-off-by: default avatarChandni Cherukuri <chandni.cherukuri@arm.com>
      b62b5b92
    • Chandni Cherukuri's avatar
      plat/arm/sgi: add support for SGI-Clark platform · 7c294f95
      Chandni Cherukuri authored
      
      
      SGI-Clark platform is the next version in the Arm's SGI platform
      series. One of the primary difference between the SGI-575 platform and
      the SGI-Clark platform is the MHU version (MHUv2 in case of SGI-Clark).
      Add the required base support for SGI-Clark platform.
      
      Change-Id: If396e5279fdf801d586662dad0b55195e81371e4
      Signed-off-by: default avatarChandni Cherukuri <chandni.cherukuri@arm.com>
      7c294f95
    • Chandni Cherukuri's avatar
      plat/arm/sgi: disable Ares cpu power down bit in reset handler · 20a8f7a8
      Chandni Cherukuri authored
      
      
      On SGI platforms that include Ares CPUs, the 'CORE_PWRDN_EN' bit of
      'CPUPWRCTLR_EL1' register requires an explicit write to clear it to
      enable hotplug and idle to function correctly.
      
      The reset value of the CORE_PWRDN_EN bit is zero but it still requires
      this explicit clear to zero. This indicates that this could be a model
      related issue but for now this issue can be fixed be clearing the
      CORE_PWRDN_EN bit in the platform specific reset handler function.
      
      Change-Id: I8b9884ae27a2986d789bfec2e9ae792ef930944e
      Signed-off-by: default avatarChandni Cherukuri <chandni.cherukuri@arm.com>
      20a8f7a8
  4. 25 Oct, 2018 1 commit
    • Antonio Nino Diaz's avatar
      plat/arm: Make crash console functions strong · c02c69f8
      Antonio Nino Diaz authored
      
      
      In Arm platforms the crash console doesn't print anything if the crash
      happens early enough. This happens in all images, not only BL1. The
      reason is that they the files ``plat/common/aarch64/platform_helpers.S``
      and ``plat/arm/common/aarch64/arm_helpers.S``, and the crash console
      functions are defined as weak in both files. In practice, the linker
      can pick the one in ``plat/common``, which simply switches the multi
      console to crash mode when it wants to initialize the crash console.
      In the case of Arm platforms, there are no console drivers registered
      at that point, so nothing is printed.
      
      This patch makes the functions in plat/arm strong so that they override
      the weak functions in plat/common.
      
      Change-Id: Id358db7d2567d7df0951790a695636cf6c9ac57f
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      c02c69f8
  5. 23 Oct, 2018 2 commits
    • Antonio Nino Diaz's avatar
      juno: Increase BL2 max size · 472158f6
      Antonio Nino Diaz authored
      
      
      Version 1.4.7 of libfdt is bigger than the current one (1.4.2) and the
      current reserved space for BL2 in Juno isn't enough to fit the Trusted
      Firmware when compiling with clang or armclang.
      
      Change-Id: I7b73394ca60d17f417773f56dd5b3d54495a45a8
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      472158f6
    • Antonio Nino Diaz's avatar
      tzc: Fix MISRA defects · af6491f8
      Antonio Nino Diaz authored
      
      
      The definitions FAIL_CONTROL_*_SHIFT were incorrect, they have been
      fixed.
      
      The types tzc_region_attributes_t and tzc_action_t have been removed and
      replaced by unsigned int because it is not allowed to do logical
      operations on enums.
      
      Also, fix some address definitions in arm_def.h.
      
      Change-Id: Id37941d76883f9fe5045a5f0a4224c133c504d8b
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      af6491f8
  6. 18 Oct, 2018 5 commits
    • Chandni Cherukuri's avatar
      plat/arm/scmi: introduce plat_css_get_scmi_info API · b911dddc
      Chandni Cherukuri authored
      
      
      The default values of 'plat_css_scmi_plat_info' is not applicable for
      all the platforms. There should be a provision to let platform code to
      register a platform specific instance of scmi_channel_plat_info_t.
      
      Add a new API 'plat_css_get_scmi_info' which lets the platform to
      register a platform specific instance of scmi_channel_plat_info_t and
      remove the default values.
      
      In addition to this, the existing 'plat_css_scmi_plat_info' structure
      is removed from the common code and instantiated for the platforms that
      need it. This allows for a consistent provisioning of the SCMI channel
      information across all the existing and upcoming platforms.
      
      Change-Id: I4fb65d7f2f165b78697b4677f1e8d81edebeac06
      Signed-off-by: default avatarChandni Cherukuri <chandni.cherukuri@arm.com>
      b911dddc
    • Chandni Cherukuri's avatar
      plat/arm/sgi: add system-id node in HW_CONFIG dts · 8c7b55f9
      Chandni Cherukuri authored
      
      
      Dynamically populating the 'system-id' node in the HW_CONFIG dts makes
      it difficult to enforce memory overlap checks. So add the system-id node
      in the HW_CONFIG dts file as a place holder with 'platform-id' and
      'config-id' set to zero.
      
      The code at BL2 stage determines the values of 'platform-id' and
      'config-id' at runtime and updates the corresponding fields in the
      system-id node of HW_CONFIG dts.
      
      Change-Id: I2ca9980b994ac418da8afa0c72716ede10aff68a
      Signed-off-by: default avatarChandni Cherukuri <chandni.cherukuri@arm.com>
      8c7b55f9
    • Chandni Cherukuri's avatar
      plat/arm/sgi: move fdts files to sgi575 board directory · 63197d01
      Chandni Cherukuri authored
      
      
      To align the placement of ftds files with that of other Arm platforms,
      move the ftds files from plat/arm/css/sgi/ to plat/arm/board/sgi575.
      
      Change-Id: Id7c772eb5cf3d308d4e02a3c8099218e889a0e96
      Signed-off-by: default avatarChandni Cherukuri <chandni.cherukuri@arm.com>
      63197d01
    • Chandni Cherukuri's avatar
      plat/arm/sgi: remove unused code · a50a5830
      Chandni Cherukuri authored
      
      
      On SGI platforms, the interconnect is setup by the SCP and so the
      existing unused interconnect setup in sgi575 platform code can be
      removed. As a result of this, sgi_plat_config.c and sgi_bl1_setup.c
      files can be removed as these files are now empty or can be
      substainated by the existing weak functions.
      
      Change-Id: I3c883e4d1959d890bf2213a9be01f02551ea3a45
      Signed-off-by: default avatarChandni Cherukuri <chandni.cherukuri@arm.com>
      a50a5830
    • Chandni Cherukuri's avatar
      plat/arm/sgi: reorganize platform macros · 91e6f26f
      Chandni Cherukuri authored
      
      
      In preparation of adding support for upcoming SGI platforms, macros
      common to all the SGI platforms are moved into sgi_base_platform_def.h
      file. Macros that are specific to sgi575 platform remain in the
      platform_def.h file. In addition to this, the platform_def.h file is
      moved to sgi575 board directory. Also the ENT_CPU_SOURCES has been
      renamed to SGI_CPU_SOURCES and moved from sgi-common.mk to board
      specific makefile platform.mk
      
      Change-Id: Iccdd9f070f4feea232b9fbf4fdcc0ef2e8eccbf2
      Signed-off-by: default avatarChandni Cherukuri <chandni.cherukuri@arm.com>
      91e6f26f
  7. 16 Oct, 2018 1 commit
  8. 15 Oct, 2018 1 commit
  9. 11 Oct, 2018 3 commits
  10. 10 Oct, 2018 4 commits
  11. 09 Oct, 2018 1 commit
  12. 03 Oct, 2018 4 commits
  13. 02 Oct, 2018 1 commit
    • Antonio Nino Diaz's avatar
      plat/arm: Remove option ARM_BOARD_OPTIMISE_MEM · c0740e4f
      Antonio Nino Diaz authored
      
      
      This option makes it hard to optimize the memory definitions of all Arm
      platforms because any change in the common defines must work in all of
      them. The best thing to do is to remove it and move the definition to
      each platform's header.
      
      FVP, SGI and SGM were using the definitions in board_arm_def.h. The
      definitions have been copied to each platform's platform_def.h. Juno
      was already using the ones in platform_def.h, so there have been no
      changes.
      
      Change-Id: I9aecd11bbc72a3d0d7aad1ef9934d8df21dcfaf2
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      c0740e4f
  14. 28 Sep, 2018 3 commits
  15. 26 Sep, 2018 1 commit
  16. 24 Sep, 2018 1 commit
  17. 21 Sep, 2018 1 commit