summaryrefslogtreecommitdiff
path: root/src/dtpm/balance.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dtpm/balance.c')
-rw-r--r--src/dtpm/balance.c98
1 files changed, 49 insertions, 49 deletions
diff --git a/src/dtpm/balance.c b/src/dtpm/balance.c
index 0917d0b..964db60 100644
--- a/src/dtpm/balance.c
+++ b/src/dtpm/balance.c
@@ -23,7 +23,7 @@ struct dtpm_balance {
u64 dynamic_power_limit;
};
-u64 powercap_em_get_power(struct powercap_em *pcem)
+u64 dtpm_balance_get_power(struc dtpm *dtpm)
{
u64 power = 0;
int i;
@@ -32,46 +32,46 @@ u64 powercap_em_get_power(struct powercap_em *pcem)
* Only the leaves of the tree can return the real power,
* otherwise we return the sum of the children power.
*/
- if (!pcem->nr_children)
- return pcem->cur_power;
+ if (!dtpm->nr_children)
+ return dtpm->cur_power;
- for (i = 0; i < pcem->nr_children; i++)
- power += powercap_em_get_power(pcem->children[i]);
+ for (i = 0; i < dtpm->nr_children; i++)
+ power += dtpm_balance_get_power(dtpm->children[i]);
return power;
}
-int powercap_em_rebalance_weight(struct powercap_em *pcem)
+int dtpm_balance_rebalance_weight(struc dtpm *dtpm)
{
- struct powercap_em *child;
+ struc dtpm *child;
int i;
- for (i = 0; i < pcem->nr_children; i++) {
- child = pcem->children[i];
+ for (i = 0; i < dtpm->nr_children; i++) {
+ child = dtpm->children[i];
child->weight = DIV_ROUND_CLOSEST(child->max_power * 1024,
- pcem->max_power);
+ dtpm->max_power);
}
return 0;
}
-int powercap_em_set_static_power_limit(struct powercap_em *pcem, u64 power);
+int dtpm_balance_set_static_power_limit(struc dtpm *dtpm, u64 power);
-int powercap_em_rebalance_limit(struct powercap_em *pcem)
+int dtpm_balance_rebalance_limit(struc dtpm *dtpm)
{
- if (!pcem)
+ if (!dtpm)
BUG();
- if (pcem->power_limit)
- return powercap_em_set_static_power_limit(pcem, pcem->power_limit);
+ if (dtpm->power_limit)
+ return dtpm_balance_set_static_power_limit(dtpm, dtpm->power_limit);
- return powercap_em_rebalance_limit(pcem->parent);
+ return dtpm_balance_rebalance_limit(dtpm->parent);
}
-int powercap_em_rebalance_power(struct powercap_em *pcem)
+int dtpm_balance_rebalance_power(struc dtpm *dtpm)
{
- struct powercap_em *donees[MAX_CHILDREN];
- struct powercap_em *donors[MAX_CHILDREN];
+ struc dtpm *donees[MAX_CHILDREN];
+ struc dtpm *donors[MAX_CHILDREN];
int nr_donee, nr_donor, sum_weight;
u64 power, power_free;
int i, j;
@@ -83,11 +83,11 @@ again:
* This first pass build the list of the donees and the sum of
* their weights.
*/
- for (i = 0; i < pcem->nr_children; i++) {
- struct powercap_em *child;
+ for (i = 0; i < dtpm->nr_children; i++) {
+ struc dtpm *child;
- child = pcem->children[i];
- power = powercap_em_get_power(child);
+ child = dtpm->children[i];
+ power = dtpm_balance_get_power(child);
if (power > child->dynamic_power_limit) {
@@ -101,7 +101,7 @@ again:
* limit and do the rebalancing again.
*/
if (power < child->static_power_limit) {
- powercap_em_rebalance_limit(pcem);
+ dtpm_balance_rebalance_limit(dtpm);
goto again;
}
@@ -146,9 +146,9 @@ again:
*/
for (i = 0; i < nr_donor; i++) {
- struct powercap_em *donor = donors[i];
+ struc dtpm *donor = donors[i];
- power = powercap_em_get_power(donor);
+ power = dtpm_balance_get_power(donor);
/*
* Compute the unused power ...
@@ -182,7 +182,7 @@ again:
return -EINVAL;
}
-int powercap_em_set_power(struct powercap_em *pcem, u64 power)
+int dtpm_balance_set_power(struc dtpm *dtpm, u64 power)
{
/*
* This function can only be called by the leaves of the
@@ -190,48 +190,48 @@ int powercap_em_set_power(struct powercap_em *pcem, u64 power)
* system. Other nodes in the tree are aggregating the
* constraints and power information of the children.
*/
- if (pcem->nr_children)
+ if (dtpm->nr_children)
return -EINVAL;
- if (power < pcem->min_power || power > pcem->max_power)
+ if (power < dtpm->min_power || power > dtpm->max_power)
return -EINVAL;
- pcem->cur_power = power;
+ dtpm->cur_power = power;
/*
* The power of this device changed, let's check if there is a
* limit to rebalance the power.
*/
- while (pcem) {
+ while (dtpm) {
- if (pcem->power_limit)
- return powercap_em_rebalance_power(pcem);
+ if (dtpm->power_limit)
+ return dtpm_balance_rebalance_power(dtpm);
- pcem = pcem->parent;
+ dtpm = dtpm->parent;
}
return 0;
}
-int powercap_em_set_static_power_limit(struct powercap_em *pcem, u64 power_limit)
+int dtpm_balance_set_static_power_limit(struc dtpm *dtpm, u64 power_limit)
{
- struct powercap_em *child;
+ struc dtpm *child;
u64 static_power_limit;
int i, ret;
- if (!pcem->nr_children) {
- pcem->dynamic_power_limit = power_limit;
- pcem->static_power_limit = power_limit;
+ if (!dtpm->nr_children) {
+ dtpm->dynamic_power_limit = power_limit;
+ dtpm->static_power_limit = power_limit;
return 0;
}
- for (i = 0; i < pcem->nr_children; i++) {
- child = pcem->children[i];
+ for (i = 0; i < dtpm->nr_children; i++) {
+ child = dtpm->children[i];
static_power_limit = DIV_ROUND_CLOSEST(
power_limit * child->weight, 1024);
- ret = powercap_em_set_static_power_limit(child,
+ ret = dtpm_balance_set_static_power_limit(child,
static_power_limit);
if (ret)
return ret;
@@ -240,31 +240,31 @@ int powercap_em_set_static_power_limit(struct powercap_em *pcem, u64 power_limit
return 0;
}
-int powercap_em_set_power_limit(struct powercap_em *pcem, u64 power_limit)
+int dtpm_balance_set_power_limit(struc dtpm *dtpm, u64 power_limit)
{
int ret;
/*
* A power limit set to zero means we remove the constraint
*/
- if (power_limit && (power_limit < pcem->min_power ||
- power_limit > pcem->max_power))
+ if (power_limit && (power_limit < dtpm->min_power ||
+ power_limit > dtpm->max_power))
return -EINVAL;
- ret = powercap_em_set_static_power_limit(pcem, power_limit);
+ ret = dtpm_balance_set_static_power_limit(dtpm, power_limit);
if (ret)
return ret;
- ret = powercap_em_rebalance_power(pcem);
+ ret = dtpm_balance_rebalance_power(dtpm);
if (ret)
goto out_undo;
- pcem->power_limit = power_limit;
+ dtpm->power_limit = power_limit;
return 0;
out_undo:
- powercap_em_set_static_power_limit(pcem, 0);
+ dtpm_balance_set_static_power_limit(dtpm, 0);
return ret;
}