History

Merge tag 'pm-4.18-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull more power management updates from Rafael Wysocki: "These revert a recent PM core change that introduced a regression, fix the build when the recently added Kryo cpufreq driver is selected, add support for devices attached to multiple power domains to the generic power domains (genpd) framework, add support for iowait boosting on systens with hardware-managed P-states (HWP) enabled to the intel_pstate driver, modify the behavior of the wakeup_count device attribute in sysfs, fix a few issues and clean up some ugliness, mostly in cpufreq (core and drivers) and in the cpupower utility. Specifics: - Revert a recent PM core change that attempted to fix an issue related to device links, but introduced a regression (Rafael Wysocki) - Fix build when the recently added cpufreq driver for Kryo processors is selected by making it possible to build that driver as a module (Arnd Bergmann) - Fix the long idle detection mechanism in the out-of-band (ondemand and conservative) cpufreq governors (Chen Yu) - Add support for devices in multiple power domains to the generic power domains (genpd) framework (Ulf Hansson) - Add support for iowait boosting on systems with hardware-managed P-states (HWP) enabled to the intel_pstate driver and make it use that feature on systems with Skylake Xeon processors as it is reported to improve performance significantly on those systems (Srinivas Pandruvada) - Fix and update the acpi_cpufreq, ti-cpufreq and imx6q cpufreq drivers (Colin Ian King, Suman Anna, Sébastien Szymanski) - Change the behavior of the wakeup_count device attribute in sysfs to expose the number of events when the device might have aborted system suspend in progress (Ravi Chandra Sadineni) - Fix two minor issues in the cpupower utility (Abhishek Goel, Colin Ian King)" * tag 'pm-4.18-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: Revert "PM / runtime: Fixup reference counting of device link suppliers at probe" cpufreq: imx6q: check speed grades for i.MX6ULL cpufreq: governors: Fix long idle detection logic in load calculation cpufreq: intel_pstate: enable boost for Skylake Xeon PM / wakeup: Export wakeup_count instead of event_count via sysfs PM / Domains: Add dev_pm_domain_attach_by_id() to manage multi PM domains PM / Domains: Add support for multi PM domains per device to genpd PM / Domains: Split genpd_dev_pm_attach() PM / Domains: Don't attach devices in genpd with multi PM domains PM / Domains: dt: Allow power-domain property to be a list of specifiers cpufreq: intel_pstate: New sysfs entry to control HWP boost cpufreq: intel_pstate: HWP boost performance on IO wakeup cpufreq: intel_pstate: Add HWP boost utility and sched util hooks cpufreq: ti-cpufreq: Use devres managed API in probe() cpufreq: ti-cpufreq: Fix an incorrect error return value cpufreq: ACPI: make function acpi_cpufreq_fast_switch() static cpufreq: kryo: allow building as a loadable module cpupower : Fix header name to read idle state name cpupower: fix spelling mistake: "logilename" -> "logfilename"

Linus Torvalds committed 8 years ago

Commit d09fcec2 parents f5b7769 6a900f818 files · +468 −75Browse files

Showing the changes to include/linux (2 of 18 files). Show all

Unified · Split

2 files
  1. include/linux/pm_domain.h +15 −0
  2. include/linux/pm_runtime.h +4 −2
