summaryrefslogtreecommitdiffstats
path: root/extensions/openpower-pels/user_header.hpp
Commit message (Collapse)AuthorAgeFilesLines
* PEL: Store transmission states in UserHeaderMatt Spinler2019-12-091-3/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | Use a reserved word in the UserHeader section to store some PEL states: * Host Transmission State: - States involving the progression of a PEL being sent to the operating system. * HMC Transmission State: - States involving the progression of a PEL being sent to the hardware management console, if there is one attached. - Usually, an HMC refers to a specific set of hardware and software sold by IBM that connects to OpenPower systems which has specific software to deal with receiving PELs. It is possible that there is an implementation that won't need to send PELs to either of these entities, in which case these states will just be unused and left at zero. This is the same location that other service processor implementations have stored transmission states. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I6a2bfee15336dbd564aeaded88effa55ede0d6c4
* PEL: Remove userHeader::getValueAatir2019-12-091-11/+1
| | | | | | | | | getValue function is now being used to get field values for all the different sections. Therefore, it makes sense to remove the older implementation of this function from userHeader class. Change-Id: I041b8c5e0548e9f7ee354f21d2e248ed946df5ec Signed-off-by: Aatir <aatrapps@gmail.com>
* PEL: Print list of PELsAatir2019-12-091-9/+9
| | | | | | | | | | | | | | | | | | | | | | PelTool commands for printing a list of PELs. PEL list sample: { "0x50000004": { "SRC": "BD8D1001", "PLID": "0x50000004", "CreatorID": "BMC", "Subsystem": "bmc_firmware", "Commit Time": "10/24/2019 15:50:08", "Sev": "unrecoverable", "CompID": "0x1000" } } Change-Id: Ifd864a6561c09de098689195edcf107b3fe550e3 Signed-off-by: Aatir <aatrapps@gmail.com>
* PEL: user header in JSONAatir Manzur2019-11-151-0/+17
| | | | | | | | | | | | | | | | | | | | The PELTool application is able to convert sections to JSON. This commit takes care of converting the user header section to JSON. user header section in JSON sample: "User Header":[ {"Section Version": "1"}, {"Sub-section type": "0"}, {"Log Committed by": "0x2000"}, {"Subsystem": "bmc_firmware"}, {"Event Scope": "entire_platform"}, {"Event Severity":"unrecoverable"}, {"Event Type": "na"} ] Signed-off-by: Aatir Manzur <aatrapps@gmail.com> Change-Id: I0dca1d87019b9e62d711ee6d034f2e8bc0574c2e
* PEL: Make PEL::flatten() constMatt Spinler2019-11-121-1/+1
| | | | | | | | This includes making the flatten() method const in the PEL section base class and in all of its derived classes. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I6be787962c6d7dfa01bdced2f9024564e6ac1b08
* PEL: Validate the Action Flags fieldMatt Spinler2019-11-081-0/+20
| | | | | | | | | | | | | | | | According to the PEL spec, the Action Flags and Event Type fields in the User Header section must be in agreement with the Severity field. So, when a PEL is being created from an OpenBMC event log, check those values for correctness and fix them up if required. In addition, as those fields are optional in the message registry, this code will also just set these two fields to valid values if they were left out. The rules being followed are documented in the PEL readme. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Iad88de5080ba79a9ff31f962ef99bfc11994b9ed
* PEL: Const accessors for Private/UserHeaderMatt Spinler2019-11-041-14/+14
| | | | | | | | | | | | | | | | | | | Change the combined non-const accessor/setter functions for the PrivateHeader and UserHeader fields to the standard const accessors, and have separate setters for the fields that need to be modified. In addition, make the 'get PrivateHeader' and 'get UserHeader' functions on the PEL class return a const reference. This allows const enforcement on the PEL class, for things like: void func(const PEL& pel) { auto id = pel.privateHeader().id(); } Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I840170e72b41e9e2465f716617500269244de6d9
* PEL: Create UserHeader from parametersMatt Spinler2019-10-091-0/+13
| | | | | | | | | | | Add a constructor to the UserHeader section class so it can be built from the message registry entry for that error along with the event log severity. This will be used when creating PELs from OpenBMC event logs. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I7e432f59de7b3f0ba77c3e5887ed5ec3f442ed44
* PEL: Move PEL section IDs into a header fileMatt Spinler2019-09-271-2/+1
| | | | | | | | | These will eventually need to be known to a piece of code that unflattens a PEL into the appropriate section class objects based on the section ID field in the PEL data. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I90b9d4be49b2e3807a620745fa663f94f7f4e62c
* PEL: Add a flatten() to Section base classMatt Spinler2019-09-101-19/+14
| | | | | | | | | | | | | | | To prepare for supporting PEL sections that can be in any order, which will probably be stored in a std::vector<unique_ptr<Section>>, add a pure virtual function in the Section base class so this list of sections can just be iterated on and have every object in it flattened. This flatten() call replaces the operator<<(Stream&, <object>) functions currently in use, so also convert the operator>> to unflatten() to make things consistent. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Id68f16fe4197b389a8495c21539a64f9f583c800
* PEL: Add UserHeader classMatt Spinler2019-07-261-0/+203
The second section in a PEL is always the 'User Header' section. This commit adds a class to represent that. Right now, the only constructor available is filling in its data fields from a PEL stream. Several of the fields in this section have predefined values that are defined by the PEL specification. Defining any constants or enums for those will be left to future commits where they will actually be used. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I8b5f856a4284d44c31b04e98a664f20cd8fa0cb6
OpenPOWER on IntegriCloud