diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2013-11-14 14:52:44 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-11-14 15:33:45 -0600 |
commit | 7c353ef9c158531352888b47264ace19675b95f8 (patch) | |
tree | 1e07f07f11b0368f0dd896d566b6c648ae4ac2d4 /src/kernel | |
parent | 33ee54a0935377444df64cc15402948f5b1029a7 (diff) | |
download | talos-hostboot-7c353ef9c158531352888b47264ace19675b95f8.tar.gz talos-hostboot-7c353ef9c158531352888b47264ace19675b95f8.zip |
Fix deadlock in vmm write operations.
If multiple tasks issued write operations to the same memory space
at the same time it resulted in a deadlock. I see no reason for
the extra parts of this if-condition so I'm removing them.
Change-Id: I694757d7cc4d541f030d7c375640e8631e77e65a
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/7254
Reviewed-by: Brian H. Horton <brianh@linux.ibm.com>
Reviewed-by: ADAM R. MUHLE <armuhle@us.ibm.com>
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/kernel')
-rw-r--r-- | src/kernel/blockmsghdlr.C | 49 |
1 files changed, 24 insertions, 25 deletions
diff --git a/src/kernel/blockmsghdlr.C b/src/kernel/blockmsghdlr.C index e52c21361..d86ed8276 100644 --- a/src/kernel/blockmsghdlr.C +++ b/src/kernel/blockmsghdlr.C @@ -1,25 +1,25 @@ -// IBM_PROLOG_BEGIN_TAG -// This is an automatically generated prolog. -// -// $Source: src/kernel/blockmsghdlr.C $ -// -// IBM CONFIDENTIAL -// -// COPYRIGHT International Business Machines Corp. 2011 -// -// p1 -// -// Object Code Only (OCO) source materials -// Licensed Internal Code Source Materials -// IBM HostBoot Licensed Internal Code -// -// The source code for this program is not published or other- -// wise divested of its trade secrets, irrespective of what has -// been deposited with the U.S. Copyright Office. -// -// Origin: 30 -// -// IBM_PROLOG_END +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/kernel/blockmsghdlr.C $ */ +/* */ +/* IBM CONFIDENTIAL */ +/* */ +/* COPYRIGHT International Business Machines Corp. 2011,2013 */ +/* */ +/* p1 */ +/* */ +/* Object Code Only (OCO) source materials */ +/* Licensed Internal Code Source Materials */ +/* IBM HostBoot Licensed Internal Code */ +/* */ +/* The source code for this program is not published or otherwise */ +/* divested of its trade secrets, irrespective of what has been */ +/* deposited with the U.S. Copyright Office. */ +/* */ +/* Origin: 30 */ +/* */ +/* IBM_PROLOG_END_TAG */ #include <kernel/blockmsghdlr.H> #include <kernel/block.H> #include <kernel/pagemgr.H> @@ -38,7 +38,7 @@ MessageHandler::HandleResult BlockReadMsgHdlr::handleResponse( // Call the function that attaches PTE and sets the // sPTE entry to present while updating permissions // on the sPTE entry of the physical addr. - iv_block->attachSPTE(i_key); + iv_block->attachSPTE(i_key); return SUCCESS; } @@ -74,8 +74,7 @@ MessageHandler::HandleResult BlockWriteMsgHdlr::handleResponse( if (l_tmNode) { //Last message for the given task - if (l_tmNode->msgCount == 1 && - (l_tmNode->next == NULL && l_tmNode->prev == NULL)) + if (l_tmNode->msgCount == 1) { l_result = SUCCESS; iv_msgGrpList.erase(l_tmNode); |