mach will display number of cpus and cpus' irq stacks and exception
stacks. This patch can hide offline cpus.
The original output is like below:
<cut>
crash> mach
MACHINE TYPE: x86_64
MEMORY SIZE: 1 GB
CPUS: 4
...
IRQ STACKS:
CPU 0: ffff88003fc00000
CPU 1: ffff88003fc80000
CPU 2: ffff88003fd00000
CPU 3: ffff88003fd80000
STACKFAULT STACK SIZE: 4096
STACKFAULT STACKS:
CPU 0: ffff88003fc04000
CPU 1: ffff88003fc84000
CPU 2: ffff88003fd04000
CPU 3: ffff88003fd84000
..
<cut>
With data of offline cpu hiden, the output is like below:
<cut>
crash> mach
MACHINE TYPE: x86_64
MEMORY SIZE: 1 GB
CPUS: 3
...
IRQ STACKS:
CPU 0: ffff88003fc00000
CPU 1: ffff88003fc80000
CPU 2: <OFFLINE>
CPU 3: ffff88003fd80000
STACKFAULT STACK SIZE: 4096
STACKFAULT STACKS:
CPU 0: ffff88003fc04000
CPU 1: ffff88003fc84000
CPU 2: <OFFLINE>
CPU 3: ffff88003fd84000
...
<cut>
Signed-off-by: Qiao Nuohan <qiaonuohan(a)cn.fujitsu.com>
---
x86_64.c | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/x86_64.c b/x86_64.c
index 19f2d48..69d7ea8 100755
--- a/x86_64.c
+++ b/x86_64.c
@@ -5070,7 +5070,7 @@ x86_64_display_machine_stats(void)
fprintf(fp, " MACHINE TYPE: %s\n", uts->machine);
fprintf(fp, " MEMORY SIZE: %s\n", get_memory_size(buf));
- fprintf(fp, " CPUS: %d\n", kt->cpus);
+ fprintf(fp, " CPUS: %d\n", get_cpus_to_display());
if (!STREQ(kt->hypervisor, "(undetermined)") &&
!STREQ(kt->hypervisor, "bare hardware"))
fprintf(fp, " HYPERVISOR: %s\n", kt->hypervisor);
@@ -5094,8 +5094,12 @@ x86_64_display_machine_stats(void)
fprintf(fp, " IRQ STACKS:\n");
for (c = 0; c < kt->cpus; c++) {
sprintf(buf, "CPU %d", c);
- fprintf(fp, "%22s: %016lx\n",
- buf, machdep->machspec->stkinfo.ibase[c]);
+
+ if (hide_offline_cpu(c))
+ fprintf(fp, "%22s: <OFFLINE>\n", buf);
+ else
+ fprintf(fp, "%22s: %016lx\n",
+ buf, machdep->machspec->stkinfo.ibase[c]);
}
for (i = 0; i < MAX_EXCEPTION_STACKS; i++) {
@@ -5110,8 +5114,12 @@ x86_64_display_machine_stats(void)
if (machdep->machspec->stkinfo.ebase[c][i] == 0)
break;
sprintf(buf, "CPU %d", c);
- fprintf(fp, "%22s: %016lx\n",
- buf, machdep->machspec->stkinfo.ebase[c][i]);
+
+ if (hide_offline_cpu(c))
+ fprintf(fp, "%22s: <OFFLINE>\n", buf);
+ else
+ fprintf(fp, "%22s: %016lx\n",
+ buf, machdep->machspec->stkinfo.ebase[c][i]);
}
}
}
--
1.8.5.3