diff options
author | crgeddes <crgeddes@us.ibm.com> | 2016-06-22 14:52:42 -0500 |
---|---|---|
committer | Bill Hoffa <wghoffa@us.ibm.com> | 2016-06-30 13:14:01 -0500 |
commit | c6c5dcc2e0f58438c2cd029723ec129bae73a416 (patch) | |
tree | 5184a11be1461c7962d9cc607485cb996ee291ee | |
parent | bed9da49a7d63d6f22774c7ff04f2fff0fc4f9ce (diff) | |
download | talos-hostboot-c6c5dcc2e0f58438c2cd029723ec129bae73a416.tar.gz talos-hostboot-c6c5dcc2e0f58438c2cd029723ec129bae73a416.zip |
Create User Details section so we can record PIB err if applicable
The piberr mask used by fapi2 will check the pib err user details
on the errl it get returned.
RTC: 144507
Change-Id: I38f779692ac75676b37eaea129b2c423f3d69d30
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/26143
Reviewed-by: Andrew J. Geissler <andrewg@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
-rw-r--r-- | src/include/usr/scom/errlud_pib.H | 66 | ||||
-rw-r--r-- | src/include/usr/scom/scomreasoncodes.H | 5 | ||||
-rw-r--r-- | src/usr/scom/errlud_pib.C | 63 | ||||
-rw-r--r-- | src/usr/scom/plugins/SCOM_COMP_ID_Parse.C | 28 | ||||
-rw-r--r-- | src/usr/scom/plugins/errludP_scom.H | 95 | ||||
-rw-r--r-- | src/usr/scom/plugins/scomUdParserFactory.H | 50 | ||||
-rw-r--r-- | src/usr/scom/scom.mk | 1 |
7 files changed, 308 insertions, 0 deletions
diff --git a/src/include/usr/scom/errlud_pib.H b/src/include/usr/scom/errlud_pib.H new file mode 100644 index 000000000..1f18fe76f --- /dev/null +++ b/src/include/usr/scom/errlud_pib.H @@ -0,0 +1,66 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/include/usr/scom/errlud_pib.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2016 */ +/* [+] 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 ERRL_UD_PIB_H +#define ERRL_UD_PIB_H + +/** + * @file errlud_fsi.H + * + * Defines the classes that logs and parses various HDAT structures + */ + +#include <errl/errluserdetails.H> + +namespace SCOM +{ + +/** + * @class UdPibInfo + * + * Adds PIB information to an error log as user detail data + */ +class UdPibInfo : public ERRORLOG::ErrlUserDetails +{ + public: + /** + * @brief Constructor + * + * @param i_pibErr Error returned from operation + */ + UdPibInfo( uint8_t i_pibErr ); + + /** + * @brief Destructor + */ + virtual ~UdPibInfo(); + + UdPibInfo(UdPibInfo &) = delete; + UdPibInfo & operator=(UdPibInfo &) = delete; +}; + + +} + +#endif
\ No newline at end of file diff --git a/src/include/usr/scom/scomreasoncodes.H b/src/include/usr/scom/scomreasoncodes.H index 6bd96d52d..289f34f57 100644 --- a/src/include/usr/scom/scomreasoncodes.H +++ b/src/include/usr/scom/scomreasoncodes.H @@ -55,6 +55,11 @@ namespace SCOM SCOM_TARGET_ADDR_MISMATCH = SCOM_COMP_ID | 0x0C, SCOM_ISCHIPUNITSCOM_INVALID = SCOM_COMP_ID | 0x0D, }; + + enum UserDetailsTypes + { + SCOM_UDT_PIB = 0x1 + }; }; #endif diff --git a/src/usr/scom/errlud_pib.C b/src/usr/scom/errlud_pib.C new file mode 100644 index 000000000..000b59a21 --- /dev/null +++ b/src/usr/scom/errlud_pib.C @@ -0,0 +1,63 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/scom/errlud_pib.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2016 */ +/* [+] 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 errlud_pib.C + * + * @brief Implementation of classes to log SCOM FFDC + */ +#include <scom/errlud_pib.H> +#include <string.h> +#include <scom/scomreasoncodes.H> +#include <errl/errlentry.H> + +namespace SCOM +{ + +//------------------------------------------------------------------------------ +// PibInfo +//------------------------------------------------------------------------------ +UdPibInfo::UdPibInfo( uint8_t i_pibErr ) +{ + // Set up Ud instance variables + iv_CompId = SCOM_COMP_ID; + iv_Version = 1; + iv_SubSection = SCOM_UDT_PIB; + + + //***** Memory Layout ***** + // 1 byte : PIB + auto l_pBuf = reallocUsrBuf(sizeof(uint8_t)); + memcpy(l_pBuf, &i_pibErr, sizeof(i_pibErr)); + +} + +//------------------------------------------------------------------------------ +UdPibInfo::~UdPibInfo() +{ + +} + + +}
\ No newline at end of file diff --git a/src/usr/scom/plugins/SCOM_COMP_ID_Parse.C b/src/usr/scom/plugins/SCOM_COMP_ID_Parse.C new file mode 100644 index 000000000..fbf938633 --- /dev/null +++ b/src/usr/scom/plugins/SCOM_COMP_ID_Parse.C @@ -0,0 +1,28 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/scom/plugins/SCOM_COMP_ID_Parse.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2016 */ +/* [+] 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 */ +#include "errludparser.H" +#include "scomUdParserFactory.H" + +ERRL_MAKE_UD_PARSER(SCOM::UserDetailsParserFactory, hbfw::SCOM_COMP_ID) diff --git a/src/usr/scom/plugins/errludP_scom.H b/src/usr/scom/plugins/errludP_scom.H new file mode 100644 index 000000000..6a819a4ec --- /dev/null +++ b/src/usr/scom/plugins/errludP_scom.H @@ -0,0 +1,95 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/scom/plugins/errludP_scom.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2016 */ +/* [+] 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 ERRL_UDP_SCOM_H +#define ERRL_UDP_SCOM_H + +/** +* @file errludP_scom.H +* +* Defines the ErrlUserDetailsParser classes that parse SCOM FFDC +*/ + +#include "errluserdetails.H" +#include <string.h> + +/** +* Some macros to manipulate data types cleanly +*/ +#define TO_UINT8(ptr) (*(reinterpret_cast<uint8_t*>(ptr))) + + +namespace SCOM +{ + + /** + * @class UdParserPib + * + * Parses UdPibInfo + */ + class UdParserPib : public ERRORLOG::ErrlUserDetailsParser + { + public: + /** + * @brief Constructor + */ + UdParserPib() {} + + /** + * @brief Destructor + */ + virtual ~UdParserPib() {} + + /** + * @brief Parses string user detail data from an error log + * + * @param i_version Version of the data + * @param i_parse ErrlUsrParser object for outputting information + * @param i_pBuffer Pointer to buffer containing detail data + * @param i_buflen Length of the buffer + */ + virtual void parse(errlver_t i_version, + ErrlUsrParser & i_parser, + void * i_pBuffer, + const uint32_t i_buflen) const + { + char* l_databuf = static_cast<char*>(i_pBuffer); + i_parser.PrintHeading("SCOM PIB ERR"); + + //***** Memory Layout ***** + // 1 bytes : Pib Error + + i_parser.PrintNumber("Pib Err","%.2lX", + TO_UINT8(l_databuf)); + + } + + // Disabled + UdParserPib(const UdParserPib&) = delete; + UdParserPib & operator=(const UdParserPib&) = delete; + }; + +} + +#endif
\ No newline at end of file diff --git a/src/usr/scom/plugins/scomUdParserFactory.H b/src/usr/scom/plugins/scomUdParserFactory.H new file mode 100644 index 000000000..d8ff3ceef --- /dev/null +++ b/src/usr/scom/plugins/scomUdParserFactory.H @@ -0,0 +1,50 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/scom/plugins/scomUdParserFactory.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2016 */ +/* [+] 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 */ +#if !defined(_SCOMUDPARSERFACTORY_H) +#define _SCOMUDPARSERFACTORY_H + +#include "errludparserfactory.H" +#include "errludP_scom.H" + +namespace SCOM +{ + class UserDetailsParserFactory + : public ERRORLOG::ErrlUserDetailsParserFactory + { + public: + UserDetailsParserFactory() + { + registerParser<SCOM::UdParserPib> + (SCOM_UDT_PIB); + } + + //Disabled + UserDetailsParserFactory(const UserDetailsParserFactory &) = delete; + UserDetailsParserFactory & operator= + (const UserDetailsParserFactory &) = delete; + }; +}; + +#endif diff --git a/src/usr/scom/scom.mk b/src/usr/scom/scom.mk index ec0f57a19..9012f325e 100644 --- a/src/usr/scom/scom.mk +++ b/src/usr/scom/scom.mk @@ -30,6 +30,7 @@ EXTRAINCDIR += ${ROOTPATH}/src/import/hwpf/fapi2/include/ # Local Objects OBJS += scom.o OBJS += scomtrans.o +OBJS += errlud_pib.o # Objects From Import Directory OBJS += p9_scominfo.o |