diff options
Diffstat (limited to 'src/dtpm/balance.c')
-rw-r--r-- | src/dtpm/balance.c | 98 |
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; } |