1 #ifndef CPER_SECTION_PCI_DEV_H 2 #define CPER_SECTION_PCI_DEV_H 3 4 #include <json.h> 5 #include "../edk/Cper.h" 6 7 #define PCI_DEV_ERROR_VALID_BITFIELD_NAMES \ 8 (const char *[]) \ 9 { \ 10 "errorStatusValid", "idInfoValid", "memoryNumberValid", \ 11 "ioNumberValid", "registerDataPairsValid" \ 12 } 13 14 /// 15 /// PCI/PCI-X Device Error Section 16 /// 17 typedef struct { 18 UINT64 VendorId : 16; 19 UINT64 DeviceId : 16; 20 UINT64 ClassCode : 24; 21 UINT64 FunctionNumber : 8; 22 UINT64 DeviceNumber : 8; 23 UINT64 BusNumber : 8; 24 UINT64 SegmentNumber : 8; 25 UINT64 Reserved : 40; 26 } EFI_PCI_PCIX_DEVICE_ID_INFO; 27 28 typedef struct { 29 UINT64 ValidFields; 30 EFI_GENERIC_ERROR_STATUS ErrorStatus; 31 EFI_PCI_PCIX_DEVICE_ID_INFO IdInfo; 32 UINT32 MemoryNumber; 33 UINT32 IoNumber; 34 } __attribute__((packed, aligned(1))) EFI_PCI_PCIX_DEVICE_ERROR_DATA; 35 36 json_object *cper_section_pci_dev_to_ir(void *section); 37 void ir_section_pci_dev_to_cper(json_object *section, FILE *out); 38 39 #endif 40