diff options
author | Dan Crowell <dcrowell@us.ibm.com> | 2017-04-13 15:23:54 -0500 |
---|---|---|
committer | William G. Hoffa <wghoffa@us.ibm.com> | 2017-04-28 12:51:15 -0400 |
commit | aef8993e6d472792f5b70dd6f86013d5665849da (patch) | |
tree | f855c77bc09ef127933b3c3b5f4f43fe166e380a /src/usr/errl | |
parent | 40643bc86fcbcca5c3199168f36bccc0c0d65383 (diff) | |
download | talos-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.C | 116 | ||||
-rw-r--r-- | src/usr/errl/errlentry_consts.H | 155 | ||||
-rw-r--r-- | src/usr/errl/test/errltest.H | 24 |
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; + } + } + }; } |