summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Geddes <crgeddes@us.ibm.com>2018-04-18 18:39:59 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-04-20 20:10:52 -0400
commit905647ecd0751de2b99279255662e904ccc4b53e (patch)
treeb1113a34ddd07ba9ee0dd55a768436418aae6859
parent695bed5ed487505709914e9c1cffc346f83535eb (diff)
downloadtalos-hostboot-905647ecd0751de2b99279255662e904ccc4b53e.tar.gz
talos-hostboot-905647ecd0751de2b99279255662e904ccc4b53e.zip
Drain message queue prior to setting iv_disabled in mailboxsp
Set iv_disabled after we have resumed the mbox interrupts so that the message queue can drain. If iv_disabled is true, resume() will not do anything and the mbox msg queue will not drain. This can cause us to hang in the shutdown path because we will never reach the quiesced state that we need to be in before initiating handleShutdown() Change-Id: Ibf1dc1d59a496d3b33fc9fca5080349d945c0169 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/57439 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Brian E. Bakke <bbakke@us.ibm.com> Reviewed-by: Martin Gloff <mgloff@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
-rw-r--r--src/usr/mbox/mailboxsp.C7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/usr/mbox/mailboxsp.C b/src/usr/mbox/mailboxsp.C
index 09ec697d4..c0b63c3f1 100644
--- a/src/usr/mbox/mailboxsp.C
+++ b/src/usr/mbox/mailboxsp.C
@@ -371,12 +371,17 @@ void MailboxSp::msgHandler()
msg->data[1]);
iv_shutdown_msg = msg; // Respond to this when done
- iv_disabled = true; // stop incomming new messages
if(iv_suspended == true)
{
resume();
}
+ // Set iv_disabled after we have resumed the mbox interrupts so that the
+ // message queue can drain. If iv_disabled is true, resume() will not do
+ // anything and the mbox msg queue will not drain. This can cause us to
+ // hang in the shutdown path because we will never reach the quiesced
+ // state that we need to be in before initiating handleShutdown()
+ iv_disabled = true; // stop incomming new messages
// Deal with messages never claimed by any HB component
handleUnclaimed();
OpenPOWER on IntegriCloud