Message ID | c07ce1369b8972c60993b86bfacaa77ceee3af3a.1749593891.git.len.brown@intel.com |
---|---|
State | New |
Headers | show |
Series | [1/2] tools/power turbostat: regression fix: --show C1E% | expand |
On Tue, 2025-06-10 at 18:18 -0400, Len Brown wrote: > From: Len Brown <len.brown@intel.com> > > $ sudo turbostat --quiet --show junk > turbostat: Counter 'junk' can not be added. > > Previously, invalid argumetns to --show and --hide were silently > ignored s/argumetns/arguments otherwise, the patch LGTM. Acked-by: Zhang Rui <rui.zhang@intel.com> -rui > > Signed-off-by: Len Brown <len.brown@intel.com> > --- > tools/power/x86/turbostat/turbostat.c | 33 +++++++++++++++++++++++++-- > 1 file changed, 31 insertions(+), 2 deletions(-) > > diff --git a/tools/power/x86/turbostat/turbostat.c > b/tools/power/x86/turbostat/turbostat.c > index 33a54a9e0781..4056b7e26a0f 100644 > --- a/tools/power/x86/turbostat/turbostat.c > +++ b/tools/power/x86/turbostat/turbostat.c > @@ -2310,6 +2310,8 @@ char *deferred_add_names[MAX_DEFERRED]; > char *deferred_skip_names[MAX_DEFERRED]; > int deferred_add_index; > int deferred_skip_index; > +unsigned int deferred_add_consumed; > +unsigned int deferred_skip_consumed; > > /* > * HIDE_LIST - hide this list of counters, show the rest [default] > @@ -10512,8 +10514,10 @@ int is_deferred_add(char *name) > int i; > > for (i = 0; i < deferred_add_index; ++i) > - if (!strcmp(name, deferred_add_names[i])) > + if (!strcmp(name, deferred_add_names[i])) { > + deferred_add_consumed |= (1 << i); > return 1; > + } > return 0; > } > > @@ -10522,11 +10526,34 @@ int is_deferred_skip(char *name) > int i; > > for (i = 0; i < deferred_skip_index; ++i) > - if (!strcmp(name, deferred_skip_names[i])) > + if (!strcmp(name, deferred_skip_names[i])) { > + deferred_skip_consumed |= (1 << i); > return 1; > + } > return 0; > } > > +void verify_deferred_consumed(void) > +{ > + int i; > + int fail = 0; > + > + for (i = 0; i < deferred_add_index; ++i) { > + if (!(deferred_add_consumed & (1 << i))) { > + warnx("Counter '%s' can not be added.", > deferred_add_names[i]); > + fail++; > + } > + } > + for (i = 0; i < deferred_skip_index; ++i) { > + if (!(deferred_skip_consumed & (1 << i))) { > + warnx("Counter '%s' can not be skipped.", > deferred_skip_names[i]); > + fail++; > + } > + } > + if (fail) > + exit(-EINVAL); > +} > + > void probe_cpuidle_residency(void) > { > char path[64]; > @@ -10885,6 +10912,8 @@ int main(int argc, char **argv) > probe_cpuidle_residency(); > probe_cpuidle_counts(); > > + verify_deferred_consumed(); > + > if (!getuid()) > set_rlimit(); >
diff --git a/tools/power/x86/turbostat/turbostat.c b/tools/power/x86/turbostat/turbostat.c index 33a54a9e0781..4056b7e26a0f 100644 --- a/tools/power/x86/turbostat/turbostat.c +++ b/tools/power/x86/turbostat/turbostat.c @@ -2310,6 +2310,8 @@ char *deferred_add_names[MAX_DEFERRED]; char *deferred_skip_names[MAX_DEFERRED]; int deferred_add_index; int deferred_skip_index; +unsigned int deferred_add_consumed; +unsigned int deferred_skip_consumed; /* * HIDE_LIST - hide this list of counters, show the rest [default] @@ -10512,8 +10514,10 @@ int is_deferred_add(char *name) int i; for (i = 0; i < deferred_add_index; ++i) - if (!strcmp(name, deferred_add_names[i])) + if (!strcmp(name, deferred_add_names[i])) { + deferred_add_consumed |= (1 << i); return 1; + } return 0; } @@ -10522,11 +10526,34 @@ int is_deferred_skip(char *name) int i; for (i = 0; i < deferred_skip_index; ++i) - if (!strcmp(name, deferred_skip_names[i])) + if (!strcmp(name, deferred_skip_names[i])) { + deferred_skip_consumed |= (1 << i); return 1; + } return 0; } +void verify_deferred_consumed(void) +{ + int i; + int fail = 0; + + for (i = 0; i < deferred_add_index; ++i) { + if (!(deferred_add_consumed & (1 << i))) { + warnx("Counter '%s' can not be added.", deferred_add_names[i]); + fail++; + } + } + for (i = 0; i < deferred_skip_index; ++i) { + if (!(deferred_skip_consumed & (1 << i))) { + warnx("Counter '%s' can not be skipped.", deferred_skip_names[i]); + fail++; + } + } + if (fail) + exit(-EINVAL); +} + void probe_cpuidle_residency(void) { char path[64]; @@ -10885,6 +10912,8 @@ int main(int argc, char **argv) probe_cpuidle_residency(); probe_cpuidle_counts(); + verify_deferred_consumed(); + if (!getuid()) set_rlimit();