power: rename constants

Rename the #defines to have an RTE_POWER_ prefix

Fixes: 210c383e247b ("power: packet format for vm power management")
Fixes: cd0d5547e873 ("power: vm communication channels in guest")
Cc: stable@dpdk.org

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
This commit is contained in:
Bruce Richardson 2021-01-21 17:21:59 +00:00 committed by Thomas Monjalon
parent bd5b6720fe
commit 38d232b9b8
8 changed files with 156 additions and 141 deletions

View File

@ -177,10 +177,10 @@ parse_json_to_pkt(json_t *element, struct rte_power_channel_packet *pkt,
pkt->nb_mac_to_monitor = 0;
pkt->t_boost_status.tbEnabled = false;
pkt->workload = LOW;
pkt->policy_to_use = TIME;
pkt->command = PKT_POLICY;
pkt->core_type = CORE_TYPE_PHYSICAL;
pkt->workload = RTE_POWER_WL_LOW;
pkt->policy_to_use = RTE_POWER_POLICY_TIME;
pkt->command = RTE_POWER_PKT_POLICY;
pkt->core_type = RTE_POWER_CORE_TYPE_PHYSICAL;
if (vm_name == NULL) {
RTE_LOG(ERR, CHANNEL_MONITOR,
@ -203,11 +203,11 @@ parse_json_to_pkt(json_t *element, struct rte_power_channel_packet *pkt,
char command[32];
strlcpy(command, json_string_value(value), 32);
if (!strcmp(command, "power")) {
pkt->command = CPU_POWER;
pkt->command = RTE_POWER_CPU_POWER;
} else if (!strcmp(command, "create")) {
pkt->command = PKT_POLICY;
pkt->command = RTE_POWER_PKT_POLICY;
} else if (!strcmp(command, "destroy")) {
pkt->command = PKT_POLICY_REMOVE;
pkt->command = RTE_POWER_PKT_POLICY_REMOVE;
} else {
RTE_LOG(ERR, CHANNEL_MONITOR,
"Invalid command received in JSON\n");
@ -217,13 +217,17 @@ parse_json_to_pkt(json_t *element, struct rte_power_channel_packet *pkt,
char command[32];
strlcpy(command, json_string_value(value), 32);
if (!strcmp(command, "TIME")) {
pkt->policy_to_use = TIME;
pkt->policy_to_use =
RTE_POWER_POLICY_TIME;
} else if (!strcmp(command, "TRAFFIC")) {
pkt->policy_to_use = TRAFFIC;
pkt->policy_to_use =
RTE_POWER_POLICY_TRAFFIC;
} else if (!strcmp(command, "WORKLOAD")) {
pkt->policy_to_use = WORKLOAD;
pkt->policy_to_use =
RTE_POWER_POLICY_WORKLOAD;
} else if (!strcmp(command, "BRANCH_RATIO")) {
pkt->policy_to_use = BRANCH_RATIO;
pkt->policy_to_use =
RTE_POWER_POLICY_BRANCH_RATIO;
} else {
RTE_LOG(ERR, CHANNEL_MONITOR,
"Wrong policy_type received in JSON\n");
@ -233,11 +237,11 @@ parse_json_to_pkt(json_t *element, struct rte_power_channel_packet *pkt,
char command[32];
strlcpy(command, json_string_value(value), 32);
if (!strcmp(command, "HIGH")) {
pkt->workload = HIGH;
pkt->workload = RTE_POWER_WL_HIGH;
} else if (!strcmp(command, "MEDIUM")) {
pkt->workload = MEDIUM;
pkt->workload = RTE_POWER_WL_MEDIUM;
} else if (!strcmp(command, "LOW")) {
pkt->workload = LOW;
pkt->workload = RTE_POWER_WL_LOW;
} else {
RTE_LOG(ERR, CHANNEL_MONITOR,
"Wrong workload received in JSON\n");
@ -283,17 +287,17 @@ parse_json_to_pkt(json_t *element, struct rte_power_channel_packet *pkt,
char unit[32];
strlcpy(unit, json_string_value(value), 32);
if (!strcmp(unit, "SCALE_UP")) {
pkt->unit = CPU_POWER_SCALE_UP;
pkt->unit = RTE_POWER_SCALE_UP;
} else if (!strcmp(unit, "SCALE_DOWN")) {
pkt->unit = CPU_POWER_SCALE_DOWN;
pkt->unit = RTE_POWER_SCALE_DOWN;
} else if (!strcmp(unit, "SCALE_MAX")) {
pkt->unit = CPU_POWER_SCALE_MAX;
pkt->unit = RTE_POWER_SCALE_MAX;
} else if (!strcmp(unit, "SCALE_MIN")) {
pkt->unit = CPU_POWER_SCALE_MIN;
pkt->unit = RTE_POWER_SCALE_MIN;
} else if (!strcmp(unit, "ENABLE_TURBO")) {
pkt->unit = CPU_POWER_ENABLE_TURBO;
pkt->unit = RTE_POWER_ENABLE_TURBO;
} else if (!strcmp(unit, "DISABLE_TURBO")) {
pkt->unit = CPU_POWER_DISABLE_TURBO;
pkt->unit = RTE_POWER_DISABLE_TURBO;
} else {
RTE_LOG(ERR, CHANNEL_MONITOR,
"Invalid command received in JSON\n");
@ -312,7 +316,7 @@ parse_json_to_pkt(json_t *element, struct rte_power_channel_packet *pkt,
vm_name);
return -1;
}
strlcpy(pkt->vm_name, vm_name, VM_MAX_NAME_SZ);
strlcpy(pkt->vm_name, vm_name, RTE_POWER_VM_MAX_NAME_SZ);
pkt->resource_id = resource_id;
}
return 0;
@ -367,7 +371,7 @@ pcpu_monitor(struct policy *pol, struct core_info *ci, int pcpu, int count)
{
int ret = 0;
if (pol->pkt.policy_to_use == BRANCH_RATIO) {
if (pol->pkt.policy_to_use == RTE_POWER_POLICY_BRANCH_RATIO) {
ci->cd[pcpu].oob_enabled = 1;
ret = add_core_to_monitor(pcpu);
if (ret == 0)
@ -407,7 +411,7 @@ get_pcpu_to_control(struct policy *pol)
* differenciate between them when adding them to the branch monitor.
* Virtual cores need to be converted to physical cores.
*/
if (pol->pkt.core_type == CORE_TYPE_VIRTUAL) {
if (pol->pkt.core_type == RTE_POWER_CORE_TYPE_VIRTUAL) {
/*
* If the cores in the policy are virtual, we need to map them
* to physical core. We look up the vm info and use that for
@ -479,7 +483,8 @@ update_policy(struct rte_power_channel_packet *pkt)
policies[i].pkt = *pkt;
get_pcpu_to_control(&policies[i]);
/* Check Eth dev only for Traffic policy */
if (policies[i].pkt.policy_to_use == TRAFFIC) {
if (policies[i].pkt.policy_to_use ==
RTE_POWER_POLICY_TRAFFIC) {
if (get_pfid(&policies[i]) < 0) {
updated = 1;
break;
@ -496,7 +501,8 @@ update_policy(struct rte_power_channel_packet *pkt)
policies[i].pkt = *pkt;
get_pcpu_to_control(&policies[i]);
/* Check Eth dev only for Traffic policy */
if (policies[i].pkt.policy_to_use == TRAFFIC) {
if (policies[i].pkt.policy_to_use ==
RTE_POWER_POLICY_TRAFFIC) {
if (get_pfid(&policies[i]) < 0) {
updated = 1;
break;
@ -615,7 +621,7 @@ apply_time_profile(struct policy *pol)
/* Format the date and time, down to a single second. */
strftime(time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", ptm);
for (x = 0; x < HOURS; x++) {
for (x = 0; x < RTE_POWER_HOURS_PER_DAY; x++) {
if (ptm->tm_hour == pol->pkt.timer_policy.busy_hours[x]) {
for (count = 0; count < pol->pkt.num_vcpu; count++) {
@ -648,19 +654,19 @@ apply_workload_profile(struct policy *pol)
int count;
if (pol->pkt.workload == HIGH) {
if (pol->pkt.workload == RTE_POWER_WL_HIGH) {
for (count = 0; count < pol->pkt.num_vcpu; count++) {
if (pol->core_share[count].status != 1)
power_manager_scale_core_max(
pol->core_share[count].pcpu);
}
} else if (pol->pkt.workload == MEDIUM) {
} else if (pol->pkt.workload == RTE_POWER_WL_MEDIUM) {
for (count = 0; count < pol->pkt.num_vcpu; count++) {
if (pol->core_share[count].status != 1)
power_manager_scale_core_med(
pol->core_share[count].pcpu);
}
} else if (pol->pkt.workload == LOW) {
} else if (pol->pkt.workload == RTE_POWER_WL_LOW) {
for (count = 0; count < pol->pkt.num_vcpu; count++) {
if (pol->core_share[count].status != 1)
power_manager_scale_core_min(
@ -676,11 +682,11 @@ apply_policy(struct policy *pol)
struct rte_power_channel_packet *pkt = &pol->pkt;
/*Check policy to use*/
if (pkt->policy_to_use == TRAFFIC)
if (pkt->policy_to_use == RTE_POWER_POLICY_TRAFFIC)
apply_traffic_profile(pol);
else if (pkt->policy_to_use == TIME)
else if (pkt->policy_to_use == RTE_POWER_POLICY_TIME)
apply_time_profile(pol);
else if (pkt->policy_to_use == WORKLOAD)
else if (pkt->policy_to_use == RTE_POWER_POLICY_WORKLOAD)
apply_workload_profile(pol);
}
@ -726,13 +732,13 @@ send_freq(struct rte_power_channel_packet *pkt,
if (get_info_vm(pkt->vm_name, &info) != 0)
return -1;
if (!freq_list && vcore_id >= MAX_VCPU_PER_VM)
if (!freq_list && vcore_id >= RTE_POWER_MAX_VCPU_PER_VM)
return -1;
if (!info.allow_query)
return -1;
channel_pkt_freq_list.command = CPU_POWER_FREQ_LIST;
channel_pkt_freq_list.command = RTE_POWER_FREQ_LIST;
channel_pkt_freq_list.num_vcpu = info.num_vcpus;
if (freq_list) {
@ -764,13 +770,13 @@ send_capabilities(struct rte_power_channel_packet *pkt,
if (get_info_vm(pkt->vm_name, &info) != 0)
return -1;
if (!list_requested && vcore_id >= MAX_VCPU_PER_VM)
if (!list_requested && vcore_id >= RTE_POWER_MAX_VCPU_PER_VM)
return -1;
if (!info.allow_query)
return -1;
channel_pkt_caps_list.command = CPU_POWER_CAPS_LIST;
channel_pkt_caps_list.command = RTE_POWER_CAPS_LIST;
channel_pkt_caps_list.num_vcpu = info.num_vcpus;
if (list_requested) {
@ -828,10 +834,10 @@ process_request(struct rte_power_channel_packet *pkt,
CHANNEL_MGR_CHANNEL_PROCESSING) == 0)
return -1;
if (pkt->command == CPU_POWER) {
if (pkt->command == RTE_POWER_CPU_POWER) {
unsigned int core_num;
if (pkt->core_type == CORE_TYPE_VIRTUAL)
if (pkt->core_type == RTE_POWER_CORE_TYPE_VIRTUAL)
core_num = get_pcpu(chan_info, pkt->resource_id);
else
core_num = pkt->resource_id;
@ -843,22 +849,22 @@ process_request(struct rte_power_channel_packet *pkt,
bool valid_unit = true;
switch (pkt->unit) {
case(CPU_POWER_SCALE_MIN):
case(RTE_POWER_SCALE_MIN):
scale_res = power_manager_scale_core_min(core_num);
break;
case(CPU_POWER_SCALE_MAX):
case(RTE_POWER_SCALE_MAX):
scale_res = power_manager_scale_core_max(core_num);
break;
case(CPU_POWER_SCALE_DOWN):
case(RTE_POWER_SCALE_DOWN):
scale_res = power_manager_scale_core_down(core_num);
break;
case(CPU_POWER_SCALE_UP):
case(RTE_POWER_SCALE_UP):
scale_res = power_manager_scale_core_up(core_num);
break;
case(CPU_POWER_ENABLE_TURBO):
case(RTE_POWER_ENABLE_TURBO):
scale_res = power_manager_enable_turbo_core(core_num);
break;
case(CPU_POWER_DISABLE_TURBO):
case(RTE_POWER_DISABLE_TURBO):
scale_res = power_manager_disable_turbo_core(core_num);
break;
default:
@ -870,8 +876,8 @@ process_request(struct rte_power_channel_packet *pkt,
ret = send_ack_for_received_cmd(pkt,
chan_info,
scale_res >= 0 ?
CPU_POWER_CMD_ACK :
CPU_POWER_CMD_NACK);
RTE_POWER_CMD_ACK :
RTE_POWER_CMD_NACK);
if (ret < 0)
RTE_LOG(ERR, CHANNEL_MONITOR, "Error during sending ack command.\n");
} else
@ -879,19 +885,19 @@ process_request(struct rte_power_channel_packet *pkt,
}
if (pkt->command == PKT_POLICY) {
if (pkt->command == RTE_POWER_PKT_POLICY) {
RTE_LOG(INFO, CHANNEL_MONITOR, "Processing policy request %s\n",
pkt->vm_name);
int ret = send_ack_for_received_cmd(pkt,
chan_info,
CPU_POWER_CMD_ACK);
RTE_POWER_CMD_ACK);
if (ret < 0)
RTE_LOG(ERR, CHANNEL_MONITOR, "Error during sending ack command.\n");
update_policy(pkt);
policy_is_set = 1;
}
if (pkt->command == PKT_POLICY_REMOVE) {
if (pkt->command == RTE_POWER_PKT_POLICY_REMOVE) {
ret = remove_policy(pkt);
if (ret == 0)
RTE_LOG(INFO, CHANNEL_MONITOR,
@ -901,26 +907,26 @@ process_request(struct rte_power_channel_packet *pkt,
"Policy %s does not exist\n", pkt->vm_name);
}
if (pkt->command == CPU_POWER_QUERY_FREQ_LIST ||
pkt->command == CPU_POWER_QUERY_FREQ) {
if (pkt->command == RTE_POWER_QUERY_FREQ_LIST ||
pkt->command == RTE_POWER_QUERY_FREQ) {
RTE_LOG(INFO, CHANNEL_MONITOR,
"Frequency for %s requested.\n", pkt->vm_name);
int ret = send_freq(pkt,
chan_info,
pkt->command == CPU_POWER_QUERY_FREQ_LIST);
pkt->command == RTE_POWER_QUERY_FREQ_LIST);
if (ret < 0)
RTE_LOG(ERR, CHANNEL_MONITOR, "Error during frequency sending.\n");
}
if (pkt->command == CPU_POWER_QUERY_CAPS_LIST ||
pkt->command == CPU_POWER_QUERY_CAPS) {
if (pkt->command == RTE_POWER_QUERY_CAPS_LIST ||
pkt->command == RTE_POWER_QUERY_CAPS) {
RTE_LOG(INFO, CHANNEL_MONITOR,
"Capabilities for %s requested.\n", pkt->vm_name);
int ret = send_capabilities(pkt,
chan_info,
pkt->command == CPU_POWER_QUERY_CAPS_LIST);
pkt->command == RTE_POWER_QUERY_CAPS_LIST);
if (ret < 0)
RTE_LOG(ERR, CHANNEL_MONITOR, "Error during sending capabilities.\n");
}

View File

@ -19,10 +19,10 @@ struct core_share {
struct policy {
struct rte_power_channel_packet pkt;
uint32_t pfid[MAX_VFS];
uint32_t port[MAX_VFS];
uint32_t pfid[RTE_POWER_MAX_VFS];
uint32_t port[RTE_POWER_MAX_VFS];
unsigned int enabled;
struct core_share core_share[MAX_VCPU_PER_VM];
struct core_share core_share[RTE_POWER_MAX_VCPU_PER_VM];
};
#ifdef __cplusplus

View File

@ -50,8 +50,8 @@ parse_args(int argc, char **argv)
};
struct rte_power_channel_packet *policy;
unsigned short int hours[MAX_HOURS];
unsigned short int cores[MAX_VCPU_PER_VM];
unsigned short int ports[MAX_VCPU_PER_VM];
unsigned short int cores[RTE_POWER_MAX_VCPU_PER_VM];
unsigned short int ports[RTE_POWER_MAX_VCPU_PER_VM];
int i, cnt, idx;
policy = get_policy();
@ -69,7 +69,8 @@ parse_args(int argc, char **argv)
switch (opt) {
/* portmask */
case 'n':
strlcpy(policy->vm_name, optarg, VM_MAX_NAME_SZ);
strlcpy(policy->vm_name, optarg,
RTE_POWER_VM_MAX_NAME_SZ);
printf("Setting VM Name to [%s]\n", policy->vm_name);
break;
case 'b':
@ -97,14 +98,15 @@ parse_args(int argc, char **argv)
}
break;
case 'l':
cnt = parse_set(optarg, cores, MAX_VCPU_PER_VM);
cnt = parse_set(optarg, cores,
RTE_POWER_MAX_VCPU_PER_VM);
if (cnt < 0) {
printf("Invalid value passed to vcpu-list - [%s]\n",
optarg);
break;
}
idx = 0;
for (i = 0; i < MAX_VCPU_PER_VM; i++) {
for (i = 0; i < RTE_POWER_MAX_VCPU_PER_VM; i++) {
if (cores[i]) {
printf("***Using core %d\n", i);
policy->vcpu_to_control[idx++] = i;
@ -114,14 +116,15 @@ parse_args(int argc, char **argv)
printf("Total cores: %d\n", idx);
break;
case 'p':
cnt = parse_set(optarg, ports, MAX_VCPU_PER_VM);
cnt = parse_set(optarg, ports,
RTE_POWER_MAX_VCPU_PER_VM);
if (cnt < 0) {
printf("Invalid value passed to port-list - [%s]\n",
optarg);
break;
}
idx = 0;
for (i = 0; i < MAX_VCPU_PER_VM; i++) {
for (i = 0; i < RTE_POWER_MAX_VCPU_PER_VM; i++) {
if (ports[i]) {
printf("***Using port %d\n", i);
if (set_policy_mac(i, idx++) != 0) {
@ -135,13 +138,17 @@ parse_args(int argc, char **argv)
break;
case 'o':
if (!strcmp(optarg, "TRAFFIC"))
policy->policy_to_use = TRAFFIC;
policy->policy_to_use =
RTE_POWER_POLICY_TRAFFIC;
else if (!strcmp(optarg, "TIME"))
policy->policy_to_use = TIME;
policy->policy_to_use =
RTE_POWER_POLICY_TIME;
else if (!strcmp(optarg, "WORKLOAD"))
policy->policy_to_use = WORKLOAD;
policy->policy_to_use =
RTE_POWER_POLICY_WORKLOAD;
else if (!strcmp(optarg, "BRANCH_RATIO"))
policy->policy_to_use = BRANCH_RATIO;
policy->policy_to_use =
RTE_POWER_POLICY_BRANCH_RATIO;
else {
printf("Invalid policy specified: %s\n",
optarg);

View File

@ -103,10 +103,10 @@ set_policy_defaults(struct rte_power_channel_packet *pkt)
pkt->timer_policy.hours_to_use_traffic_profile[0] = 8;
pkt->timer_policy.hours_to_use_traffic_profile[1] = 10;
pkt->core_type = CORE_TYPE_VIRTUAL;
pkt->workload = LOW;
pkt->policy_to_use = TIME;
pkt->command = PKT_POLICY;
pkt->core_type = RTE_POWER_CORE_TYPE_VIRTUAL;
pkt->workload = RTE_POWER_WL_LOW;
pkt->policy_to_use = RTE_POWER_POLICY_TIME;
pkt->command = RTE_POWER_PKT_POLICY;
strlcpy(pkt->vm_name, "ubuntu2", sizeof(pkt->vm_name));
return 0;
@ -169,7 +169,7 @@ receive_freq_list(struct rte_power_channel_packet_freq_list *pkt_freq_list,
RTE_LOG(ERR, GUEST_CLI, "Error receiving message.\n");
return -1;
}
if (pkt_freq_list->command != CPU_POWER_FREQ_LIST) {
if (pkt_freq_list->command != RTE_POWER_FREQ_LIST) {
RTE_LOG(ERR, GUEST_CLI, "Unexpected message received.\n");
return -1;
}
@ -203,18 +203,18 @@ cmd_query_freq_list_parsed(void *parsed_result,
return;
}
pkt.command = CPU_POWER_QUERY_FREQ_LIST;
pkt.command = RTE_POWER_QUERY_FREQ_LIST;
strlcpy(pkt.vm_name, policy.vm_name, sizeof(pkt.vm_name));
query_list = true;
} else {
errno = 0;
lcore_id = (unsigned int)strtol(res->cpu_num, &ep, 10);
if (errno != 0 || lcore_id >= MAX_VCPU_PER_VM ||
if (errno != 0 || lcore_id >= RTE_POWER_MAX_VCPU_PER_VM ||
ep == res->cpu_num) {
cmdline_printf(cl, "Invalid parameter provided.\n");
return;
}
pkt.command = CPU_POWER_QUERY_FREQ;
pkt.command = RTE_POWER_QUERY_FREQ;
strlcpy(pkt.vm_name, policy.vm_name, sizeof(pkt.vm_name));
pkt.resource_id = lcore_id;
}
@ -279,7 +279,7 @@ receive_capabilities(struct rte_power_channel_packet_caps_list *pkt_caps_list,
RTE_LOG(ERR, GUEST_CLI, "Error receiving message.\n");
return -1;
}
if (pkt_caps_list->command != CPU_POWER_CAPS_LIST) {
if (pkt_caps_list->command != RTE_POWER_CAPS_LIST) {
RTE_LOG(ERR, GUEST_CLI, "Unexpected message received.\n");
return -1;
}
@ -313,18 +313,18 @@ cmd_query_caps_list_parsed(void *parsed_result,
return;
}
pkt.command = CPU_POWER_QUERY_CAPS_LIST;
pkt.command = RTE_POWER_QUERY_CAPS_LIST;
strlcpy(pkt.vm_name, policy.vm_name, sizeof(pkt.vm_name));
query_list = true;
} else {
errno = 0;
lcore_id = (unsigned int)strtol(res->cpu_num, &ep, 10);
if (errno != 0 || lcore_id >= MAX_VCPU_PER_VM ||
if (errno != 0 || lcore_id >= RTE_POWER_MAX_VCPU_PER_VM ||
ep == res->cpu_num) {
cmdline_printf(cl, "Invalid parameter provided.\n");
return;
}
pkt.command = CPU_POWER_QUERY_CAPS;
pkt.command = RTE_POWER_QUERY_CAPS;
strlcpy(pkt.vm_name, policy.vm_name, sizeof(pkt.vm_name));
pkt.resource_id = lcore_id;
}
@ -388,10 +388,10 @@ check_response_cmd(unsigned int lcore_id, int *result)
return -1;
switch (pkt.command) {
case(CPU_POWER_CMD_ACK):
case(RTE_POWER_CMD_ACK):
*result = 1;
break;
case(CPU_POWER_CMD_NACK):
case(RTE_POWER_CMD_NACK):
*result = 0;
break;
default:

View File

@ -394,7 +394,7 @@ main(int argc, char **argv)
"Cannot init port %"PRIu8 "\n",
portid);
for (w = 0; w < MAX_VFS; w++) {
for (w = 0; w < RTE_POWER_MAX_VFS; w++) {
eth.addr_bytes[5] = w + 0xf0;
ret = -ENOTSUP;

View File

@ -100,7 +100,7 @@ guest_channel_host_connect(const char *path, unsigned int lcore_id)
/* Send a test packet, this command is ignored by the host, but a successful
* send indicates that the host endpoint is monitoring.
*/
pkt.command = CPU_POWER_CONNECT;
pkt.command = RTE_POWER_CPU_POWER_CONNECT;
global_fds[lcore_id] = fd;
ret = guest_channel_send_msg(&pkt, lcore_id);
if (ret != 0) {

View File

@ -29,7 +29,7 @@ power_kvm_vm_init(unsigned int lcore_id)
lcore_id, RTE_MAX_LCORE-1);
return -1;
}
pkt[lcore_id].command = CPU_POWER;
pkt[lcore_id].command = RTE_POWER_CPU_POWER;
pkt[lcore_id].resource_id = lcore_id;
return guest_channel_host_connect(FD_PATH, lcore_id);
}
@ -90,25 +90,25 @@ send_msg(unsigned int lcore_id, uint32_t scale_direction)
int
power_kvm_vm_freq_up(unsigned int lcore_id)
{
return send_msg(lcore_id, CPU_POWER_SCALE_UP);
return send_msg(lcore_id, RTE_POWER_SCALE_UP);
}
int
power_kvm_vm_freq_down(unsigned int lcore_id)
{
return send_msg(lcore_id, CPU_POWER_SCALE_DOWN);
return send_msg(lcore_id, RTE_POWER_SCALE_DOWN);
}
int
power_kvm_vm_freq_max(unsigned int lcore_id)
{
return send_msg(lcore_id, CPU_POWER_SCALE_MAX);
return send_msg(lcore_id, RTE_POWER_SCALE_MAX);
}
int
power_kvm_vm_freq_min(unsigned int lcore_id)
{
return send_msg(lcore_id, CPU_POWER_SCALE_MIN);
return send_msg(lcore_id, RTE_POWER_SCALE_MIN);
}
int
@ -121,13 +121,13 @@ power_kvm_vm_turbo_status(__rte_unused unsigned int lcore_id)
int
power_kvm_vm_enable_turbo(unsigned int lcore_id)
{
return send_msg(lcore_id, CPU_POWER_ENABLE_TURBO);
return send_msg(lcore_id, RTE_POWER_ENABLE_TURBO);
}
int
power_kvm_vm_disable_turbo(unsigned int lcore_id)
{
return send_msg(lcore_id, CPU_POWER_DISABLE_TURBO);
return send_msg(lcore_id, RTE_POWER_DISABLE_TURBO);
}
struct rte_power_core_capabilities;

View File

@ -11,58 +11,41 @@ extern "C" {
#include <stdint.h>
#include <stdbool.h>
#define MAX_VFS 10
#define VM_MAX_NAME_SZ 32
#define MAX_VCPU_PER_VM 8
#define HOURS 24
#define RTE_POWER_MAX_VFS 10
#define RTE_POWER_VM_MAX_NAME_SZ 32
#define RTE_POWER_MAX_VCPU_PER_VM 8
#define RTE_POWER_HOURS_PER_DAY 24
/* Valid Commands */
#define CPU_POWER 1
#define CPU_POWER_CONNECT 2
#define PKT_POLICY 3
#define PKT_POLICY_REMOVE 4
#define RTE_POWER_CPU_POWER 1
#define RTE_POWER_CPU_POWER_CONNECT 2
#define RTE_POWER_PKT_POLICY 3
#define RTE_POWER_PKT_POLICY_REMOVE 4
#define CORE_TYPE_VIRTUAL 0
#define CORE_TYPE_PHYSICAL 1
#define RTE_POWER_CORE_TYPE_VIRTUAL 0
#define RTE_POWER_CORE_TYPE_PHYSICAL 1
/* CPU Power Command Scaling */
#define CPU_POWER_SCALE_UP 1
#define CPU_POWER_SCALE_DOWN 2
#define CPU_POWER_SCALE_MAX 3
#define CPU_POWER_SCALE_MIN 4
#define CPU_POWER_ENABLE_TURBO 5
#define CPU_POWER_DISABLE_TURBO 6
#define RTE_POWER_SCALE_UP 1
#define RTE_POWER_SCALE_DOWN 2
#define RTE_POWER_SCALE_MAX 3
#define RTE_POWER_SCALE_MIN 4
#define RTE_POWER_ENABLE_TURBO 5
#define RTE_POWER_DISABLE_TURBO 6
/* CPU Power Queries */
#define CPU_POWER_QUERY_FREQ_LIST 7
#define CPU_POWER_QUERY_FREQ 8
#define CPU_POWER_QUERY_CAPS_LIST 9
#define CPU_POWER_QUERY_CAPS 10
/* --- Outgoing messages --- */
#define RTE_POWER_QUERY_FREQ_LIST 7
#define RTE_POWER_QUERY_FREQ 8
#define RTE_POWER_QUERY_CAPS_LIST 9
#define RTE_POWER_QUERY_CAPS 10
/* Generic Power Command Response */
#define CPU_POWER_CMD_ACK 1
#define CPU_POWER_CMD_NACK 2
#define RTE_POWER_CMD_ACK 1
#define RTE_POWER_CMD_NACK 2
/* CPU Power Query Responses */
#define CPU_POWER_FREQ_LIST 3
#define CPU_POWER_CAPS_LIST 4
struct rte_power_timer_profile {
int busy_hours[HOURS];
int quiet_hours[HOURS];
int hours_to_use_traffic_profile[HOURS];
};
enum rte_power_workload_level {HIGH, MEDIUM, LOW};
enum rte_power_policy {
TRAFFIC,
TIME,
WORKLOAD,
BRANCH_RATIO
};
#define RTE_POWER_FREQ_LIST 3
#define RTE_POWER_CAPS_LIST 4
struct rte_power_traffic_policy {
uint32_t min_packet_thresh;
@ -70,6 +53,25 @@ struct rte_power_traffic_policy {
uint32_t max_max_packet_thresh;
};
struct rte_power_timer_profile {
int busy_hours[RTE_POWER_HOURS_PER_DAY];
int quiet_hours[RTE_POWER_HOURS_PER_DAY];
int hours_to_use_traffic_profile[RTE_POWER_HOURS_PER_DAY];
};
enum rte_power_workload_level {
RTE_POWER_WL_HIGH,
RTE_POWER_WL_MEDIUM,
RTE_POWER_WL_LOW
};
enum rte_power_policy {
RTE_POWER_POLICY_TRAFFIC,
RTE_POWER_POLICY_TIME,
RTE_POWER_POLICY_WORKLOAD,
RTE_POWER_POLICY_BRANCH_RATIO
};
struct rte_power_turbo_status {
bool tbEnabled;
};
@ -78,12 +80,12 @@ struct rte_power_channel_packet {
uint64_t resource_id; /**< core_num, device */
uint32_t unit; /**< scale down/up/min/max */
uint32_t command; /**< Power, IO, etc */
char vm_name[VM_MAX_NAME_SZ];
char vm_name[RTE_POWER_VM_MAX_NAME_SZ];
uint64_t vfid[MAX_VFS];
uint64_t vfid[RTE_POWER_MAX_VFS];
int nb_mac_to_monitor;
struct rte_power_traffic_policy traffic_policy;
uint8_t vcpu_to_control[MAX_VCPU_PER_VM];
uint8_t vcpu_to_control[RTE_POWER_MAX_VCPU_PER_VM];
uint8_t num_vcpu;
struct rte_power_timer_profile timer_policy;
bool core_type;
@ -96,9 +98,9 @@ struct rte_power_channel_packet_freq_list {
uint64_t resource_id; /**< core_num, device */
uint32_t unit; /**< scale down/up/min/max */
uint32_t command; /**< Power, IO, etc */
char vm_name[VM_MAX_NAME_SZ];
char vm_name[RTE_POWER_VM_MAX_NAME_SZ];
uint32_t freq_list[MAX_VCPU_PER_VM];
uint32_t freq_list[RTE_POWER_MAX_VCPU_PER_VM];
uint8_t num_vcpu;
};
@ -106,10 +108,10 @@ struct rte_power_channel_packet_caps_list {
uint64_t resource_id; /**< core_num, device */
uint32_t unit; /**< scale down/up/min/max */
uint32_t command; /**< Power, IO, etc */
char vm_name[VM_MAX_NAME_SZ];
char vm_name[RTE_POWER_VM_MAX_NAME_SZ];
uint64_t turbo[MAX_VCPU_PER_VM];
uint64_t priority[MAX_VCPU_PER_VM];
uint64_t turbo[RTE_POWER_MAX_VCPU_PER_VM];
uint64_t priority[RTE_POWER_MAX_VCPU_PER_VM];
uint8_t num_vcpu;
};