tools/power turbostat: fix zero IRQ count shown in one-shot command mode

The IRQ column has been working for periodic mode,
but not in one-shot command mode, it shows only 0.

until now.

Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
Len Brown 2017-02-14 22:07:52 -05:00
parent 1ef7d21afe
commit 218f0e8d5c
1 changed files with 8 additions and 4 deletions

View File

@ -619,9 +619,9 @@ int dump_counters(struct thread_data *t, struct core_data *c,
outp += sprintf(outp, "c1: %016llX\n", t->c1); outp += sprintf(outp, "c1: %016llX\n", t->c1);
if (DO_BIC(BIC_IRQ)) if (DO_BIC(BIC_IRQ))
outp += sprintf(outp, "IRQ: %08X\n", t->irq_count); outp += sprintf(outp, "IRQ: %d\n", t->irq_count);
if (DO_BIC(BIC_SMI)) if (DO_BIC(BIC_SMI))
outp += sprintf(outp, "SMI: %08X\n", t->smi_count); outp += sprintf(outp, "SMI: %d\n", t->smi_count);
for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) { for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) {
outp += sprintf(outp, "tADDED [%d] msr0x%x: %08llX\n", outp += sprintf(outp, "tADDED [%d] msr0x%x: %08llX\n",
@ -2410,8 +2410,9 @@ int snapshot_gfx_mhz(void)
*/ */
int snapshot_proc_sysfs_files(void) int snapshot_proc_sysfs_files(void)
{ {
if (snapshot_proc_interrupts()) if (DO_BIC(BIC_IRQ))
return 1; if (snapshot_proc_interrupts())
return 1;
if (DO_BIC(BIC_GFX_rc6)) if (DO_BIC(BIC_GFX_rc6))
snapshot_gfx_rc6_ms(); snapshot_gfx_rc6_ms();
@ -4391,6 +4392,7 @@ int fork_it(char **argv)
pid_t child_pid; pid_t child_pid;
int status; int status;
snapshot_proc_sysfs_files();
status = for_all_cpus(get_counters, EVEN_COUNTERS); status = for_all_cpus(get_counters, EVEN_COUNTERS);
if (status) if (status)
exit(status); exit(status);
@ -4417,6 +4419,7 @@ int fork_it(char **argv)
* n.b. fork_it() does not check for errors from for_all_cpus() * n.b. fork_it() does not check for errors from for_all_cpus()
* because re-starting is problematic when forking * because re-starting is problematic when forking
*/ */
snapshot_proc_sysfs_files();
for_all_cpus(get_counters, ODD_COUNTERS); for_all_cpus(get_counters, ODD_COUNTERS);
gettimeofday(&tv_odd, (struct timezone *)NULL); gettimeofday(&tv_odd, (struct timezone *)NULL);
timersub(&tv_odd, &tv_even, &tv_delta); timersub(&tv_odd, &tv_even, &tv_delta);
@ -4438,6 +4441,7 @@ int get_and_dump_counters(void)
{ {
int status; int status;
snapshot_proc_sysfs_files();
status = for_all_cpus(get_counters, ODD_COUNTERS); status = for_all_cpus(get_counters, ODD_COUNTERS);
if (status) if (status)
return status; return status;