[Skiboot] [PATCH v9 16/25] MPIPL: Save crashing PIR
Vasant Hegde
hegdevasant at linux.vnet.ibm.com
Fri Jul 12 21:17:53 AEST 2019
Crashing CPU PIR is required to get proper backtrace from core file.
Save crashing CPU PIR before triggering MPIPL. Post MPIPL OPAL will
pass saved PIR to kernel and kernel will use that to create OPAL dump.
Signed-off-by: Vasant Hegde <hegdevasant at linux.vnet.ibm.com>
---
core/opal-dump.c | 7 +++++++
hw/sbe-p9.c | 4 ++++
include/opal-dump.h | 3 +++
3 files changed, 14 insertions(+)
diff --git a/core/opal-dump.c b/core/opal-dump.c
index 9ca01e5e2..bb90c45d0 100644
--- a/core/opal-dump.c
+++ b/core/opal-dump.c
@@ -16,6 +16,7 @@
#define pr_fmt(fmt) "DUMP: " fmt
+#include <cpu.h>
#include <device.h>
#include <mem-map.h>
#include <mem_region.h>
@@ -328,6 +329,12 @@ static int64_t opal_mpipl_register_tag(enum opal_mpipl_tags tag,
return rc;
}
+void opal_mpipl_save_crashing_pir(void)
+{
+ mpipl_metadata->crashing_pir = this_cpu()->pir;
+ prlog(PR_NOTICE, "Crashing PIR = 0x%x\n", this_cpu()->pir);
+}
+
void opal_mpipl_init(void)
{
void *mdst_base = (void *)MDST_TABLE_BASE;
diff --git a/hw/sbe-p9.c b/hw/sbe-p9.c
index 58a296c00..01f41e8cb 100644
--- a/hw/sbe-p9.c
+++ b/hw/sbe-p9.c
@@ -50,6 +50,7 @@
#include <errorlog.h>
#include <lock.h>
#include <opal.h>
+#include <opal-dump.h>
#include <sbe-p9.h>
#include <skiboot.h>
#include <timebase.h>
@@ -961,6 +962,9 @@ void p9_sbe_terminate(void)
if (!dt_find_by_path(opal_node, "dump"))
return;
+ /* Save crashing CPU details */
+ opal_mpipl_save_crashing_pir();
+
/*
* Send S0 interrupt to all SBE. Sequence:
* - S0 interrupt on secondary chip SBE
diff --git a/include/opal-dump.h b/include/opal-dump.h
index 3699ddc32..813fbd761 100644
--- a/include/opal-dump.h
+++ b/include/opal-dump.h
@@ -135,4 +135,7 @@ struct mpipl_metadata {
/* init opal dump */
extern void opal_mpipl_init(void);
+/* Save metadata before triggering MPIPL */
+void opal_mpipl_save_crashing_pir(void);
+
#endif /* __OPAL_DUMP_H */
--
2.14.3
More information about the Skiboot
mailing list