Commit a6b31256 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

Merge branch 'powercap'

Merge a power capping fix for 6.7-rc4 which eliminates unnecessary
and harmful conversions to uW from the DTPM (dynamic thermal and power
management) framework (Lukasz Luba).

* powercap:
  powercap: DTPM: Fix unneeded conversions to micro-Watts
parents 142c169b b817f148
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
#include <linux/of.h> #include <linux/of.h>
#include <linux/pm_qos.h> #include <linux/pm_qos.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/units.h>
struct dtpm_cpu { struct dtpm_cpu {
struct dtpm dtpm; struct dtpm dtpm;
...@@ -104,8 +103,7 @@ static u64 get_pd_power_uw(struct dtpm *dtpm) ...@@ -104,8 +103,7 @@ static u64 get_pd_power_uw(struct dtpm *dtpm)
if (pd->table[i].frequency < freq) if (pd->table[i].frequency < freq)
continue; continue;
return scale_pd_power_uw(pd_mask, pd->table[i].power * return scale_pd_power_uw(pd_mask, pd->table[i].power);
MICROWATT_PER_MILLIWATT);
} }
return 0; return 0;
...@@ -122,11 +120,9 @@ static int update_pd_power_uw(struct dtpm *dtpm) ...@@ -122,11 +120,9 @@ static int update_pd_power_uw(struct dtpm *dtpm)
nr_cpus = cpumask_weight(&cpus); nr_cpus = cpumask_weight(&cpus);
dtpm->power_min = em->table[0].power; dtpm->power_min = em->table[0].power;
dtpm->power_min *= MICROWATT_PER_MILLIWATT;
dtpm->power_min *= nr_cpus; dtpm->power_min *= nr_cpus;
dtpm->power_max = em->table[em->nr_perf_states - 1].power; dtpm->power_max = em->table[em->nr_perf_states - 1].power;
dtpm->power_max *= MICROWATT_PER_MILLIWATT;
dtpm->power_max *= nr_cpus; dtpm->power_max *= nr_cpus;
return 0; return 0;
......
...@@ -39,10 +39,8 @@ static int update_pd_power_uw(struct dtpm *dtpm) ...@@ -39,10 +39,8 @@ static int update_pd_power_uw(struct dtpm *dtpm)
struct em_perf_domain *pd = em_pd_get(dev); struct em_perf_domain *pd = em_pd_get(dev);
dtpm->power_min = pd->table[0].power; dtpm->power_min = pd->table[0].power;
dtpm->power_min *= MICROWATT_PER_MILLIWATT;
dtpm->power_max = pd->table[pd->nr_perf_states - 1].power; dtpm->power_max = pd->table[pd->nr_perf_states - 1].power;
dtpm->power_max *= MICROWATT_PER_MILLIWATT;
return 0; return 0;
} }
...@@ -54,13 +52,10 @@ static u64 set_pd_power_limit(struct dtpm *dtpm, u64 power_limit) ...@@ -54,13 +52,10 @@ static u64 set_pd_power_limit(struct dtpm *dtpm, u64 power_limit)
struct device *dev = devfreq->dev.parent; struct device *dev = devfreq->dev.parent;
struct em_perf_domain *pd = em_pd_get(dev); struct em_perf_domain *pd = em_pd_get(dev);
unsigned long freq; unsigned long freq;
u64 power;
int i; int i;
for (i = 0; i < pd->nr_perf_states; i++) { for (i = 0; i < pd->nr_perf_states; i++) {
if (pd->table[i].power > power_limit)
power = pd->table[i].power * MICROWATT_PER_MILLIWATT;
if (power > power_limit)
break; break;
} }
...@@ -68,7 +63,7 @@ static u64 set_pd_power_limit(struct dtpm *dtpm, u64 power_limit) ...@@ -68,7 +63,7 @@ static u64 set_pd_power_limit(struct dtpm *dtpm, u64 power_limit)
dev_pm_qos_update_request(&dtpm_devfreq->qos_req, freq); dev_pm_qos_update_request(&dtpm_devfreq->qos_req, freq);
power_limit = pd->table[i - 1].power * MICROWATT_PER_MILLIWATT; power_limit = pd->table[i - 1].power;
return power_limit; return power_limit;
} }
...@@ -110,7 +105,7 @@ static u64 get_pd_power_uw(struct dtpm *dtpm) ...@@ -110,7 +105,7 @@ static u64 get_pd_power_uw(struct dtpm *dtpm)
if (pd->table[i].frequency < freq) if (pd->table[i].frequency < freq)
continue; continue;
power = pd->table[i].power * MICROWATT_PER_MILLIWATT; power = pd->table[i].power;
power *= status.busy_time; power *= status.busy_time;
power >>= 10; power >>= 10;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment