diff options
author | Brian Bakke <bbakke@us.ibm.com> | 2018-04-11 09:34:37 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-04-17 14:15:53 -0400 |
commit | 05f5369161fd8725ca3fc090a9a10e314f4f67ac (patch) | |
tree | 5326b9b02a716de7a31bfab68d9424b9a16c7e35 /src/usr/htmgt | |
parent | 67bce7927b46080e76f048d9c305b29dcbb5cc3f (diff) | |
download | talos-hostboot-05f5369161fd8725ca3fc090a9a10e314f4f67ac.tar.gz talos-hostboot-05f5369161fd8725ca3fc090a9a10e314f4f67ac.zip |
Check for pending OCC messages on HBRT start in OpenPOWER
The OCC will set an interrupt for the Host to look for a pending
message/action. If opal-prd is not running at the time that this
interrupt happens, HTMGT will never see the message. Therefore
we need to have HTMGT explicitly check for anything pending any
time HBRT starts up.
Change-Id: Iaae075ae6828a9de5a7bd5afe55c541b0076f2d2
RTC: 187912
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/57175
Reviewed-by: Christopher J. Cain <cjcain@us.ibm.com>
Reviewed-by: Matt Derksen <mderkse1@us.ibm.com>
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: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/htmgt')
-rw-r--r-- | src/usr/htmgt/runtime/rt_occ.C | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/src/usr/htmgt/runtime/rt_occ.C b/src/usr/htmgt/runtime/rt_occ.C index a3e8a3750..7c453ffc2 100644 --- a/src/usr/htmgt/runtime/rt_occ.C +++ b/src/usr/htmgt/runtime/rt_occ.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2014,2017 */ +/* Contributors Listed Below - COPYRIGHT 2014,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -158,5 +158,37 @@ namespace HTMGT }; registerOcc g_registerOcc; -} + +//------------------------------------------------------------------------ + + void process_occ_clr_msgs( void ) + { +#ifdef CONFIG_HTMGT + // a NULL parameter will cause processOccError() to poll + // all of the OCCs (since the parm was invalid) + TARGETING::Target * l_DummyOccTarget = nullptr; + HTMGT::processOccError(l_DummyOccTarget); +#else + TMGT_ERR("Unexpected call to process_occ_clr_msgs" + " when HTMGT is not enabled"); +#endif + } + + + //------------------------------------------------------------------------ + + struct registerOccStartup + { + registerOccStartup() + { + // Register interface for Host to call + postInitCalls_t * rt_post = getPostInitCalls(); + rt_post->callClearPendingOccMsgs = &process_occ_clr_msgs; + } + + }; + + registerOccStartup g_registerOccStartup; + +} // end namespace HTMGT |