summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDoug Gilbert <dgilbert@us.ibm.com>2011-12-13 14:22:53 -0600
committerDouglas R. Gilbert <dgilbert@us.ibm.com>2011-12-16 14:28:34 -0600
commitae7ae33719580137181c8072e02bca257dcbd744 (patch)
treea588572faaacd7d322b45ae6107a995c11462bac
parenta5e1a461f37258b4b4ce284041200647e12cda80 (diff)
downloadtalos-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.C20
-rw-r--r--src/usr/fsi/fsidd.C4
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 );
OpenPOWER on IntegriCloud