diff options
author | Christian Geddes <crgeddes@us.ibm.com> | 2018-04-18 18:39:59 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-04-20 20:10:52 -0400 |
commit | 905647ecd0751de2b99279255662e904ccc4b53e (patch) | |
tree | b1113a34ddd07ba9ee0dd55a768436418aae6859 /src/usr/mbox/mailboxsp.C | |
parent | 695bed5ed487505709914e9c1cffc346f83535eb (diff) | |
download | talos-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>
Diffstat (limited to 'src/usr/mbox/mailboxsp.C')
-rw-r--r-- | src/usr/mbox/mailboxsp.C | 7 |
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(); |