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

Commit 0e285e90 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull power management updates from Rafael Wysocki:
 "This time the majority of changes go to the cpufreq subsystem (and to
  the intel_pstate driver in particular) and there are some updates in
  the generic power domains framework, cpuidle, tools and a couple of
  other places.

  One thing worth mentioning is that the intel_pstate's sysfs interface
  has been reworked to be more consistent with the general expectations
  of the cpufreq core and less confusing, hopefully for the better.
  Also, we have a new cpufreq driver for Tegra186 and new hardware
  support in intel_pstata and the Mediatek cpufreq driver.

  Apart from that, the AnalyzeSuspend utility for system suspend
  profiling gets a companion called AnalyzeBoot for the analogous
  profiling of system boot and they both go into one place under
  tools/power/pm-graph/.

  The rest is mostly fixes, cleanups and code reorganization.

  Specifics:

   - Rework the intel_pstate driver's sysfs interface to make it more
     straightforward and more intuitive (Rafael Wysocki).

   - Make intel_pstate support all processors which advertise HWP
     (hardware-managed P-states) to the kernel in all operation modes
     and make it use the load-based P-state selection algorithm on a
     wider range of systems in the active mode (Rafael Wysocki).

   - Add cpufreq driver for Tegra186 (Mikko Perttunen).

   - Add support for Gemini Lake SoCs to intel_pstate (David Box).

   - Add support for MT8176 and MT817x to the Mediatek cpufreq driver
     and clean up that driver a bit (Daniel Kurtz).

   - Clean up intel_pstate and optimize it slightly (Rafael Wysocki).

   - Update the schedutil cpufreq governor, mostly to fix a couple of
     issues with it related to specific workloads, and rework its sysfs
     tunable and initialization a bit (Rafael Wysocki, Viresh Kumar).

   - Fix minor issues in the imx6q, dbx500 and qoriq cpufreq drivers
     (Christophe Jaillet, Irina Tirdea, Leonard Crestez, Viresh Kumar,
     YuanTian Tang).

   - Add file patterns for cpufreq DT bindings to MAINTAINERS (Geert
     Uytterhoeven).

   - Add support for "always on" power domains to the genpd (generic
     power domains) framework and clean up that code somewhat (Ulf
     Hansson, Lina Iyer, Viresh Kumar).

   - Fix minor issues in the powernv cpuidle driver and clean it up
     (Anton Blanchard, Gautham Shenoy).

   - Move the AnalyzeSuspend utility under tools/power/pm-graph/ and add
     an analogous boot-profiling utility called AnalyzeBoot to it (Todd
     Brandt).

   - Add rk3328 support to the rockchip-io AVS (Adaptive Voltage
     Scaling) driver (David Wu).

   - Fix minor issues in the cpuidle core, the intel_pstate_tracer
     utility, the devfreq framework and the PM core documentation
     (Chanwoo Choi, Doug Smythies, Johan Hovold, Marcin Nowakowski)"

* tag 'pm-4.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (56 commits)
  PM / runtime: Document autosuspend-helper side effects
  PM / runtime: Fix autosuspend documentation
  tools: power: pm-graph: Package makefile and man pages
  tools: power: pm-graph: AnalyzeBoot v2.0
  tools: power: pm-graph: AnalyzeSuspend v4.6
  cpufreq: Add Tegra186 cpufreq driver
  cpufreq: imx6q: Fix error handling code
  cpufreq: imx6q: Set max suspend_freq to avoid changes during suspend
  cpufreq: imx6q: Fix handling EPROBE_DEFER from regulator
  cpuidle: powernv: Avoid a branch in the core snooze_loop() loop
  cpuidle: powernv: Don't continually set thread priority in snooze_loop()
  cpuidle: powernv: Don't bounce between low and very low thread priority
  cpuidle: cpuidle-cps: remove unused variable
  tools/power/x86/intel_pstate_tracer: Adjust directory ownership
  cpufreq: schedutil: Use policy-dependent transition delays
  cpufreq: schedutil: Reduce frequencies slower
  PM / devfreq: Move struct devfreq_governor to devfreq directory
  PM / Domains: Ignore domain-idle-states that are not compatible
  cpufreq: intel_pstate: Add support for Gemini Lake
  powernv-cpuidle: Validate DT property array size
  ...
parents 9410091d a1d2fcfd
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -31,7 +31,9 @@ Optional properties:


- domain-idle-states : A phandle of an idle-state that shall be soaked into a
- domain-idle-states : A phandle of an idle-state that shall be soaked into a
                generic domain power state. The idle state definitions are
                generic domain power state. The idle state definitions are
                compatible with domain-idle-state specified in [1].
                compatible with domain-idle-state specified in [1]. phandles
                that are not compatible with domain-idle-state will be
                ignored.
  The domain-idle-state property reflects the idle state of this PM domain and
  The domain-idle-state property reflects the idle state of this PM domain and
  not the idle states of the devices or sub-domains in the PM domain. Devices
  not the idle states of the devices or sub-domains in the PM domain. Devices
  and sub-domains have their own idle-states independent of the parent
  and sub-domains have their own idle-states independent of the parent
