diff options
Diffstat (limited to 'src/include/usr/errl/errlipmi.H')
-rw-r--r-- | src/include/usr/errl/errlipmi.H | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/src/include/usr/errl/errlipmi.H b/src/include/usr/errl/errlipmi.H new file mode 100644 index 000000000..836b0d1a1 --- /dev/null +++ b/src/include/usr/errl/errlipmi.H @@ -0,0 +1,142 @@ +/* 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 |