1. 17 Mar, 2017 2 commits
  2. 16 Mar, 2017 1 commit
  3. 10 Mar, 2017 1 commit
  4. 09 Mar, 2017 1 commit
  5. 08 Mar, 2017 6 commits
    • Antonio Nino Diaz's avatar
      ARM platforms: Enable xlat tables lib v2 · bf75a371
      Antonio Nino Diaz authored
      
      
      Modify ARM common makefile to use version 2 of the translation tables
      library and include the new header in C files.
      
      Simplify header dependencies related to this library to simplify the
      change.
      
      The following table contains information about the size increase in
      bytes for BL1 after applying this patch. The code has been compiled for
      different configurations of FVP in AArch64 mode with compiler GCC 4.9.3
      20150413. The sizes have been calculated with the output of `nm` by
      adding the size of all regions and comparing the total size before and
      after the change. They are sumarized in the table below:
      
                                     text   bss   data  total
              Release                +660   -20    +88   +728
              Debug                  +740   -20   +242   +962
              Debug (LOG_LEVEL=50)  +1120   -20   +317  +1417
      
      Change-Id: I539e307f158ab71e3a8b771640001fc1bf431b29
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      bf75a371
    • Antonio Nino Diaz's avatar
      Apply workaround for errata 813419 of Cortex-A57 · ccbec91c
      Antonio Nino Diaz authored
      
      
      TLBI instructions for EL3 won't have the desired effect under specific
      circumstances in Cortex-A57 r0p0. The workaround is to execute DSB and
      TLBI twice each time.
      
      Even though this errata is only needed in r0p0, the current errata
      framework is not prepared to apply run-time workarounds. The current one
      is always applied if compiled in, regardless of the CPU or its revision.
      
      This errata has been enabled for Juno.
      
      The `DSB` instruction used when initializing the translation tables has
      been changed to `DSB ISH` as an optimization and to be consistent with
      the barriers used for the workaround.
      
      Change-Id: Ifc1d70b79cb5e0d87e90d88d376a59385667d338
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      ccbec91c
    • Antonio Nino Diaz's avatar
      Add dynamic region support to xlat tables lib v2 · 0b64f4ef
      Antonio Nino Diaz authored
      
      
      Added APIs to add and remove regions to the translation tables
      dynamically while the MMU is enabled. Only static regions are allowed
      to overlap other static ones (for backwards compatibility).
      
      A new private attribute (MT_DYNAMIC / MT_STATIC) has been added to
      flag each region as such.
      
      The dynamic mapping functionality can be enabled or disabled when
      compiling by setting the build option PLAT_XLAT_TABLES_DYNAMIC to 1
      or 0. This can be done per-image.
      
      TLB maintenance code during dynamic table mapping and unmapping has
      also been added.
      
      Fixes ARM-software/tf-issues#310
      
      Change-Id: I19e8992005c4292297a382824394490c5387aa3b
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      0b64f4ef
    • Antonio Nino Diaz's avatar
      Improve debug output of the translation tables · f10644c5
      Antonio Nino Diaz authored
      
      
      The printed output has been improved in two ways:
      
      - Whenever multiple invalid descriptors are found, only the first one
        is printed, and a line is added to inform about how many descriptors
        have been omitted.
      
      - At the beginning of each line there is an indication of the table
        level the entry belongs to. Example of the new output:
        `[LV3] VA:0x1000 PA:0x1000 size:0x1000 MEM-RO-S-EXEC`
      
      Change-Id: Ib6f1cd8dbd449452f09258f4108241eb11f8d445
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      f10644c5
    • Antonio Nino Diaz's avatar
      Simplify translation tables headers dependencies · d50ece03
      Antonio Nino Diaz authored
      
      
      The files affected by this patch don't really depend on `xlat_tables.h`.
      By changing the included file it becomes easier to switch between the
      two versions of the translation tables library.
      
      Change-Id: Idae9171c490e0865cb55883b19eaf942457c4ccc
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      d50ece03
    • Antonio Nino Diaz's avatar
      Add version 2 of xlat tables library · 7bb01fb2
      Antonio Nino Diaz authored
      
      
      The folder lib/xlat_tables_v2 has been created to store a new version
      of the translation tables library for further modifications in patches
      to follow. At the moment it only contains a basic implementation that
      supports static regions.
      
      This library allows different translation tables to be modified by
      using different 'contexts'. For now, the implementation defaults to
      the translation tables used by the current image, but it is possible
      to modify other tables than the ones in use.
      
      Added a new API to print debug information for the current state of
      the translation tables, rather than printing the information while
      the tables are being created. This allows subsequent debug printing
      of the xlat tables after they have been changed, which will be useful
      when dynamic regions are implemented in a patch to follow.
      
      The common definitions stored in `xlat_tables.h` header have been moved
      to a new file common to both versions, `xlat_tables_defs.h`.
      
      All headers related to the translation tables library have been moved to
      a the subfolder `xlat_tables`.
      
      Change-Id: Ia55962c33e0b781831d43a548e505206dffc5ea9
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      7bb01fb2
  6. 07 Mar, 2017 2 commits
  7. 06 Mar, 2017 7 commits
  8. 04 Mar, 2017 1 commit
  9. 03 Mar, 2017 3 commits
  10. 02 Mar, 2017 16 commits
    • Harvey Hsieh's avatar
      Tegra210: assert if afflvl0/1 have incorrect state-ids · 7d72bd98
      Harvey Hsieh authored
      
      
      The linux kernel v3.10 does not use System Suspend function ID, whereas
      v4.4 uses it. This means affinity levels 0/1 will have different state id
      values during System Suspend entry. This patch updates the assert criteria
      to check both the state id values.
      
      Change-Id: I07fcaf99501cc9622e40d0a2c1eb4a4a160be10a
      Signed-off-by: default avatarHarvey Hsieh <hhsieh@nvidia.com>
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      7d72bd98
    • Harvey Hsieh's avatar
      Tegra: SiP: 64-bit address for Video Memory base · 6b51766c
      Harvey Hsieh authored
      
      
      This patch allows the NS world to pass 64-bit base address for
      the Video Memory carveout region.
      
      Change-Id: I7e47cc1f5425bd39c6763755b801517013e1e0cd
      Signed-off-by: default avatarHarvey Hsieh <hhsieh@nvidia.com>
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      6b51766c
    • Steven Kao's avatar
      Tegra: increase ADDR_SPACE_SIZE to 35 bits · b5903dfc
      Steven Kao authored
      
      
      This patch increases the ADDR_SPACE_SIZE macro (virtual address)
      to 35 bits, to support max memory of 32G, for all Tegra platforms.
      
      Change-Id: I8e6861601d3a667d7428988c7596b0adebfa0548
      Signed-off-by: default avatarSteven kao <skao@nvidia.com>
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      b5903dfc
    • Damon Duan's avatar
      Tegra: init the console only if the platform supports it · 9b514f83
      Damon Duan authored
      
      
      Some platforms might want to keep the uart console disabled
      during boot. This patch checks if the platform supports a
      console, before calling console_init().
      
      Change-Id: Icc9c59cb979d91fd0a72e4732403b3284bdd2dfc
      Signed-off-by: default avatarDamon Duan <danield@nvidia.com>
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      9b514f83
    • Varun Wadekar's avatar
      Tegra210: new TZDRAM base address · 8d8d8d09
      Varun Wadekar authored
      
      
      This patch modifies the TZDRAM base address to the new aperture
      allocated by the bootloader.
      
      Change-Id: Id158d15b1ec9aa681136d258e90fbba930aebf92
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      8d8d8d09
    • Varun Wadekar's avatar
      Tegra210: set core power state during cluster power down · 2f6f7206
      Varun Wadekar authored
      
      
      This patch sets the core power state during cluster power down,
      so that the 'get_target_pwr_state' handler can calculate the
      proper states for all the affinity levels.
      
      Change-Id: If4adb001011208916427ee1623c6c923bed99985
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      2f6f7206
    • Varun Wadekar's avatar
      Tegra: calculate proper power state for affinity levels · 8539f45d
      Varun Wadekar authored
      
      
      This patch fixes the 'tegra_soc_get_target_pwr_state' handler used to
      calculate the proper state for each of the affinity levels.
      
      Change-Id: Id16bd15b96f0fc633ffeac2d7a390592fbd0454b
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      8539f45d
    • Varun Wadekar's avatar
      Tegra: fix logic to calculate GICD_ISPENDR register address · 23cd470f
      Varun Wadekar authored
      
      
      This patch uses GICD_BASE to calculate the GICD_ISPENDR regsiter address
      in the platform's 'plat_crash_print_regs' routine.
      
      Reported by: Seth Eatinger <seatinger@nvidia.com>
      
      Change-Id: Ic7be29abc781f475ad25b59582ae60a0a2497377
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      23cd470f
    • Varun Wadekar's avatar
      Tegra: uninit and re-init console across System Suspend · 5b5928e8
      Varun Wadekar authored
      
      
      This patch removes the console_init() from runtime_setup() as we already
      initialize it earlier and disables/enables it across "System Suspend".
      
      Change-Id: I992d3ca56ff4797faf83e8d7fa52c0ef3e1c3367
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      5b5928e8
    • Varun Wadekar's avatar
      Tegra: support for silicon/simulation platforms · e954ab8f
      Varun Wadekar authored
      
      
      This patch adds support to identify the underlying platform
      on which we are running. The currently supported platforms
      are actual silicon and simulation platforms.
      
      Change-Id: Iadf96e79ec663b3dbd1a18e9bb95ffcdb82fc8af
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      e954ab8f
    • danh-arm's avatar
      Merge pull request #859 from Summer-ARM/sq/update-doc · 6feeb081
      danh-arm authored
      Update LOAD_IMAGE_V2 user guide documentation
      6feeb081
    • davidcunado-arm's avatar
      Merge pull request #853 from vwadekar/tegra-changes-from-downstream-v3 · bea7caff
      davidcunado-arm authored
      Tegra changes from downstream v3
      bea7caff
    • Jeenu Viswambharan's avatar
      PSCI: Optimize call paths if all participants are cache-coherent · b0408e87
      Jeenu Viswambharan authored
      
      
      The current PSCI implementation can apply certain optimizations upon the
      assumption that all PSCI participants are cache-coherent.
      
        - Skip performing cache maintenance during power-up.
      
        - Skip performing cache maintenance during power-down:
      
          At present, on the power-down path, CPU driver disables caches and
          MMU, and performs cache maintenance in preparation for powering down
          the CPU. This means that PSCI must perform additional cache
          maintenance on the extant stack for correct functioning.
      
          If all participating CPUs are cache-coherent, CPU driver would
          neither disable MMU nor perform cache maintenance. The CPU being
          powered down, therefore, remain cache-coherent throughout all PSCI
          call paths. This in turn means that PSCI cache maintenance
          operations are not required during power down.
      
        - Choose spin locks instead of bakery locks:
      
          The current PSCI implementation must synchronize both cache-coherent
          and non-cache-coherent participants. Mutual exclusion primitives are
          not guaranteed to function on non-coherent memory. For this reason,
          the current PSCI implementation had to resort to bakery locks.
      
          If all participants are cache-coherent, the implementation can
          enable MMU and data caches early, and substitute bakery locks for
          spin locks. Spin locks make use of architectural mutual exclusion
          primitives, and are lighter and faster.
      
      The optimizations are applied when HW_ASSISTED_COHERENCY build option is
      enabled, as it's expected that all PSCI participants are cache-coherent
      in those systems.
      
      Change-Id: Iac51c3ed318ea7e2120f6b6a46fd2db2eae46ede
      Signed-off-by: default avatarJeenu Viswambharan <jeenu.viswambharan@arm.com>
      b0408e87
    • Jeenu Viswambharan's avatar
      PSCI: Introduce cache and barrier wrappers · a10d3632
      Jeenu Viswambharan authored
      
      
      The PSCI implementation performs cache maintenance operations on its
      data structures to ensure their visibility to both cache-coherent and
      non-cache-coherent participants. These cache maintenance operations
      can be skipped if all PSCI participants are cache-coherent. When
      HW_ASSISTED_COHERENCY build option is enabled, we assume PSCI
      participants are cache-coherent.
      
      For usage abstraction, this patch introduces wrappers for PSCI cache
      maintenance and barrier operations used for state coordination: they are
      effectively NOPs when HW_ASSISTED_COHERENCY is enabled, but are
      applied otherwise.
      
      Also refactor local state usage and associated cache operations to make
      it clearer.
      
      Change-Id: I77f17a90cba41085b7188c1345fe5731c99fad87
      Signed-off-by: default avatarJeenu Viswambharan <jeenu.viswambharan@arm.com>
      a10d3632
    • Jeenu Viswambharan's avatar
      Disallow using coherent memory with hardware-assisted coherency · d4593e47
      Jeenu Viswambharan authored
      
      
      ARM Trusted Firmware keeps certain data structures in a memory region
      with non-cacheable attributes (termed as "coherent memory") to keep data
      coherent with observers that are cache-coherent, and those not. These
      data structures pertain to power management and mutual exclusion. Using
      coherent memory also costs at least an additional page to map memory
      with special memory attributes.
      
      On systems with hardware-assisted coherency, all CPUs that participate
      in power management and mutual exclusion are cache-coherent, obviating
      the need for special memory attributes for such data structures.
      Instead, they can be placed in normal memory, along with rest of data.
      
      On systems with hardware-assisted coherency, where build option
      HW_ASSISTED_COHERENCY will be set, also having USE_COHERENT_MEMORY
      enabled only wastes a page of memory without any
      benefit. Therefore, with HW_ASSISTED_COHERENCY set to 1, require that
      USE_COHERENT_MEMORY is explicitly set to 0.
      
      Change-Id: I5101657ae6b1a46278069f23e2d88ee5cbd98efa
      Signed-off-by: default avatarJeenu Viswambharan <jeenu.viswambharan@arm.com>
      d4593e47
    • Jeenu Viswambharan's avatar
      Enable data caches early with hardware-assisted coherency · 25a93f7c
      Jeenu Viswambharan authored
      
      
      At present, warm-booted CPUs keep their caches disabled when enabling
      MMU, and remains so until they enter coherency later.
      
      On systems with hardware-assisted coherency, for which
      HW_ASSISTED_COHERENCY build flag would be enabled, warm-booted CPUs can
      have both caches and MMU enabled at once.
      
      Change-Id: Icb0adb026e01aecf34beadf49c88faa9dd368327
      Signed-off-by: default avatarJeenu Viswambharan <jeenu.viswambharan@arm.com>
      25a93f7c