[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v5 15/18] xen/cpufreq: bypass governor-related para for amd-cppc-epp
HWP and amd-cppc-epp are both governor-less driver, so we introduce "hw_auto" flag to together bypass governor-related print in print_cpufreq_para(). In get/set_cpufreq_para(), we are adding "cpufreq_driver.setpolicy == NULL" check to exclude governor-related para for amd-cppc-epp driver. Signed-off-by: Penny Zheng <Penny.Zheng@xxxxxxx> --- v3 -> v4: - Include validation check fix here --- v4 -> v5: - validation check has beem moved to where XEN_PROCESSOR_PM_CPPC and XEN_CPPC_INIT have been firstly introduced - adding "cpufreq_driver.setpolicy == NULL" check to exclude governor-related para for amd-cppc-epp driver in get/set_cpufreq_para() --- tools/misc/xenpm.c | 10 +++++++--- xen/drivers/acpi/pmstat.c | 6 ++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/tools/misc/xenpm.c b/tools/misc/xenpm.c index 2a87f7ae8a..f173e598ea 100644 --- a/tools/misc/xenpm.c +++ b/tools/misc/xenpm.c @@ -791,9 +791,13 @@ static unsigned int calculate_activity_window(const xc_cppc_para_t *cppc, /* print out parameters about cpu frequency */ static void print_cpufreq_para(int cpuid, struct xc_get_cpufreq_para *p_cpufreq) { - bool hwp = strcmp(p_cpufreq->scaling_driver, XEN_HWP_DRIVER_NAME) == 0; + bool hw_auto = false; int i; + if ( !strcmp(p_cpufreq->scaling_driver, XEN_HWP_DRIVER_NAME) || + !strcmp(p_cpufreq->scaling_driver, XEN_AMD_CPPC_EPP_DRIVER_NAME) ) + hw_auto = true; + printf("cpu id : %d\n", cpuid); printf("affected_cpus :"); @@ -801,7 +805,7 @@ static void print_cpufreq_para(int cpuid, struct xc_get_cpufreq_para *p_cpufreq) printf(" %d", p_cpufreq->affected_cpus[i]); printf("\n"); - if ( hwp ) + if ( hw_auto ) printf("cpuinfo frequency : base [%"PRIu32"] max [%"PRIu32"]\n", p_cpufreq->cpuinfo_min_freq, p_cpufreq->cpuinfo_max_freq); @@ -813,7 +817,7 @@ static void print_cpufreq_para(int cpuid, struct xc_get_cpufreq_para *p_cpufreq) printf("scaling_driver : %s\n", p_cpufreq->scaling_driver); - if ( !hwp ) + if ( !hw_auto ) { if ( p_cpufreq->gov_num ) printf("scaling_avail_gov : %s\n", diff --git a/xen/drivers/acpi/pmstat.c b/xen/drivers/acpi/pmstat.c index 6e9178ade1..e5f375921a 100644 --- a/xen/drivers/acpi/pmstat.c +++ b/xen/drivers/acpi/pmstat.c @@ -253,7 +253,8 @@ static int get_cpufreq_para(struct xen_sysctl_pm_op *op) else strlcpy(op->u.get_para.scaling_driver, "Unknown", CPUFREQ_NAME_LEN); - if ( !hwp_active() ) + /* bypass hwp and amd-cppc-epp driver */ + if ( !hwp_active() && cpufreq_driver.setpolicy == NULL ) { if ( !(scaling_available_governors = xzalloc_array(char, gov_num * CPUFREQ_NAME_LEN)) ) @@ -346,7 +347,8 @@ static int set_cpufreq_para(struct xen_sysctl_pm_op *op) if ( !policy || !policy->governor ) return -EINVAL; - if ( hwp_active() ) + /* bypass hwp and amd-cppc-epp driver */ + if ( hwp_active() || cpufreq_driver.setpolicy == NULL ) return -EOPNOTSUPP; switch(op->u.set_para.ctrl_type) -- 2.34.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |