1. 26 11月, 2016 1 次提交
  2. 22 7月, 2016 1 次提交
  3. 26 4月, 2016 4 次提交
  4. 20 4月, 2016 1 次提交
  5. 11 2月, 2016 1 次提交
    • L
      ARM: 8511/1: ARM64: kernel: PSCI: move PSCI idle management code to drivers/firmware · 8b6f2499
      Lorenzo Pieralisi 提交于
      ARM64 PSCI kernel interfaces that initialize idle states and implement
      the suspend API to enter them are generic and can be shared with the
      ARM architecture.
      
      To achieve that goal, this patch moves ARM64 PSCI idle management
      code to drivers/firmware, so that the interface to initialize and
      enter idle states can actually be shared by ARM and ARM64 arches
      back-ends.
      
      The ARM generic CPUidle implementation also requires the definition of
      a cpuidle_ops section entry for the kernel to initialize the CPUidle
      operations at boot based on the enable-method (ie ARM64 has the
      statically initialized cpu_ops counterparts for that purpose); therefore
      this patch also adds the required section entry on CONFIG_ARM for PSCI so
      that the kernel can initialize the PSCI CPUidle back-end when PSCI is
      the probed enable-method.
      
      On ARM64 this patch provides no functional change.
      Signed-off-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Acked-by: NDaniel Lezcano <daniel.lezcano@linaro.org>
      Acked-by: Catalin Marinas <catalin.marinas@arm.com> [arch/arm64]
      Acked-by: NMark Rutland <mark.rutland@arm.com>
      Tested-by: NJisheng Zhang <jszhang@marvell.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: Sudeep Holla <sudeep.holla@arm.com>
      Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Jisheng Zhang <jszhang@marvell.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      8b6f2499
  6. 05 1月, 2016 1 次提交
  7. 24 10月, 2015 1 次提交
    • L
      drivers: psci: make PSCI 1.0 functions initialization version dependent · 79b04beb
      Lorenzo Pieralisi 提交于
      The PSCI specifications [1] and the SMC calling convention mandate
      that unimplemented functions ids must return NOT_SUPPORTED (0xffffffff)
      if a function id is called but it is not implemented.
      
      Consequently, PSCI 1.0 function ids that require the 1.0 PSCI_FEATURES
      call to be initialized:
      
      CPU_SUSPEND (psci_init_cpu_suspend())
      SYSTEM_SUSPEND (psci_init_system_suspend())
      
      call the PSCI_FEATURES function id independently of the detected
      PSCI firmware version, since, if the PSCI_FEATURES function id is not
      implemented, it must return NOT_SUPPORTED according to the PSCI
      specifications, causing the initialization functions to fail as expected.
      
      Some existing PSCI implementations (ie Qemu PSCI emulation), do not
      comply with the SMC calling convention and fail if function ids that are
      not implemented are called from the OS, causing boot failures.
      
      To solve this issue, this patch adds code that checks the PSCI firmware
      version before calling PSCI 1.0 initialization functions so that the
      OS makes sure that it is calling 1.0 functions only if the firmware
      version detected is 1.0 or greater, therefore avoiding PSCI calls
      that are bound to fail and might cause system boot failures owing
      to non-compliant PSCI firmware implementations.
      
      [1] http://infocenter.arm.com/help/topic/com.arm.doc.den0022c/DEN0022C_Power_State_Coordination_Interface.pdfSigned-off-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Tested-by: NKevin Hilman <khilman@kernel.org>
      Acked-by: NSudeep Holla <sudeep.holla@arm.com>
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      79b04beb
  8. 02 10月, 2015 7 次提交
  9. 03 8月, 2015 2 次提交
  10. 27 7月, 2015 1 次提交
  11. 19 6月, 2015 1 次提交
  12. 12 6月, 2015 1 次提交
  13. 27 5月, 2015 6 次提交
  14. 19 5月, 2015 1 次提交
    • L
      ARM64: kernel: make cpu_ops hooks DT agnostic · 819a8826
      Lorenzo Pieralisi 提交于
      ARM64 CPU operations such as cpu_init and cpu_init_idle take
      a struct device_node pointer as a parameter, which corresponds to
      the device tree node of the logical cpu on which the operation
      has to be applied.
      
      With the advent of ACPI on arm64, where MADT static table entries
      are used to initialize cpus, the device tree node parameter
      in cpu_ops hooks become useless when booting with ACPI, since
      in that case cpu device tree nodes are not present and can not be
      used for cpu initialization.
      
      The current cpu_init hook requires a struct device_node pointer
      parameter because it is called while parsing the device tree to
      initialize CPUs, when the cpu_logical_map (that is used to match
      a cpu node reg property to a device tree node) for a given logical
      cpu id is not set up yet. This means that the cpu_init hook cannot
      rely on the of_get_cpu_node function to retrieve the device tree
      node corresponding to the logical cpu id passed in as parameter,
      so the cpu device tree node must be passed in as a parameter to fix
      this catch-22 dependency cycle.
      
      This patch reshuffles the cpu_logical_map initialization code so
      that the cpu_init cpu_ops hook can safely use the of_get_cpu_node
      function to retrieve the cpu device tree node, removing the need for
      the device tree node pointer parameter.
      
      In the process, the patch removes device tree node parameters
      from all cpu_ops hooks, in preparation for SMP DT/ACPI cpus
      initialization consolidation.
      Signed-off-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Acked-by: NHanjun Guo <hanjun.guo@linaro.org>
      Acked-by: NSudeep Holla <sudeep.holla@arm.com>
      Acked-by: NMark Rutland <mark.rutland@arm.com>
      Tested-by: NHanjun Guo <hanjun.guo@linaro.org>
      Tested-by: Mark Rutland <mark.rutland@arm.com> [DT]
      Cc: Will Deacon <will.deacon@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      819a8826
  15. 26 3月, 2015 2 次提交
  16. 25 3月, 2015 1 次提交
  17. 27 2月, 2015 1 次提交
    • W
      arm64: psci: move psci firmware calls out of line · f5e0a12c
      Will Deacon 提交于
      An arm64 allmodconfig fails to build with GCC 5 due to __asmeq
      assertions in the PSCI firmware calling code firing due to mcount
      preambles breaking our assumptions about register allocation of function
      arguments:
      
        /tmp/ccDqJsJ6.s: Assembler messages:
        /tmp/ccDqJsJ6.s:60: Error: .err encountered
        /tmp/ccDqJsJ6.s:61: Error: .err encountered
        /tmp/ccDqJsJ6.s:62: Error: .err encountered
        /tmp/ccDqJsJ6.s:99: Error: .err encountered
        /tmp/ccDqJsJ6.s:100: Error: .err encountered
        /tmp/ccDqJsJ6.s:101: Error: .err encountered
      
      This patch fixes the issue by moving the PSCI calls out-of-line into
      their own assembly files, which are safe from the compiler's meddling
      fingers.
      Reported-by: NAndy Whitcroft <apw@canonical.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      f5e0a12c
  18. 27 1月, 2015 1 次提交
    • L
      arm64: kernel: remove ARM64_CPU_SUSPEND config option · af3cfdbf
      Lorenzo Pieralisi 提交于
      ARM64_CPU_SUSPEND config option was introduced to make code providing
      context save/restore selectable only on platforms requiring power
      management capabilities.
      
      Currently ARM64_CPU_SUSPEND depends on the PM_SLEEP config option which
      in turn is set by the SUSPEND config option.
      
      The introduction of CPU_IDLE for arm64 requires that code configured
      by ARM64_CPU_SUSPEND (context save/restore) should be compiled in
      in order to enable the CPU idle driver to rely on CPU operations
      carrying out context save/restore.
      
      The ARM64_CPUIDLE config option (ARM64 generic idle driver) is therefore
      forced to select ARM64_CPU_SUSPEND, even if there may be (ie PM_SLEEP)
      failed dependencies, which is not a clean way of handling the kernel
      configuration option.
      
      For these reasons, this patch removes the ARM64_CPU_SUSPEND config option
      and makes the context save/restore dependent on CPU_PM, which is selected
      whenever either SUSPEND or CPU_IDLE are configured, cleaning up dependencies
      in the process.
      
      This way, code previously configured through ARM64_CPU_SUSPEND is
      compiled in whenever a power management subsystem requires it to be
      present in the kernel (SUSPEND || CPU_IDLE), which is the behaviour
      expected on ARM64 kernels.
      
      The cpu_suspend and cpu_init_idle CPU operations are added only if
      CPU_IDLE is selected, since they are CPU_IDLE specific methods and
      should be grouped and defined accordingly.
      
      PSCI CPU operations are updated to reflect the introduced changes.
      Signed-off-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: Krzysztof Kozlowski <k.kozlowski@samsung.com>
      Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      af3cfdbf
  19. 11 12月, 2014 1 次提交
    • K
      arm64: psci: Fix build breakage without PM_SLEEP · e5e62d47
      Krzysztof Kozlowski 提交于
      Fix build failure of defconfig when PM_SLEEP is disabled (e.g. by
      disabling SUSPEND) and CPU_IDLE enabled:
      
      arch/arm64/kernel/psci.c:543:2: error: unknown field ‘cpu_suspend’ specified in initializer
        .cpu_suspend = cpu_psci_cpu_suspend,
        ^
      arch/arm64/kernel/psci.c:543:2: warning: initialization from incompatible pointer type [enabled by default]
      arch/arm64/kernel/psci.c:543:2: warning: (near initialization for ‘cpu_psci_ops.cpu_prepare’) [enabled by default]
      make[1]: *** [arch/arm64/kernel/psci.o] Error 1
      
      The cpu_operations.cpu_suspend field exists only if ARM64_CPU_SUSPEND is
      defined, not CPU_IDLE.
      Signed-off-by: NKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      e5e62d47
  20. 31 10月, 2014 1 次提交
  21. 29 10月, 2014 1 次提交
  22. 12 9月, 2014 1 次提交
    • L
      arm64: add PSCI CPU_SUSPEND based cpu_suspend support · 18910ab0
      Lorenzo Pieralisi 提交于
      This patch implements the cpu_suspend cpu operations method through
      the PSCI CPU SUSPEND API. The PSCI implementation translates the idle state
      index passed by the cpu_suspend core call into a valid PSCI state according to
      the PSCI states initialized at boot through the cpu_init_idle() CPU
      operations hook.
      
      The PSCI CPU suspend operation hook checks if the PSCI state is a
      standby state. If it is, it calls the PSCI suspend implementation
      straight away, without saving any context. If the state is a power
      down state the kernel calls the __cpu_suspend API (that saves the CPU
      context) and passed the PSCI suspend finisher as a parameter so that PSCI
      can be called by the __cpu_suspend implementation after saving and flushing
      the context as last function before power down.
      
      For power down states, entry point is set to cpu_resume physical address,
      that represents the default kernel execution address following a CPU reset.
      Reviewed-by: NAshwin Chaugule <ashwin.chaugule@linaro.org>
      Reviewed-by: NCatalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      18910ab0
  23. 18 7月, 2014 2 次提交