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