xref: /openbmc/pldm/oem/ampere/event/cper.hpp (revision 9b71a56c8cd4e06a9b5e5a7074c548ee479fbb58)
172c8aa06SDung Cao #include "libcper/Cper.h"
272c8aa06SDung Cao 
372c8aa06SDung Cao #include <unistd.h>
472c8aa06SDung Cao 
5*9b71a56cSPavithra Barithaya #include <cstdint>
6*9b71a56cSPavithra Barithaya #include <cstdio>
772c8aa06SDung Cao #include <fstream>
872c8aa06SDung Cao #include <vector>
972c8aa06SDung Cao 
1072c8aa06SDung Cao namespace pldm
1172c8aa06SDung Cao {
1272c8aa06SDung Cao namespace oem_ampere
1372c8aa06SDung Cao {
1472c8aa06SDung Cao constexpr auto logBusName = "xyz.openbmc_project.Logging.IPMI";
1572c8aa06SDung Cao constexpr auto logPath = "/xyz/openbmc_project/Logging/IPMI";
1672c8aa06SDung Cao constexpr auto logIntf = "xyz.openbmc_project.Logging.IPMI";
1772c8aa06SDung Cao #define SENSOR_TYPE_OEM 0xF0
1872c8aa06SDung Cao 
1972c8aa06SDung Cao /* Memory definitions */
2072c8aa06SDung Cao #define MEM_ERROR_TYPE_PARITY 8
2172c8aa06SDung Cao #define ERROR_TYPE_ID_MCU 1
2272c8aa06SDung Cao #define SUBTYPE_ID_PARITY 9
2372c8aa06SDung Cao 
2472c8aa06SDung Cao /* PCIe definitions */
2572c8aa06SDung Cao #define ERROR_SUBTYPE_PCIE_AER_ROOT_PORT 0
2672c8aa06SDung Cao #define ERROR_SUBTYPE_PCIE_AER_DEVICE 1
2772c8aa06SDung Cao #define CPER_PCIE_VALID_PORT_TYPE 0x0001
2872c8aa06SDung Cao #define CPER_PCIE_PORT_TYPE_ROOT_PORT 4
2972c8aa06SDung Cao 
3072c8aa06SDung Cao typedef struct
3172c8aa06SDung Cao {
3272c8aa06SDung Cao     uint8_t formatVersion;
3372c8aa06SDung Cao     uint8_t formatType;
3472c8aa06SDung Cao     uint16_t length;
3572c8aa06SDung Cao } __attribute__((packed)) CommonEventData;
3672c8aa06SDung Cao 
3772c8aa06SDung Cao void decodeCperRecord(const uint8_t* data, size_t eventDataSize,
3872c8aa06SDung Cao                       EFI_AMPERE_ERROR_DATA* ampSpecHdr);
3972c8aa06SDung Cao void addCperSELLog(uint8_t TID, uint16_t eventID, EFI_AMPERE_ERROR_DATA* p);
4072c8aa06SDung Cao 
4172c8aa06SDung Cao } // namespace oem_ampere
4272c8aa06SDung Cao } // namespace pldm
43