diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2016-05-06 16:01:14 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2016-05-06 16:01:14 -0400 |
commit | da43af961b50f1b6367660c0dba0b5fd205c4217 (patch) | |
tree | 2f0d60beae3b2a3c5f1d2441e24e90104dc010f9 /drivers/cpufreq/cpufreq.c | |
parent | 9485e4ca0b486248ce07d7dd1411a1080d24ed0d (diff) | |
parent | 6d45b719cbd51f014bb1b5dd8ed99068d78d36af (diff) |
Merge cpufreq fixes going into v4.6.
* pm-cpufreq-fixes:
intel_pstate: Fix intel_pstate_get()
cpufreq: intel_pstate: Fix HWP on boot CPU after system resume
cpufreq: st: enable selective initialization based on the platform
cpufreq: intel_pstate: Fix processing for turbo activation ratio
Diffstat (limited to 'drivers/cpufreq/cpufreq.c')
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index a48b998b3304..035513b012ee 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c | |||
@@ -1631,21 +1631,25 @@ void cpufreq_suspend(void) | |||
1631 | if (!cpufreq_driver) | 1631 | if (!cpufreq_driver) |
1632 | return; | 1632 | return; |
1633 | 1633 | ||
1634 | if (!has_target()) | 1634 | if (!has_target() && !cpufreq_driver->suspend) |
1635 | goto suspend; | 1635 | goto suspend; |
1636 | 1636 | ||
1637 | pr_debug("%s: Suspending Governors\n", __func__); | 1637 | pr_debug("%s: Suspending Governors\n", __func__); |
1638 | 1638 | ||
1639 | for_each_active_policy(policy) { | 1639 | for_each_active_policy(policy) { |
1640 | down_write(&policy->rwsem); | 1640 | if (has_target()) { |
1641 | ret = cpufreq_governor(policy, CPUFREQ_GOV_STOP); | 1641 | down_write(&policy->rwsem); |
1642 | up_write(&policy->rwsem); | 1642 | ret = cpufreq_governor(policy, CPUFREQ_GOV_STOP); |
1643 | up_write(&policy->rwsem); | ||
1643 | 1644 | ||
1644 | if (ret) | 1645 | if (ret) { |
1645 | pr_err("%s: Failed to stop governor for policy: %p\n", | 1646 | pr_err("%s: Failed to stop governor for policy: %p\n", |
1646 | __func__, policy); | 1647 | __func__, policy); |
1647 | else if (cpufreq_driver->suspend | 1648 | continue; |
1648 | && cpufreq_driver->suspend(policy)) | 1649 | } |
1650 | } | ||
1651 | |||
1652 | if (cpufreq_driver->suspend && cpufreq_driver->suspend(policy)) | ||
1649 | pr_err("%s: Failed to suspend driver: %p\n", __func__, | 1653 | pr_err("%s: Failed to suspend driver: %p\n", __func__, |
1650 | policy); | 1654 | policy); |
1651 | } | 1655 | } |
@@ -1670,7 +1674,7 @@ void cpufreq_resume(void) | |||
1670 | 1674 | ||
1671 | cpufreq_suspended = false; | 1675 | cpufreq_suspended = false; |
1672 | 1676 | ||
1673 | if (!has_target()) | 1677 | if (!has_target() && !cpufreq_driver->resume) |
1674 | return; | 1678 | return; |
1675 | 1679 | ||
1676 | pr_debug("%s: Resuming Governors\n", __func__); | 1680 | pr_debug("%s: Resuming Governors\n", __func__); |
@@ -1679,7 +1683,7 @@ void cpufreq_resume(void) | |||
1679 | if (cpufreq_driver->resume && cpufreq_driver->resume(policy)) { | 1683 | if (cpufreq_driver->resume && cpufreq_driver->resume(policy)) { |
1680 | pr_err("%s: Failed to resume driver: %p\n", __func__, | 1684 | pr_err("%s: Failed to resume driver: %p\n", __func__, |
1681 | policy); | 1685 | policy); |
1682 | } else { | 1686 | } else if (has_target()) { |
1683 | down_write(&policy->rwsem); | 1687 | down_write(&policy->rwsem); |
1684 | ret = cpufreq_start_governor(policy); | 1688 | ret = cpufreq_start_governor(policy); |
1685 | up_write(&policy->rwsem); | 1689 | up_write(&policy->rwsem); |