diff options
author | Marty Gloff <mgloff@us.ibm.com> | 2017-10-10 14:33:50 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-10-19 22:22:27 -0400 |
commit | b950ea3af7bc174d5ff5b1c9617cb2c8be742d17 (patch) | |
tree | d0e168502c4397ef53007c7b13331729661f9a9c /src | |
parent | 01de34913eb48a7ccc06eddfe3ac68a5be9c0dd1 (diff) | |
download | talos-hostboot-b950ea3af7bc174d5ff5b1c9617cb2c8be742d17.tar.gz talos-hostboot-b950ea3af7bc174d5ff5b1c9617cb2c8be742d17.zip |
Concurrent code update of HBRT - Runtime Interface
Create the runtime interface for PHYP to call.
Change-Id: I1ec7ca2df4491b5a6fa83e12261679165d177a27
RTC: 180906
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/48209
Reviewed-by: Christian R. Geddes <crgeddes@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: Corey V. Swenson <cswenson@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/include/runtime/interface.h | 20 | ||||
-rw-r--r-- | src/usr/targeting/runtime/rt_targeting.C | 25 |
2 files changed, 40 insertions, 5 deletions
diff --git a/src/include/runtime/interface.h b/src/include/runtime/interface.h index e436cc699..7258826ca 100644 --- a/src/include/runtime/interface.h +++ b/src/include/runtime/interface.h @@ -37,7 +37,7 @@ */ /** Current interface version. - * 0x9001: 9=P9, 002=Version 2 + * 0x9002: 9=P9, 002=Version 2 */ #define HOSTBOOT_RUNTIME_INTERFACE_VERSION 0x9002 @@ -866,10 +866,22 @@ typedef struct runtimeInterfaces void (*firmware_notify)( uint64_t len, void *data ); + /** + * @brief Prepare for HBRT concurrent code update + * + * @details This call allows the Host to inform HBRT that a concurrent + * code update has been initiated. HBRT then prepares updated targeting + * data for use by the updated HBRT code. + * + * @return 0 on success else return code + * @platform FSP + */ + int (*prepare_hbrt_update)( void ); + // Reserve some space for future growth. - // do NOT ever change this number, even if you add functions. + // Currently are decrementing this number as we add functions. // - // The value of 32 was somewhat arbitrarily chosen. + // The initial value of 32 was somewhat arbitrarily chosen. // // If either side modifies the interface.h file we're suppose to be able to // tolerate the other side not supporting the function yet. The function @@ -883,7 +895,7 @@ typedef struct runtimeInterfaces // allocated with sufficient space and populated with NULL function // pointers. 32 is big enough that we should not likely add that many // functions from either direction in between any two levels of support. - void (*reserved[22])(void); + void (*reserved[21])(void); } runtimeInterfaces_t; diff --git a/src/usr/targeting/runtime/rt_targeting.C b/src/usr/targeting/runtime/rt_targeting.C index 372d2baf4..96a024ffe 100644 --- a/src/usr/targeting/runtime/rt_targeting.C +++ b/src/usr/targeting/runtime/rt_targeting.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2014,2016 */ +/* Contributors Listed Below - COPYRIGHT 2014,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -37,6 +37,7 @@ #include <arch/pirformat.H> #include <runtime/customize_attrs_for_payload.H> #include <runtime/rt_targeting.H> +#include <runtime/interface.h> #include <map> #include <util/memoize.H> @@ -171,4 +172,26 @@ errlHndl_t getHbTarget( return Util::Memoize::memoize(_getHbTarget,i_rtTargetId,o_target); } +int hbrt_update_prep(void) +{ + int rc = 0; + + return rc; +} + + //------------------------------------------------------------------------ + + struct registerRtTarg + { + registerRtTarg() + { +/* Do not register interface until HB is ready for Host to call it + @TODO RTC: 181285 to enable the interface + runtimeInterfaces_t * rt_intf = getRuntimeInterfaces(); + rt_intf->prepare_hbrt_update = &hbrt_update_prep; */ + } + }; + + registerRtTarg g_registerRtTarg; + }; // End namespace RT_TARG |