diff options
author | Doug Gilbert <dgilbert@us.ibm.com> | 2011-12-13 14:22:53 -0600 |
---|---|---|
committer | Douglas R. Gilbert <dgilbert@us.ibm.com> | 2011-12-16 14:28:34 -0600 |
commit | ae7ae33719580137181c8072e02bca257dcbd744 (patch) | |
tree | a588572faaacd7d322b45ae6107a995c11462bac | |
parent | a5e1a461f37258b4b4ce284041200647e12cda80 (diff) | |
download | talos-hostboot-ae7ae33719580137181c8072e02bca257dcbd744.tar.gz talos-hostboot-ae7ae33719580137181c8072e02bca257dcbd744.zip |
Fix order of shadow page status and release of memory page
Change-Id: Id9371157bd51a7c646fd9b7440d09532e68c0577
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/579
Tested-by: Jenkins Server
Reviewed-by: MATTHEW S. BARTH <msbarth@us.ibm.com>
Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com>
-rw-r--r-- | src/kernel/block.C | 20 | ||||
-rw-r--r-- | src/usr/fsi/fsidd.C | 4 |
2 files changed, 8 insertions, 16 deletions
diff --git a/src/kernel/block.C b/src/kernel/block.C index ce0ec5a65..474f67c53 100644 --- a/src/kernel/block.C +++ b/src/kernel/block.C @@ -255,23 +255,15 @@ void Block::releaseAllPages() page += PAGESIZE) { ShadowPTE* pte = getPTE(page); - if (pte->isPresent() && (0 != pte->getPageAddr())) + if (pte->isPresent()) { - - // set the permission of the physical address pte entry back to writable now that - // the associated VA Spte has been released. - if (BaseSegment::mmSetPermission(reinterpret_cast<void*>(pte->getPageAddr()), - 0, WRITABLE)) + uint64_t addr = pte->getPageAddr(); + if (0 != addr) { - printkd("Got an error trying to set permissions in release all pages\n"); + releaseSPTE(pte); + PageManager::freePage(reinterpret_cast<void*>(addr)); } - - - PageManager::freePage(reinterpret_cast<void*>(pte->getPageAddr())); - - pte->setPresent(false); - pte->setPageAddr(NULL); - } + } } } diff --git a/src/usr/fsi/fsidd.C b/src/usr/fsi/fsidd.C index bfe87315b..f2938d518 100644 --- a/src/usr/fsi/fsidd.C +++ b/src/usr/fsi/fsidd.C @@ -826,7 +826,7 @@ errlHndl_t FsiDD::write(const FsiAddrInfo_t& i_addrInfo, mutex_unlock(l_mutex); } - TRACDCOMP(g_trac_fsi, "< FsiDD::write() ", i_address); + //TRACDCOMP(g_trac_fsi, "< FsiDD::write() ", i_address); //TODO BUG! return l_err; } @@ -1177,7 +1177,7 @@ errlHndl_t FsiDD::initPort(FsiChipInfo_t i_fsiInfo, if( !isSlavePresent(i_fsiInfo.master,i_fsiInfo.type,i_fsiInfo.port) ) { TRACDCOMP( g_trac_fsi, "FsiDD::initPort> Slave %.8X is not present", i_fsiInfo.linkid.id ); - TRACDCOMP( g_trac_fsi, " : sensebits=%.2X, portbit=%.2X", iv_slaves[getSlaveEnableIndex(i_fsiInfo.master,i_fsiInfo.type)], portbit ); + //TRACDCOMP( g_trac_fsi, " : sensebits=%.2X, portbit=%.2X", iv_slaves[getSlaveEnableIndex(i_fsiInfo.master,i_fsiInfo.type)], portbit ); TODO BUG!! break; } TRACFCOMP( g_trac_fsi, "FsiDD::initPort> Slave %.8X is present", i_fsiInfo.linkid.id ); |