summaryrefslogtreecommitdiffstats
path: root/src/usr/diag
diff options
context:
space:
mode:
authorDean Sanner <dsanner@us.ibm.com>2017-03-07 06:46:40 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-03-28 15:35:32 -0400
commitfd1825282b1cfef42129f5788c84ed259c73b470 (patch)
treef7fdde83915f8c15c3554e81fdeaa741fe642e77 /src/usr/diag
parentefc8d3c19f61b47ed4b9de3ce5f8fabf2c59fefc (diff)
downloadtalos-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.mk3
-rw-r--r--src/usr/diag/prdf/common/rule/prdrCompile.C20
-rw-r--r--src/usr/diag/prdf/plugins/prdrErrlDisplaySupt.H103
-rwxr-xr-xsrc/usr/diag/prdf/rule/makefile6
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 $^) $@
OpenPOWER on IntegriCloud