diff options
author | Prem Shanker Jha <premjha2@in.ibm.com> | 2018-01-22 02:38:43 -0600 |
---|---|---|
committer | Christian R. Geddes <crgeddes@us.ibm.com> | 2018-01-23 11:03:21 -0500 |
commit | 3b71fb0a04e32843b6f5b2bca3a09e12e775fa91 (patch) | |
tree | 4096b50b03d783438bb94e0a6292377f44314e31 | |
parent | eb22cf5b7cb70b1617bad230db8923b1944cd536 (diff) | |
download | talos-hostboot-3b71fb0a04e32843b6f5b2bca3a09e12e775fa91.tar.gz talos-hostboot-3b71fb0a04e32843b6f5b2bca3a09e12e775fa91.zip |
PM: Level-1 implementation for HWP p9_pm_callout.
commit intends to provide level 1 implementation for HWP
p9_pm_callout. It also acts as a workaround for mirror
tool's limitation in handling a new file.
Change-Id: Ic8efe4efc6469c845b2066b64a7a3826ef727009
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52327
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com>
Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52381
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
-rw-r--r-- | src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.C | 65 | ||||
-rw-r--r-- | src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.H | 107 | ||||
-rw-r--r-- | src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.mk | 28 | ||||
-rw-r--r-- | src/usr/isteps/pm/pm.mk | 1 |
4 files changed, 201 insertions, 0 deletions
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.C b/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.C new file mode 100644 index 000000000..e5c5bb165 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.C @@ -0,0 +1,65 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2017,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 p9_pm_callout.C +/// @brief generates a vector of dead cores in response to PM malfunction alert +/// @details In case of PM Malfunction Alert, HBRT invokes PRD by setting a +/// bit in OCC LFIR.As a part of FIR bit response, PRD calls this HWP. +/// Procedure walks the bits of OCC Flag2 register and generates a bit +/// vector of cores considered dead by PHYP. It also points towards +/// a location of FFDC which needs to be committed to an error log. +/// Procedure updates QCSR and CCSR and also cleans up OCC Flag2 +/// and some interrupt registers. +/// +//---------------------------------------------------------------------------- +// *HWP HWP Owner : Greg Still <stillgs@us.ibm.com> +// *HWP FW Owner : Prem S Jha <premjha2@in.ibm.com> +// *HWP Team : PM +// *HWP Level : 1 +// *HWP Consumed by : HB +//---------------------------------------------------------------------------- +#include <p9_pm_callout.H> +#include <p9_hcd_memmap_base.H> +#include <p9_pm_recovery_ffdc_defines.H> + +extern "C" +{ + fapi2::ReturnCode p9_pm_callout( + void* i_pHomerBase, + const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_procTgt, + fapi2::buffer <uint32_t>& o_deadCores, + std::vector < StopErrLogSectn >& o_ffdcList, + RasAction& i_rasAction ) + { + using namespace p9_stop_recov_ffdc; + FAPI_IMP(">> p9_pm_callout" ); + + FAPI_IMP("<< p9_pm_callout" ); + return fapi2::FAPI2_RC_SUCCESS; + } + +//-------------------------------------------------------------------------------------------------------- + +}//extern "C" diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.H b/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.H new file mode 100644 index 000000000..7a625ce57 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.H @@ -0,0 +1,107 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2017,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 p9_pm_callout.H +/// @brief generates a vector of dead cores in response to PM malfunction alert +/// @details In case of PM Malfunction Alert, when HBRT invokes PRD by setting a +// bit in OCC LFIR, PRD calls this HWP. Procedure walks the bits of +// OCC Flag2 register and generates a bit vector of cores considered +// dead by PHYP. It also points to caller a location of FFDC which +// needs to be committed to an error log. Procedure updates QCSR and +// CCSR and also cleans up OCC Flag2 and some interrupt registers. +/// +/// +//---------------------------------------------------------------------------- +// *HWP HWP Owner : Greg Still <stillgs@us.ibm.com> +// *HWP FW Owner : Prem S Jha <premjha2@in.ibm.com> +// *HWP Team : PM +// *HWP Level : 1 +// *HWP Consumed by : HB +//---------------------------------------------------------------------------- + +#ifndef __P9_PM_CALLOUT +#define __P9_PM_CALLOUT + +//------------------------------------------------------------------------------ +// Includes +// ------------------------------------------------------------------------------ +#include <fapi2.H> + +///@brief models a sub-section of STOP Recovery summary. +///@note caller of HWP passes in an empty vector however, +///HWP populates it with pointers to all summary sub-section. +struct StopErrLogSectn +{ + uint8_t* iv_pBufPtr; + uint16_t iv_bufSize; + StopErrLogSectn( uint8_t* i_bufPtr, uint16_t i_bufSize ) + : iv_pBufPtr( i_bufPtr ), iv_bufSize( i_bufSize ) + { } + + StopErrLogSectn( ) + : iv_pBufPtr( NULL ), + iv_bufSize( 0 ) + { } +}; + +enum RasAction +{ + PROC_CHIP_CALLOUT = 0, +}; + +// function pointer typedef definition for HWP call support +typedef fapi2::ReturnCode (*p9_pm_callout_FP_t) ( + void* i_pHomer, + const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_procChipTgt, + fapi2::buffer <uint32_t>& o_deadCores, + std::vector < StopErrLogSectn >& o_ffdcList, + RasAction& i_rasAction ); + +extern "C" +{ + /// @brief analyzes Phyp generated dead core vector for clean up and guard. + /// @param[in] i_pHomerBase points to base of HOMER buffer. + /// @param[in] i_procChipTgt fapi2 target for P9 chip. + /// @param[out] o_deadCores bit vector of dead cores which needs to be runtime deconfigured + /// @param[out] o_ffdcList points to a list of STOP FFDC summary sub-sections. + /// @param[in] i_rasAction RAS action specified for FW. + /// @return fapi2 return code. + /// @note caller is expected to pass an empty vector. HWP will + /// populate a vector with a list pointers to various parts of + /// STOP Recovery FFDC summary. Highest priority sub-section + /// is pushed to vector first followed by sub-section of lower + /// priority. Bit vector is left aligned. Bits to be considered + /// are bit0 to bit 23. If bit 0 is set, it means Core0 is + /// marked dead by Phyp. + /// + + fapi2::ReturnCode p9_pm_callout( + void* i_pHomerBase, + const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_procChipTgt, + fapi2::buffer <uint32_t>& o_deadCores, + std::vector < StopErrLogSectn >& o_ffdcList, + RasAction& i_rasAction ); +} +#endif //__P9_PM_CALLOUT diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.mk b/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.mk new file mode 100644 index 000000000..2c5773244 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.mk @@ -0,0 +1,28 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.mk $ +# +# OpenPOWER HostBoot Project +# +# Contributors Listed Below - COPYRIGHT 2017,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 +PROCEDURE=p9_pm_callout +HWP_INC=$(ROOTPATH)/chips/p9/procedures/hwp/lib +$(call ADD_MODULE_INCDIR,$(PROCEDURE),$(HWP_INC)) +$(call BUILD_PROCEDURE) diff --git a/src/usr/isteps/pm/pm.mk b/src/usr/isteps/pm/pm.mk index 6085fcb4a..4966cac3a 100644 --- a/src/usr/isteps/pm/pm.mk +++ b/src/usr/isteps/pm/pm.mk @@ -128,3 +128,4 @@ include ${HWP_PM_PATH}/p9_pm_recovery_ffdc_cppm.mk include ${HWP_PM_PATH}/p9_pm_recovery_ffdc_qppm.mk include ${HWP_PM_PATH}/p9_pm_recovery_ffdc_occ.mk include ${HWP_PM_PATH}/p9_cme_sram_access.mk +include ${HWP_PM_PATH}/p9_pm_callout.mk |