summaryrefslogtreecommitdiffstats
path: root/src/usr/intr
diff options
context:
space:
mode:
authorBill Hoffa <wghoffa@us.ibm.com>2018-02-12 14:00:32 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-02-14 11:28:12 -0500
commitd20c2cb2d2b222967f083dfd317a8c350fd30329 (patch)
tree9982bc23234ba56772fbefc7f66c8081eae861cd /src/usr/intr
parent7316af3dc8a845f64ce7607b4f5d29ed2e1af084 (diff)
downloadtalos-hostboot-d20c2cb2d2b222967f083dfd317a8c350fd30329.tar.gz
talos-hostboot-d20c2cb2d2b222967f083dfd317a8c350fd30329.zip
Properly handle INTRP unmask error handling
Change-Id: Ic81b3b2bb73e714b0609fa14b5b308db399b88b6 CQ: SW416916 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/53945 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: Elizabeth K. Liner <eliner@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/intr')
-rw-r--r--src/usr/intr/intrrp.C14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/usr/intr/intrrp.C b/src/usr/intr/intrrp.C
index 81c4ebd93..d2d49b9ff 100644
--- a/src/usr/intr/intrrp.C
+++ b/src/usr/intr/intrrp.C
@@ -1061,6 +1061,7 @@ void IntrRp::msgHandler()
"IntrRp::msgHandler MSG_INTR_REGISTER_MSGQ "
"error unmasking interrupt type: %lx",
l_intr_type);
+ errlCommit(err, INTR_COMP_ID);
break;
}
}
@@ -1645,7 +1646,7 @@ errlHndl_t IntrRp::unmaskInterruptSource(uint8_t l_intr_source,
l_unmaskRead = *l_psiHbEsbptr;
- if (l_unmaskRead != ESB_STATE_RESET)
+ if (l_unmaskRead == ESB_STATE_OFF)
{
TRACFCOMP(g_trac_intr, "Error unmasking interrupt source: %x."
" ESB state is: %lx.",
@@ -1805,6 +1806,7 @@ void IntrRp::completeInterruptProcessing(uint64_t& i_intSource, PIR_t& i_pir)
{
intr_hdlr_t* l_proc = NULL;
+ errlHndl_t l_err = NULL;
//Find target handle for Proc to remove pending interrupt for
for (ChipList_t::iterator targ_itr = iv_chipList.begin();
@@ -1873,7 +1875,15 @@ void IntrRp::completeInterruptProcessing(uint64_t& i_intSource, PIR_t& i_pir)
}
//Enable this interrupt source again
- unmaskInterruptSource(i_intSource, l_proc, true);
+ l_err = unmaskInterruptSource(i_intSource, l_proc, true);
+
+ if (l_err)
+ {
+ TRACFCOMP(g_trac_intr,
+ "IntrRp::completeInterruptProcessing "
+ "error unmasking interrupt type: %lx", i_intSource);
+ errlCommit(l_err, INTR_COMP_ID);
+ }
//Send final EOI to enable interrupts for this source again
sendEOI(i_intSource, i_pir);
OpenPOWER on IntegriCloud