linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V4 00/17] thermal: cpu_cooling: improve interaction with cpufreq core
@ 2017-04-25 10:27 Viresh Kumar
  2017-04-25 10:27 ` [PATCH V4 01/17] thermal: cpu_cooling: Avoid accessing potentially freed structures Viresh Kumar
                   ` (18 more replies)
  0 siblings, 19 replies; 32+ messages in thread
From: Viresh Kumar @ 2017-04-25 10:27 UTC (permalink / raw)
  To: Javi Merino, Zhang Rui, Eduardo Valentin, Lukasz Luba
  Cc: linaro-kernel, Amit Daniel Kachhap, Rafael Wysocki, linux-pm,
	linux-kernel, Vincent Guittot, Punit Agrawal, Viresh Kumar

Hi Guys,

The cpu_cooling driver is designed to use CPU frequency scaling to avoid
high thermal states for a platform. But it wasn't glued really well with
cpufreq core. For example clipped-cpus is copied from the policy
structure and its much better to use the policy->cpus (or related_cpus)
fields directly as they may have got updated. Not that things were
broken before this series, but they can be optimized a bit more.

This series tries to improve interactions between cpufreq core and
cpu_cooling driver and does some fixes/cleanups to the cpu_cooling
driver.

I have tested it on ARM 32 (exynos) and 64 bit (hikey) boards (haven't
tested the power specific bits).

Lukasz from ARM has been very generous in testing and finding out few
bugs in the earlier versions and getting those fixed.  He has
successfully tested the new version on his ARM big LITTLE Juno board.

Pushed here as well:

git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git thermal/cooling

V3->V4:
- The pointer to policy in the cpufreq notifier will have a different
  address and so that address can't be used for comparison. Compare
  policy->cpu instead.
- max_level field was used for the newly created power-freq table, but
  few places I have used < max_level instead of <= max_level and that
  caused the trouble.
- Added Tested-by from Lukasz.

V2->V3:
- Additional check to guarantee that policy is valid.
- Initialize freq-table and cpufreq_cdev->policy fields before they are
  used by the power-cooling functionality.
- Thanks Lukasz for testing out and suggesting these changes.

V1->V2:
- Name cpufreq cooling dev as cpufreq_cdev everywhere (Eduardo).

--
viresh

Viresh Kumar (17):
  thermal: cpu_cooling: Avoid accessing potentially freed structures
  thermal: cpu_cooling: rearrange globals
  thermal: cpu_cooling: Name cpufreq cooling devices as cpufreq_cdev
  thermal: cpu_cooling: replace cool_dev with cdev
  thermal: cpu_cooling: remove cpufreq_cooling_get_level()
  thermal: cpu_cooling: get rid of a variable in cpufreq_set_cur_state()
  thermal: cpu_cooling: use cpufreq_policy to register cooling device
  cpufreq: create cpufreq_table_count_valid_entries()
  thermal: cpu_cooling: store cpufreq policy
  thermal: cpu_cooling: OPPs are registered for all CPUs
  thermal: cpu_cooling: get rid of 'allowed_cpus'
  thermal: cpu_cooling: merge frequency and power tables
  thermal: cpu_cooling: create structure for idle time stats
  thermal: cpu_cooling: get_level() can't fail
  thermal: cpu_cooling: don't store cpu_dev in cpufreq_cdev
  thermal: cpu_cooling: 'freq' can't be zero in cpufreq_state2power()
  thermal: cpu_cooling: Rearrange struct cpufreq_cooling_device

 drivers/cpufreq/arm_big_little.c                   |   2 +-
 drivers/cpufreq/cpufreq-dt.c                       |   2 +-
 drivers/cpufreq/cpufreq_stats.c                    |  13 +-
 drivers/cpufreq/dbx500-cpufreq.c                   |   2 +-
 drivers/cpufreq/mt8173-cpufreq.c                   |   4 +-
 drivers/cpufreq/qoriq-cpufreq.c                    |   3 +-
 drivers/thermal/cpu_cooling.c                      | 606 +++++++++------------
 drivers/thermal/imx_thermal.c                      |  22 +-
 drivers/thermal/ti-soc-thermal/ti-thermal-common.c |  22 +-
 include/linux/cpu_cooling.h                        |  32 +-
 include/linux/cpufreq.h                            |  14 +
 11 files changed, 315 insertions(+), 407 deletions(-)

-- 
2.12.0.432.g71c3a4f4ba37

^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2017-05-28  0:29 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-25 10:27 [PATCH V4 00/17] thermal: cpu_cooling: improve interaction with cpufreq core Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 01/17] thermal: cpu_cooling: Avoid accessing potentially freed structures Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 02/17] thermal: cpu_cooling: rearrange globals Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 03/17] thermal: cpu_cooling: Name cpufreq cooling devices as cpufreq_cdev Viresh Kumar
2017-05-23  6:37   ` Zhang Rui
2017-05-23  7:03     ` [PATCH] thermal: cpu_cooling: Replace kmalloc with kmalloc_array Viresh Kumar
2017-05-24  2:27       ` Eduardo Valentin
2017-05-24  3:51         ` Viresh Kumar
2017-05-23  7:04     ` [PATCH V4 03/17] thermal: cpu_cooling: Name cpufreq cooling devices as cpufreq_cdev Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 04/17] thermal: cpu_cooling: replace cool_dev with cdev Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 05/17] thermal: cpu_cooling: remove cpufreq_cooling_get_level() Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 06/17] thermal: cpu_cooling: get rid of a variable in cpufreq_set_cur_state() Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 07/17] thermal: cpu_cooling: use cpufreq_policy to register cooling device Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 08/17] cpufreq: create cpufreq_table_count_valid_entries() Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 09/17] thermal: cpu_cooling: store cpufreq policy Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 10/17] thermal: cpu_cooling: OPPs are registered for all CPUs Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 11/17] thermal: cpu_cooling: get rid of 'allowed_cpus' Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 12/17] thermal: cpu_cooling: merge frequency and power tables Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 13/17] thermal: cpu_cooling: create structure for idle time stats Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 14/17] thermal: cpu_cooling: get_level() can't fail Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 15/17] thermal: cpu_cooling: don't store cpu_dev in cpufreq_cdev Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 16/17] thermal: cpu_cooling: 'freq' can't be zero in cpufreq_state2power() Viresh Kumar
2017-04-25 10:27 ` [PATCH V4 17/17] thermal: cpu_cooling: Rearrange struct cpufreq_cooling_device Viresh Kumar
2017-04-26 10:41 ` [PATCH V4 00/17] thermal: cpu_cooling: improve interaction with cpufreq core Lukasz Luba
2017-04-26 10:47   ` Viresh Kumar
2017-04-27 16:26     ` Eduardo Valentin
2017-04-28  4:24       ` Viresh Kumar
2017-05-26  4:57   ` Viresh Kumar
2017-05-28  0:29     ` Eduardo Valentin
2017-05-24  2:41 ` Eduardo Valentin
2017-05-24  3:53   ` Viresh Kumar
2017-05-24  4:03     ` Eduardo Valentin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).