1. 01 Oct, 2019 2 commits
    • Radoslaw Biernacki's avatar
      qemu/qemu_sbsa: Adding memory mapping for both FLASH0/FLASH1 · fa405e3b
      Radoslaw Biernacki authored
      This patch adds mapping for secure FLASH0 for qemu/virt and
      qemu/qemu_sbsa platforms. This change is targeted for sbsa but since both
      platforms share common code, changes in common defines was necessary.
      
      For qemu_sbsa, this patch adds necessary mapping in order to boot without
      semi-hosting from secure FLASH0. EFI need to stay in FLASH1 (share it with
      variables) since it need to "run in place" in non secure domain. Changes
      for this are under RFC at edk2-platforms mailing list:
      https://patches.linaro.org/patch/171327/
      
      
      (edk2-platforms/Platform/Qemu/SbsaQemu/SbsaQemu.dsc).
      
      In docs qemu/virt is described as using semi-hosting, therefore this change
      should be orthogonal to existing assumptions while giving possibility to
      store both bl1 and fip in FLASH0 at some point (additional changes required
      for that).
      Signed-off-by: default avatarRadoslaw Biernacki <radoslaw.biernacki@linaro.org>
      Change-Id: I782bc3637c91c01eaee680b3c5c408e24b4b6e28
      fa405e3b
    • Radoslaw Biernacki's avatar
      qemu/qemu_sbsa: Adding Qemu SBSA platform · 558a6f44
      Radoslaw Biernacki authored
      
      
      This patch introduces Qemu SBSA platform.
      Both platform specific files where copied from qemu/qemu with changes for
      DRAM base above 32bit and removal of ARMv7 conditional defines/code.
      Documentation is aligned to rest of SBSA patches along the series and
      planed changes in edk2-platform repo.
      
      Fixes ARM-software/tf-issues#602
      Signed-off-by: default avatarRadoslaw Biernacki <radoslaw.biernacki@linaro.org>
      Change-Id: I8ebc34eedb2268365e479ef05654b2df1b99128c
      558a6f44
  2. 18 Sep, 2019 2 commits
    • Radoslaw Biernacki's avatar
      qemu: Simplify the image size calculation · 9a006ad1
      Radoslaw Biernacki authored
      
      
      Patch introduce the macro NS_IMAGE_MAX_SIZE to simplify the image size
      calculation. Use of additional parenthesis removes the possibility of
      improper calculations due nested macro expansion for subtraction.
      In case of platforms with DRAM window over 32bits, patch also removes
      potential problems with type casting, as meminfo.image_size is uint32_t
      but macro calculations were done in 64bit space.
      Signed-off-by: default avatarRadoslaw Biernacki <radoslaw.biernacki@linaro.org>
      Change-Id: I2d05a2d9dd6000dba6114df53262995cf85af018
      9a006ad1
    • Radoslaw Biernacki's avatar
      qemu: introducing sub-platforms to qemu platform · 301d27d9
      Radoslaw Biernacki authored
      
      
      This commit change the plat/qemu directory structure into:
      
      `-- plat
          `-- qemu
              |-- common    (files shared with all qemu subplatforms)
              |-- qemu      (original qemu platform)
              |-- qemu_sbsa (new sqemu_sbsa platform)
              |-- subplat1
              `-- subplat2
      
      This opens the possibility of adding new qemu sub-platforms which reuse
      existing common platform code. The first platform which will leverage new
      structure will be SBSA platform.
      Signed-off-by: default avatarRadoslaw Biernacki <radoslaw.biernacki@linaro.org>
      Signed-off-by: default avatarSandrine Bailleux <sandrine.bailleux@arm.com>
      Change-Id: Id0d8133e1fffc1b574b69aa2770ebc02bb837a9b
      301d27d9
  3. 13 Sep, 2019 1 commit
    • Andre Przywara's avatar
      qemu: Move and generalise FDT PSCI fixup · f240728b
      Andre Przywara authored
      
      
      The QEMU platform port scans its device tree to advertise PSCI as the
      CPU enable method. It does this by scanning *every* node in the DT and
      check whether its compatible string starts with "arm,cortex-a". Then it
      sets the enable-method to PSCI, if it doesn't already have one.
      
      Other platforms might want to use this functionality as well, so let's
      move it out of the QEMU platform directory and make it more robust by
      fixing some shortcomings:
      - A compatible string starting with a certain prefix is not a good way
      to find the CPU nodes. For instance a "arm,cortex-a72-pmu" node will
      match as well and is in turn favoured with an enable-method.
      - If the DT already has an enable-method, we won't change this to PSCI.
      
      Those two issues will for instance fail on the Raspberry Pi 4 DT.
      To fix those problems, we adjust the scanning method:
      The DT spec says that all CPU nodes are subnodes of the mandatory
      /cpus node, which is a subnode of the root node. Also each CPU node has
      to have a device_type = "cpu" property. So we find the /cpus node, then
      scan for a subnode with the proper device_type, forcing the
      enable-method to "psci".
      We have to restart this search after a property has been patched, as the
      node offsets might have changed meanwhile.
      
      This allows this routine to be reused for the Raspberry Pi 4 later.
      
      Change-Id: I00cae16cc923d9f8bb96a9b2a2933b9a79b06139
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      f240728b
  4. 01 Aug, 2019 1 commit
    • Julius Werner's avatar
      Switch AARCH32/AARCH64 to __aarch64__ · 402b3cf8
      Julius Werner authored
      
      
      NOTE: AARCH32/AARCH64 macros are now deprecated in favor of __aarch64__.
      
      All common C compilers pre-define the same macros to signal which
      architecture the code is being compiled for: __arm__ for AArch32 (or
      earlier versions) and __aarch64__ for AArch64. There's no need for TF-A
      to define its own custom macros for this. In order to unify code with
      the export headers (which use __aarch64__ to avoid another dependency),
      let's deprecate the AARCH32 and AARCH64 macros and switch the code base
      over to the pre-defined standard macro. (Since it is somewhat
      unintuitive that __arm__ only means AArch32, let's standardize on only
      using __aarch64__.)
      
      Change-Id: Ic77de4b052297d77f38fc95f95f65a8ee70cf200
      Signed-off-by: default avatarJulius Werner <jwerner@chromium.org>
      402b3cf8
  5. 26 Jul, 2019 2 commits
  6. 28 Jun, 2019 2 commits
  7. 12 Apr, 2019 1 commit
    • Ambroise Vincent's avatar
      Mbed TLS: Remove weak heap implementation · 2374ab17
      Ambroise Vincent authored
      
      
      The implementation of the heap function plat_get_mbedtls_heap() becomes
      mandatory for platforms supporting TRUSTED_BOARD_BOOT.
      
      The shared Mbed TLS heap default weak function implementation is
      converted to a helper function get_mbedtls_heap_helper() which can be
      used by the platforms for their own function implementation.
      
      Change-Id: Ic8f2994e25e3d9fcd371a21ac459fdcafe07433e
      Signed-off-by: default avatarAmbroise Vincent <ambroise.vincent@arm.com>
      2374ab17
  8. 03 Apr, 2019 1 commit
  9. 01 Feb, 2019 2 commits
  10. 15 Jan, 2019 1 commit
  11. 04 Jan, 2019 1 commit
    • Antonio Nino Diaz's avatar
      Sanitise includes across codebase · 09d40e0e
      Antonio Nino Diaz authored
      Enforce full include path for includes. Deprecate old paths.
      
      The following folders inside include/lib have been left unchanged:
      
      - include/lib/cpus/${ARCH}
      - include/lib/el3_runtime/${ARCH}
      
      The reason for this change is that having a global namespace for
      includes isn't a good idea. It defeats one of the advantages of having
      folders and it introduces problems that are sometimes subtle (because
      you may not know the header you are actually including if there are two
      of them).
      
      For example, this patch had to be created because two headers were
      called the same way: e0ea0928 ("Fix gpio includes of mt8173 platform
      to avoid collision."). More recently, this patch has had similar
      problems: 46f9b2c3 ("drivers: add tzc380 support").
      
      This problem was introduced in commit 4ecca339
      
       ("Move include and
      source files to logical locations"). At that time, there weren't too
      many headers so it wasn't a real issue. However, time has shown that
      this creates problems.
      
      Platforms that want to preserve the way they include headers may add the
      removed paths to PLAT_INCLUDES, but this is discouraged.
      
      Change-Id: I39dc53ed98f9e297a5966e723d1936d6ccf2fc8f
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      09d40e0e
  12. 08 Nov, 2018 1 commit
    • Antonio Nino Diaz's avatar
      Standardise header guards across codebase · c3cf06f1
      Antonio Nino Diaz authored
      
      
      All identifiers, regardless of use, that start with two underscores are
      reserved. This means they can't be used in header guards.
      
      The style that this project is now to use the full name of the file in
      capital letters followed by 'H'. For example, for a file called
      "uart_example.h", the header guard is UART_EXAMPLE_H.
      
      The exceptions are files that are imported from other projects:
      
      - CryptoCell driver
      - dt-bindings folders
      - zlib headers
      
      Change-Id: I50561bf6c88b491ec440d0c8385c74650f3c106e
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      c3cf06f1
  13. 01 Nov, 2018 1 commit
  14. 26 Oct, 2018 1 commit
    • 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
  15. 18 Oct, 2018 1 commit
  16. 10 Oct, 2018 1 commit
  17. 28 Sep, 2018 1 commit
  18. 04 Sep, 2018 2 commits
  19. 22 Aug, 2018 1 commit
  20. 03 Aug, 2018 1 commit
  21. 20 Jul, 2018 1 commit
  22. 31 Mar, 2018 1 commit
    • Michalis Pappas's avatar
      qemu: don't use C functions for the crash console callbacks · 0e24ea81
      Michalis Pappas authored
      
      
      Use the console_pl011_core_* functions directly in the crash console
      callbacks.
      
      This bypasses the MULTI_CONSOLE_API for the crash console (UART1), but
      allows using the crash console before the C runtime has been initialized
      (eg to call ASM_ASSERT). This retains backwards compatibility with respect
      to functionality when the old API is used.
      
      Use the MULTI_CONSOLE_API to register UART0 as the boot and runtime
      console.
      
      Fixes ARM-software/tf-issues#572
      Signed-off-by: default avatarMichalis Pappas <mpappas@fastmail.fm>
      0e24ea81
  23. 26 Mar, 2018 1 commit
  24. 24 Mar, 2018 1 commit
  25. 22 Mar, 2018 1 commit
  26. 20 Mar, 2018 1 commit
    • Michalis Pappas's avatar
      qemu: Add support for stack canary protection · f68d22e8
      Michalis Pappas authored
      
      
      Allow qemu users to enable stack protection. Since the virt platform
      does not provide an RNG, use a basic, timer-based, canary generation,
      similarly to FVP.
      
      Increase SRAM size and BL2 size to fit images when stack protection is
      enabled.
      
      Notice that stack protection is not enabled by default in qemu.
      
      Fixes ARM-software/tf-issues#568
      Signed-off-by: default avatarMichalis Pappas <mpappas@fastmail.fm>
      f68d22e8
  27. 04 Mar, 2018 1 commit
  28. 28 Feb, 2018 1 commit
    • Michalis Pappas's avatar
      qemu: Support SEPARATE_CODE_AND_RODATA · 27e0ccab
      Michalis Pappas authored
      
      
      Update qemu_configure_mmu_##_el to add an additional region for code,
      marked as MT_CODE | MT_SECURE. Update ro region attributes to NON_EXEC.
      
      Update calls to QEMU_CONFIGURE_BLx_MMU() to pass an additional region for
      code. Update calls to pass regions defined in common_def.h.
      
      Increase MAX_MMAP_REGIONS to 10.
      
      Enable SEPARATE_CODE_AND_RODATA by default on QEMU builds.
      
      Fixes ARM-software/tf-issues#558
      Signed-off-by: default avatarMichalis Pappas <mpappas@fastmail.fm>
      27e0ccab
  29. 27 Feb, 2018 1 commit
  30. 09 Feb, 2018 1 commit
    • Santeri Salko's avatar
      qemu: Fix interrupt type check · 53a98be3
      Santeri Salko authored
      
      
      Function plat_ic_get_pending_interrupt_type() should return interrupt
      type, not id. The function is used in aarch64 exception handling and
      currently the irq/fiq forwarding fails if a secure interrupt happens while
      running normal world.
      
      The qemu-specific gic file does not contain any extra functionality so it
      can be removed and common file can be used instead.
      
      fixes arm-software/tf-issues#546
      Signed-off-by: default avatarSanteri Salko <santeri.salko@gmail.com>
      53a98be3
  31. 05 Feb, 2018 1 commit
    • Etienne Carriere's avatar
      qemu: support ARMv7/Cortex-A15 · 765ed9fc
      Etienne Carriere authored
      
      
      Define Qemu AArch32 implementation for some platform functions
      (core position, secondary boot cores, crash console). These are
      derived from the AArch64 implementation.
      
      BL31 on Qemu is needed only for ARMv8 and later. On ARMv7, BL32 is
      the first executable image after BL2.
      
      Support SP_MIN and OP-TEE as BL32: create a sp_min make script target
      in Qemu, define mapping for IMAGE_BL32
      
      Minor fix Qemu return value type for plat_get_ns_image_entrypoint().
      
      Qemu model for the Cortex-A15 does not support the virtualization
      extension although the core expects it. To overcome the issue, Qemu
      ARMv7 configuration set ARCH_SUPPORTS_VIRTUALIZATION to 0.
      
      Add missing AArch32 assembly macro arm_print_gic_regs from ARM platform
      used by the Qemu platform.
      
      Qemu Cortex-A15 model integrates a single cluster with up to 4 cores.
      
      Change-Id: I65b44399071d6f5aa40d5183be11422b9ee9ca15
      Signed-off-by: default avatarEtienne Carriere <etienne.carriere@linaro.org>
      765ed9fc
  32. 01 Feb, 2018 2 commits
  33. 30 Nov, 2017 1 commit
    • David Cunado's avatar
      Do not enable SVE on pre-v8.2 platforms · 3872fc2d
      David Cunado authored
      
      
      Pre-v8.2 platforms such as the Juno platform does not have
      the Scalable Vector Extensions implemented and so the build
      option ENABLE_SVE is set to zero.
      
      This has a minor performance improvement with no functional
      impact.
      
      Change-Id: Ib072735db7a0247406f8b60e325b7e28b1e04ad1
      Signed-off-by: default avatarDavid Cunado <david.cunado@arm.com>
      3872fc2d