include/linux/pm_domain.h+15−0
@@ -237,6 +237,8 @@ unsigned int of_genpd_opp_to_performance_state(struct device *dev, · 236 unmodified lines
237 struct device_node *opp_node);237 struct device_node *opp_node);
238 238
239int genpd_dev_pm_attach(struct device *dev);239int genpd_dev_pm_attach(struct device *dev);
240struct device *genpd_dev_pm_attach_by_id(struct device *dev,
241 unsigned int index);
240#else /* !CONFIG_PM_GENERIC_DOMAINS_OF */242#else /* !CONFIG_PM_GENERIC_DOMAINS_OF */
241static inline int of_genpd_add_provider_simple(struct device_node *np,243static inline int of_genpd_add_provider_simple(struct device_node *np,
242 struct generic_pm_domain *genpd)244 struct generic_pm_domain *genpd)
@@ -282,6 +284,12 @@ static inline int genpd_dev_pm_attach(struct device *dev) · 39 unmodified lines
282 return 0;284 return 0;
283}285}
284 286
287static inline struct device *genpd_dev_pm_attach_by_id(struct device *dev,
288 unsigned int index)
289{
290 return NULL;
291}
292
285static inline293static inline
286struct generic_pm_domain *of_genpd_remove_last(struct device_node *np)294struct generic_pm_domain *of_genpd_remove_last(struct device_node *np)
287{295{
@@ -291,6 +299,8 @@ struct generic_pm_domain *of_genpd_remove_last(struct device_node *np) · 3 unmodified lines
291 299
292#ifdef CONFIG_PM300#ifdef CONFIG_PM
293int dev_pm_domain_attach(struct device *dev, bool power_on);301int dev_pm_domain_attach(struct device *dev, bool power_on);
302struct device *dev_pm_domain_attach_by_id(struct device *dev,
303 unsigned int index);
294void dev_pm_domain_detach(struct device *dev, bool power_off);304void dev_pm_domain_detach(struct device *dev, bool power_off);
295void dev_pm_domain_set(struct device *dev, struct dev_pm_domain *pd);305void dev_pm_domain_set(struct device *dev, struct dev_pm_domain *pd);
296#else306#else
@@ -298,6 +308,11 @@ static inline int dev_pm_domain_attach(struct device *dev, bool power_on) · 1 unmodified line
298{308{
299 return 0;309 return 0;
300}310}
311static inline struct device *dev_pm_domain_attach_by_id(struct device *dev,
312 unsigned int index)
313{
314 return NULL;
315}
301static inline void dev_pm_domain_detach(struct device *dev, bool power_off) {}316static inline void dev_pm_domain_detach(struct device *dev, bool power_off) {}
302static inline void dev_pm_domain_set(struct device *dev,317static inline void dev_pm_domain_set(struct device *dev,
303 struct dev_pm_domain *pd) {}318 struct dev_pm_domain *pd) {}
include/linux/pm_runtime.h+4−2
@@ -56,7 +56,8 @@ extern void pm_runtime_update_max_time_suspended(struct device *dev, · 55 unmodified lines
56 s64 delta_ns);56 s64 delta_ns);
57extern void pm_runtime_set_memalloc_noio(struct device *dev, bool enable);57extern void pm_runtime_set_memalloc_noio(struct device *dev, bool enable);
58extern void pm_runtime_clean_up_links(struct device *dev);58extern void pm_runtime_clean_up_links(struct device *dev);
59extern void pm_runtime_resume_suppliers(struct device *dev);59extern void pm_runtime_get_suppliers(struct device *dev);
60extern void pm_runtime_put_suppliers(struct device *dev);
60extern void pm_runtime_new_link(struct device *dev);61extern void pm_runtime_new_link(struct device *dev);
61extern void pm_runtime_drop_link(struct device *dev);62extern void pm_runtime_drop_link(struct device *dev);
62 63
@@ -172,7 +173,8 @@ static inline unsigned long pm_runtime_autosuspend_expiration( · 109 unmodified lines
172static inline void pm_runtime_set_memalloc_noio(struct device *dev,173static inline void pm_runtime_set_memalloc_noio(struct device *dev,
173 bool enable){}174 bool enable){}
174static inline void pm_runtime_clean_up_links(struct device *dev) {}175static inline void pm_runtime_clean_up_links(struct device *dev) {}
175static inline void pm_runtime_resume_suppliers(struct device *dev) {}176static inline void pm_runtime_get_suppliers(struct device *dev) {}
177static inline void pm_runtime_put_suppliers(struct device *dev) {}
176static inline void pm_runtime_new_link(struct device *dev) {}178static inline void pm_runtime_new_link(struct device *dev) {}
177static inline void pm_runtime_drop_link(struct device *dev) {}179static inline void pm_runtime_drop_link(struct device *dev) {}
178 180