summaryrefslogtreecommitdiffstats
path: root/src/usr/intr/intrrp.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/intr/intrrp.C')
-rw-r--r--src/usr/intr/intrrp.C38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/usr/intr/intrrp.C b/src/usr/intr/intrrp.C
index 4db6786f3..ec9d7396f 100644
--- a/src/usr/intr/intrrp.C
+++ b/src/usr/intr/intrrp.C
@@ -1335,6 +1335,7 @@ void IntrRp::msgHandler()
{
// Run the functions that dump out
// interrupt info to slow buffer
+ printTimaInfo();
printEsbStates();
printLSIInfo();
printPSIHBInfo();
@@ -3497,6 +3498,35 @@ void INTR::IntrRp::printLSIInfo() const
}
}
+void INTR::IntrRp::printTimaInfo() const
+{
+ TRACFCOMP(g_trac_intr, "---Thread Interrupt Management Area Info---");
+
+ volatile XIVE_IVPE_THREAD_CONTEXT_t * this_ivpe_ptr =
+ reinterpret_cast<XIVE_IVPE_THREAD_CONTEXT_t *> (iv_xiveTmBar1Address);
+
+ TRACFCOMP(g_trac_intr, "iv_xiveTmBar1Address: 0x%lx", iv_xiveTmBar1Address);
+ TRACFCOMP(g_trac_intr, " qw0_0 = 0x%lx", this_ivpe_ptr->qw0_0);
+ TRACFCOMP(g_trac_intr, " qw0_1 = 0x%lx", this_ivpe_ptr->qw0_1);
+ TRACFCOMP(g_trac_intr, " qw1_0 = 0x%lx", this_ivpe_ptr->qw1_0);
+ TRACFCOMP(g_trac_intr, " qw0_1 = 0x%lx", this_ivpe_ptr->qw1_1);
+ TRACFCOMP(g_trac_intr, " qw2_0 = 0x%lx", this_ivpe_ptr->qw2_0);
+ TRACFCOMP(g_trac_intr, " qw0_1 = 0x%lx", this_ivpe_ptr->qw2_1);
+
+ TRACFCOMP(g_trac_intr, " nsr = 0x%lx", this_ivpe_ptr->nsr);
+ TRACFCOMP(g_trac_intr, " cppr = 0x%lx", this_ivpe_ptr->cppr);
+ TRACFCOMP(g_trac_intr, " ipb = 0x%lx", this_ivpe_ptr->ipb);
+ TRACFCOMP(g_trac_intr, " lsmfb = 0x%lx", this_ivpe_ptr->lsmfb);
+ TRACFCOMP(g_trac_intr, " ack = 0x%lx", this_ivpe_ptr->ack);
+ TRACFCOMP(g_trac_intr, " inc = 0x%lx", this_ivpe_ptr->inc);
+ TRACFCOMP(g_trac_intr, " age = 0x%lx", this_ivpe_ptr->age);
+ TRACFCOMP(g_trac_intr, " pipr = 0x%lx", this_ivpe_ptr->pipr);
+ TRACFCOMP(g_trac_intr, " cams_vt = 0x%lx", this_ivpe_ptr->cams_vt);
+ TRACFCOMP(g_trac_intr, " cams_rsv = 0x%lx", this_ivpe_ptr->cams_rsv);
+ TRACFCOMP(g_trac_intr, " cams_rsv1 = 0x%lx", this_ivpe_ptr->cams_rsv1);
+ TRACFCOMP(g_trac_intr, " cams_prio = 0x%lx", this_ivpe_ptr->cams_prio);
+}
+
void INTR::IntrRp::printPSIHBInfo() const
{
TRACFCOMP(g_trac_intr, "---PSIHB Info---");
@@ -3530,6 +3560,14 @@ void INTR::IntrRp::printPSIHBInfo() const
void INTR::IntrRp::printEsbStates() const
{
TRACFCOMP(g_trac_intr, "---ESB States---");
+
+ //LSI ESB Internal to the IVPE of the Master Proc
+ volatile uint64_t * l_lsiEsbQuery = iv_masterHdlr->xiveIcBarAddr;
+ l_lsiEsbQuery += XIVE_IC_LSI_EOI_OFFSET;
+ l_lsiEsbQuery += (ESB_QUERY_OFFSET / sizeof(uint64_t));
+ uint64_t l_intPending = *l_lsiEsbQuery;
+ TRACFCOMP(g_trac_intr, "IC LSI ESB = 0x%016lx", l_intPending);
+
for(auto targ_itr = iv_chipList.begin();
targ_itr != iv_chipList.end(); ++targ_itr)
{
OpenPOWER on IntegriCloud