1*7f21db6cSLawrence Tang #ifndef CPER_SECTION_ARM_H 2*7f21db6cSLawrence Tang #define CPER_SECTION_ARM_H 3*7f21db6cSLawrence Tang 4*7f21db6cSLawrence Tang #include "json.h" 5*7f21db6cSLawrence Tang #include "../edk/Cper.h" 6*7f21db6cSLawrence Tang 7*7f21db6cSLawrence Tang #define MEMORY_ERROR_VALID_BITFIELD_NAMES (const char*[]) \ 8*7f21db6cSLawrence Tang {"errorStatusValid", "physicalAddressValid", "physicalAddressMaskValid", "nodeValid", "cardValid", "moduleValid", \ 9*7f21db6cSLawrence Tang "bankValid", "deviceValid", "rowValid", "columnValid", "bitPositionValid", "platformRequestorIDValid", \ 10*7f21db6cSLawrence Tang "platformResponderIDValid", "memoryPlatformTargetValid", "memoryErrorTypeValid", "rankNumberValid", \ 11*7f21db6cSLawrence Tang "cardHandleValid", "moduleHandleValid", "extendedRowBitsValid", "bankGroupValid", "bankAddressValid", \ 12*7f21db6cSLawrence Tang "chipIdentificationValid"} 13*7f21db6cSLawrence Tang #define MEMORY_ERROR_ERROR_TYPES_KEYS (int []){1, 16, 4, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26} 14*7f21db6cSLawrence Tang #define MEMORY_ERROR_ERROR_TYPES_VALUES (const char*[]){"ERR_INTERNAL", "ERR_BUS", "ERR_MEM", "ERR_TLB", \ 15*7f21db6cSLawrence Tang "ERR_CACHE", "ERR_FUNCTION", "ERR_SELFTEST", "ERR_FLOW", "ERR_MAP", "ERR_IMPROPER", "ERR_UNIMPL", \ 16*7f21db6cSLawrence Tang "ERR_LOL", "ERR_RESPONSE", "ERR_PARITY", "ERR_PROTOCOL", "ERR_ERROR", "ERR_TIMEOUT", "ERR_POISONED"} 17*7f21db6cSLawrence Tang #define MEMORY_ERROR_ERROR_TYPES_DESCRIPTIONS (const char*[]){\ 18*7f21db6cSLawrence Tang "Error detected internal to the component.", \ 19*7f21db6cSLawrence Tang "Error detected in the bus.", \ 20*7f21db6cSLawrence Tang "Storage error in memory (DRAM).", \ 21*7f21db6cSLawrence Tang "Storage error in TLB.", \ 22*7f21db6cSLawrence Tang "Storage error in cache.", \ 23*7f21db6cSLawrence Tang "Error in one or more functional units.", \ 24*7f21db6cSLawrence Tang "Component failed self test.", \ 25*7f21db6cSLawrence Tang "Overflow or underflow of internal queue.", \ 26*7f21db6cSLawrence Tang "Virtual address not found on IO-TLB or IO-PDIR.", \ 27*7f21db6cSLawrence Tang "Improper access error.", \ 28*7f21db6cSLawrence Tang "Access to a memory address which is not mapped to any component.", \ 29*7f21db6cSLawrence Tang "Loss of Lockstep error.", \ 30*7f21db6cSLawrence Tang "Response not associated with a request.", \ 31*7f21db6cSLawrence Tang "Bus parity error (must also set the A, C, or D bits).", \ 32*7f21db6cSLawrence Tang "Detection of a protocol error.", \ 33*7f21db6cSLawrence Tang "Detection of a PATH_ERROR.", \ 34*7f21db6cSLawrence Tang "Bus operation timeout.", \ 35*7f21db6cSLawrence Tang "A read was issued to data that has been poisoned."} 36*7f21db6cSLawrence Tang 37*7f21db6cSLawrence Tang json_object* cper_section_memory_to_ir(void* section, EFI_ERROR_SECTION_DESCRIPTOR* descriptor); 38*7f21db6cSLawrence Tang 39*7f21db6cSLawrence Tang #endif