diff options
Diffstat (limited to 'src/usr')
-rw-r--r-- | src/usr/initservice/baseinitsvc/initservice.C | 28 | ||||
-rw-r--r-- | src/usr/initservice/baseinitsvc/initservice.H | 6 | ||||
-rw-r--r-- | src/usr/sbeio/sbe_fifodd.C | 3 | ||||
-rw-r--r-- | src/usr/sbeio/sbe_psudd.C | 3 |
4 files changed, 29 insertions, 11 deletions
diff --git a/src/usr/initservice/baseinitsvc/initservice.C b/src/usr/initservice/baseinitsvc/initservice.C index c3512b080..49a5dccc0 100644 --- a/src/usr/initservice/baseinitsvc/initservice.C +++ b/src/usr/initservice/baseinitsvc/initservice.C @@ -657,7 +657,8 @@ void doShutdown(uint64_t i_status, uint64_t i_payload_base, uint64_t i_payload_entry, uint64_t i_payload_data, - uint64_t i_masterHBInstance) + uint64_t i_masterHBInstance, + uint32_t i_error_info) { class ShutdownExecute { @@ -666,12 +667,14 @@ void doShutdown(uint64_t i_status, uint64_t i_payload_base, uint64_t i_payload_entry, uint64_t i_payload_data, - uint64_t i_masterHBInstance) + uint64_t i_masterHBInstance, + uint32_t i_error_info) : status(i_status), payload_base(i_payload_base), payload_entry(i_payload_entry), payload_data(i_payload_data), - masterHBInstance(i_masterHBInstance) + masterHBInstance(i_masterHBInstance), + error_info(i_error_info) { } void execute() @@ -680,7 +683,8 @@ void doShutdown(uint64_t i_status, payload_base, payload_entry, payload_data, - masterHBInstance); + masterHBInstance, + error_info); } void startThread() { @@ -693,6 +697,7 @@ void doShutdown(uint64_t i_status, uint64_t payload_entry; uint64_t payload_data; uint64_t masterHBInstance; + uint32_t error_info; static void* run(void* _self) { @@ -709,7 +714,7 @@ void doShutdown(uint64_t i_status, ShutdownExecute* s = new ShutdownExecute(i_status, i_payload_base, i_payload_entry, i_payload_data, - i_masterHBInstance); + i_masterHBInstance, i_error_info); if (i_inBackground) { @@ -744,7 +749,8 @@ void InitService::doShutdown(uint64_t i_status, uint64_t i_payload_base, uint64_t i_payload_entry, uint64_t i_payload_data, - uint64_t i_masterHBInstance) + uint64_t i_masterHBInstance, + uint32_t i_error_info) { int l_rc = 0; errlHndl_t l_err = NULL; @@ -871,9 +877,17 @@ void InitService::doShutdown(uint64_t i_status, i_payload_base, i_payload_entry, i_payload_data, - i_masterHBInstance); + i_masterHBInstance, + i_error_info); } +void doShutdownWithError ( uint64_t i_status, uint32_t i_error_info) +{ + INITSERVICE::doShutdown( i_status, + false, + 0, 0, 0, THIS_NODE_NO_PAYLOAD, + i_error_info); +} bool InitService::registerShutdownEvent(msg_q_t i_msgQ, diff --git a/src/usr/initservice/baseinitsvc/initservice.H b/src/usr/initservice/baseinitsvc/initservice.H index e4be26603..70b1f8427 100644 --- a/src/usr/initservice/baseinitsvc/initservice.H +++ b/src/usr/initservice/baseinitsvc/initservice.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2011,2015 */ +/* Contributors Listed Below - COPYRIGHT 2011,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -227,6 +227,7 @@ public: * @param[in] i_masterHBInstance - master hostboot instance number (node) * Needed when starting payload on a * multi-node system. + * @param[in] i_error_info - Additional error data to be included in TI data * * @return Nothing * @note This calls registered services to notify them of shutdown and it @@ -236,7 +237,8 @@ public: uint64_t i_payload_base = 0, uint64_t i_payload_entry = 0, uint64_t i_payload_data = 0, - uint64_t i_masterHBInstance = 0xffffffffffffffffull); + uint64_t i_masterHBInstance = 0xffffffffffffffffull, + uint32_t i_error_info = 0); protected: diff --git a/src/usr/sbeio/sbe_fifodd.C b/src/usr/sbeio/sbe_fifodd.C index 722457653..32f2326b8 100644 --- a/src/usr/sbeio/sbe_fifodd.C +++ b/src/usr/sbeio/sbe_fifodd.C @@ -149,7 +149,8 @@ errlHndl_t SbeFifo::performFifoChipOp(TARGETING::Target * i_target, SBEIO_HWSV_COLLECT_SBE_RC, orig_plid, TWO_UINT32_TO_UINT64(orig_rc,orig_mod)); - INITSERVICE::doShutdown( SBEIO_HWSV_COLLECT_SBE_RC ); + INITSERVICE::doShutdownWithError( SBEIO_HWSV_COLLECT_SBE_RC, + TARGETING::get_huid(i_target) ); } SBE_TRACD(EXIT_MRK "performFifoChipOp"); diff --git a/src/usr/sbeio/sbe_psudd.C b/src/usr/sbeio/sbe_psudd.C index 16695cc0a..90534deed 100644 --- a/src/usr/sbeio/sbe_psudd.C +++ b/src/usr/sbeio/sbe_psudd.C @@ -195,7 +195,8 @@ errlHndl_t SbePsu::performPsuChipOp(TARGETING::Target * i_target, MAGIC_INST_GET_SBE_TRACES( i_target->getAttr<TARGETING::ATTR_POSITION>(), SBEIO_HWSV_COLLECT_SBE_RC); - INITSERVICE::doShutdown( SBEIO_HWSV_COLLECT_SBE_RC ); + INITSERVICE::doShutdownWithError( SBEIO_HWSV_COLLECT_SBE_RC, + TARGETING::get_huid(i_target) ); } SBE_TRACD(EXIT_MRK "performPsuChipOp"); |