1. 23 Jun, 2014 7 commits
    • Andrew Thoelke's avatar
      Correctly dimension the PSCI aff_map_node array · 6c0b45d1
      Andrew Thoelke authored
      The array of affinity nodes is currently allocated for 32 entries
      with the PSCI_NUM_AFFS value defined in psci.h. This is not enough
      for large systems, and will substantially over allocate the array
      for small systems.
      
      This patch introduces an optional platform definition
      PLATFORM_NUM_AFFS to platform_def.h. If defined this value is
      used for PSCI_NUM_AFFS, otherwise a value of two times the number
      of CPU cores is used.
      
      The FVP port defines PLATFORM_NUM_AFFS to be 10 which saves
      nearly 1.5KB of memory.
      
      Fixes ARM-software/tf-issues#192
      
      Change-Id: I68e30ac950de88cfbd02982ba882a18fb69c1445
      6c0b45d1
    • Andrew Thoelke's avatar
      Eliminate psci_suspend_context array · 13ac44a5
      Andrew Thoelke authored
      psci_suspend_context is an array of cache-line aligned structures
      containing the single power_state integer per cpu. This array is
      the only structure indexed by the aff_map_node.data integer.
      
      This patch saves 2KB of BL3-1 memory by placing the CPU
      power_state value directly in the aff_map_node structure. As a
      result, this value is now never cached and the cache clean when
      writing the value is no longer required.
      
      Fixes ARM-software/tf-issues#195
      
      Change-Id: Ib4c70c8f79eed295ea541e7827977a588a19ef9b
      13ac44a5
    • Andrew Thoelke's avatar
      Initialise CPU contexts from entry_point_info · 167a9357
      Andrew Thoelke authored
      Consolidate all BL3-1 CPU context initialization for cold boot, PSCI
      and SPDs into two functions:
      *  The first uses entry_point_info to initialize the relevant
         cpu_context for first entry into a lower exception level on a CPU
      *  The second populates the EL1 and EL2 system registers as needed
         from the cpu_context to ensure correct entry into the lower EL
      
      This patch alters the way that BL3-1 determines which exception level
      is used when first entering EL1 or EL2 during cold boot - this is now
      fully determined by the SPSR value in the entry_point_info for BL3-3,
      as set up by the platform code in BL2 (or otherwise provided to BL3-1).
      
      In the situation that EL1 (or svc mode) is selected for a processor
      that supports EL2, the context management code will now configure all
      essential EL2 register state to ensure correct execution of EL1. This
      allows the platform code to run non-secure EL1 payloads directly
      without requiring a small EL2 stub or OS loader.
      
      Change-Id: If9fbb2417e82d2226e47568203d5a369f39d3b0f
      167a9357
    • danh-arm's avatar
      Merge pull request #138 from athoelke/at/cpu-context · 5298f2cb
      danh-arm authored
      Move CPU context pointers into cpu_data
      5298f2cb
    • danh-arm's avatar
      Merge pull request #137 from athoelke/at/no-early-exceptions · 92152eec
      danh-arm authored
      Remove early_exceptions from BL3-1
      92152eec
    • danh-arm's avatar
      Merge pull request #136 from athoelke/at/cpu-data · 2e35b924
      danh-arm authored
      Per-cpu data cache restructuring
      2e35b924
    • danh-arm's avatar
      Merge pull request #142 from athoelke/at/fix-console_putc · c2c5ee2d
      danh-arm authored
      Remove broken assertion in console_putc()
      c2c5ee2d
  2. 20 Jun, 2014 1 commit
    • Andrew Thoelke's avatar
      Remove broken assertion in console_putc() · 0695dc49
      Andrew Thoelke authored
      The assertion in console_putc() would trigger a recursion that
      exhausts the stack and eventually aborts.
      
      This patch replaces the assertion with an error return if the
      console has not been initialized yet.
      
      Fixes ARM-software/tf-issues#208
      
      Change-Id: I95f736ff215d69655eb5ba7ceac70dc1409d986a
      0695dc49
  3. 18 Jun, 2014 2 commits
    • danh-arm's avatar
      Merge pull request #135 from soby-mathew/sm/remove-reinit-of-timers · e869310f
      danh-arm authored
      Remove re-initialisation of system timers after warm boot for FVP
      e869310f
    • Soby Mathew's avatar
      Remove re-initialisation of system timers after warm boot for FVP · b1e71b20
      Soby Mathew authored
      This patch removes the reinitialisation of memory mapped system timer
      registers after a warm boot for the FVP. The system timers in FVP are
      in the 'Always ON' power domain which meant the reinitialisation was
      redundant and it could have conflicted with the setup the normal
      world has done.
      
      The programming of CNTACR(x) and CNTNSAR, the system timer registers,
      are removed from the warm boot path with this patch.
      
      Fixes ARM-software/tf-issues#169
      
      Change-Id: Ie982eb03d1836b15ef3cf1568de2ea68a08b443e
      b1e71b20
  4. 17 Jun, 2014 2 commits
  5. 16 Jun, 2014 7 commits
  6. 12 Jun, 2014 3 commits
  7. 11 Jun, 2014 2 commits
    • Andrew Thoelke's avatar
      Make the BL3-1 crash reporting optional · 9c22b323
      Andrew Thoelke authored
      This patch makes the console crash dump of processor register
      state optional based on the CRASH_REPORTING make variable.
      
      This defaults to only being enabled for DEBUG builds. This can
      be overridden by setting a different value in the platform
      makefile or on the make command line.
      
      Change-Id: Icfa1b2d7ff0145cf0a85e8ad732f9cee7e7e993f
      9c22b323
    • Andrew Thoelke's avatar
      Provide cm_get/set_context() for current CPU · 08ab89d3
      Andrew Thoelke authored
      All callers of cm_get_context() pass the calling CPU MPIDR to the
      function. Providing a specialised version for the current
      CPU results in a reduction in code size and better readability.
      
      The current function has been renamed to cm_get_context_by_mpidr()
      and the existing name is now used for the current-CPU version.
      
      The same treatment has been done to cm_set_context(), although
      only both forms are used at present in the PSCI and TSPD code.
      
      Change-Id: I91cb0c2f7bfcb950a045dbd9ff7595751c0c0ffb
      08ab89d3
  8. 10 Jun, 2014 2 commits
  9. 05 Jun, 2014 4 commits
    • Sandrine Bailleux's avatar
      fvp: Remove unused 'bl2_el_change_mem_ptr' variable · 743a6111
      Sandrine Bailleux authored
      'bl2_el_change_mem_ptr' variable is a left over from the former
      BL2/BL3-1 interface.
      
      Change-Id: Ib0979c8e2809e103a41f9c5cc4afec7dd21ac9ab
      743a6111
    • Sandrine Bailleux's avatar
      Make the entry point argument optional in load_image() · 63db7ba2
      Sandrine Bailleux authored
      There are cases where the entry point information is useless to the
      caller, e.g. when an image just needs to be loaded in memory but won't
      ever be executed.
      
      This patch allows load_image() function to take a NULL pointer as the
      entry point argument. In this case, it won't be populated.
      
      Change-Id: Ie9394b054457706c6699926c5e0206e0c3851c56
      63db7ba2
    • Sandrine Bailleux's avatar
      PL011: Fix a bug in the UART FIFO polling · d831af90
      Sandrine Bailleux authored
      Before attempting to write a character, the PL011 driver polls
      the PL011_UARTFR_TXFF bit to know whether the UART FIFO is full.
      However, the comparison with 1 was incorrect because
      PL011_UARTFR_TXFF is not at bit 0. This patch fixes it.
      
      Change-Id: If78892345bbdc8a5e4ae4a1b7159753c609681b0
      d831af90
    • Sandrine Bailleux's avatar
      Include 'platform_def.h' header file in 'crash_reporting.S' · e4d13389
      Sandrine Bailleux authored
      'crash_reporting.S' needs to include 'platform_def.h' to get the
      definition of PLATFORM_CORE_COUNT.
      
      Note: On FVP it was compiling because 'platform_def.h' gets included
      through 'plat/fvp/include/plat_macros.S' but we don't want to rely on
      that for other platforms.
      
      Change-Id: I51e974776dd0f3bda10ad9849f5ef7b30c629833
      e4d13389
  10. 03 Jun, 2014 9 commits
  11. 02 Jun, 2014 1 commit
    • Lin Ma's avatar
      Enable mapping higher physical address · f984ce84
      Lin Ma authored
      Current ATF uses a direct physical-to-virtual mapping, that is, a physical
      address is mapped to the same address in the virtual space. For example,
      physical address 0x8000_0000 is mapped to 0x8000_0000 virtual. This
      approach works fine for FVP as all its physical addresses fall into 0 to
      4GB range. But for other platform where all I/O addresses are 48-bit long,
      If we follow the same direct mapping, we would need virtual address range
      from 0 to 0x8fff_ffff_ffff, which is about 144TB. This requires a
      significant amount of memory for MMU tables and it is not necessary to use
      that much virtual space in ATF.
      
      The patch is to enable mapping a physical address range to an arbitrary
      virtual address range (instead of flat mapping)
      Changed "base" to "base_va" and added "base_pa" in mmap_region_t and
      modified functions such as mmap_add_region and init_xlation_table etc.
      Fixes ARM-software/tf-issues#158
      f984ce84