[PATCH 5/6] ppc64: print emergency stacks info with 'mach -e'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Add '-e' option to 'mach' command to list top address of all emergency
stacks of all present CPUs.

Signed-off-by: Hari Bathini <hbathini@xxxxxxxxxxxxx>
---
 help.c  | 31 +++++++++++++++++++++++++++++++
 ppc64.c | 43 ++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 73 insertions(+), 1 deletion(-)

diff --git a/help.c b/help.c
index 99214c1..7f0389c 100644
--- a/help.c
+++ b/help.c
@@ -2487,6 +2487,7 @@ char *help_mach[] = {
 "    -x  override default output format with hexadecimal format.",
 "    -d  override default output format with decimal format.",
 "    -o  Display the OPAL console log (ppc64 only).",
+"    -e  List top address of all emergency stacks of each CPU (ppc64 only).",
 "\nEXAMPLES", 
 "    %s> mach",
 "           MACHINE TYPE: i686",
@@ -2524,6 +2525,36 @@ char *help_mach[] = {
 "    [   65.219607955,5] FDT: Parsing fdt @0xff00000",
 "    [  494.026291523,7] BT: seq 0x25 netfn 0x0a cmd 0x48: Message sent to host",
 "    [  494.027636927,7] BT: seq 0x25 netfn 0x0a cmd 0x48: IPMI MSG done",
+" ",
+"  List top address of emergency stacks of each CPU:\n",
+"    %s> mach -e",
+"        EMERGENCY STACK: ",
+"                  CPU 0: c00000001eb28000",
+"                  CPU 1: c00000001eb1c000",
+"                  CPU 2: c00000001eb10000",
+"                  CPU 3: c00000001eb04000",
+"                  CPU 4: c00000001eaf8000",
+"                  CPU 5: c00000001eaec000",
+"                  CPU 6: c00000001eae0000",
+"                  CPU 7: c00000001ead4000",
+"    NMI EMERGENCY STACK: ",
+"                  CPU 0: c00000001eb24000",
+"                  CPU 1: c00000001eb18000",
+"                  CPU 2: c00000001eb0c000",
+"                  CPU 3: c00000001eb00000",
+"                  CPU 4: c00000001eaf4000",
+"                  CPU 5: c00000001eae8000",
+"                  CPU 6: c00000001eadc000",
+"                  CPU 7: c00000001ead0000",
+"     MC EMERGENCY STACK: ",
+"                  CPU 0: c00000001eb20000",
+"                  CPU 1: c00000001eb14000",
+"                  CPU 2: c00000001eb08000",
+"                  CPU 3: c00000001eafc000",
+"                  CPU 4: c00000001eaf0000",
+"                  CPU 5: c00000001eae4000",
+"                  CPU 6: c00000001ead8000",
+"                  CPU 7: c00000001eacc000",
 NULL               
 };
 
diff --git a/ppc64.c b/ppc64.c
index 333a775..c3a3d3a 100644
--- a/ppc64.c
+++ b/ppc64.c
@@ -3153,6 +3153,44 @@ opalmsg(void)
 		fprintf(fp, "\n");
 }
 
+static void ppc64_print_emergency_stack_info(void)
+{
+	struct machine_specific *ms = machdep->machspec;
+	char buf[32];
+	int i;
+
+	fprintf(fp, "    EMERGENCY STACK: ");
+	if (ms->emergency_sp) {
+		fprintf(fp, "\n");
+		for (i = 0; i < kt->cpus; i++) {
+			sprintf(buf, "CPU %d", i);
+			fprintf(fp, "%19s: %lx\n", buf, ms->emergency_sp[i]);
+		}
+	} else
+		fprintf(fp, "(unused)\n");
+
+	fprintf(fp, "NMI EMERGENCY STACK: ");
+	if (ms->nmi_emergency_sp) {
+		fprintf(fp, "\n");
+		for (i = 0; i < kt->cpus; i++) {
+			sprintf(buf, "CPU %d", i);
+			fprintf(fp, "%19s: %lx\n", buf, ms->nmi_emergency_sp[i]);
+		}
+	} else
+		fprintf(fp, "(unused)\n");
+
+	fprintf(fp, " MC EMERGENCY STACK: ");
+	if (ms->mc_emergency_sp) {
+		fprintf(fp, "\n");
+		for (i = 0; i < kt->cpus; i++) {
+			sprintf(buf, "CPU %d", i);
+			fprintf(fp, "%19s: %lx\n", buf, ms->mc_emergency_sp[i]);
+		}
+	} else
+		fprintf(fp, "(unused)\n");
+	fprintf(fp, "\n");
+}
+
 /*
  *  Machine dependent command.
  */
@@ -3161,7 +3199,7 @@ ppc64_cmd_mach(void)
 {
         int c;
 
-	while ((c = getopt(argcnt, args, "cmo")) != EOF) {
+	while ((c = getopt(argcnt, args, "cmoe")) != EOF) {
                 switch(c)
                 {
 		case 'c':
@@ -3171,6 +3209,9 @@ ppc64_cmd_mach(void)
 			break;
 		case 'o':
 			return opalmsg();
+		case 'e':
+			ppc64_print_emergency_stack_info();
+			break;
                 default:
                         argerrs++;
                         break;
-- 
2.35.3

--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://listman.redhat.com/mailman/listinfo/crash-utility
Contribution Guidelines: https://github.com/crash-utility/crash/wiki




[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux