1. 13 3月, 2014 1 次提交
  2. 25 10月, 2013 3 次提交
    • M
      arm64: big-endian: write CPU holding pen address as LE · 710be9ac
      Matthew Leach 提交于
      Currently when CPUs are brought online via a spin-table, the address
      they should jump to is written to the cpu-release-addr in the kernel's
      native endianness. As the kernel may switch endianness, secondaries
      might read the value byte-reversed from what was intended, and they
      would jump to the wrong address.
      
      As the only current arm64 spin-table implementations are
      little-endian, stricten up the arm64 spin-table definition such that
      the value written to cpu-release-addr is _always_ little-endian
      regardless of the endianness of any CPU. If a spinning CPU is
      operating big-endian, it must byte-reverse the value before jumping to
      handle this.
      Signed-off-by: NMatthew Leach <matthew.leach@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      710be9ac
    • M
      arm64: factor out spin-table boot method · 652af899
      Mark Rutland 提交于
      The arm64 kernel has an internal holding pen, which is necessary for
      some systems where we can't bring CPUs online individually and must hold
      multiple CPUs in a safe area until the kernel is able to handle them.
      The current SMP infrastructure for arm64 is closely coupled to this
      holding pen, and alternative boot methods must launch CPUs into the pen,
      where they sit before they are launched into the kernel proper.
      
      With PSCI (and possibly other future boot methods), we can bring CPUs
      online individually, and need not perform the secondary_holding_pen
      dance. Instead, this patch factors the holding pen management code out
      to the spin-table boot method code, as it is the only boot method
      requiring the pen.
      
      A new entry point for secondaries, secondary_entry is added for other
      boot methods to use, which bypasses the holding pen and its associated
      overhead when bringing CPUs online. The smp.pen.text section is also
      removed, as the pen can live in head.text without problem.
      
      The cpu_operations structure is extended with two new functions,
      cpu_boot and cpu_postboot, for bringing a cpu into the kernel and
      performing any post-boot cleanup required by a bootmethod (e.g.
      resetting the secondary_holding_pen_release to INVALID_HWID).
      Documentation is added for cpu_operations.
      Signed-off-by: NMark Rutland <mark.rutland@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      652af899
    • M
      arm64: reorganise smp_enable_ops · cd1aebf5
      Mark Rutland 提交于
      For hotplug support, we're going to want a place to store operations
      that do more than bring CPUs online, and it makes sense to group these
      with our current smp_enable_ops. For cpuidle support, we'll want to
      group additional functions, and we may want them even for UP kernels.
      
      This patch renames smp_enable_ops to the more general cpu_operations,
      and pulls the definitions out of smp code such that they can be used in
      UP kernels. While we're at it, fix up instances of the cpu parameter to
      be an unsigned int, drop the init markings and rename the *_cpu
      functions to cpu_* to reduce future churn when cpu_operations is
      extended.
      Signed-off-by: NMark Rutland <mark.rutland@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      cd1aebf5
  3. 30 1月, 2013 1 次提交