|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 09/14 RESEND] xenpm: Print HWP parameters
On 01.05.2023 21:30, Jason Andryuk wrote:
> Print HWP-specific parameters. Some are always present, but others
> depend on hardware support.
>
> Signed-off-by: Jason Andryuk <jandryuk@xxxxxxxxx>
> ---
> v2:
> Style fixes
> Declare i outside loop
> Replace repearted hardware/configured limits with spaces
> Fixup for hw_ removal
> Use XEN_HWP_GOVERNOR
> Use HWP_ACT_WINDOW_EXPONENT_*
> Remove energy_perf hw autonomous - 0 doesn't mean autonomous
> ---
> tools/misc/xenpm.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 65 insertions(+)
>
> diff --git a/tools/misc/xenpm.c b/tools/misc/xenpm.c
> index ce8d7644d0..b2defde0d4 100644
> --- a/tools/misc/xenpm.c
> +++ b/tools/misc/xenpm.c
> @@ -708,6 +708,44 @@ void start_gather_func(int argc, char *argv[])
> pause();
> }
>
> +static void calculate_hwp_activity_window(const xc_hwp_para_t *hwp,
> + unsigned int *activity_window,
> + const char **units)
The function's return value would be nice to use for one of the two
values that are being returned.
> +{
> + unsigned int mantissa = hwp->activity_window &
> HWP_ACT_WINDOW_MANTISSA_MASK;
> + unsigned int exponent =
> + (hwp->activity_window >> HWP_ACT_WINDOW_EXPONENT_SHIFT) &
> + HWP_ACT_WINDOW_EXPONENT_MASK;
I wish we had MASK_EXTR() in common-macros.h. While really a comment on
patch 7 - HWP_ACT_WINDOW_EXPONENT_SHIFT is redundant information and
should imo be omitted from the public interface, in favor of just a
(suitably shifted) mask value. Also note how those constants all lack
proper XEN_ prefixes.
> + unsigned int multiplier = 1;
> + unsigned int i;
> +
> + if ( hwp->activity_window == 0 )
> + {
> + *units = "hardware selected";
> + *activity_window = 0;
> +
> + return;
> + }
While in line with documentation, any mantissa of 0 results in a 0us
window, which I assume would then also mean "hardware selected".
> @@ -773,6 +811,33 @@ static void print_cpufreq_para(int cpuid, struct
> xc_get_cpufreq_para *p_cpufreq)
> p_cpufreq->scaling_cur_freq);
> }
>
> + if ( strcmp(p_cpufreq->scaling_governor, XEN_HWP_GOVERNOR) == 0 )
> + {
> + const xc_hwp_para_t *hwp = &p_cpufreq->u.hwp_para;
> +
> + printf("hwp variables :\n");
> + printf(" hardware limits : lowest [%u] most_efficient [%u]\n",
Here and ...
> + hwp->lowest, hwp->most_efficient);
> + printf(" : guaranteed [%u] highest [%u]\n",
> + hwp->guaranteed, hwp->highest);
> + printf(" configured limits : min [%u] max [%u] energy_perf [%u]\n",
... here I wonder what use the underscores are in produced output. I'd
use blanks. If you really want a separator there, then please use
dashes.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |