From 8b0f8d125d2dec1c6acc6c10e6f02b198bbe6043 Mon Sep 17 00:00:00 2001 From: Amit Tendolkar Date: Wed, 9 Dec 2015 14:12:40 -0600 Subject: Checking in stubbed isteps and sbe msg reg updates Change-Id: I8ec464f841f7828b9aa5151a47d900b4e95bf4f8 CQ: SW330452 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/22586 Reviewed-by: Sachin Gupta Tested-by: Jenkins Server Reviewed-by: Basabjit Sengupta Reviewed-by: Martin Peschke Reviewed-by: Amit J. Tendolkar --- sbe/image/img_defs.mk | 4 ++++ sbe/sbefw/sbecmdiplcontrol.C | 23 +++++++++++++++++++++++ sbe/sbefw/sbecmdreceiver.C | 4 ++++ sbe/sbefw/sbefifo.H | 10 ++++++++++ 4 files changed, 41 insertions(+) (limited to 'sbe') diff --git a/sbe/image/img_defs.mk b/sbe/image/img_defs.mk index e9a4c87d..bf872be9 100644 --- a/sbe/image/img_defs.mk +++ b/sbe/image/img_defs.mk @@ -179,6 +179,10 @@ ifeq "$(PK_TRACE_SUPPORT)" "" PK_TRACE_SUPPORT = 1 endif +ifdef SBE_ISTEP_STUBBED +GCC-DEFS += -DSBE_ISTEP_STUBBED=1 +endif + # Generate a 16bit trace string hash prefix value based on the name of this image. This will form # the upper 16 bits of the 32 bit trace hash values. ifndef PK_TRACE_HASH_PREFIX diff --git a/sbe/sbefw/sbecmdiplcontrol.C b/sbe/sbefw/sbecmdiplcontrol.C index 542e9304..56961610 100644 --- a/sbe/sbefw/sbecmdiplcontrol.C +++ b/sbe/sbefw/sbecmdiplcontrol.C @@ -340,6 +340,10 @@ ReturnCode sbeExecuteIstep (const uint8_t i_major, const uint8_t i_minor) break; } + // bits 16-23 major istep number, 24-31 minor istep number + uint64_t l_iplState = (uint64_t)(i_major)<<40 | (uint64_t)(i_minor)<<32; + SBE_UPDATE_SBE_MSG_REG (l_iplState); + return rc; #undef SBE_FUNC } @@ -398,6 +402,7 @@ bool validateIstep (const uint8_t i_major, const uint8_t i_minor) ReturnCode istepWithProc( sbeIstepHwp_t i_hwp) { +#ifndef SBE_ISTEP_STUBBED // @TODO via RTC 142985 SBE_DEBUG("istepWithProc"); Target proc = plat_getChipTarget(); ReturnCode rc = FAPI2_RC_SUCCESS; @@ -407,6 +412,9 @@ ReturnCode istepWithProc( sbeIstepHwp_t i_hwp) } SBE_DEBUG("istepWithProc"); return rc; +#else + return FAPI2_RC_SUCCESS; +#endif } //---------------------------------------------------------------------------- @@ -414,6 +422,7 @@ ReturnCode istepWithProc( sbeIstepHwp_t i_hwp) ReturnCode istepWithEq( sbeIstepHwp_t i_hwp) { +#ifndef SBE_ISTEP_STUBBED // @TODO via RTC 142985 // TODO via RTC 135345 // Curently we are passing Hard code eq target. Finally it is // going to be a multicast target. Once multicast support is @@ -426,12 +435,16 @@ ReturnCode istepWithEq( sbeIstepHwp_t i_hwp) rc = i_hwp( eq10_target ); } return rc; +#else + return FAPI2_RC_SUCCESS; +#endif } //---------------------------------------------------------------------------- ReturnCode istepWithCore( sbeIstepHwp_t i_hwp) { +#ifndef SBE_ISTEP_STUBBED // @TODO via RTC 142985 // TODO via RTC 135345 // Curently we are passing Hard code core target. Finally it is // going to be a multicast target. Once multicast support is @@ -444,17 +457,27 @@ ReturnCode istepWithCore( sbeIstepHwp_t i_hwp) rc = i_hwp( core_target ); } return rc; +#else + return FAPI2_RC_SUCCESS; +#endif } //---------------------------------------------------------------------------- ReturnCode istepLoadBootLoader( sbeIstepHwp_t i_hwp) { +// @TODO via RTC 142985: Call instruct_start to load+start HB - BU hack +#ifdef SBE_ISTEP_STUBBED + SBE_DEBUG ("istepLoadBootLoader: istep 5.1 hack to load+start HB"); + fapi2::Target core_target((uint64_t)0); + ReturnCode rc = p9_sbe_instruct_start (core_target); +#else // TODO via RTC 135345 // Send right Ex, address and size of HB loader Target proc = plat_getChipTarget(); fapi2::Target exTgt((uint64_t)7); ReturnCode rc = p9_sbe_load_bootloader( proc, exTgt, 0, NULL ); +#endif return rc; } diff --git a/sbe/sbefw/sbecmdreceiver.C b/sbe/sbefw/sbecmdreceiver.C index e08072f4..8474d8d3 100644 --- a/sbe/sbefw/sbecmdreceiver.C +++ b/sbe/sbefw/sbecmdreceiver.C @@ -25,6 +25,10 @@ void sbeCommandReceiver_routine(void *i_pArg) #define SBE_FUNC " sbeCommandReceiver_routine " SBE_ENTER(SBE_FUNC); + // Update SBE msgg reg to indicate that control loop + // is ready now to receive data on its interfaces + SBE_UPDATE_SBE_MSG_REG(SBE_STATE_PK_READY); + do { uint32_t l_rc = SBE_SEC_OPERATION_SUCCESSFUL; diff --git a/sbe/sbefw/sbefifo.H b/sbe/sbefw/sbefifo.H index b9be8cd9..74386cb5 100644 --- a/sbe/sbefw/sbefifo.H +++ b/sbe/sbefw/sbefifo.H @@ -122,6 +122,16 @@ typedef struct uint32_t reserved; } sbeDownFifoStatusReg_t; +// @TODO via RTC 142985: move to a better file with final fix +// Do a R-M-W to retain un-related bits +/** + * @brief Update SBE Messaging Register with the SBE states + */ +const uint32_t SBE_SCOM_MESSAGE_REGISTER = 0x50009; +const uint64_t SBE_STATE_PK_READY = 0x8000000000000000ull; + +#define SBE_UPDATE_SBE_MSG_REG(value) \ + putscom_abs(SBE_SCOM_MESSAGE_REGISTER, (value)); /*****************************************************************/ /** Upstream FIFO access utilities **/ -- cgit v1.2.1