summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
authorBill Hoffa <wghoffa@us.ibm.com>2016-10-19 09:10:01 -0500
committerMatthew A. Ploetz <maploetz@us.ibm.com>2016-10-19 16:11:26 -0400
commitf3d835dd8cdb5b1eab5a747a2ae90f602dff1653 (patch)
treecb213ac2b0174d0d894e59e7e72fc2d9a96a20b7 /src/usr
parent57e83ceb340b9cfb81205eef3d64f657f3636a38 (diff)
downloadtalos-hostboot-f3d835dd8cdb5b1eab5a747a2ae90f602dff1653.tar.gz
talos-hostboot-f3d835dd8cdb5b1eab5a747a2ae90f602dff1653.zip
Mask Interrupt Sources Prior to Resetting Interrupt Logic
Change-Id: If97c08fc1a5133c8b14c9262694235c2783c5bbf CQ: SW369405 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/31492 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@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: Matthew A. Ploetz <maploetz@us.ibm.com>
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/intr/intrrp.C18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/usr/intr/intrrp.C b/src/usr/intr/intrrp.C
index 1a0c86c70..b6092cde5 100644
--- a/src/usr/intr/intrrp.C
+++ b/src/usr/intr/intrrp.C
@@ -1554,6 +1554,10 @@ errlHndl_t IntrRp::checkAddress(uint64_t i_addr)
void IntrRp::shutDown(uint64_t i_status)
{
msg_t * rmsg = msg_allocate();
+ errlHndl_t l_err = NULL;
+
+ TRACFCOMP(g_trac_intr, "IntrRp::shutDown - Sending shutdown message"
+ " to registered handlers");
// Call everyone and say shutting down!
for(Registry_t::iterator r = iv_registry.begin();
@@ -1579,9 +1583,17 @@ void IntrRp::shutDown(uint64_t i_status)
msg_free(rmsg);
- //Reset PSIHB Interrupt Space
- TRACDCOMP(g_trac_intr, "Reset PSIHB Interrupt Space");
+ //Mask any future interrupts to avoid receiving anymore while in the process
+ // of resetting the rest of the Interrupt Logic
+ l_err = maskAllInterruptSources();
+ if (l_err)
+ {
+ delete l_err; //errl comp already shutdown. Log error and continue
+ TRACFCOMP(g_trac_intr, "IntrRp::shutDown() Error masking all interrupt sources.");
+ }
+ //Reset PSIHB Interrupt Space
+ TRACFCOMP(g_trac_intr, "Reset PSIHB Interrupt Space");
//First reset INTRP logic for slave procs
for(ChipList_t::iterator targ_itr = iv_chipList.begin();
@@ -1598,7 +1610,7 @@ void IntrRp::shutDown(uint64_t i_status)
//Then reset master proc INTRP logic
PSIHB_SW_INTERFACES_t * this_psihb_ptr = iv_masterHdlr->psiHbBaseAddr;
this_psihb_ptr->icr = PSI_BRIDGE_INTP_STATUS_CTL_RESET;
- TRACDCOMP(g_trac_intr, "Reset PSIHB INTR Complete");
+ TRACFCOMP(g_trac_intr, "Reset PSIHB INTR Complete");
//Reset XIVE Interrupt unit
resetIntUnit(iv_masterHdlr);
OpenPOWER on IntegriCloud