Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3ed1c478 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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 5800043b
  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
  ...
parents 151173e8 371deb95
Loading
Loading
Loading
Loading
+44 −0
Original line number Diff line number Diff line
What:		/sys/devices/.../lpss_ltr/
Date:		March 2013
Contact:	Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Description:
		The /sys/devices/.../lpss_ltr/ directory is only present for
		devices included into the Intel Lynxpoint Low Power Subsystem
		(LPSS).  If present, it contains attributes containing the LTR
		mode and the values of LTR registers of the device.

What:		/sys/devices/.../lpss_ltr/ltr_mode
Date:		March 2013
Contact:	Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Description:
		The /sys/devices/.../lpss_ltr/ltr_mode attribute contains an
		integer number (0 or 1) indicating whether or not the devices'
		LTR functionality is working in the software mode (1).

		This attribute is read-only.  If the device's runtime PM status
		is not "active", attempts to read from this attribute cause
		-EAGAIN to be returned.

What:		/sys/devices/.../lpss_ltr/auto_ltr
Date:		March 2013
Contact:	Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Description:
		The /sys/devices/.../lpss_ltr/auto_ltr attribute contains the
		current value of the device's AUTO_LTR register (raw)
		represented as an 8-digit hexadecimal number.

		This attribute is read-only.  If the device's runtime PM status
		is not "active", attempts to read from this attribute cause
		-EAGAIN to be returned.

What:		/sys/devices/.../lpss_ltr/sw_ltr
Date:		March 2013
Contact:	Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Description:
		The /sys/devices/.../lpss_ltr/auto_ltr attribute contains the
		current value of the device's SW_LTR register (raw) represented
		as an 8-digit hexadecimal number.

		This attribute is read-only.  If the device's runtime PM status
		is not "active", attempts to read from this attribute cause
		-EAGAIN to be returned.
+13 −0
Original line number Diff line number Diff line
What:		/sys/devices/.../power_resources_wakeup/
Date:		April 2013
Contact:	Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Description:
		The /sys/devices/.../power_resources_wakeup/ directory is only
		present for device objects representing ACPI device nodes that
		require ACPI power resources for wakeup signaling.

		If present, it contains symbolic links to device directories
		representing ACPI power resources that need to be turned on for
		the given device node to be able to signal wakeup.  The names of
		the links are the same as the names of the directories they
		point to.
+26 −0
Original line number Diff line number Diff line
@@ -18,6 +18,32 @@ Description:
		yoffset: The number of pixels between the top of the screen
			 and the top edge of the image.

What:		/sys/firmware/acpi/hotplug/
Date:		February 2013
Contact:	Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Description:
		There are separate hotplug profiles for different classes of
		devices supported by ACPI, such as containers, memory modules,
		processors, PCI root bridges etc.  A hotplug profile for a given
		class of devices is a collection of settings defining the way
		that class of devices will be handled by the ACPI core hotplug
		code.  Those profiles are represented in sysfs as subdirectories
		of /sys/firmware/acpi/hotplug/.

		The following setting is available to user space for each
		hotplug profile:

		enabled: If set, the ACPI core will handle notifications of
			hotplug events associated with the given class of
			devices and will allow those devices to be ejected with
			the help of the _EJ0 control method.  Unsetting it
			effectively disables hotplug for the correspoinding
			class of devices.

		The value of the above attribute is an integer number: 1 (set)
		or 0 (unset).  Attempts to write any other values to it will
		cause -EINVAL to be returned.

What:		/sys/firmware/acpi/interrupts/
Date:		February 2008
Contact:	Len Brown <lenb@kernel.org>
+5 −4
Original line number Diff line number Diff line
@@ -108,8 +108,9 @@ policy->governor must contain the "default policy" for
				cpufreq_driver.target is called with
				these values.

For setting some of these values, the frequency table helpers might be
helpful. See the section 2 for more information on them.
For setting some of these values (cpuinfo.min[max]_freq, policy->min[max]), the
frequency table helpers might be helpful. See the section 2 for more information
on them.

SMP systems normally have same clock source for a group of cpus. For these the
.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
As most cpufreq processors only allow for being set to a few specific
frequencies, a "frequency table" with some functions might assist in
some work of the processor driver. Such a "frequency table" consists
of an array of struct cpufreq_freq_table entries, with any value in
of an array of struct cpufreq_frequency_table entries, with any value in
"index" you want to use, and the corresponding frequency in
"frequency". At the end of the table, you need to add a
cpufreq_freq_table entry with frequency set to CPUFREQ_TABLE_END. And
cpufreq_frequency_table entry with frequency set to CPUFREQ_TABLE_END. And
if you want to skip one entry in the table, set the frequency to 
CPUFREQ_ENTRY_INVALID. The entries don't need to be in ascending
order.
+27 −0
Original line number Diff line number Diff line
@@ -167,6 +167,27 @@ of load evaluation and helping the CPU stay at its top speed when truly
busy, rather than shifting back and forth in speed. This tunable has no
effect on behavior at lower speeds/lower CPU loads.

powersave_bias: this parameter takes a value between 0 to 1000. It
defines the percentage (times 10) value of the target frequency that
will be shaved off of the target. For example, when set to 100 -- 10%,
when ondemand governor would have targeted 1000 MHz, it will target
1000 MHz - (10% of 1000 MHz) = 900 MHz instead. This is set to 0
(disabled) by default.
When AMD frequency sensitivity powersave bias driver --
drivers/cpufreq/amd_freq_sensitivity.c is loaded, this parameter
defines the workload frequency sensitivity threshold in which a lower
frequency is chosen instead of ondemand governor's original target.
The frequency sensitivity is a hardware reported (on AMD Family 16h
Processors and above) value between 0 to 100% that tells software how
the performance of the workload running on a CPU will change when
frequency changes. A workload with sensitivity of 0% (memory/IO-bound)
will not perform any better on higher core frequency, whereas a
workload with sensitivity of 100% (CPU-bound) will perform better
higher the frequency. When the driver is loaded, this is set to 400
by default -- for CPUs running workloads with sensitivity value below
40%, a lower frequency is chosen. Unloading the driver or writing 0
will disable this feature.


2.5 Conservative
----------------
@@ -191,6 +212,12 @@ governor but for the opposite direction. For example when set to its
default value of '20' it means that if the CPU usage needs to be below
20% between samples to have the frequency decreased.

sampling_down_factor: similar functionality as in "ondemand" governor.
But in "conservative", it controls the rate at which the kernel makes
a decision on when to decrease the frequency while running in any
speed. Load for frequency increase is still evaluated every
sampling rate.

3. The Governor Interface in the CPUfreq Core
=============================================

Loading