summaryrefslogtreecommitdiffstats
path: root/src/usr/util
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2016-02-18 14:42:21 -0600
committerWilliam G. Hoffa <wghoffa@us.ibm.com>2016-03-21 16:28:19 -0400
commit2c4c5c4490ca71ffcc8c81047b3990b5b8a4802d (patch)
treeeddd387a63d12c3bb8e7ba4c2030a4f58d5aa328 /src/usr/util
parent9b188cdec934275ce65eab3ade91398fdec4ddb9 (diff)
downloadtalos-hostboot-2c4c5c4490ca71ffcc8c81047b3990b5b8a4802d.tar.gz
talos-hostboot-2c4c5c4490ca71ffcc8c81047b3990b5b8a4802d.zip
Release pages used by pnor vmm when lid manager is finished
Forces a release of the physical pages being used for the pnor vmm cache once we are done reading the lid out of pnor. Forwardport: yes Change-Id: I35df6f2316fa9903d8283395297201bd4c87e108 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/20733 Tested-by: Jenkins Server Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins Reviewed-by: Stephen M. Cprek <smcprek@us.ibm.com> Reviewed-by: Corey V. Swenson <cswenson@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/22304
Diffstat (limited to 'src/usr/util')
-rw-r--r--src/usr/util/utillidmgr.C34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/usr/util/utillidmgr.C b/src/usr/util/utillidmgr.C
index 037be7ec1..25253eb41 100644
--- a/src/usr/util/utillidmgr.C
+++ b/src/usr/util/utillidmgr.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2013,2015 */
+/* Contributors Listed Below - COPYRIGHT 2013,2016 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -33,6 +33,7 @@
#include "utillidmgrdefs.H"
#include "utilbase.H"
#include <initservice/initserviceif.H>
+#include <sys/mm.h>
using namespace ERRORLOG;
mutex_t UtilLidMgr::cv_mutex = MUTEX_INITIALIZER;
@@ -648,6 +649,37 @@ errlHndl_t UtilLidMgr::cleanup()
}
}
+ //force evict any pages that the PNOR RP might have
+ // laying around
+ if(iv_isLidInPnor)
+ {
+ int rc = mm_remove_pages( RELEASE,
+ reinterpret_cast<void *>(iv_lidPnorInfo.vaddr),
+ iv_lidPnorInfo.size );
+ if( rc )
+ {
+ UTIL_FT( ERR_MRK"rc=%d from mm_remove_pages(%llX,%llX)", iv_lidPnorInfo.vaddr, iv_lidPnorInfo.size );
+ /*@
+ * @errortype
+ * @moduleid Util::UTIL_LIDMGR_CLEANUP
+ * @reasoncode Util::UTIL_LIDMGR_MM_FAIL
+ * @userdata1[00:31] LID ID
+ * @userdata1[32:63] rc from mm_remove_pages
+ * @userdata2 Virtual address being removed
+ * @devdesc Error returned from mm_remove_pages
+ * when evicting lid from memory.
+ * @custdesc Firmware error during boot.
+ */
+ l_err = new ErrlEntry(ERRL_SEV_UNRECOVERABLE,
+ Util::UTIL_LIDMGR_CLEANUP,
+ Util::UTIL_LIDMGR_MM_FAIL,
+ TWO_UINT32_TO_UINT64(iv_lidId,rc),
+ iv_lidPnorInfo.vaddr,
+ true /*sw fail*/);
+ }
+ }
+
+
return l_err;
}
OpenPOWER on IntegriCloud