summaryrefslogtreecommitdiffstats
path: root/src/usr/errl
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2017-04-13 15:23:54 -0500
committerWilliam G. Hoffa <wghoffa@us.ibm.com>2017-04-28 12:51:15 -0400
commitaef8993e6d472792f5b70dd6f86013d5665849da (patch)
treef855c77bc09ef127933b3c3b5f4f43fe166e380a /src/usr/errl
parent40643bc86fcbcca5c3199168f36bccc0c0d65383 (diff)
downloadtalos-hostboot-aef8993e6d472792f5b70dd6f86013d5665849da.tar.gz
talos-hostboot-aef8993e6d472792f5b70dd6f86013d5665849da.zip
Fix and guarantee order of target to subsys translation table
Change-Id: Idef7e41e358965afc7e670f2f2108742d37532f5 CQ: SW384972 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/39262 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Martin Gloff <mgloff@us.ibm.com> Reviewed-by: Corey V. Swenson <cswenson@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/usr/errl')
-rw-r--r--src/usr/errl/errlentry.C116
-rw-r--r--src/usr/errl/errlentry_consts.H155
-rw-r--r--src/usr/errl/test/errltest.H24
3 files changed, 180 insertions, 115 deletions
diff --git a/src/usr/errl/errlentry.C b/src/usr/errl/errlentry.C
index e05691874..9192ff83a 100644
--- a/src/usr/errl/errlentry.C
+++ b/src/usr/errl/errlentry.C
@@ -53,6 +53,7 @@
#include <config.h>
#include <initservice/initserviceif.H>
#include <attributeenums.H>
+#include "errlentry_consts.H"
// Hostboot Image ID string
@@ -61,121 +62,6 @@ extern char hbi_ImageId;
using namespace ERRORLOG;
using namespace HWAS;
-struct epubProcToSub_t
-{
- epubProcedureID xProc;
- epubSubSystem_t xSubSys;
-
-};
-// Procedure to subsystem table.
-static const epubProcToSub_t PROCEDURE_TO_SUBSYS_TABLE[] =
-{
- { EPUB_PRC_FIND_DECONFIGURED_PART , EPUB_CEC_HDW_SUBSYS },
- { EPUB_PRC_SP_CODE , EPUB_FIRMWARE_SP },
- { EPUB_PRC_PHYP_CODE , EPUB_FIRMWARE_PHYP },
- { EPUB_PRC_ALL_PROCS , EPUB_PROCESSOR_SUBSYS },
- { EPUB_PRC_ALL_MEMCRDS , EPUB_MEMORY_SUBSYS },
- { EPUB_PRC_INVALID_PART , EPUB_CEC_HDW_SUBSYS },
- { EPUB_PRC_LVL_SUPP , EPUB_MISC_SUBSYS },
- { EPUB_PRC_PROCPATH , EPUB_CEC_HDW_SUBSYS },
- { EPUB_PRC_NO_VPD_FOR_FRU , EPUB_CEC_HDW_VPD_INTF },
- { EPUB_PRC_MEMORY_PLUGGING_ERROR , EPUB_MEMORY_SUBSYS },
- { EPUB_PRC_FSI_PATH , EPUB_CEC_HDW_SUBSYS },
- { EPUB_PRC_PROC_AB_BUS , EPUB_PROCESSOR_BUS_CTL },
- { EPUB_PRC_PROC_XYZ_BUS , EPUB_PROCESSOR_BUS_CTL },
- { EPUB_PRC_MEMBUS_ERROR , EPUB_MEMORY_SUBSYS },
- { EPUB_PRC_EIBUS_ERROR , EPUB_CEC_HDW_SUBSYS },
- { EPUB_PRC_MEMORY_UE , EPUB_MEMORY_SUBSYS },
- { EPUB_PRC_POWER_ERROR , EPUB_POWER_SUBSYS },
- { EPUB_PRC_PERFORMANCE_DEGRADED , EPUB_MISC_SUBSYS },
- { EPUB_PRC_HB_CODE , EPUB_FIRMWARE_HOSTBOOT },
- { EPUB_PRC_TOD_CLOCK_ERR , EPUB_CEC_HDW_SUBSYS },
- { EPUB_PRC_COOLING_SYSTEM_ERR , EPUB_MISC_SUBSYS },
- { EPUB_PRC_FW_VERIFICATION_ERR , EPUB_FIRMWARE_SUBSYS },
- { EPUB_PRC_GPU_ISOLATION_PROCEDURE, EPUB_CEC_HDW_SUBSYS },
-};
-
-struct epubTargetTypeToSub_t
-{
- TARGETING::TYPE xType;
- epubSubSystem_t xSubSys;
-};
-// Target type to subsystem table.
-static const epubTargetTypeToSub_t TARGET_TO_SUBSYS_TABLE[] =
-{
- { TARGETING::TYPE_NODE , EPUB_CEC_HDW_SUBSYS },
- { TARGETING::TYPE_DIMM , EPUB_MEMORY_DIMM },
- { TARGETING::TYPE_MEMBUF , EPUB_MEMORY_SUBSYS },
- { TARGETING::TYPE_PROC , EPUB_PROCESSOR_SUBSYS },
- { TARGETING::TYPE_EX , EPUB_PROCESSOR_UNIT },
- { TARGETING::TYPE_L4 , EPUB_MEMORY_SUBSYS },
- { TARGETING::TYPE_MCS , EPUB_MEMORY_CONTROLLER },
- { TARGETING::TYPE_MBA , EPUB_MEMORY_CONTROLLER },
- { TARGETING::TYPE_XBUS , EPUB_PROCESSOR_BUS_CTL },
- { TARGETING::TYPE_ABUS , EPUB_PROCESSOR_SUBSYS },
- { TARGETING::TYPE_EQ , EPUB_PROCESSOR_SUBSYS },
- { TARGETING::TYPE_MCA , EPUB_MEMORY_CONTROLLER },
- { TARGETING::TYPE_MCBIST , EPUB_MEMORY_CONTROLLER },
- { TARGETING::TYPE_MI , EPUB_MEMORY_CONTROLLER },
- { TARGETING::TYPE_DMI , EPUB_MEMORY_SUBSYS },
- { TARGETING::TYPE_OBUS , EPUB_PROCESSOR_BUS_CTL },
- { TARGETING::TYPE_NX , EPUB_PROCESSOR_SUBSYS },
- { TARGETING::TYPE_CAPP , EPUB_PROCESSOR_SUBSYS },
- { TARGETING::TYPE_NV , EPUB_PROCESSOR_SUBSYS },
- { TARGETING::TYPE_PHB , EPUB_IO_PHB },
- { TARGETING::TYPE_PEC , EPUB_IO_PHB },
- { TARGETING::TYPE_CORE , EPUB_PROCESSOR_UNIT },
-};
-
-struct epubBusTypeToSub_t
-{
- HWAS::busTypeEnum xType;
- epubSubSystem_t xSubSys;
-};
-// Bus type to subsystem table
-static const epubBusTypeToSub_t BUS_TO_SUBSYS_TABLE[] =
-{
- { HWAS::FSI_BUS_TYPE , EPUB_CEC_HDW_CHIP_INTF },
- { HWAS::DMI_BUS_TYPE , EPUB_MEMORY_BUS },
- { HWAS::A_BUS_TYPE , EPUB_PROCESSOR_BUS_CTL },
- { HWAS::X_BUS_TYPE , EPUB_PROCESSOR_BUS_CTL },
- { HWAS::I2C_BUS_TYPE , EPUB_CEC_HDW_I2C_DEVS },
- { HWAS::PSI_BUS_TYPE , EPUB_CEC_HDW_SP_PHYP_INTF },
- { HWAS::O_BUS_TYPE , EPUB_PROCESSOR_BUS_CTL },
-};
-
-struct epubClockTypeToSub_t
-{
- HWAS::clockTypeEnum xType;
- epubSubSystem_t xSubSys;
-};
-// Clock type to subsystem table
-static const epubClockTypeToSub_t CLOCK_TO_SUBSYS_TABLE[] =
-{
- { HWAS::TODCLK_TYPE , EPUB_CEC_HDW_TOD_HDW },
- { HWAS::MEMCLK_TYPE , EPUB_CEC_HDW_CLK_CTL },
- { HWAS::OSCREFCLK_TYPE , EPUB_CEC_HDW_CLK_CTL },
- { HWAS::OSCPCICLK_TYPE , EPUB_CEC_HDW_CLK_CTL },
-};
-
-struct epubPartTypeToSub_t
-{
- HWAS::partTypeEnum xType;
- epubSubSystem_t xSubSys;
-};
-
-// PART type to subsystem table
-static const epubPartTypeToSub_t PART_TO_SUBSYS_TABLE[] =
-{
- { HWAS::FLASH_CONTROLLER_PART_TYPE , EPUB_CEC_HDW_SUBSYS },
- { HWAS::PNOR_PART_TYPE , EPUB_CEC_HDW_SUBSYS },
- { HWAS::SBE_SEEPROM_PART_TYPE , EPUB_PROCESSOR_SUBSYS },
- { HWAS::VPD_PART_TYPE , EPUB_CEC_HDW_SUBSYS },
- { HWAS::LPC_SLAVE_PART_TYPE , EPUB_CEC_HDW_SUBSYS },
- { HWAS::GPIO_EXPANDER_PART_TYPE , EPUB_MEMORY_SUBSYS },
- { HWAS::SPIVID_SLAVE_PART_TYPE , EPUB_POWER_SUBSYS },
-};
-
namespace ERRORLOG
{
diff --git a/src/usr/errl/errlentry_consts.H b/src/usr/errl/errlentry_consts.H
new file mode 100644
index 000000000..d92a69395
--- /dev/null
+++ b/src/usr/errl/errlentry_consts.H
@@ -0,0 +1,155 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/errl/errlentry_consts.H $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2017 */
+/* [+] 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 */
+#ifndef ERRLENTRY_CONSTS_H
+#define ERRLENTRY_CONSTS_H
+
+#include <errl/errludcallout.H>
+#include <hwas/common/hwasCallout.H>
+#include <hwas/common/deconfigGard.H>
+
+using namespace HWAS;
+
+namespace ERRORLOG
+{
+
+struct epubProcToSub_t
+{
+ epubProcedureID xProc;
+ epubSubSystem_t xSubSys;
+
+};
+// Procedure to subsystem table.
+const epubProcToSub_t PROCEDURE_TO_SUBSYS_TABLE[] =
+{
+ { EPUB_PRC_FIND_DECONFIGURED_PART , EPUB_CEC_HDW_SUBSYS },
+ { EPUB_PRC_SP_CODE , EPUB_FIRMWARE_SP },
+ { EPUB_PRC_PHYP_CODE , EPUB_FIRMWARE_PHYP },
+ { EPUB_PRC_ALL_PROCS , EPUB_PROCESSOR_SUBSYS },
+ { EPUB_PRC_ALL_MEMCRDS , EPUB_MEMORY_SUBSYS },
+ { EPUB_PRC_INVALID_PART , EPUB_CEC_HDW_SUBSYS },
+ { EPUB_PRC_LVL_SUPP , EPUB_MISC_SUBSYS },
+ { EPUB_PRC_PROCPATH , EPUB_CEC_HDW_SUBSYS },
+ { EPUB_PRC_NO_VPD_FOR_FRU , EPUB_CEC_HDW_VPD_INTF },
+ { EPUB_PRC_MEMORY_PLUGGING_ERROR , EPUB_MEMORY_SUBSYS },
+ { EPUB_PRC_FSI_PATH , EPUB_CEC_HDW_SUBSYS },
+ { EPUB_PRC_PROC_AB_BUS , EPUB_PROCESSOR_BUS_CTL },
+ { EPUB_PRC_PROC_XYZ_BUS , EPUB_PROCESSOR_BUS_CTL },
+ { EPUB_PRC_MEMBUS_ERROR , EPUB_MEMORY_SUBSYS },
+ { EPUB_PRC_EIBUS_ERROR , EPUB_CEC_HDW_SUBSYS },
+ { EPUB_PRC_MEMORY_UE , EPUB_MEMORY_SUBSYS },
+ { EPUB_PRC_POWER_ERROR , EPUB_POWER_SUBSYS },
+ { EPUB_PRC_PERFORMANCE_DEGRADED , EPUB_MISC_SUBSYS },
+ { EPUB_PRC_HB_CODE , EPUB_FIRMWARE_HOSTBOOT },
+ { EPUB_PRC_TOD_CLOCK_ERR , EPUB_CEC_HDW_SUBSYS },
+ { EPUB_PRC_COOLING_SYSTEM_ERR , EPUB_MISC_SUBSYS },
+ { EPUB_PRC_FW_VERIFICATION_ERR , EPUB_FIRMWARE_SUBSYS },
+ { EPUB_PRC_GPU_ISOLATION_PROCEDURE, EPUB_CEC_HDW_SUBSYS },
+};
+
+struct epubTargetTypeToSub_t
+{
+ TARGETING::TYPE xType;
+ epubSubSystem_t xSubSys;
+};
+// Target type to subsystem table.
+const epubTargetTypeToSub_t TARGET_TO_SUBSYS_TABLE[] =
+{
+ // This list must be kept sorted by TYPE
+ { TARGETING::TYPE_NODE , EPUB_CEC_HDW_SUBSYS },
+ { TARGETING::TYPE_DIMM , EPUB_MEMORY_DIMM },
+ { TARGETING::TYPE_MEMBUF , EPUB_MEMORY_SUBSYS },
+ { TARGETING::TYPE_PROC , EPUB_PROCESSOR_SUBSYS },
+ { TARGETING::TYPE_EX , EPUB_PROCESSOR_UNIT },
+ { TARGETING::TYPE_CORE , EPUB_PROCESSOR_UNIT },
+ { TARGETING::TYPE_L4 , EPUB_MEMORY_SUBSYS },
+ { TARGETING::TYPE_MCS , EPUB_MEMORY_CONTROLLER },
+ { TARGETING::TYPE_MBA , EPUB_MEMORY_CONTROLLER },
+ { TARGETING::TYPE_XBUS , EPUB_PROCESSOR_BUS_CTL },
+ { TARGETING::TYPE_ABUS , EPUB_PROCESSOR_SUBSYS },
+ { TARGETING::TYPE_NX , EPUB_PROCESSOR_SUBSYS },
+ { TARGETING::TYPE_CAPP , EPUB_PROCESSOR_SUBSYS },
+ { TARGETING::TYPE_EQ , EPUB_PROCESSOR_SUBSYS },
+ { TARGETING::TYPE_MCA , EPUB_MEMORY_CONTROLLER },
+ { TARGETING::TYPE_MCBIST , EPUB_MEMORY_CONTROLLER },
+ { TARGETING::TYPE_MI , EPUB_MEMORY_CONTROLLER },
+ { TARGETING::TYPE_DMI , EPUB_MEMORY_SUBSYS },
+ { TARGETING::TYPE_OBUS , EPUB_PROCESSOR_BUS_CTL },
+ { TARGETING::TYPE_NV , EPUB_PROCESSOR_SUBSYS },
+ { TARGETING::TYPE_PEC , EPUB_IO_PHB },
+ { TARGETING::TYPE_PHB , EPUB_IO_PHB },
+};
+
+struct epubBusTypeToSub_t
+{
+ HWAS::busTypeEnum xType;
+ epubSubSystem_t xSubSys;
+};
+// Bus type to subsystem table
+const epubBusTypeToSub_t BUS_TO_SUBSYS_TABLE[] =
+{
+ { HWAS::FSI_BUS_TYPE , EPUB_CEC_HDW_CHIP_INTF },
+ { HWAS::DMI_BUS_TYPE , EPUB_MEMORY_BUS },
+ { HWAS::A_BUS_TYPE , EPUB_PROCESSOR_BUS_CTL },
+ { HWAS::X_BUS_TYPE , EPUB_PROCESSOR_BUS_CTL },
+ { HWAS::I2C_BUS_TYPE , EPUB_CEC_HDW_I2C_DEVS },
+ { HWAS::PSI_BUS_TYPE , EPUB_CEC_HDW_SP_PHYP_INTF },
+ { HWAS::O_BUS_TYPE , EPUB_PROCESSOR_BUS_CTL },
+};
+
+struct epubClockTypeToSub_t
+{
+ HWAS::clockTypeEnum xType;
+ epubSubSystem_t xSubSys;
+};
+// Clock type to subsystem table
+const epubClockTypeToSub_t CLOCK_TO_SUBSYS_TABLE[] =
+{
+ { HWAS::TODCLK_TYPE , EPUB_CEC_HDW_TOD_HDW },
+ { HWAS::MEMCLK_TYPE , EPUB_CEC_HDW_CLK_CTL },
+ { HWAS::OSCREFCLK_TYPE , EPUB_CEC_HDW_CLK_CTL },
+ { HWAS::OSCPCICLK_TYPE , EPUB_CEC_HDW_CLK_CTL },
+};
+
+struct epubPartTypeToSub_t
+{
+ HWAS::partTypeEnum xType;
+ epubSubSystem_t xSubSys;
+};
+
+// PART type to subsystem table
+const epubPartTypeToSub_t PART_TO_SUBSYS_TABLE[] =
+{
+ { HWAS::FLASH_CONTROLLER_PART_TYPE , EPUB_CEC_HDW_SUBSYS },
+ { HWAS::PNOR_PART_TYPE , EPUB_CEC_HDW_SUBSYS },
+ { HWAS::SBE_SEEPROM_PART_TYPE , EPUB_PROCESSOR_SUBSYS },
+ { HWAS::VPD_PART_TYPE , EPUB_CEC_HDW_SUBSYS },
+ { HWAS::LPC_SLAVE_PART_TYPE , EPUB_CEC_HDW_SUBSYS },
+ { HWAS::GPIO_EXPANDER_PART_TYPE , EPUB_MEMORY_SUBSYS },
+ { HWAS::SPIVID_SLAVE_PART_TYPE , EPUB_POWER_SUBSYS },
+};
+
+} //end namespace
+
+#endif //#ifndef ERRLENTRY_CONSTS_H
diff --git a/src/usr/errl/test/errltest.H b/src/usr/errl/test/errltest.H
index eb756f4f0..8ca85d69a 100644
--- a/src/usr/errl/test/errltest.H
+++ b/src/usr/errl/test/errltest.H
@@ -47,6 +47,7 @@
#include <targeting/common/utilFilter.H>
#include "../../trace/entry.H"
+#include "../errlentry_consts.H"
#define TEST_SEVERITY ERRORLOG::ERRL_SEV_INFORMATIONAL
@@ -1074,6 +1075,29 @@ public:
}while(0);
#endif
}
+
+ /**
+ * @brief Guarantee TARGET_TO_SUBSYS_TABLE is in order
+ */
+ void testErrl_subsysOrder(void)
+ {
+ // TARGET_TO_SUBSYS_TABLE must be sorted by type, this
+ // test ensures that is true
+ TARGETING::TYPE l_lastType = TARGET_TO_SUBSYS_TABLE[0].xType;
+ for( size_t i = 1; //start on 2nd entry
+ i < (sizeof(TARGET_TO_SUBSYS_TABLE)/
+ sizeof(TARGET_TO_SUBSYS_TABLE[0]));
+ i++ )
+ {
+ if( TARGET_TO_SUBSYS_TABLE[i].xType < l_lastType )
+ {
+ TS_FAIL( "testErrl_subsysOrder> %d is out of order",
+ TARGET_TO_SUBSYS_TABLE[i].xType );
+ }
+ l_lastType = TARGET_TO_SUBSYS_TABLE[i].xType;
+ }
+ }
+
};
}
OpenPOWER on IntegriCloud