summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPrem Shanker Jha <premjha2@in.ibm.com>2018-01-22 02:38:43 -0600
committerChristian R. Geddes <crgeddes@us.ibm.com>2018-01-23 11:03:21 -0500
commit3b71fb0a04e32843b6f5b2bca3a09e12e775fa91 (patch)
tree4096b50b03d783438bb94e0a6292377f44314e31
parenteb22cf5b7cb70b1617bad230db8923b1944cd536 (diff)
downloadtalos-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.C65
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.H107
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_pm_callout.mk28
-rw-r--r--src/usr/isteps/pm/pm.mk1
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
OpenPOWER on IntegriCloud