diff options
author | Brian Horton <brianh@linux.ibm.com> | 2015-01-31 22:04:46 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-02-16 14:52:32 -0600 |
commit | 7ff96947e3424a8d8909f7de37c1442b6e8d7a18 (patch) | |
tree | 80092d07d0af9f6b14f5a3c9fb2203902880dfe6 /src/include/usr/errl | |
parent | 8fcc72d4f487e90f5d9c5bc333a50a5d25703da6 (diff) | |
download | talos-hostboot-7ff96947e3424a8d8909f7de37c1442b6e8d7a18.tar.gz talos-hostboot-7ff96947e3424a8d8909f7de37c1442b6e8d7a18.zip |
error log to esel integration
Change-Id: I2f134d73b114e4177e3e285defd85fbc21153913
RTC: 117454
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/15466
Tested-by: Jenkins Server
Reviewed-by: STEPHEN M. CPREK <smcprek@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/include/usr/errl')
-rw-r--r-- | src/include/usr/errl/errlipmi.H | 142 | ||||
-rw-r--r-- | src/include/usr/errl/errlmanager.H | 25 | ||||
-rw-r--r-- | src/include/usr/errl/errlsctn.H | 3 | ||||
-rw-r--r-- | src/include/usr/errl/errlsctnhdr.H | 3 | ||||
-rw-r--r-- | src/include/usr/errl/errlud.H | 3 |
5 files changed, 26 insertions, 150 deletions
diff --git a/src/include/usr/errl/errlipmi.H b/src/include/usr/errl/errlipmi.H deleted file mode 100644 index 836b0d1a1..000000000 --- a/src/include/usr/errl/errlipmi.H +++ /dev/null @@ -1,142 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/include/usr/errl/errlipmi.H $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2014,2015 */ -/* [+] 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 ERRLIPMI_H -#define ERRLIPMI_H -/** - * @file errlipmi.H - * - * @brief Error Log for IPMI SEL/eSEL formats - * - * This header file contains the definition of error structures for ipmi - * - */ - -/*****************************************************************************/ -// I n c l u d e s -/*****************************************************************************/ -#include <stdint.h> - -namespace ERRORLOG -{ - -// per MegaRAC SP-X spec -// The size of the eSEL is configurable via PRJ -// it can be set to 2KB per eSEL packet. -static const uint32_t ESEL_MAX_SIZE = 2 * KILOBYTE; - -// per MegaRAC SP-X spec -static const uint8_t SEL_RECORD_TYPE = 0xDE; -static const uint8_t ESEL_RECORD_TYPE = 0xDF; - -// per MegaRAC SP-X spec -static const uint8_t ESEL_EVENT_DATA_1 = 0xAA; - - -// per MegaRAC SP-X spec -static const uint16_t SEL_GENERATOR_ID = 0x2000; - -// per MegaRAC SP-X spec -static const uint8_t SEL_FORMAT_VERSION = 0x04; - - -// per IPMI Spec, section 32.1 SEL Event Records -struct selRecord -{ - - // ID used for SEL Record access. The Record ID values 0000h and FFFFh - // have special meaning in the Event Access commands and must not be - // used as Record ID values for stored SEL Event Records. - uint16_t recordID; - - // [7:0] - Record Type - // 02h = system event record - // C0h-DFh = OEM timestamped, bytes 8-16 OEM defined - // E0h-FFh = OEM non-timestamped, bytes 4-16 OEM defined - uint8_t record_type; - - // Time when event was logged. LS byte first. - uint32_t timestamp; - - // RqSA & LUN if event was generated from IPMB. Software ID if event was - // generated from system software. - // Byte 1 - // [7:1] - 7-bit I2C. Slave Address, or 7-bit system software ID - // [0] 0b = ID is IPMB Slave Address - // 1b = system software ID - // Byte 2 - // [7:4] - Channel number. Channel that event message was received over. - // 0h if the event message was received via the system interface, - // primary IPMB, or internally generated by the BMC. - // [3:2] - reserved. Write as 00b. - // [1:0] - IPMB device LUN if byte 1 holds Slave Address. 00b otherwise. - uint16_t generator_id; - - // Event Message format version - // (=04h for events in this specification, - // 03h for IPMI v1.0 Event Messages.) - uint8_t evm_format_version; - - // Sensor Type Code for sensor that generated the event - uint8_t sensor_type; - - // Number of sensor that generated the event - uint8_t sensor_number; - - // Event Dir - // [7 ] 0b = Assertion event. - // 1b = Deassertion event. - // Event Type - // Type of trigger for the event, e.g. critical threshold going high, - // state asserted, etc. Also indicates class of the event. E.g. - // discrete, threshold, or OEM. The Event Type field is encoded - // using the Event/Reading Type Code. - // [6:0] - Event Type Code - - uint8_t event_dir_type; - - uint8_t event_data1; - uint8_t event_data2; - uint8_t event_data3; - - // ctor - selRecord(): - recordID(0), - record_type(0), - timestamp(0), - generator_id(SEL_GENERATOR_ID), - evm_format_version(SEL_FORMAT_VERSION), - sensor_type(0), - sensor_number(0), - event_dir_type(0), - event_data1(0), - event_data2(0), - event_data3(0) - { }; - -} PACKED; - -} // End namespace - -#endif //ERRLIPMI_H diff --git a/src/include/usr/errl/errlmanager.H b/src/include/usr/errl/errlmanager.H index 07d4b79af..a5fcc136b 100644 --- a/src/include/usr/errl/errlmanager.H +++ b/src/include/usr/errl/errlmanager.H @@ -39,7 +39,6 @@ #include <util/singleton.H> #include <errl/errlentry.H> #include <errldisplay/errldisplay.H> -#include <errl/errlipmi.H> #include <sys/sync.h> #include <kernel/timemgr.H> #include <hbotcompid.H> @@ -156,13 +155,15 @@ public: static void errlResourceReady(errlManagerNeeds i_needs); /** - * @brief Sends msg to errlmanager telling what resources are ready + * @brief Sends msg to errlmanager to ack sending of errl to BMC * - * This is called by resources that the ErrlManager needs, which start up - * AFTER ErrlManager starts. Currently, that's PNOR MBOX and TARGeting. + * This is called by ipmi code once the SEL for the indicated errorlog + * has been successfully sent to the BMC * + * It is a static function because a module cannot call an interface on a + * singleton in another module */ - void sendResourcesMsg(errlManagerNeeds i_needs); + static void errlAckErrorlog(uint32_t i_eid); /** * @brief Returns the HWAS ProcessCallout function pointer @@ -250,6 +251,20 @@ private: ErrlManager(const ErrlManager& i_right); ErrlManager& operator=(const ErrlManager& i_right); + /** + * @brief Sends msg to errlmanager telling what resources are ready + * + * called by static errlResourceReady function. + */ + void sendResourcesMsg(errlManagerNeeds i_needs); + + /** + * @brief Sends msg to errlmanager telling which errlog to ack + * + * called by static errlAckErrorlog function. + */ + void sendAckErrorlog(uint32_t i_eid); + /** * @brief Access PNOR and get the address and size of the HBEL section in * PNOR; sets the iv_pnorAddr, iv_maxErrlInPnor, iv_pnorOpenSlot variables; diff --git a/src/include/usr/errl/errlsctn.H b/src/include/usr/errl/errlsctn.H index 295786614..367e5de89 100644 --- a/src/include/usr/errl/errlsctn.H +++ b/src/include/usr/errl/errlsctn.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2011,2014 */ +/* Contributors Listed Below - COPYRIGHT 2011,2015 */ /* [+] Google Inc. */ /* [+] International Business Machines Corp. */ /* */ @@ -59,6 +59,7 @@ namespace ERRORLOG */ class ErrlSctn { + friend class ErrlManager; friend class ERRORLOGDISPLAY::ErrLogDisplay; diff --git a/src/include/usr/errl/errlsctnhdr.H b/src/include/usr/errl/errlsctnhdr.H index 6d72018d1..bed8d3fcd 100644 --- a/src/include/usr/errl/errlsctnhdr.H +++ b/src/include/usr/errl/errlsctnhdr.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2011,2014 */ +/* Contributors Listed Below - COPYRIGHT 2011,2015 */ /* [+] Google Inc. */ /* [+] International Business Machines Corp. */ /* */ @@ -69,6 +69,7 @@ class ErrlSctnHdr friend class ErrlUD; friend class ErrlSrc; friend class ErrlEntry; + friend class ErrlManager; friend class ERRORLOGDISPLAY::ErrLogDisplay; diff --git a/src/include/usr/errl/errlud.H b/src/include/usr/errl/errlud.H index d7c10cc0f..3e243049f 100644 --- a/src/include/usr/errl/errlud.H +++ b/src/include/usr/errl/errlud.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2011,2014 */ +/* Contributors Listed Below - COPYRIGHT 2011,2015 */ /* [+] Google Inc. */ /* [+] International Business Machines Corp. */ /* */ @@ -54,6 +54,7 @@ class ErrlUD : public ErrlSctn // you would expect to be part of ErrlEntry are actually instance data // in this class. friend class ErrlEntry; + friend class ErrlManager; friend class ERRORLOGDISPLAY::ErrLogDisplay; |