#include "rte_power.h"
#include "power_acpi_cpufreq.h"
+#include "power_cppc_cpufreq.h"
#include "power_kvm_vm.h"
#include "power_pstate_cpufreq.h"
#include "power_common.h"
return power_pstate_cpufreq_check_supported();
case PM_ENV_KVM_VM:
return power_kvm_vm_check_supported();
+ case PM_ENV_CPPC_CPUFREQ:
+ return power_cppc_cpufreq_check_supported();
default:
rte_errno = EINVAL;
return -1;
rte_power_freq_disable_turbo = power_pstate_disable_turbo;
rte_power_get_capabilities = power_pstate_get_capabilities;
+ } else if (env == PM_ENV_CPPC_CPUFREQ) {
+ rte_power_freqs = power_cppc_cpufreq_freqs;
+ rte_power_get_freq = power_cppc_cpufreq_get_freq;
+ rte_power_set_freq = power_cppc_cpufreq_set_freq;
+ rte_power_freq_up = power_cppc_cpufreq_freq_up;
+ rte_power_freq_down = power_cppc_cpufreq_freq_down;
+ rte_power_freq_min = power_cppc_cpufreq_freq_min;
+ rte_power_freq_max = power_cppc_cpufreq_freq_max;
+ rte_power_turbo_status = power_cppc_turbo_status;
+ rte_power_freq_enable_turbo = power_cppc_enable_turbo;
+ rte_power_freq_disable_turbo = power_cppc_disable_turbo;
+ rte_power_get_capabilities = power_cppc_get_capabilities;
} else {
RTE_LOG(ERR, POWER, "Invalid Power Management Environment(%d) set\n",
env);
return power_kvm_vm_init(lcore_id);
case PM_ENV_PSTATE_CPUFREQ:
return power_pstate_cpufreq_init(lcore_id);
+ case PM_ENV_CPPC_CPUFREQ:
+ return power_cppc_cpufreq_init(lcore_id);
default:
RTE_LOG(INFO, POWER, "Env isn't set yet!\n");
}
goto out;
}
+ RTE_LOG(INFO, POWER, "Attempting to initialise CPPC power management...\n");
+ ret = power_cppc_cpufreq_init(lcore_id);
+ if (ret == 0) {
+ rte_power_set_env(PM_ENV_CPPC_CPUFREQ);
+ goto out;
+ }
+
RTE_LOG(INFO, POWER, "Attempting to initialise VM power management...\n");
ret = power_kvm_vm_init(lcore_id);
if (ret == 0) {
return power_kvm_vm_exit(lcore_id);
case PM_ENV_PSTATE_CPUFREQ:
return power_pstate_cpufreq_exit(lcore_id);
+ case PM_ENV_CPPC_CPUFREQ:
+ return power_cppc_cpufreq_exit(lcore_id);
default:
RTE_LOG(ERR, POWER, "Environment has not been set, unable to exit gracefully\n");