diff options
author | Dean Sanner <dsanner@us.ibm.com> | 2017-03-07 06:46:40 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-03-28 15:35:32 -0400 |
commit | fd1825282b1cfef42129f5788c84ed259c73b470 (patch) | |
tree | f7fdde83915f8c15c3554e81fdeaa741fe642e77 /src/usr/diag | |
parent | efc8d3c19f61b47ed4b9de3ce5f8fabf2c59fefc (diff) | |
download | talos-hostboot-fd1825282b1cfef42129f5788c84ed259c73b470.tar.gz talos-hostboot-fd1825282b1cfef42129f5788c84ed259c73b470.zip |
Update err console display to include PRDF logs
Change-Id: I42ec4de748bcfaf1efd41680e087b9664539a69f
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/37608
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com>
Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Reviewed-by: Martin Gloff <mgloff@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/diag')
-rw-r--r-- | src/usr/diag/prdf/common/rule/prdf_rule.mk | 3 | ||||
-rw-r--r-- | src/usr/diag/prdf/common/rule/prdrCompile.C | 20 | ||||
-rw-r--r-- | src/usr/diag/prdf/plugins/prdrErrlDisplaySupt.H | 103 | ||||
-rwxr-xr-x | src/usr/diag/prdf/rule/makefile | 6 |
4 files changed, 131 insertions, 1 deletions
diff --git a/src/usr/diag/prdf/common/rule/prdf_rule.mk b/src/usr/diag/prdf/common/rule/prdf_rule.mk index 9ae0df31e..1a4665696 100644 --- a/src/usr/diag/prdf/common/rule/prdf_rule.mk +++ b/src/usr/diag/prdf/common/rule/prdf_rule.mk @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2016 +# Contributors Listed Below - COPYRIGHT 2016,2017 # [+] International Business Machines Corp. # # @@ -39,6 +39,7 @@ PRDR_RULE_TABLES += p9_mca.prf prd_rule_prf_targets = ${PRDR_RULE_TABLES} prd_rule_err_targets = ${PRDR_RULE_TABLES:.prf=.prf.err.C} +prd_rule_disp_targets = ${PRDR_RULE_TABLES:.prf=.prf.disp.C} prd_rule_reg_targets = ${PRDR_RULE_TABLES:.prf=.prf.reg.C} prd_rule_html_targets = ${PRDR_RULE_TABLES:.prf=.prf.html} diff --git a/src/usr/diag/prdf/common/rule/prdrCompile.C b/src/usr/diag/prdf/common/rule/prdrCompile.C index 23d4dda83..77b27546c 100644 --- a/src/usr/diag/prdf/common/rule/prdrCompile.C +++ b/src/usr/diag/prdf/common/rule/prdrCompile.C @@ -86,7 +86,9 @@ int main(int argc, char ** argv) } std::ofstream l_htmlFile((std::string(argv[1]) + ".html").c_str()); + std::ofstream l_htmlDummy(std::string("/dev/null").c_str()); std::ofstream l_errFile((std::string(argv[1]) + ".err.C").c_str()); + std::ofstream l_dispFile((std::string(argv[1]) + ".disp.C").c_str()); std::ofstream l_regFile((std::string(argv[1]) + ".reg.C").c_str()); #ifndef __HOSTBOOT_MODULE @@ -113,6 +115,9 @@ int main(int argc, char ** argv) l_errFile << "#include <prdrErrlPluginsSupt.H>" << std::endl; l_errFile << "PRDR_ERROR_SIGNATURE_TABLE_START "; + l_dispFile << "#include <prdrErrlDisplaySupt.H>" << std::endl; + l_dispFile << "PRDR_ERROR_SIGNATURE_TABLE_START "; + // setup register id file. l_regFile << "#include <prdrErrlPluginsSupt.H>" << std::endl; l_regFile << "PRDR_REGISTER_ID_TABLE_START "; @@ -163,6 +168,11 @@ int main(int argc, char ** argv) << std::hex << g_currentChip->cv_signatureOffset << " )" << std::endl; + // set error register HOM_TYPE + l_dispFile << "( 0x" << std::hex << g_currentChip->cv_targetType << ", 0x" + << std::hex << g_currentChip->cv_signatureOffset + << " )" << std::endl; + // output bit groups uint32_t l_pos = 0; l_size = htons((uint16_t)g_groups.size()); @@ -187,6 +197,7 @@ int main(int argc, char ** argv) { (*i).second->output(l_prfFile); (*i).second->generateDoxygen(l_htmlFile, (*i).first, l_errFile); + (*i).second->generateDoxygen(l_htmlDummy, (*i).first, l_dispFile); } // output action classes. @@ -218,6 +229,7 @@ int main(int argc, char ** argv) // Add chip's extra signatures. l_errFile << "//---- Extra Signatures ----" << std::endl; + l_dispFile << "//---- Extra Signatures ----" << std::endl; for (std::list<ExtraSignature>::iterator i = g_currentChip->cv_sigExtras.begin(); i != g_currentChip->cv_sigExtras.end(); @@ -227,11 +239,19 @@ int main(int argc, char ** argv) << std::setfill('0') << std::setw(8) << std::hex << i->iv_sig << ", " << *(i->iv_sname) << ", " << *(i->iv_desc) << ")" << std::endl; + + l_dispFile << "\tPRDR_ERROR_SIGNATURE ( 0x" + << std::setfill('0') << std::setw(8) << std::hex + << i->iv_sig << ", " << *(i->iv_sname) << ", " + << *(i->iv_desc) << ")" << std::endl; } l_errFile << "PRDR_ERROR_SIGNATURE_TABLE_END" << std::endl; l_errFile.close(); + l_dispFile << "PRDR_ERROR_SIGNATURE_TABLE_END" << std::endl; + l_dispFile.close(); + l_regFile << "PRDR_REGISTER_ID_TABLE_END" << std::endl; l_regFile.close(); diff --git a/src/usr/diag/prdf/plugins/prdrErrlDisplaySupt.H b/src/usr/diag/prdf/plugins/prdrErrlDisplaySupt.H new file mode 100644 index 000000000..c06d275e7 --- /dev/null +++ b/src/usr/diag/prdf/plugins/prdrErrlDisplaySupt.H @@ -0,0 +1,103 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/diag/prdf/plugins/prdrErrlDisplaySupt.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2005,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 __PRDRERRLDISPLAYSUPT_H +#define __PRDRERRLDISPLAYSUPT_H + +#define __PRDR_PLUGIN_HUID uint32_t +#define __PRDR_PLUGIN_IDTYPE uint32_t + +#define __PRDR_PLUGIN_XY(X,Y,Z) X##Y##_##Z +#define __PRDR_PLUGIN_MAKENAME(X,Y,Z) __PRDR_PLUGIN_XY(X,Y,Z) + +#ifndef PRDR_ERROR_SIGNATURE_TABLE_START + #define PRDR_ERROR_SIGNATURE_TABLE_START( homtype, offset) \ + namespace PRDF \ + {\ + namespace HOSTBOOT \ + { \ + class __PRDR_PLUGIN_MAKENAME(PrdrPlugin_ErrTable_Reg_, homtype, offset)\ + { \ + public: \ + __PRDR_PLUGIN_MAKENAME(PrdrPlugin_ErrTable_Reg_, \ + homtype, offset)(); \ + private: \ + struct __table_struct \ + { \ + uint32_t signature; \ + const char * name; \ + const char * brief; \ + }; \ + static __table_struct cv_table[]; \ + }; \ + __PRDR_PLUGIN_MAKENAME(PrdrPlugin_ErrTable_Reg_, homtype, offset) \ + __PRDR_PLUGIN_MAKENAME(g_PrdrPlugin_errTable_Reg_, homtype, offset);\ + __PRDR_PLUGIN_MAKENAME(PrdrPlugin_ErrTable_Reg_, homtype, offset)::\ + __PRDR_PLUGIN_MAKENAME(PrdrPlugin_ErrTable_Reg_, homtype, offset)() \ + { \ + __PRDR_PLUGIN_HUID l_homtype = homtype; \ + __table_struct * l_tablePtr = cv_table; \ + while (NULL != l_tablePtr->name) \ + { \ + GetErrorSigTable()[l_homtype][l_tablePtr->signature] = \ + std::pair<const char*, const char*> \ + (l_tablePtr->name,l_tablePtr->brief); \ + l_tablePtr++; \ + } \ + } \ + __PRDR_PLUGIN_MAKENAME(PrdrPlugin_ErrTable_Reg_, homtype, offset):: \ + __table_struct \ + __PRDR_PLUGIN_MAKENAME(PrdrPlugin_ErrTable_Reg_, homtype, offset):: \ + cv_table[] = \ + { + + #define PRDR_ERROR_SIGNATURE( signature , name, brief ) \ + { signature , name , brief } , + + #define PRDR_ERROR_SIGNATURE_TABLE_END \ + { 0, NULL, NULL } \ + }; \ + } \ + } // end namespace PRDF +#endif + +#include <map> +#include <stdint.h> + +namespace PRDF +{ +namespace HOSTBOOT +{ + +typedef std::map<__PRDR_PLUGIN_IDTYPE, + std::pair<const char*, const char*>> PrdrErrSigEntries; +typedef std::map<__PRDR_PLUGIN_HUID, PrdrErrSigEntries> PrdrErrSigTable; + +PrdrErrSigTable & GetErrorSigTable(); + +} // namespace HOSTBBOT +} // end namespace PRDF + +#endif diff --git a/src/usr/diag/prdf/rule/makefile b/src/usr/diag/prdf/rule/makefile index 8c9d13049..102e82c2c 100755 --- a/src/usr/diag/prdf/rule/makefile +++ b/src/usr/diag/prdf/rule/makefile @@ -73,6 +73,7 @@ PRDR_CMP_FLEX_C_PATH = ${OBJ_RULE_DIR}/${PRDR_CMP_FLEX_C} PRF_IMG_PATHS = $(addprefix ${IMGDIR}/, ${prd_rule_prf_targets}) ERR_PLUGIN_PATHS = $(addprefix ${OBJ_PLUG_DIR}/, ${prd_rule_err_targets}) +ERR_DISPLAY_PATHS= $(addprefix ${OBJ_PLUG_DIR}/, ${prd_rule_disp_targets}) REG_PLUGIN_PATHS = $(addprefix ${OBJ_PLUG_DIR}/, ${prd_rule_reg_targets}) #------------------------------------------------------------------------------- @@ -105,6 +106,7 @@ LINK_PLUGIN_FILES += $(addprefix ${OBJ_PLUG_DIR}/,$(notdir ${SOURCE_PLUGIN_FILES CODE_PASS_BODY += ${PRF_IMG_PATHS} CODE_PASS_BODY += ${ERR_PLUGIN_PATHS} +CODE_PASS_BODY += ${ERR_DISPLAY_PATHS} CODE_PASS_BODY += ${REG_PLUGIN_PATHS} CODE_PASS_BODY += ${LINK_PLUGIN_FILES} @@ -117,10 +119,12 @@ CLEAN_TARGETS += ${PRDR_CMP_FLEX_o_PATH} CLEAN_TARGETS += ${PRDR_CMP_FLEX_C_PATH} CLEAN_TARGETS += $(addprefix ${OBJ_RULE_DIR}/, ${prd_rule_prf_targets}) CLEAN_TARGETS += $(addprefix ${OBJ_RULE_DIR}/, ${prd_rule_err_targets}) +CLEAN_TARGETS += $(addprefix ${OBJ_RULE_DIR}/, ${prd_rule_disp_targets}) CLEAN_TARGETS += $(addprefix ${OBJ_RULE_DIR}/, ${prd_rule_reg_targets}) CLEAN_TARGETS += $(addprefix ${OBJ_RULE_DIR}/, ${prd_rule_html_targets}) CLEAN_TARGETS += ${PRF_IMG_PATHS} CLEAN_TARGETS += ${ERR_PLUGIN_PATHS} +CLEAN_TARGETS += ${ERR_DISPLAY_PATHS} CLEAN_TARGETS += ${REG_PLUGIN_PATHS} CLEAN_TARGETS += ${LINK_PLUGIN_FILES} @@ -211,6 +215,7 @@ PRDRPP_SEARCHDIRS = -I../common/plat/p9 \ ${OBJ_RULE_DIR}/%.prf \ ${OBJ_RULE_DIR}/%.prf.err.C \ +${OBJ_RULE_DIR}/%.prf.disp.C \ ${OBJ_RULE_DIR}/%.prf.reg.C : %.rule ${PRDR_CMP_PATH} ${PRD_OUT_MAKE} $(C1)cat $< | ${SRC_USR_DIR}/common/rule/prdrpp \ @@ -226,6 +231,7 @@ ${PRF_IMG_PATHS}: ${IMGDIR}/% : ${OBJ_RULE_DIR}/% # Link all .prf.err.C and .prf.reg.C files from OBJ_RULE_DIR to OBJ_PLUG_DIR ${ERR_PLUGIN_PATHS} \ +${ERR_DISPLAY_PATHS} \ ${REG_PLUGIN_PATHS}: ${OBJ_PLUG_DIR}/% : ${OBJ_RULE_DIR}/% | ${OBJ_PLUG_DIR} ${PRD_OUT_LINK} $(C1)ln -sf ${OBJ_RULE_LINK_DIR}/$(notdir $^) $@ |