[Crash-utility] [PATCH v2 05/25] x86_64: modify mach to hide offline cpus' data

Qiao Nuohan qiaonuohan at cn.fujitsu.com
Mon Sep 29 02:09:03 UTC 2014


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 at 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




More information about the Crash-utility mailing list