1. 08 Jan, 2021 1 commit
    • Pali Rohár's avatar
      Makefile: Fix ${FIP_NAME} to be rebuilt only when needed · 4727fd13
      Pali Rohár authored
      
      
      Currently ${FIP_DEPS} as prerequisite for ${BUILD_PLAT}/${FIP_NAME}
      contains .PHONY targets check_$(1) and therefore ${BUILD_PLAT}/${FIP_NAME}
      is always rebuilt even when other file target prerequisites are not
      changed.
      
      These changes fix above issue and ${BUILD_PLAT}/${FIP_NAME} target is
      rebuilt only when its prerequisites are changed.
      
      There are 3 changes:
      
      Content of check_$(1) target is moved into check_$(1)_cmd variable so it
      can be easily reused.
      
      .PHONY check_$(1) targets are not put into ${FIP_DEPS} and ${FWU_FIP_DEPS}
      dependencies anymore and required checks which are in ${CHECK_FIP_CMD} and
      ${CHECK_FWU_FIP_CMD} variables are executed as part of targets
      ${BUILD_PLAT}/${FIP_NAME} and ${BUILD_PLAT}/${FWU_FIP_NAME} itself.
      
      To ensure that ${BUILD_PLAT}/${FIP_NAME} and ${BUILD_PLAT}/${FWU_FIP_NAME}
      are rebuilt even when additional dependency file image added by
      TOOL_ADD_IMG is changed, this file image (if exists) is added as file
      dependency to ${FIP_DEPS} and ${FWU_FIP_DEPS}. If it does not exist then
      FORCE target is added to ensure that FIP/FWU_FIP is rebuilt. Command
      ${CHECK_FIP_CMD}/${CHECK_FWU_FIP_CMD} will then thrown an error message if
      the file is required but not present.
      
      So this change ensures that if BL33 image is updated then final FIP image
      is updated too. And if BL33 image is not specified or does not exist and is
      required to be present then check_$(1)_cmd call from ${CHECK_FIP_CMD} would
      ensure that error message is thrown during build.
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Change-Id: I635cf82e2b667ff57e2af83500d4aca71d235e3e
      4727fd13
  2. 07 Jan, 2021 1 commit
    • Pali Rohár's avatar
      Makefile: Do not mark file targets as .PHONY target · a9812206
      Pali Rohár authored
      
      
      Only non-file targets should be set a .PHONY. Otherwise if file target is
      set as .PHONY then targets which depends on those file .PHONY targets would
      be always rebuilt even when their prerequisites are not changed.
      
      File target which needs to be always rebuilt can be specified in Make
      system via having a prerequisite on some .PHONY target, instead of marking
      whole target as .PHONY. In Makefile projects it is common to create empty
      .PHONY target named FORCE for this purpose.
      
      This patch changes all file targets which are set as .PHONY to depends on
      new .PHONY target FORCE, to ensure that these file targets are always
      rebuilt (as before). Basically they are those targets which calls external
      make subprocess.
      
      After FORCE target is specified in main Makefile, remove it from other
      Makefile files to prevent duplicate definitions.
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Change-Id: Iee3b4e0de93879b95eb29a1745a041538412e69e
      a9812206
  3. 11 Dec, 2020 1 commit
    • Javier Almansa Sobrino's avatar
      Add support for FEAT_MTPMU for Armv8.6 · 0063dd17
      Javier Almansa Sobrino authored
      
      
      If FEAT_PMUv3 is implemented and PMEVTYPER<n>(_EL0).MT bit is implemented
      as well, it is possible to control whether PMU counters take into account
      events happening on other threads.
      
      If FEAT_MTPMU is implemented, EL3 (or EL2) can override the MT bit
      leaving it to effective state of 0 regardless of any write to it.
      
      This patch introduces the DISABLE_MTPMU flag, which allows to diable
      multithread event count from EL3 (or EL2). The flag is disabled
      by default so the behavior is consistent with those architectures
      that do not implement FEAT_MTPMU.
      Signed-off-by: default avatarJavier Almansa Sobrino <javier.almansasobrino@arm.com>
      Change-Id: Iee3a8470ae8ba13316af1bd40c8d4aa86e0cb85e
      0063dd17
  4. 10 Dec, 2020 1 commit
  5. 17 Nov, 2020 1 commit
  6. 20 Oct, 2020 1 commit
  7. 12 Oct, 2020 2 commits
  8. 14 Sep, 2020 2 commits
  9. 23 Aug, 2020 1 commit
  10. 17 Aug, 2020 1 commit
  11. 14 Aug, 2020 1 commit
    • Ruari Phipps's avatar
      SPM: Alter sp_gen.mk entry depending on owner of partition · 1e7528ec
      Ruari Phipps authored
      
      
      With recently introduced dualroot CoT for SPs where they are owned
      either by SiP or by Platform. SiP owned SPs index starts at SP_PKG1_ID
      while Plat owned SPs index starts at SP_PKG5_ID.
      
      This patch modifies SP makefile generator script to take CoT as an
      argument and if it is "dualroot" then generates SP_PKG in order
      mentioned above, otherwise generates it sequentially.
      Signed-off-by: default avatarRuari Phipps <ruari.phipps@arm.com>
      Change-Id: Iffad1131787be650a9462f6f8cc09b603cddb3b8
      1e7528ec
  12. 04 Aug, 2020 1 commit
    • Grant Likely's avatar
      Use abspath to dereference $BUILD_BASE · 29214e95
      Grant Likely authored
      
      
      If the user tries to change BUILD_BASE to put the build products outside
      the build tree the compile will fail due to hard coded assumptions that
      $BUILD_BASE is a relative path. Fix by using $(abspath $(BUILD_BASE))
      to rationalize to an absolute path every time and remove the relative
      path assumptions.
      
      This patch also adds documentation that BUILD_BASE can be specified by
      the user.
      Signed-off-by: default avatarGrant Likely <grant.likely@arm.com>
      Signed-off-by: default avatarManish Pandey <manish.pandey2@arm.com>
      Change-Id: Ib1af874de658484aaffc672f30029b852d2489c8
      29214e95
  13. 30 Jul, 2020 2 commits
  14. 09 Jul, 2020 1 commit
  15. 29 Jun, 2020 1 commit
    • Sami Mujawar's avatar
      Fix makefile to build on a Windows host PC · 4a565bd8
      Sami Mujawar authored
      
      
      The TF-A firmware build system is capable of building on both Unix like
      and Windows host PCs. The commit ID 7ff088 "Enable MTE support" updated
      the Makefile to conditionally enable the MTE support if the AArch64
      architecture revision was greater than 8.5. However, the Makefile changes
      were dependent on shell commands that are only available on unix shells,
      resulting in build failures on a Windows host PC.
      
      This patch fixes the Makefile by using a more portable approach for
      comparing the architecture revision.
      
      Change-Id: Icb56cbecd8af5b0b9056d105970ff4a6edd1755a
      Signed-off-by: default avatarSami Mujawar <sami.mujawar@arm.com>
      4a565bd8
  16. 19 Jun, 2020 1 commit
  17. 12 Jun, 2020 1 commit
  18. 09 Jun, 2020 1 commit
  19. 08 Jun, 2020 1 commit
  20. 15 May, 2020 1 commit
  21. 14 May, 2020 1 commit
    • Manish V Badarkhe's avatar
      Implement workaround for AT speculative behaviour · 45aecff0
      Manish V Badarkhe authored
      During context switching from higher EL (EL2 or higher)
      to lower EL can cause incorrect translation in TLB due to
      speculative execution of AT instruction using out-of-context
      translation regime.
      
      Workaround is implemented as below during EL's (EL1 or EL2)
      "context_restore" operation:
      1. Disable page table walk using SCTLR.M and TCR.EPD0 & EPD1
         bits for EL1 or EL2 (stage1 and stage2 disabled)
      2. Save all system registers except TCR and SCTLR (for EL1 and EL2)
      3. Do memory barrier operation (isb) to ensure all
         system register writes are done.
      4. Restore TCR and SCTLR registers (for EL1 and EL2)
      
      Errata details are available for various CPUs as below:
      Cortex-A76: 1165522
      Cortex-A72: 1319367
      Cortex-A57: 1319537
      Cortex-A55: 1530923
      Cortex-A53: 1530924
      
      More details can be found in mail-chain:
      https://lists.trustedfirmware.org/pipermail/tf-a/2020-April/000445.html
      
      
      
      Currently, Workaround is implemented as build option which is default
      disabled.
      Signed-off-by: default avatarManish V Badarkhe <Manish.Badarkhe@arm.com>
      Change-Id: If8545e61f782cb0c2dda7ffbaf50681c825bd2f0
      45aecff0
  22. 25 Apr, 2020 1 commit
  23. 20 Apr, 2020 1 commit
  24. 02 Apr, 2020 1 commit
    • Masahiro Yamada's avatar
      Pass more -D options to BL*_CPPFLAGS instead of BL*_CFLAGS · 9cefb4b1
      Masahiro Yamada authored
      Commit d5e97a1d ("Build: define IMAGE_AT_EL1 or IMAGE_AT_EL3
      globally for C files") does not have commit 848a7e8c ("Build:
      introduce per-BL CPPFLAGS and ASFLAGS") as an ancestor because
      they were pulled almost at the same time.
      
      This is a follow-up conversion to be consistent with commit
      11a3c5ee
      
       ("plat: pass -D option to BL*_CPPFLAGS instead of
      BL*_CFLAGS").
      
      With this change, the command line option, IMAGE_AT_EL3, will be
      passed to .S files as well.
      
      I remove the definition in include/lib/cpus/aarch64/cpu_macros.S
      
      Otherwise, the following error would happen.
      
        include/lib/cpus/aarch64/cpu_macros.S:29:0: error: "IMAGE_AT_EL3" redefined [-Werror]
      
      Change-Id: I943c8f22356483c2ae3c57b515c69243a8fa6889
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      9cefb4b1
  25. 01 Apr, 2020 2 commits
    • Gilad Ben-Yossef's avatar
      cryptocell: add support for Cryptocell 713 · 4501843f
      Gilad Ben-Yossef authored
      
      
      Add Crypto 713 support as crypto module and NVM counter provider.
      
      As files under include/drivers/arm/cryptocell/713/ are copied verbatim
      from the CryptoCell SBROM lib project they are filtered from checkpatch
      coding style check.
      Signed-off-by: default avatarGilad Ben-Yossef <gilad@benyossef.com>
      Change-Id: I7c361772f00ca7d96481f81ac6cbb2704467e52c
      4501843f
    • Manish V Badarkhe's avatar
      Enable MTE support · 7ff088d1
      Manish V Badarkhe authored
      
      
      Enable MTE support by adding memory tag option in Makefile
      This option is available only when ARMv8.5-MemTag is implemented
      
      MTE options are added in latest clang and armclang compiler which
      support below options:
      for clang <version 11.0.0>
      1. -march=arm8.5-a+memtag
      2. -fsanitize=memtag
      
      for armclang <version 6.12>
      1. -march=arm8.5-a+memtag
      2. -mmemtag-stack
      
      Set the option SUPPORT_STACK_MEMTAG=yes to enable memory stack tagging.
      Signed-off-by: default avatarManish V Badarkhe <Manish.Badarkhe@arm.com>
      Change-Id: I4e0bbde4e9769ce03ead6f550158e22f32c1c413
      7ff088d1
  26. 31 Mar, 2020 2 commits
    • Ahmad Fatoum's avatar
      Makefile: don't use $(CC) before value is explicit set · 32b209bf
      Ahmad Fatoum authored
      Unless specified in the environment, $(CC) expands to some generic
      host C compiler like cc or c99. We set our own value for $(CC), but
      only few lines later.
      
      Move the first use of the $(CC) variable behind the definition to
      correct this.
      
      Change-Id: I45344e063d21ddfe22b7ad77954e85c1c46087bd
      Fixes: 1684b873
      
       ("Use clang assembler when clang compiler is used")
      Signed-off-by: default avatarAhmad Fatoum <a.fatoum@pengutronix.de>
      32b209bf
    • Masahiro Yamada's avatar
      Build: define IMAGE_AT_EL1 or IMAGE_AT_EL3 globally for C files · d5e97a1d
      Masahiro Yamada authored
      
      
      The build system defines the IMAGE_BL* macro when compiling each image.
      This is useful to distinguish which image the current file is being
      built for by using #if defined(IMAGE_BL2) or #if defined(IMAGE_BL31),
      or whatever.
      
      There are some cases where we are more interested in which exception
      level the current file is being built for.
      
      include/lib/cpus/{aarch32,aarch64}/cpu_macros.S defines IMAGE_AT_EL3,
      but we do not have it globally.
      
      Pass IMAGE_AT_EL1 or IMAGE_AT_EL3 to BL*_CFLAGS so that it is available
      from all C code.
      
      The library code (libc.a, libmbedtls.a, etc.) is exceptional cases,
      where the code can be shared between BL images.
      
      Other than that, we know the exception level at the build time, and
      this macro will be useful in the shared code.
      
      Change-Id: I7c8a1da10726906adfba981cfe8464dff111d6b0
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      d5e97a1d
  27. 25 Mar, 2020 1 commit
  28. 23 Mar, 2020 1 commit
  29. 16 Mar, 2020 1 commit
    • Louis Mayencourt's avatar
      fconf: Clean Arm IO · a6de824f
      Louis Mayencourt authored
      
      
      Merge the previously introduced arm_fconf_io_storage into arm_io_storage. This
      removes the duplicate io_policies and functions definition.
      
      This patch:
      - replace arm_io_storage.c with the content of arm_fconf_io_storage.c
      - rename the USE_FCONF_BASED_IO option into ARM_IO_IN_DTB.
      - use the ARM_IO_IN_DTB option to compile out io_policies moved in dtb.
      - propagate DEFINES when parsing dts.
      - use ARM_IO_IN_DTB to include or not uuid nodes in fw_config dtb.
      - set the ARM_IO_IN_DTB to 0 by default for fvp. This ensure that the behavior
        of fvp stays the same as it was before the introduction of fconf.
      
      Change-Id: Ia774a96d1d3a2bccad29f7ce2e2b4c21b26c080e
      Signed-off-by: default avatarLouis Mayencourt <louis.mayencourt@arm.com>
      a6de824f
  30. 11 Mar, 2020 1 commit
    • Madhukar Pappireddy's avatar
      fconf: necessary modifications to support fconf in BL31 & SP_MIN · 26d1e0c3
      Madhukar Pappireddy authored
      
      
      Necessary infrastructure added to integrate fconf framework in BL31 & SP_MIN.
      Created few populator() functions which parse HW_CONFIG device tree
      and registered them with fconf framework. Many of the changes are
      only applicable for fvp platform.
      
      This patch:
      1. Adds necessary symbols and sections in BL31, SP_MIN linker script
      2. Adds necessary memory map entry for translation in BL31, SP_MIN
      3. Creates an abstraction layer for hardware configuration based on
         fconf framework
      4. Adds necessary changes to build flow (makefiles)
      5. Minimal callback to read hw_config dtb for capturing properties
         related to GIC(interrupt-controller node)
      6. updates the fconf documentation
      
      Change-Id: Ib6292071f674ef093962b9e8ba0d322b7bf919af
      Signed-off-by: default avatarMadhukar Pappireddy <madhukar.pappireddy@arm.com>
      26d1e0c3
  31. 06 Mar, 2020 3 commits
    • Sumit Garg's avatar
      Makefile: Add support to optionally encrypt BL31 and BL32 · c6ba9b45
      Sumit Garg authored
      
      
      Following build flags have been added to support optional firmware
      encryption:
      
      - FW_ENC_STATUS: Top level firmware's encryption numeric flag, values:
          0: Encryption is done with Secret Symmetric Key (SSK) which is
             common for a class of devices.
          1: Encryption is done with Binding Secret Symmetric Key (BSSK) which
             is unique per device.
      
      - ENC_KEY: A 32-byte (256-bit) symmetric key in hex string format. It
          could be SSK or BSSK depending on FW_ENC_STATUS flag.
      
      - ENC_NONCE: A 12-byte (96-bit) encryption nonce or Initialization Vector
          (IV) in hex string format.
      
      - ENCRYPT_BL31: Binary flag to enable encryption of BL31 firmware.
      
      - ENCRYPT_BL32: Binary flag to enable encryption of Secure BL32 payload.
      
      Similar flags can be added to encrypt other firmwares as well depending
      on use-cases.
      Signed-off-by: default avatarSumit Garg <sumit.garg@linaro.org>
      Change-Id: I94374d6830ad5908df557f63823e58383d8ad670
      c6ba9b45
    • Sumit Garg's avatar
      tools: Add firmware authenticated encryption tool · 90aa901f
      Sumit Garg authored
      
      
      Add firmware authenticated encryption tool which utilizes OpenSSL
      library to encrypt firmwares using a key provided via cmdline. Currently
      this tool supports AES-GCM as an authenticated encryption algorithm.
      Signed-off-by: default avatarSumit Garg <sumit.garg@linaro.org>
      Change-Id: I60e296af1b98f1912a19d5f91066be7ea85836e4
      90aa901f
    • Sumit Garg's avatar
      drivers: crypto: Add authenticated decryption framework · 7cda17bb
      Sumit Garg authored
      
      
      Add framework for autheticated decryption of data. Currently this
      patch optionally imports mbedtls library as a backend if build option
      "DECRYPTION_SUPPORT = aes_gcm" is set to perform authenticated decryption
      using AES-GCM algorithm.
      Signed-off-by: default avatarSumit Garg <sumit.garg@linaro.org>
      Change-Id: I2966f0e79033151012bf4ffc66f484cd949e7271
      7cda17bb
  32. 03 Mar, 2020 1 commit
  33. 02 Mar, 2020 1 commit