Currently only the c-state is showing the cpu topology when displaying the results. For the sake of consistency, we should also give the topology for the p-states and the wakeups array.
Before: -------------------------------------------- | Wakeup | # | Name | Count | -------------------------------------------- | cpu0 | -------------------------------------------- | ipi | --- | RESCHEDULE | 1 | | irq | 100 | ahci | 4 | -------------------------------------------- | cpu1 | -------------------------------------------- | irq | 130 | eth1-TxRx-1 | 3 | | irq | 111 | eth0-TxRx-0 | 2 | | ipi | --- | CALL_FUNCTION | 1 |
After: -------------------------------------------- | Wakeup | # | Name | Count | -------------------------------------------- | clusterA | -------------------------------------------- | cpu0 | -------------------------------------------- | ipi | --- | RESCHEDULE | 1 | | irq | 100 | ahci | 4 | -------------------------------------------- | cpu1 | -------------------------------------------- | irq | 130 | eth1-TxRx-1 | 3 | | irq | 111 | eth0-TxRx-0 | 2 | | ipi | --- | CALL_FUNCTION | 1 |
Fix this by add display_cpu_header for other cases instead of CPUs only.
Signed-off-by: Howard Chen howard.chen@linaro.org --- idlestat.c | 6 ++++++ topology.c | 3 +-- 2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/idlestat.c b/idlestat.c index da615cb..e609e86 100644 --- a/idlestat.c +++ b/idlestat.c @@ -242,6 +242,10 @@ static int display_pstates(void *arg, char *cpu) bool cpu_header = false; struct cpufreq_pstates *pstates = arg;
+ if(!strstr(cpu, "cpu")){ + display_cpu_header(cpu, 64); + return 0; + } for (i = 0; i < pstates->max; i++) {
struct cpufreq_pstate *p = &(pstates->pstate[i]); @@ -299,6 +303,8 @@ static int display_wakeup(void *arg, char *cpu) struct wakeup_info *wakeinfo = &cstates->wakeinfo; struct wakeup_irq *irqinfo = wakeinfo->irqinfo;
+ if(!strstr(cpu, "cpu")) + display_cpu_header(cpu, 44); for (i = 0; i < wakeinfo->nrdata; i++, irqinfo++) {
if (!cpu_header) { diff --git a/topology.c b/topology.c index 92521e1..47c6983 100644 --- a/topology.c +++ b/topology.c @@ -458,8 +458,7 @@ int dump_cpu_topo_info(int (*dump)(void *, char *), int cstate)
sprintf(tmp, "cluster%c", s_phy->physical_id + 'A');
- if (cstate) - dump(s_phy->cstates, tmp); + dump(s_phy->cstates, tmp);
list_for_each_entry(s_core, &s_phy->core_head, list_core) { if (s_core->is_ht && cstate) {