+1 −0
Original line number Original line Diff line number Diff line
@@ -33,6 +33,7 @@ Required properties:
- compatible: should be one of:
- compatible: should be one of:
  - "rockchip,rk3188-io-voltage-domain" for rk3188
  - "rockchip,rk3188-io-voltage-domain" for rk3188
  - "rockchip,rk3288-io-voltage-domain" for rk3288
  - "rockchip,rk3288-io-voltage-domain" for rk3288
  - "rockchip,rk3328-io-voltage-domain" for rk3328
  - "rockchip,rk3368-io-voltage-domain" for rk3368
  - "rockchip,rk3368-io-voltage-domain" for rk3368
  - "rockchip,rk3368-pmu-io-voltage-domain" for rk3368 pmu-domains
  - "rockchip,rk3368-pmu-io-voltage-domain" for rk3368 pmu-domains
  - "rockchip,rk3399-io-voltage-domain" for rk3399
  - "rockchip,rk3399-io-voltage-domain" for rk3399
+13 −6
Original line number Original line Diff line number Diff line
@@ -478,15 +478,23 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h:
    - set the power.last_busy field to the current time
    - set the power.last_busy field to the current time


  void pm_runtime_use_autosuspend(struct device *dev);
  void pm_runtime_use_autosuspend(struct device *dev);
    - set the power.use_autosuspend flag, enabling autosuspend delays
    - set the power.use_autosuspend flag, enabling autosuspend delays; call
      pm_runtime_get_sync if the flag was previously cleared and
      power.autosuspend_delay is negative


  void pm_runtime_dont_use_autosuspend(struct device *dev);
  void pm_runtime_dont_use_autosuspend(struct device *dev);
    - clear the power.use_autosuspend flag, disabling autosuspend delays
    - clear the power.use_autosuspend flag, disabling autosuspend delays;
      decrement the device's usage counter if the flag was previously set and
      power.autosuspend_delay is negative; call pm_runtime_idle


  void pm_runtime_set_autosuspend_delay(struct device *dev, int delay);
  void pm_runtime_set_autosuspend_delay(struct device *dev, int delay);
    - set the power.autosuspend_delay value to 'delay' (expressed in
    - set the power.autosuspend_delay value to 'delay' (expressed in
      milliseconds); if 'delay' is negative then runtime suspends are
      milliseconds); if 'delay' is negative then runtime suspends are
      prevented
      prevented; if power.use_autosuspend is set, pm_runtime_get_sync may be
      called or the device's usage counter may be decremented and
      pm_runtime_idle called depending on if power.autosuspend_delay is
      changed to or from a negative value; if power.use_autosuspend is clear,
      pm_runtime_idle is called


  unsigned long pm_runtime_autosuspend_expiration(struct device *dev);
  unsigned long pm_runtime_autosuspend_expiration(struct device *dev);
    - calculate the time when the current autosuspend delay period will expire,
    - calculate the time when the current autosuspend delay period will expire,
@@ -836,9 +844,8 @@ of the non-autosuspend counterparts:
	Instead of: pm_runtime_put_sync   use: pm_runtime_put_sync_autosuspend.
	Instead of: pm_runtime_put_sync   use: pm_runtime_put_sync_autosuspend.


Drivers may also continue to use the non-autosuspend helper functions; they
Drivers may also continue to use the non-autosuspend helper functions; they
will behave normally, not taking the autosuspend delay into account.
will behave normally, which means sometimes taking the autosuspend delay into
Similarly, if the power.use_autosuspend field isn't set then the autosuspend
account (see pm_runtime_idle).
helper functions will behave just like the non-autosuspend counterparts.


Under some circumstances a driver or subsystem may want to prevent a device
Under some circumstances a driver or subsystem may want to prevent a device
from autosuspending immediately, even though the usage counter is zero and the
from autosuspending immediately, even though the usage counter is zero and the
+1 −0
Original line number Original line Diff line number Diff line
@@ -3471,6 +3471,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git
T:	git git://git.linaro.org/people/vireshk/linux.git (For ARM Updates)
T:	git git://git.linaro.org/people/vireshk/linux.git (For ARM Updates)
B:	https://bugzilla.kernel.org
B:	https://bugzilla.kernel.org
F:	Documentation/cpu-freq/
F:	Documentation/cpu-freq/
F:	Documentation/devicetree/bindings/cpufreq/
F:	drivers/cpufreq/
F:	drivers/cpufreq/
F:	include/linux/cpufreq.h
F:	include/linux/cpufreq.h
F:	tools/testing/selftests/cpufreq/
F:	tools/testing/selftests/cpufreq/
+0 −5
Original line number Original line Diff line number Diff line
@@ -1189,11 +1189,6 @@
			status = "disabled";
			status = "disabled";
		};
		};


		cpufreq-cooling {
			compatible = "stericsson,db8500-cpufreq-cooling";
			status = "disabled";
		};

		mcde@a0350000 {
		mcde@a0350000 {
			compatible = "stericsson,mcde";
			compatible = "stericsson,mcde";
			reg = <0xa0350000 0x1000>, /* MCDE */
			reg = <0xa0350000 0x1000>, /* MCDE */
Loading