1. 29 Dec, 2019 1 commit
    • Samuel Holland's avatar
      bl31: Split into two separate memory regions · f8578e64
      Samuel Holland authored
      
      
      Some platforms are extremely memory constrained and must split BL31
      between multiple non-contiguous areas in SRAM. Allow the NOBITS
      sections (.bss, stacks, page tables, and coherent memory) to be placed
      in a separate region of RAM from the loaded firmware image.
      
      Because the NOBITS region may be at a lower address than the rest of
      BL31, __RW_{START,END}__ and __BL31_{START,END}__ cannot include this
      region, or el3_entrypoint_common would attempt to invalidate the dcache
      for the entire address space. New symbols __NOBITS_{START,END}__ are
      added when SEPARATE_NOBITS_REGION is enabled, and the dcached for the
      NOBITS region is invalidated separately.
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Change-Id: Idedfec5e4dbee77e94f2fdd356e6ae6f4dc79d37
      f8578e64
  2. 23 Dec, 2019 1 commit
  3. 20 Dec, 2019 4 commits
    • Paul Beesley's avatar
      spm-mm: Refactor spm_svc.h and its contents · 0bf9f567
      Paul Beesley authored
      
      
      Change-Id: I91c192924433226b54d33e57d56d146c1c6df81b
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      0bf9f567
    • Paul Beesley's avatar
      spm-mm: Refactor secure_partition.h and its contents · aeaa225c
      Paul Beesley authored
      
      
      Before adding any new SPM-related components we should first do
      some cleanup around the existing SPM-MM implementation. The aim
      is to make sure that any SPM-MM components have names that clearly
      indicate that they are MM-related. Otherwise, when adding new SPM
      code, it could quickly become confusing as it would be unclear to
      which component the code belongs.
      
      The secure_partition.h header is a clear example of this, as the
      name is generic so it could easily apply to any SPM-related code,
      when it is in fact SPM-MM specific.
      
      This patch renames the file and the two structures defined within
      it, and then modifies any references in files that use the header.
      
      Change-Id: I44bd95fab774c358178b3e81262a16da500fda26
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      aeaa225c
    • Paul Beesley's avatar
      spm: Remove SPM Alpha 1 prototype and support files · 538b0020
      Paul Beesley authored
      
      
      The Secure Partition Manager (SPM) prototype implementation is
      being removed. This is preparatory work for putting in place a
      dispatcher component that, in turn, enables partition managers
      at S-EL2 / S-EL1.
      
      This patch removes:
      
      - The core service files (std_svc/spm)
      - The Resource Descriptor headers (include/services)
      - SPRT protocol support and service definitions
      - SPCI protocol support and service definitions
      
      Change-Id: Iaade6f6422eaf9a71187b1e2a4dffd7fb8766426
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      Signed-off-by: default avatarArtsem Artsemenka <artsem.artsemenka@arm.com>
      538b0020
    • Paul Beesley's avatar
      Remove dependency between SPM_MM and ENABLE_SPM build flags · 3f3c341a
      Paul Beesley authored
      
      
      There are two different implementations of Secure Partition
      management in TF-A. One is based on the "Management Mode" (MM)
      design, the other is based on the Secure Partition Client Interface
      (SPCI) specification. Currently there is a dependency between their
      build flags that shouldn't exist, making further development
      harder than it should be. This patch removes that
      dependency, making the two flags function independently.
      
      Before: ENABLE_SPM=1 is required for using either implementation.
              By default, the SPCI-based implementation is enabled and
              this is overridden if SPM_MM=1.
      
      After: ENABLE_SPM=1 enables the SPCI-based implementation.
             SPM_MM=1 enables the MM-based implementation.
             The two build flags are mutually exclusive.
      
      Note that the name of the ENABLE_SPM flag remains a bit
      ambiguous - this will be improved in a subsequent patch. For this
      patch the intention was to leave the name as-is so that it is
      easier to track the changes that were made.
      
      Change-Id: I8e64ee545d811c7000f27e8dc8ebb977d670608a
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      3f3c341a
  4. 18 Dec, 2019 1 commit
  5. 17 Dec, 2019 1 commit
  6. 16 Dec, 2019 2 commits
    • Sandrine Bailleux's avatar
      Update list of main maintainers · 01534e85
      Sandrine Bailleux authored
      
      
      Change-Id: Ia4faf873f8946992737f76870ac92bc5cb3f4020
      Signed-off-by: default avatarSandrine Bailleux <sandrine.bailleux@arm.com>
      01534e85
    • Justin Chadwell's avatar
      Remove -Wpadded warning · 11a96e0e
      Justin Chadwell authored
      
      
      -Wpadded warns whenever the C compiler automatically includes any
      padding in a structure. Because TF-A has a large number of structures,
      this occurs fairly frequently and is incredibly verbose, and as such is
      unlikely to ever be fixed.
      
      The utility of this warning is also extremely limited - knowing that a
      structure includes padding does not point to the existence of an error,
      and is probably quite unlikely to indicate actually buggy behaviour.
      Therefore, it's probably best to keep this warning off at all times.
      
      Change-Id: I0797cb75f06b4fea0d2fdc16fd5ad978a31d76ec
      Signed-off-by: default avatarJustin Chadwell <justin.chadwell@arm.com>
      11a96e0e
  7. 11 Dec, 2019 1 commit
  8. 10 Dec, 2019 1 commit
  9. 02 Dec, 2019 1 commit
    • zelalem-aweke's avatar
      Enable Link Time Optimization in GCC · edbce9aa
      zelalem-aweke authored
      
      
      This patch enables LTO for TF-A when compiled with GCC.
      LTO is disabled by default and is enabled by
      ENABLE_LTO=1 build option.
      
      LTO is enabled only for aarch64 as there seem to be
      a bug in the aarch32 compiler when LTO is enabled.
      
      The changes in the makefiles include:
      - Adding -flto and associated flags to enable LTO.
      - Using gcc as a wrapper at link time instead of ld.
        This is recommended when using LTO as gcc internally
        takes care of invoking the necessary plugins for LTO.
      - Adding switches to pass options to ld.
      - Adding a flag to disable fix for erratum cortex-a53-843419
        unless explicitly enabled. This is needed because GCC
        seem to automatically add the erratum fix when used
        as a wrapper for LD.
      
      Additionally, this patch updates the TF-A user guide with
      the new build option.
      Signed-off-by: default avatarzelalem-aweke <zelalem.aweke@arm.com>
      Change-Id: I1188c11974da98434b7dc9344e058cd1eacf5468
      edbce9aa
  10. 27 Nov, 2019 1 commit
    • Paul Beesley's avatar
      doc: Split the User Guide into multiple files · 43f35ef5
      Paul Beesley authored
      
      
      The User Guide document has grown organically over time and
      now covers a wide range of topics, making it difficult to
      skim read and extract information from. Currently, it covers
      these topics and maybe a couple more:
      
      - Requirements (hardware, tools, libs)
      - Checking out the repo
      - Basic build instructions
      - A comprehensive list of build flags
      - FIP packaging
      - Building specifically for Juno
      - Firmware update images
      - EL3 payloads
      - Preloaded BL33 boot flow
      - Running on FVPs
      - Running on Juno
      
      I have separated these out into a few groups that become new
      documents. Broadly speaking, build instructions for the tools,
      for TF-A generally, and for specific scenarios are separated.
      Content relating to specific platforms (Juno and the FVPs are
      Arm-specific platforms, essentially) has been moved into the
      documentation that is specific to those platforms, under
      docs/plat/arm.
      
      Change-Id: Ica87c52d8cd4f577332be0b0738998ea3ba3bbec
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      43f35ef5
  11. 26 Nov, 2019 1 commit
  12. 19 Nov, 2019 1 commit
  13. 18 Nov, 2019 1 commit
  14. 14 Nov, 2019 1 commit
  15. 13 Nov, 2019 1 commit
  16. 04 Nov, 2019 1 commit
  17. 28 Oct, 2019 1 commit
    • Sandrine Bailleux's avatar
      doc: Fix syntax erros in I/O storage layer plantuml diagrams · ec477e7d
      Sandrine Bailleux authored
      Some of the plantuml diagrams in the I/O storage abstraction layer
      documentation are absent from the rendered version of the porting
      guide. The build log (see [1] for example) reports a syntax error in
      these files. This is due to the usage of the 'order' keyword on the
      participants list, which does not seem to be supported by the version
      of plantuml installed on the ReadTheDocs server.
      
      Fix these syntax errors by removing the 'order' keyword altogether. We
      simply rely on the participants being declared in the desired order,
      which will be the order of display, according to the plantuml
      documentation.
      
      [1] https://readthedocs.org/api/v2/build/9870345.txt
      
      
      
      Change-Id: Ife35c74cb2f1dac28bda07df395244639a8d6a2b
      Signed-off-by: default avatarSandrine Bailleux <sandrine.bailleux@arm.com>
      ec477e7d
  18. 22 Oct, 2019 3 commits
  19. 21 Oct, 2019 3 commits
    • laurenw-arm's avatar
      Update change log for v2.2 Release · 77caea29
      laurenw-arm authored
      
      Signed-off-by: default avatarLauren Wehrmeister <lauren.wehrmeister@arm.com>
      Change-Id: I53a7706016539e7de7fdbe87b786d99665bbe1d8
      77caea29
    • Paul Beesley's avatar
      doc: Move platform list to the Platform Ports index page · 5e6b4163
      Paul Beesley authored
      
      
      The list of upstream platforms on the index page is growing
      quite long, especially with all the FVP variants being listed
      individually.
      
      This patch leverages the "Platform Ports" chapter in the docs
      table of contents to condense this information. Almost all
      platform ports now have documentation, so the table of
      contents serves as the list of upstream platforms by itself.
      
      For those upstream platforms that do not have corresponding
      documentation, the top-level "Platform Ports" page mentions
      them individually. It also mentions each Arm FVP, just as
      the index page did before.
      
      Note that there is an in-progress patch that creates new
      platform port documentation for the Arm Juno and Arm FVP
      platforms, so this list of "other platforms" will soon be
      reduced further as those platforms become part of the
      table of contents as well.
      
      Change-Id: I6b1eab8cba71a599d85a6e22553a34b07f213268
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      5e6b4163
    • Paul Beesley's avatar
      doc: Move "About" content from index.rst to a new chapter · 8eb9490b
      Paul Beesley authored
      
      
      The index.rst page is now the primary landing page for the TF-A
      documentation. It contains quite a lot of content these days,
      including:
      
      - The project purpose and general intro
      - A list of functionality
      - A list of planned functionality
      - A list of supported platforms
      - "Getting started" links to other documents
      - Contact information for raising issues
      
      This patch creates an "About" chapter in the table
      of contents and moves some content there. In order,
      the above listed content:
      
      - Stayed where it is. This is the right place for it.
      - Moved to About->Features
      - Moved to About->Features (in subsection)
      - Stayed where it is. Moved in a later patch.
      - Was expanded in-place
      - Moved to About->Contact
      
      Change-Id: I254bb87560fd09140b9e485cf15246892aa45943
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      8eb9490b
  20. 17 Oct, 2019 1 commit
    • Paul Beesley's avatar
      doc: Remove version and release variables from conf.py · 206c077b
      Paul Beesley authored
      
      
      We would need to update this version for the release but, in fact,
      it is not required for our publishing workflow; the hosted version
      of the docs uses git commit/tag information in place of these
      variables anyway.
      
      Instead of updating the version, just remove these variables
      entirely.
      
      Change-Id: I424c4e45786e87604e91c7197b7983579afe4806
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      206c077b
  21. 15 Oct, 2019 2 commits
    • Artsem Artsemenka's avatar
      Fix documentation · 434d93d9
      Artsem Artsemenka authored
      
      
      User guide:
      1. Remove obsolete note saying only FVP is supported with AArch32
      2. Switch compiler for Juno AArch32 to arm-eabi
      3. Mention SOFTWARE folder in Juno Linaro release
      
      Index.rst:
      1. Switch default FVP model to Version 11.6 Build 45
      Signed-off-by: default avatarArtsem Artsemenka <artsem.artsemenka@arm.com>
      Change-Id: Ib47a2ea314e2b8394a20189bf91796de0e17de53
      434d93d9
    • Paul Beesley's avatar
      doc: Update Linaro release mentioned on index page · 9ec4afc8
      Paul Beesley authored
      The version of the Linaro release that is used for testing was
      updated in 35010bb8
      
       and the user guide was updated with the
      correct version, however the version is also mentioned on the
      index page and that was missed. Update the index page with the
      new version.
      
      We can come back and de-duplicate this content later, to ease
      future maintenance.
      
      Change-Id: I3fe83d7a1c59ab8d3ce2b18bcc23e16c93f7af97
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      9ec4afc8
  22. 11 Oct, 2019 1 commit
  23. 09 Oct, 2019 1 commit
  24. 08 Oct, 2019 2 commits
    • Paul Beesley's avatar
      doc: De-duplicate readme and license files · 8cc36aec
      Paul Beesley authored
      
      
      The readme.rst and license.rst files in the project root overlap
      with the index.rst and license.rst files in the docs/ folder. We
      need to use the latter when building the documentation, as Sphinx
      requires all included files to be under a common root. However,
      the files in the root are currently used by the cgit and Github
      viewers.
      
      Using symlinks in Git presents some difficulties so the best
      course of action is likely to leave these files but in stub form.
      
      The license.rst file in the root will simply tell the reader to
      refer to docs/license.rst.
      
      The readme.rst file will contain a small amount of content that
      is derived from the docs/index.rst file, so that the Github main
      page will have something valid to show, but it will also contain
      a link to the full documentation on ReadTheDocs.
      
      Change-Id: I6dc46f08777e8d7ecb32ca7afc07a28486c9f77a
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      8cc36aec
    • Paul Beesley's avatar
      doc: Convert internal links to RST format · 34760951
      Paul Beesley authored
      
      
      Currently links between documents are using the format:
      
      <path/to/><filename>.rst
      
      This was required for services like GitHub because they render each
      document in isolation - linking to another document is like linking
      to any other file, just provide the full path.
      
      However, with the new approach, the .rst files are only the raw
      source for the documents. Once the documents have been rendered
      the output is now in another format (HTML in our case) and so,
      when linking to another document, the link must point to the
      rendered version and not the .rst file.
      
      The RST spec provides a few methods for linking between content.
      The parent of this patch enabled the automatic creation of anchors
      for document titles - we will use these anchors as the targets for
      our links. Additional anchors can be added by hand if needed, on
      section and sub-section titles, for example.
      
      An example of this new format, for a document with the title
      "Firmware Design" is :ref:`Firmware Design`.
      
      One big advantage of this is that anchors are not dependent on
      paths. We can then move documents around, even between directories,
      without breaking any links between documents. Links will need to be
      updated only if the title of a document changes.
      
      Change-Id: I9e2340a61dd424cbd8fd1ecc2dc166f460d81703
      Signed-off-by: default avatarPaul Beesley <paul.beesley@arm.com>
      34760951
  25. 07 Oct, 2019 1 commit
  26. 04 Oct, 2019 2 commits
    • laurenw-arm's avatar
      Neoverse N1 Errata Workaround 1542419 · 80942622
      laurenw-arm authored
      
      
      Coherent I-cache is causing a prefetch violation where when the core
      executes an instruction that has recently been modified, the core might
      fetch a stale instruction which violates the ordering of instruction
      fetches.
      
      The workaround includes an instruction sequence to implementation
      defined registers to trap all EL0 IC IVAU instructions to EL3 and a trap
      handler to execute a TLB inner-shareable invalidation to an arbitrary
      address followed by a DSB.
      Signed-off-by: default avatarLauren Wehrmeister <lauren.wehrmeister@arm.com>
      Change-Id: Ic3b7cbb11cf2eaf9005523ef5578a372593ae4d6
      80942622
    • Soby Mathew's avatar
      Fix the CAS spinlock implementation · c97cba4e
      Soby Mathew authored
      
      
      Make the spinlock implementation use ARMv8.1-LSE CAS instruction based
      on a platform build option. The CAS-based implementation used to be
      unconditionally selected for all ARM8.1+ platforms.
      
      The previous CAS spinlock implementation had a bug wherein the spin_unlock()
      implementation had an `sev` after `stlr` which is not sufficient. A dsb is
      needed to ensure that the stlr completes prior to the sev. Having a dsb is
      heavyweight and a better solution would be to use load exclusive semantics
      to monitor the lock and wake up from wfe when a store happens to the lock.
      The patch implements the same.
      
      Change-Id: I5283ce4a889376e4cc01d1b9d09afa8229a2e522
      Signed-off-by: default avatarSoby Mathew <soby.mathew@arm.com>
      Signed-off-by: default avatarOlivier Deprez <olivier.deprez@arm.com>
      c97cba4e
  27. 02 Oct, 2019 1 commit
  28. 01 Oct, 2019 1 commit
    • 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
  29. 30 Sep, 2019 1 commit