diff options
author | Bill Hoffa <wghoffa@us.ibm.com> | 2018-02-12 14:00:32 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-02-14 11:28:12 -0500 |
commit | d20c2cb2d2b222967f083dfd317a8c350fd30329 (patch) | |
tree | 9982bc23234ba56772fbefc7f66c8081eae861cd /src/usr/intr | |
parent | 7316af3dc8a845f64ce7607b4f5d29ed2e1af084 (diff) | |
download | talos-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.C | 14 |
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); |