diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-08 05:34:24 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-08 05:34:24 -0400 |
| commit | 6325e940e7e0c690c6bdfaf5d54309e71845d3d9 (patch) | |
| tree | bd1d2c33ae9420e98d3feee1f924fdad3f22552f | |
| parent | 536fd93d432858eb6b7c1ad1dcfe051840ebef47 (diff) | |
| parent | 0a6479b0ffad8dd236915e271faaf2cbb4cac287 (diff) | |
Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
Pull arm64 updates from Catalin Marinas:
- eBPF JIT compiler for arm64
- CPU suspend backend for PSCI (firmware interface) with standard idle
states defined in DT (generic idle driver to be merged via a
different tree)
- Support for CONFIG_DEBUG_SET_MODULE_RONX
- Support for unmapped cpu-release-addr (outside kernel linear mapping)
- set_arch_dma_coherent_ops() implemented and bus notifiers removed
- EFI_STUB improvements when base of DRAM is occupied
- Typos in KGDB macros
- Clean-up to (partially) allow kernel building with LLVM
- Other clean-ups (extern keyword, phys_addr_t usage)
* tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (51 commits)
arm64: Remove unneeded extern keyword
ARM64: make of_device_ids const
arm64: Use phys_addr_t type for physical address
aarch64: filter $x from kallsyms
arm64: Use DMA_ERROR_CODE to denote failed allocation
arm64: Fix typos in KGDB macros
arm64: insn: Add return statements after BUG_ON()
arm64: debug: don't re-enable debug exceptions on return from el1_dbg
Revert "arm64: dmi: Add SMBIOS/DMI support"
arm64: Implement set_arch_dma_coherent_ops() to replace bus notifiers
of: amba: use of_dma_configure for AMBA devices
arm64: dmi: Add SMBIOS/DMI support
arm64: Correct ftrace calls to aarch64_insn_gen_branch_imm()
arm64:mm: initialize max_mapnr using function set_max_mapnr
setup: Move unmask of async interrupts after possible earlycon setup
arm64: LLVMLinux: Fix inline arm64 assembly for use with clang
arm64: pageattr: Correctly adjust unaligned start addresses
net: bpf: arm64: fix module memory leak when JIT image build fails
arm64: add PSCI CPU_SUSPEND based cpu_suspend support
arm64: kernel: introduce cpu_init_idle CPU operation
...
54 files changed, 2979 insertions, 189 deletions
diff --git a/Documentation/devicetree/bindings/arm/cpus.txt b/Documentation/devicetree/bindings/arm/cpus.txt index 298e2f6b33c6..6fd0f15e899a 100644 --- a/Documentation/devicetree/bindings/arm/cpus.txt +++ b/Documentation/devicetree/bindings/arm/cpus.txt | |||
| @@ -219,6 +219,12 @@ nodes to be present and contain the properties described below. | |||
| 219 | Value type: <phandle> | 219 | Value type: <phandle> |
| 220 | Definition: Specifies the ACC[2] node associated with this CPU. | 220 | Definition: Specifies the ACC[2] node associated with this CPU. |
| 221 | 221 | ||
| 222 | - cpu-idle-states | ||
| 223 | Usage: Optional | ||
| 224 | Value type: <prop-encoded-array> | ||
| 225 | Definition: | ||
| 226 | # List of phandles to idle state nodes supported | ||
| 227 | by this cpu [3]. | ||
| 222 | 228 | ||
| 223 | Example 1 (dual-cluster big.LITTLE system 32-bit): | 229 | Example 1 (dual-cluster big.LITTLE system 32-bit): |
| 224 | 230 | ||
| @@ -415,3 +421,5 @@ cpus { | |||
| 415 | -- | 421 | -- |
| 416 | [1] arm/msm/qcom,saw2.txt | 422 | [1] arm/msm/qcom,saw2.txt |
| 417 | [2] arm/msm/qcom,kpss-acc.txt | 423 | [2] arm/msm/qcom,kpss-acc.txt |
| 424 | [3] ARM Linux kernel documentation - idle states bindings | ||
| 425 | Documentation/devicetree/bindings/arm/idle-states.txt | ||
diff --git a/Documentation/devicetree/bindings/arm/idle-states.txt b/Documentation/devicetree/bindings/arm/idle-states.txt new file mode 100644 index 000000000000..37375c7f3ccc --- /dev/null +++ b/Documentation/devicetree/bindings/arm/idle-states.txt | |||
| @@ -0,0 +1,679 @@ | |||
| 1 | ========================================== | ||
| 2 | ARM idle states binding description | ||
| 3 | ========================================== | ||
| 4 | |||
| 5 | ========================================== | ||
| 6 | 1 - Introduction | ||
| 7 | ========================================== | ||
| 8 | |||
| 9 | ARM systems contain HW capable of managing power consumption dynamically, | ||
| 10 | where cores can be put in different low-power states (ranging from simple | ||
| 11 | wfi to power gating) according to OS PM policies. The CPU states representing | ||
| 12 | the range of dynamic idle states that a processor can enter at run-time, can be | ||
| 13 | specified through device tree bindings representing the parameters required | ||
| 14 | to enter/exit specific idle states on a given processor. | ||
| 15 | |||
| 16 | According to the Server Base System Architecture document (SBSA, [3]), the | ||
| 17 | power states an ARM CPU can be put into are identified by the following list: | ||
| 18 | |||
| 19 | - Running | ||
| 20 | - Idle_standby | ||
| 21 | - Idle_retention | ||
| 22 | - Sleep | ||
| 23 | - Off | ||
| 24 | |||
| 25 | The power states described in the SBSA document define the basic CPU states on | ||
| 26 | top of which ARM platforms implement power management schemes that allow an OS | ||
| 27 | PM implementation to put the processor in different idle states (which include | ||
| 28 | states listed above; "off" state is not an idle state since it does not have | ||
| 29 | wake-up capabilities, hence it is not considered in this document). | ||
| 30 | |||
| 31 | Idle state parameters (eg entry latency) are platform specific and need to be | ||
| 32 | characterized with bindings that provide the required information to OS PM | ||
| 33 | code so that it can build the required tables and use them at runtime. | ||
| 34 | |||
| 35 | The device tree binding definition for ARM idle states is the subject of this | ||
| 36 | document. | ||
| 37 | |||
| 38 | =========================================== | ||
| 39 | 2 - idle-states definitions | ||
| 40 | =========================================== | ||
| 41 | |||
| 42 | Idle states are characterized for a specific system through a set of | ||
| 43 | timing and energy related properties, that underline the HW behaviour | ||
| 44 | triggered upon idle states entry and exit. | ||
| 45 | |||
| 46 | The following diagram depicts the CPU execution phases and related timing | ||
| 47 | properties required to enter and exit an idle state: | ||
| 48 | |||
| 49 | ..__[EXEC]__|__[PREP]__|__[ENTRY]__|__[IDLE]__|__[EXIT]__|__[EXEC]__.. | ||
| 50 | | | | | | | ||
| 51 | |||
| 52 | |<------ entry ------->| | ||
| 53 | | latency | | ||
| 54 | |<- exit ->| | ||
| 55 | | latency | | ||
| 56 | |<-------- min-residency -------->| | ||
| 57 | |<------- wakeup-latency ------->| | ||
| 58 | |||
| 59 | Diagram 1: CPU idle state execution phases | ||
| 60 | |||
| 61 | EXEC: Normal CPU execution. | ||
| 62 | |||
| 63 | PREP: Preparation phase before committing the hardware to idle mode | ||
| 64 | like cache flushing. This is abortable on pending wake-up | ||
| 65 | event conditions. The abort latency is assumed to be negligible | ||
| 66 | (i.e. less than the ENTRY + EXIT duration). If aborted, CPU | ||
| 67 | goes back to EXEC. This phase is optional. If not abortable, | ||
