diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-30 18:21:02 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-30 18:21:02 -0400 |
| commit | 3ed1c478eff8db80e234d5446cb378b503135888 (patch) | |
| tree | e1c8e0f488ca49c49b5a31fe59add4254381dd4b /Documentation | |
| parent | 151173e8ce9b95bbbbd7eedb9035cfaffbdb7cb2 (diff) | |
| parent | 371deb9500831ad1afbf9ea00e373f650deaed2f (diff) | |
Merge tag 'pm+acpi-3.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull power management and ACPI updates from Rafael J Wysocki:
- ARM big.LITTLE cpufreq driver from Viresh Kumar.
- exynos5440 cpufreq driver from Amit Daniel Kachhap.
- cpufreq core cleanup and code consolidation from Viresh Kumar and
Stratos Karafotis.
- cpufreq scalability improvement from Nathan Zimmer.
- AMD "frequency sensitivity feedback" powersave bias for the ondemand
cpufreq governor from Jacob Shin.
- cpuidle code consolidation and cleanups from Daniel Lezcano.
- ARM OMAP cpuidle fixes from Santosh Shilimkar and Daniel Lezcano.
- ACPICA fixes and other improvements from Bob Moore, Jung-uk Kim, Lv
Zheng, Yinghai Lu, Tang Chen, Colin Ian King, and Linn Crosetto.
- ACPI core updates related to hotplug from Toshi Kani, Paul Bolle,
Yasuaki Ishimatsu, and Rafael J Wysocki.
- Intel Lynxpoint LPSS (Low-Power Subsystem) support improvements from
Rafael J Wysocki and Andy Shevchenko.
* tag 'pm+acpi-3.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (192 commits)
cpufreq: Revert incorrect commit 5800043
cpufreq: MAINTAINERS: Add co-maintainer
cpuidle: add maintainer entry
ACPI / thermal: do not always return THERMAL_TREND_RAISING for active trip points
ARM: s3c64xx: cpuidle: use init/exit common routine
cpufreq: pxa2xx: initialize variables
ACPI: video: correct acpi_video_bus_add error processing
SH: cpuidle: use init/exit common routine
ARM: S5pv210: compiling issue, ARM_S5PV210_CPUFREQ needs CONFIG_CPU_FREQ_TABLE=y
ACPI: Fix wrong parameter passed to memblock_reserve
cpuidle: fix comment format
pnp: use %*phC to dump small buffers
isapnp: remove debug leftovers
ARM: imx: cpuidle: use init/exit common routine
ARM: davinci: cpuidle: use init/exit common routine
ARM: kirkwood: cpuidle: use init/exit common routine
ARM: calxeda: cpuidle: use init/exit common routine
ARM: tegra: cpuidle: use init/exit common routine for tegra3
ARM: tegra: cpuidle: use init/exit common routine for tegra2
ARM: OMAP4: cpuidle: use init/exit common routine
...
Diffstat (limited to 'Documentation')
| -rw-r--r-- | Documentation/ABI/testing/sysfs-devices-lpss_ltr | 44 | ||||
| -rw-r--r-- | Documentation/ABI/testing/sysfs-devices-power_resources_wakeup | 13 | ||||
| -rw-r--r-- | Documentation/ABI/testing/sysfs-firmware-acpi | 26 | ||||
| -rw-r--r-- | Documentation/cpu-freq/cpu-drivers.txt | 9 | ||||
| -rw-r--r-- | Documentation/cpu-freq/governors.txt | 27 | ||||
| -rw-r--r-- | Documentation/cpuidle/driver.txt | 6 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/cpufreq/arm_big_little_dt.txt | 65 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt | 2 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/cpufreq/cpufreq-exynos5440.txt | 28 |
9 files changed, 215 insertions, 5 deletions
diff --git a/Documentation/ABI/testing/sysfs-devices-lpss_ltr b/Documentation/ABI/testing/sysfs-devices-lpss_ltr new file mode 100644 index 000000000000..ea9298d9bbaf --- /dev/null +++ b/Documentation/ABI/testing/sysfs-devices-lpss_ltr | |||
| @@ -0,0 +1,44 @@ | |||
| 1 | What: /sys/devices/.../lpss_ltr/ | ||
| 2 | Date: March 2013 | ||
| 3 | Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com> | ||
| 4 | Description: | ||
| 5 | The /sys/devices/.../lpss_ltr/ directory is only present for | ||
| 6 | devices included into the Intel Lynxpoint Low Power Subsystem | ||
| 7 | (LPSS). If present, it contains attributes containing the LTR | ||
| 8 | mode and the values of LTR registers of the device. | ||
| 9 | |||
| 10 | What: /sys/devices/.../lpss_ltr/ltr_mode | ||
| 11 | Date: March 2013 | ||
| 12 | Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com> | ||
| 13 | Description: | ||
| 14 | The /sys/devices/.../lpss_ltr/ltr_mode attribute contains an | ||
| 15 | integer number (0 or 1) indicating whether or not the devices' | ||
| 16 | LTR functionality is working in the software mode (1). | ||
| 17 | |||
| 18 | This attribute is read-only. If the device's runtime PM status | ||
| 19 | is not "active", attempts to read from this attribute cause | ||
| 20 | -EAGAIN to be returned. | ||
| 21 | |||
| 22 | What: /sys/devices/.../lpss_ltr/auto_ltr | ||
| 23 | Date: March 2013 | ||
| 24 | Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com> | ||
| 25 | Description: | ||
| 26 | The /sys/devices/.../lpss_ltr/auto_ltr attribute contains the | ||
| 27 | current value of the device's AUTO_LTR register (raw) | ||
| 28 | represented as an 8-digit hexadecimal number. | ||
| 29 | |||
| 30 | This attribute is read-only. If the device's runtime PM status | ||
| 31 | is not "active", attempts to read from this attribute cause | ||
| 32 | -EAGAIN to be returned. | ||
| 33 | |||
| 34 | What: /sys/devices/.../lpss_ltr/sw_ltr | ||
| 35 | Date: March 2013 | ||
| 36 | Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com> | ||
| 37 | Description: | ||
| 38 | The /sys/devices/.../lpss_ltr/auto_ltr attribute contains the | ||
| 39 | current value of the device's SW_LTR register (raw) represented | ||
| 40 | as an 8-digit hexadecimal number. | ||
| 41 | |||
| 42 | This attribute is read-only. If the device's runtime PM status | ||
| 43 | is not "active", attempts to read from this attribute cause | ||
| 44 | -EAGAIN to be returned. | ||
diff --git a/Documentation/ABI/testing/sysfs-devices-power_resources_wakeup b/Documentation/ABI/testing/sysfs-devices-power_resources_wakeup new file mode 100644 index 000000000000..e0588feeb6e1 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-devices-power_resources_wakeup | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | What: /sys/devices/.../power_resources_wakeup/ | ||
| 2 | Date: April 2013 | ||
| 3 | Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com> | ||
| 4 | Description: | ||
| 5 | The /sys/devices/.../power_resources_wakeup/ directory is only | ||
| 6 | present for device objects representing ACPI device nodes that | ||
| 7 | require ACPI power resources for wakeup signaling. | ||
| 8 | |||
| 9 | If present, it contains symbolic links to device directories | ||
| 10 | representing ACPI power resources that need to be turned on for | ||
| 11 | the given device node to be able to signal wakeup. The names of | ||
| 12 | the links are the same as the names of the directories they | ||
| 13 | point to. | ||
diff --git a/Documentation/ABI/testing/sysfs-firmware-acpi b/Documentation/ABI/testing/sysfs-firmware-acpi index dd930c8db41f..ce9bee98b43b 100644 --- a/Documentation/ABI/testing/sysfs-firmware-acpi +++ b/Documentation/ABI/testing/sysfs-firmware-acpi | |||
| @@ -18,6 +18,32 @@ Description: | |||
| 18 | yoffset: The number of pixels between the top of the screen | 18 | yoffset: The number of pixels between the top of the screen |
| 19 | and the top edge of the image. | 19 | and the top edge of the image. |
| 20 | 20 | ||
| 21 | What: /sys/firmware/acpi/hotplug/ | ||
| 22 | Date: February 2013 | ||
| 23 | Contact: Rafael J. Wysocki <rafael.j.wysocki@intel.com> | ||
| 24 | Description: | ||
| 25 | There are separate hotplug profiles for different classes of | ||
| 26 | devices supported by ACPI, such as containers, memory modules, | ||
| 27 | processors, PCI root bridges etc. A hotplug profile for a given | ||
| 28 | class of devices is a collection of settings defining the way | ||
| 29 | that class of devices will be handled by the ACPI core hotplug | ||
| 30 | code. Those profiles are represented in sysfs as subdirectories | ||
| 31 | of /sys/firmware/acpi/hotplug/. | ||
| 32 | |||
| 33 | The following setting is available to user space for each | ||
| 34 | hotplug profile: | ||
| 35 | |||
| 36 | enabled: If set, the ACPI core will handle notifications of | ||
| 37 | hotplug events associated with the given class of | ||
| 38 | devices and will allow those devices to be ejected with | ||
| 39 | the help of the _EJ0 control method. Unsetting it | ||
| 40 | effectively disables hotplug for the correspoinding | ||
| 41 | class of devices. | ||
| 42 | |||
| 43 | The value of the above attribute is an integer number: 1 (set) | ||
| 44 | or 0 (unset). Attempts to write any other values to it will | ||
| 45 | cause -EINVAL to be returned. | ||
| 46 | |||
| 21 | What: /sys/firmware/acpi/interrupts/ | 47 | What: /sys/firmware/acpi/interrupts/ |
| 22 | Date: February 2008 | 48 | Date: February 2008 |
| 23 | Contact: Len Brown <lenb@kernel.org> | 49 | Contact: Len Brown <lenb@kernel.org> |
diff --git a/Documentation/cpu-freq/cpu-drivers.txt b/Documentation/cpu-freq/cpu-drivers.txt index 72f70b16d299..a3585eac83b6 100644 --- a/Documentation/cpu-freq/cpu-drivers.txt +++ b/Documentation/cpu-freq/cpu-drivers.txt | |||
| @@ -108,8 +108,9 @@ policy->governor must contain the "default policy" for | |||
| 108 | cpufreq_driver.target is called with | 108 | cpufreq_driver.target is called with |
| 109 | these values. | 109 | these values. |
| 110 | 110 | ||
| 111 | For setting some of these values, the frequency table helpers might be | 111 | For setting some of these values (cpuinfo.min[max]_freq, policy->min[max]), the |
| 112 | helpful. See the section 2 for more information on them. | 112 | frequency table helpers might be helpful. See the section 2 for more information |
| 113 | on them. | ||
| 113 | 114 | ||
| 114 | SMP systems normally have same clock source for a group of cpus. For these the | 115 | SMP systems normally have same clock source for a group of cpus. For these the |
| 115 | .init() would be called only once for the first online cpu. Here the .init() | 116 | .init() would be called only once for the first online cpu. Here the .init() |
| @@ -184,10 +185,10 @@ the reference implementation in drivers/cpufreq/longrun.c | |||
| 184 | As most cpufreq processors only allow for being set to a few specific | 185 | As most cpufreq processors only allow for being set to a few specific |
| 185 | frequencies, a "frequency table" with some functions might assist in | 186 | frequencies, a "frequency table" with some functions might assist in |
| 186 | some work of the processor driver. Such a "frequency table" consists | 187 | some work of the processor driver. Such a "frequency table" consists |
| 187 | of an array of struct cpufreq_freq_table entries, with any value in | 188 | of an array of struct cpufreq_frequency_table entries, with any value in |
| 188 | "index" you want to use, and the corresponding frequency in | 189 | "index" you want to use, and the corresponding frequency in |
| 189 | "frequency". At the end of the table, you need to add a | 190 | "frequency". At the end of the table, you need to add a |
| 190 | cpufreq_freq_table entry with frequency set to CPUFREQ_TABLE_END. And | 191 | cpufreq_frequency_table entry with frequency set to CPUFREQ_TABLE_END. And |
| 191 | if you want to skip one entry in the table, set the frequency to | 192 | if you want to skip one entry in the table, set the frequency to |
| 192 | CPUFREQ_ENTRY_INVALID. The entries don't need to be in ascending | 193 | CPUFREQ_ENTRY_INVALID. The entries don't need to be in ascending |
| 193 | order. | 194 | order. |
diff --git a/Documentation/cpu-freq/governors.txt b/Documentation/cpu-freq/governors.txt index c7a2eb8450c2..66f9cc310686 100644 --- a/Documentation/cpu-freq/governors.txt +++ b/Documentation/cpu-freq/governors.txt | |||
| @@ -167,6 +167,27 @@ of load evaluation and helping the CPU stay at its top speed when truly | |||
| 167 | busy, rather than shifting back and forth in speed. This tunable has no | 167 | busy, rather than shifting back and forth in speed. This tunable has no |
| 168 | effect on behavior at lower speeds/lower CPU loads. | 168 | effect on behavior at lower speeds/lower CPU loads. |
| 169 | 169 | ||
| 170 | powersave_bias: this parameter takes a value between 0 to 1000. It | ||
| 171 | defines the percentage (times 10) value of the target frequency that | ||
| 172 | will be shaved off of the target. For example, when set to 100 -- 10%, | ||
| 173 | when ondemand governor would have targeted 1000 MHz, it will target | ||
| 174 | 1000 MHz - (10% of 1000 MHz) = 900 MHz instead. This is set to 0 | ||
| 175 | (disabled) by default. | ||
| 176 | When AMD frequency sensitivity powersave bias driver -- | ||
| 177 | drivers/cpufreq/amd_freq_sensitivity.c is loaded, this parameter | ||
| 178 | defines the workload frequency sensitivity threshold in which a lower | ||
| 179 | frequency is chosen instead of ondemand governor's original target. | ||
| 180 | The frequency sensitivity is a hardware reported (on AMD Family 16h | ||
| 181 | Processors and above) value between 0 to 100% that tells software how | ||
| 182 | the performance of the workload running on a CPU will change when | ||
| 183 | frequency changes. A workload with sensitivity of 0% (memory/IO-bound) | ||
| 184 | will not perform any better on higher core frequency, whereas a | ||
| 185 | workload with sensitivity of 100% (CPU-bound) will perform better | ||
| 186 | higher the frequency. When the driver is loaded, this is set to 400 | ||
| 187 | by default -- for CPUs running workloads with sensitivity value below | ||
| 188 | 40%, a lower frequency is chosen. Unloading the driver or writing 0 | ||
| 189 | will disable this feature. | ||
| 190 | |||
| 170 | 191 | ||
| 171 | 2.5 Conservative | 192 | 2.5 Conservative |
| 172 | ---------------- | 193 | ---------------- |
| @@ -191,6 +212,12 @@ governor but for the opposite direction. For example when set to its | |||
| 191 | default value of '20' it means that if the CPU usage needs to be below | 212 | default value of '20' it means that if the CPU usage needs to be below |
| 192 | 20% between samples to have the frequency decreased. | 213 | 20% between samples to have the frequency decreased. |
| 193 | 214 | ||
| 215 | sampling_down_factor: similar functionality as in "ondemand" governor. | ||
| 216 | But in "conservative", it controls the rate at which the kernel makes | ||
| 217 | a decision on when to decrease the frequency while running in any | ||
| 218 | speed. Load for frequency increase is still evaluated every | ||
| 219 | sampling rate. | ||
| 220 | |||
| 194 | 3. The Governor Interface in the CPUfreq Core | 221 | 3. The Governor Interface in the CPUfreq Core |
| 195 | ============================================= | 222 | ============================================= |
| 196 | 223 | ||
diff --git a/Documentation/cpuidle/driver.txt b/Documentation/cpuidle/driver.txt index 7a9e09ece931..1b0d81d92583 100644 --- a/Documentation/cpuidle/driver.txt +++ b/Documentation/cpuidle/driver.txt | |||
| @@ -15,11 +15,17 @@ has mechanisms in place to support actual entry-exit into CPU idle states. | |||
| 15 | cpuidle driver initializes the cpuidle_device structure for each CPU device | 15 | cpuidle driver initializes the cpuidle_device structure for each CPU device |
| 16 | and registers with cpuidle using cpuidle_register_device. | 16 | and registers with cpuidle using cpuidle_register_device. |
| 17 | 17 | ||
| 18 | If all the idle states are the same, the wrapper function cpuidle_register | ||
| 19 | could be used instead. | ||
| 20 | |||
| 18 | It can also support the dynamic changes (like battery <-> AC), by using | 21 | It can also support the dynamic changes (like battery <-> AC), by using |
| 19 | cpuidle_pause_and_lock, cpuidle_disable_device and cpuidle_enable_device, | 22 | cpuidle_pause_and_lock, cpuidle_disable_device and cpuidle_enable_device, |
| 20 | cpuidle_resume_and_unlock. | 23 | cpuidle_resume_and_unlock. |
| 21 | 24 | ||
| 22 | Interfaces: | 25 | Interfaces: |
| 26 | extern int cpuidle_register(struct cpuidle_driver *drv, | ||
| 27 | const struct cpumask *const coupled_cpus); | ||
| 28 | extern int cpuidle_unregister(struct cpuidle_driver *drv); | ||
| 23 | extern int cpuidle_register_driver(struct cpuidle_driver *drv); | 29 | extern int cpuidle_register_driver(struct cpuidle_driver *drv); |
| 24 | extern void cpuidle_unregister_driver(struct cpuidle_driver *drv); | 30 | extern void cpuidle_unregister_driver(struct cpuidle_driver *drv); |
| 25 | extern int cpuidle_register_device(struct cpuidle_device *dev); | 31 | extern int cpuidle_register_device(struct cpuidle_device *dev); |
diff --git a/Documentation/devicetree/bindings/cpufreq/arm_big_little_dt.txt b/Documentation/devicetree/bindings/cpufreq/arm_big_little_dt.txt new file mode 100644 index 000000000000..0715695e94a9 --- /dev/null +++ b/Documentation/devicetree/bindings/cpufreq/arm_big_little_dt.txt | |||
| @@ -0,0 +1,65 @@ | |||
| 1 | Generic ARM big LITTLE cpufreq driver's DT glue | ||
| 2 | ----------------------------------------------- | ||
| 3 | |||
| 4 | This is DT specific glue layer for generic cpufreq driver for big LITTLE | ||
| 5 | systems. | ||
| 6 | |||
| 7 | Both required and optional properties listed below must be defined | ||
| 8 | under node /cpus/cpu@x. Where x is the first cpu inside a cluster. | ||
| 9 | |||
| 10 | FIXME: Cpus should boot in the order specified in DT and all cpus for a cluster | ||
| 11 | must be present contiguously. Generic DT driver will check only node 'x' for | ||
| 12 | cpu:x. | ||
| 13 | |||
| 14 | Required properties: | ||
| 15 | - operating-points: Refer to Documentation/devicetree/bindings/power/opp.txt | ||
| 16 | for details | ||
| 17 | |||
| 18 | Optional properties: | ||
| 19 | - clock-latency: Specify the possible maximum transition latency for clock, | ||
| 20 | in unit of nanoseconds. | ||
| 21 | |||
| 22 | Examples: | ||
| 23 | |||
| 24 | cpus { | ||
| 25 | #address-cells = <1>; | ||
| 26 | #size-cells = <0>; | ||
| 27 | |||
| 28 | cpu@0 { | ||
| 29 | compatible = "arm,cortex-a15"; | ||
| 30 | reg = <0>; | ||
| 31 | next-level-cache = <&L2>; | ||
| 32 | operating-points = < | ||
| 33 | /* kHz uV */ | ||
| 34 | 792000 1100000 | ||
| 35 | 396000 950000 | ||
| 36 | 198000 850000 | ||
| 37 | >; | ||
| 38 | clock-latency = <61036>; /* two CLK32 periods */ | ||
| 39 | }; | ||
| 40 | |||
| 41 | cpu@1 { | ||
| 42 | compatible = "arm,cortex-a15"; | ||
| 43 | reg = <1>; | ||
| 44 | next-level-cache = <&L2>; | ||
| 45 | }; | ||
| 46 | |||
| 47 | cpu@100 { | ||
| 48 | compatible = "arm,cortex-a7"; | ||
| 49 | reg = <100>; | ||
| 50 | next-level-cache = <&L2>; | ||
| 51 | operating-points = < | ||
| 52 | /* kHz uV */ | ||
| 53 | 792000 950000 | ||
| 54 | 396000 750000 | ||
| 55 | 198000 450000 | ||
| 56 | >; | ||
| 57 | clock-latency = <61036>; /* two CLK32 periods */ | ||
| 58 | }; | ||
| 59 | |||
| 60 | cpu@101 { | ||
| 61 | compatible = "arm,cortex-a7"; | ||
| 62 | reg = <101>; | ||
| 63 | next-level-cache = <&L2>; | ||
| 64 | }; | ||
| 65 | }; | ||
diff --git a/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt b/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt index 4416ccc33472..051f764bedb8 100644 --- a/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt +++ b/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt | |||
| @@ -32,7 +32,7 @@ cpus { | |||
| 32 | 396000 950000 | 32 | 396000 950000 |
| 33 | 198000 850000 | 33 | 198000 850000 |
| 34 | >; | 34 | >; |
| 35 | transition-latency = <61036>; /* two CLK32 periods */ | 35 | clock-latency = <61036>; /* two CLK32 periods */ |
| 36 | }; | 36 | }; |
| 37 | 37 | ||
| 38 | cpu@1 { | 38 | cpu@1 { |
diff --git a/Documentation/devicetree/bindings/cpufreq/cpufreq-exynos5440.txt b/Documentation/devicetree/bindings/cpufreq/cpufreq-exynos5440.txt new file mode 100644 index 000000000000..caff1a57436f --- /dev/null +++ b/Documentation/devicetree/bindings/cpufreq/cpufreq-exynos5440.txt | |||
| @@ -0,0 +1,28 @@ | |||
| 1 | |||
| 2 | Exynos5440 cpufreq driver | ||
| 3 | ------------------- | ||
| 4 | |||
| 5 | Exynos5440 SoC cpufreq driver for CPU frequency scaling. | ||
| 6 | |||
| 7 | Required properties: | ||
| 8 | - interrupts: Interrupt to know the completion of cpu frequency change. | ||
| 9 | - operating-points: Table of frequencies and voltage CPU could be transitioned into, | ||
| 10 | in the decreasing order. Frequency should be in KHz units and voltage | ||
| 11 | should be in microvolts. | ||
| 12 | |||
| 13 | Optional properties: | ||
| 14 | - clock-latency: Clock monitor latency in microsecond. | ||
| 15 | |||
| 16 | All the required listed above must be defined under node cpufreq. | ||
| 17 | |||
| 18 | Example: | ||
| 19 | -------- | ||
| 20 | cpufreq@160000 { | ||
| 21 | compatible = "samsung,exynos5440-cpufreq"; | ||
| 22 | reg = <0x160000 0x1000>; | ||
| 23 | interrupts = <0 57 0>; | ||
| 24 | operating-points = < | ||
| 25 | 1000000 975000 | ||
| 26 | 800000 925000>; | ||
| 27 | clock-latency = <100000>; | ||
| 28 | }; | ||
