Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Change-Id: I10b1fc4898b6a72331b27aedb8f80544e8a8c4fb RTC: 145749 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52757 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52998 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>
- Loading branch information
Showing
13 changed files
with
379 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,153 @@ | ||
/* IBM_PROLOG_BEGIN_TAG */ | ||
/* This is an automatically generated prolog. */ | ||
/* */ | ||
/* $Source: src/usr/diag/prdf/plat/p9/prdfP9PmRecovery.C $ */ | ||
/* */ | ||
/* OpenPOWER HostBoot Project */ | ||
/* */ | ||
/* Contributors Listed Below - COPYRIGHT 2018 */ | ||
/* [+] International Business Machines Corp. */ | ||
/* */ | ||
/* */ | ||
/* Licensed under the Apache License, Version 2.0 (the "License"); */ | ||
/* you may not use this file except in compliance with the License. */ | ||
/* You may obtain a copy of the License at */ | ||
/* */ | ||
/* http://www.apache.org/licenses/LICENSE-2.0 */ | ||
/* */ | ||
/* Unless required by applicable law or agreed to in writing, software */ | ||
/* distributed under the License is distributed on an "AS IS" BASIS, */ | ||
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ | ||
/* implied. See the License for the specific language governing */ | ||
/* permissions and limitations under the License. */ | ||
/* */ | ||
/* IBM_PROLOG_END_TAG */ | ||
|
||
#include <iipServiceDataCollector.h> | ||
#include <prdfExtensibleChip.H> | ||
#include <prdfP9PmRecovery.H> | ||
#include <prdfErrlUtil.H> | ||
|
||
#include <hwas/common/hwas.H> | ||
#include <hwas/common/deconfigGard.H> | ||
|
||
|
||
using namespace TARGETING; | ||
|
||
namespace PRDF | ||
{ | ||
|
||
using namespace PlatServices; | ||
|
||
int32_t pmRecovery( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & io_sc ) | ||
{ | ||
#define PRDF_FUNC "[pmRecovery] " | ||
int32_t o_rc = SUCCESS; | ||
TargetHandle_t target = i_chip->getTrgt(); | ||
|
||
// p9_pm_callout HWP parameters | ||
RasAction ra = PROC_CHIP_CALLOUT; | ||
uint32_t deadCores = 0; | ||
std::vector < StopErrLogSectn > ffdcList; | ||
|
||
do { | ||
|
||
o_rc = pmCallout( target, ra, deadCores, ffdcList ); | ||
|
||
if (o_rc != SUCCESS) | ||
{ | ||
PRDF_ERR(PRDF_FUNC "pmCallout failed huid %x", getHuid(target)); | ||
io_sc.service_data->SetCallout(LEVEL2_SUPPORT, MRU_HIGH); | ||
io_sc.service_data->SetCallout(target); | ||
break; | ||
} | ||
|
||
PRDF_TRAC(PRDF_FUNC "lost cores vector %x", deadCores); | ||
|
||
// Get the Global Errorlog PLID and EID | ||
errlHndl_t globalErrl = | ||
ServiceGeneratorClass::ThisServiceGenerator().getErrl(); | ||
uint32_t eid = globalErrl->eid(); | ||
uint32_t plid = globalErrl->plid(); | ||
|
||
// Runtime deconfig lost cores | ||
for ( uint32_t pos = 0; pos < MAX_EC_PER_PROC; ++pos ) | ||
{ | ||
if ( deadCores & (0x80000000 >> pos) ) | ||
{ | ||
// Get the core | ||
TargetHandle_t coreTgt = getConnectedChild( target, TYPE_CORE, pos); | ||
if (coreTgt == nullptr) | ||
{ | ||
PRDF_ERR(PRDF_FUNC "Failed to get child core for huid %x " | ||
"core pos %d", getHuid(target), pos); | ||
continue; | ||
} | ||
|
||
// Call Deconfig | ||
errlHndl_t errl = nullptr; | ||
errl = HWAS::theDeconfigGard().deconfigureTarget( *coreTgt, eid, | ||
NULL, HWAS::DeconfigGard::FULLY_AT_RUNTIME ); | ||
|
||
if (errl) | ||
{ | ||
PRDF_ERR( PRDF_FUNC "Deconfig failed on core %x", | ||
getHuid(coreTgt)); | ||
PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT ); | ||
} | ||
} | ||
} | ||
|
||
// Make callout indicated by p9_pm_callout | ||
switch (ra) { | ||
case PROC_CHIP_CALLOUT: | ||
PRDF_TRAC(PRDF_FUNC "HUID 0x%08x PROC_CHIP_CALLOUT", | ||
getHuid(target)); | ||
io_sc.service_data->SetCallout(target); | ||
break; | ||
default: | ||
PRDF_TRAC(PRDF_FUNC "HUID 0x%08x Unexpected callout enum", | ||
getHuid(target)); | ||
io_sc.service_data->SetCallout(LEVEL2_SUPPORT, MRU_HIGH); | ||
io_sc.service_data->SetCallout(target); | ||
break; | ||
} | ||
|
||
// Create errorlog to contain HWP FFDC | ||
/*@ | ||
* @errortype | ||
* @reasoncode PRDF_EXTRA_FFDC | ||
* @severity ERRL_SEV_INFORMATIONAL | ||
* @moduleid PRDF_PM_RECOVERY_FFDC | ||
* @userdata1 Proc HUID | ||
* @userdata2 deadCores bit vector | ||
* @devdesc An errorlog containing extra FFDC collected by the HWP | ||
*/ | ||
errlHndl_t ffdcErrl = new ERRORLOG::ErrlEntry( | ||
ERRORLOG::ERRL_SEV_INFORMATIONAL, | ||
PRDF_PM_RECOVERY_FFDC, | ||
PRDF_EXTRA_FFDC, | ||
getHuid(target), | ||
deadCores ); | ||
|
||
// Add FFDC sections | ||
for ( auto & ffdcSctn : ffdcList ) | ||
{ | ||
ffdcErrl->addFFDC(PRDF_COMP_ID, ffdcSctn.iv_pBufPtr, | ||
ffdcSctn.iv_bufSize, 0, 0); | ||
} | ||
|
||
// Commit | ||
ffdcErrl->plid(plid); | ||
ERRORLOG::errlCommit(ffdcErrl, PRDF_COMP_ID); | ||
|
||
} while (0); | ||
|
||
return o_rc; | ||
|
||
#undef PRDF_FUNC | ||
} | ||
|
||
|
||
} // end namespace PRDF | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
/* IBM_PROLOG_BEGIN_TAG */ | ||
/* This is an automatically generated prolog. */ | ||
/* */ | ||
/* $Source: src/usr/diag/prdf/plat/p9/prdfP9PmRecovery.H $ */ | ||
/* */ | ||
/* OpenPOWER HostBoot Project */ | ||
/* */ | ||
/* Contributors Listed Below - COPYRIGHT 2018 */ | ||
/* [+] International Business Machines Corp. */ | ||
/* */ | ||
/* */ | ||
/* Licensed under the Apache License, Version 2.0 (the "License"); */ | ||
/* you may not use this file except in compliance with the License. */ | ||
/* You may obtain a copy of the License at */ | ||
/* */ | ||
/* http://www.apache.org/licenses/LICENSE-2.0 */ | ||
/* */ | ||
/* Unless required by applicable law or agreed to in writing, software */ | ||
/* distributed under the License is distributed on an "AS IS" BASIS, */ | ||
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ | ||
/* implied. See the License for the specific language governing */ | ||
/* permissions and limitations under the License. */ | ||
/* */ | ||
/* IBM_PROLOG_END_TAG */ | ||
/** @file prdfP9PmRecovery.H | ||
* @brief Power management STOP failure recovery actions | ||
*/ | ||
|
||
#ifndef __prdfP9PmRecovery_H | ||
#define __prdfP9PmRecovery_H | ||
|
||
// Framework includes | ||
#include <prdfExtensibleChip.H> | ||
#include <prdfPlatServices.H> | ||
#include <prdfTrace.H> | ||
|
||
namespace PRDF | ||
{ | ||
|
||
/** | ||
* @brief Power management STOP failure recovery actions | ||
* @param i_chip P9 extensible chip | ||
* @param io_sc Step code data structure | ||
* @param return SUCCESS/FAIL | ||
*/ | ||
int32_t pmRecovery( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & io_sc ); | ||
|
||
} // end namespace PRDF | ||
|
||
#endif // __prdfP9PmRecovery_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
# IBM_PROLOG_BEGIN_TAG | ||
# This is an automatically generated prolog. | ||
# | ||
# $Source: src/usr/diag/prdf/plat/p9/prdf_plat_p9_hb_only.mk $ | ||
# | ||
# OpenPOWER HostBoot Project | ||
# | ||
# Contributors Listed Below - COPYRIGHT 2016,2018 | ||
# [+] International Business Machines Corp. | ||
# | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||
# implied. See the License for the specific language governing | ||
# permissions and limitations under the License. | ||
# | ||
# IBM_PROLOG_END_TAG | ||
|
||
# NOTE: PRD_SRC_PATH and PRD_INC_PATH must be defined before including this file | ||
|
||
################################################################################ | ||
# Paths common to both IPL and runtime | ||
################################################################################ | ||
|
||
prd_vpath += ${PRD_SRC_PATH}/plat/p9 | ||
|
||
prd_incpath += ${PRD_SRC_PATH}/plat/p9 | ||
|
||
################################################################################ | ||
# Hostboot only object files common to both IPL and runtime | ||
################################################################################ | ||
|
||
# plat/p9/ (non-rule plugin related) | ||
|
||
# plat/p9/ (rule plugin related) | ||
|
||
################################################################################ | ||
# Hostboot only object files (IPL only) | ||
################################################################################ | ||
|
||
ifneq (${HOSTBOOT_RUNTIME},1) | ||
|
||
# plat/p9/ (non-rule plugin related) | ||
|
||
endif | ||
|
||
################################################################################ | ||
# Hostboot only object files (runtime only) | ||
################################################################################ | ||
|
||
ifeq (${HOSTBOOT_RUNTIME},1) | ||
|
||
# plat/p9/ (non-rule plugin related) | ||
prd_obj += prdfP9PmRecovery.o | ||
|
||
endif | ||
|
Oops, something went wrong.