|
@@ -278,3 +278,107 @@ enum {
|
|
|
|
|
|
/* SAL Error Record Section GUID Definitions */
|
|
/* SAL Error Record Section GUID Definitions */
|
|
#define SAL_PROC_DEV_ERR_SECT_GUID \
|
|
#define SAL_PROC_DEV_ERR_SECT_GUID \
|
|
|
|
+ EFI_GUID(0xe429faf1, 0x3cb7, 0x11d4, 0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81)
|
|
|
|
+#define SAL_PLAT_MEM_DEV_ERR_SECT_GUID \
|
|
|
|
+ EFI_GUID(0xe429faf2, 0x3cb7, 0x11d4, 0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81)
|
|
|
|
+#define SAL_PLAT_SEL_DEV_ERR_SECT_GUID \
|
|
|
|
+ EFI_GUID(0xe429faf3, 0x3cb7, 0x11d4, 0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81)
|
|
|
|
+#define SAL_PLAT_PCI_BUS_ERR_SECT_GUID \
|
|
|
|
+ EFI_GUID(0xe429faf4, 0x3cb7, 0x11d4, 0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81)
|
|
|
|
+#define SAL_PLAT_SMBIOS_DEV_ERR_SECT_GUID \
|
|
|
|
+ EFI_GUID(0xe429faf5, 0x3cb7, 0x11d4, 0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81)
|
|
|
|
+#define SAL_PLAT_PCI_COMP_ERR_SECT_GUID \
|
|
|
|
+ EFI_GUID(0xe429faf6, 0x3cb7, 0x11d4, 0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81)
|
|
|
|
+#define SAL_PLAT_SPECIFIC_ERR_SECT_GUID \
|
|
|
|
+ EFI_GUID(0xe429faf7, 0x3cb7, 0x11d4, 0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81)
|
|
|
|
+#define SAL_PLAT_HOST_CTLR_ERR_SECT_GUID \
|
|
|
|
+ EFI_GUID(0xe429faf8, 0x3cb7, 0x11d4, 0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81)
|
|
|
|
+#define SAL_PLAT_BUS_ERR_SECT_GUID \
|
|
|
|
+ EFI_GUID(0xe429faf9, 0x3cb7, 0x11d4, 0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81)
|
|
|
|
+#define PROCESSOR_ABSTRACTION_LAYER_OVERWRITE_GUID \
|
|
|
|
+ EFI_GUID(0x6cb0a200, 0x893a, 0x11da, 0x96, 0xd2, 0x0, 0x10, 0x83, 0xff, \
|
|
|
|
+ 0xca, 0x4d)
|
|
|
|
+
|
|
|
|
+#define MAX_CACHE_ERRORS 6
|
|
|
|
+#define MAX_TLB_ERRORS 6
|
|
|
|
+#define MAX_BUS_ERRORS 1
|
|
|
|
+
|
|
|
|
+/* Definition of version according to SAL spec for logging purposes */
|
|
|
|
+typedef struct sal_log_revision {
|
|
|
|
+ u8 minor; /* BCD (0..99) */
|
|
|
|
+ u8 major; /* BCD (0..99) */
|
|
|
|
+} sal_log_revision_t;
|
|
|
|
+
|
|
|
|
+/* Definition of timestamp according to SAL spec for logging purposes */
|
|
|
|
+typedef struct sal_log_timestamp {
|
|
|
|
+ u8 slh_second; /* Second (0..59) */
|
|
|
|
+ u8 slh_minute; /* Minute (0..59) */
|
|
|
|
+ u8 slh_hour; /* Hour (0..23) */
|
|
|
|
+ u8 slh_reserved;
|
|
|
|
+ u8 slh_day; /* Day (1..31) */
|
|
|
|
+ u8 slh_month; /* Month (1..12) */
|
|
|
|
+ u8 slh_year; /* Year (00..99) */
|
|
|
|
+ u8 slh_century; /* Century (19, 20, 21, ...) */
|
|
|
|
+} sal_log_timestamp_t;
|
|
|
|
+
|
|
|
|
+/* Definition of log record header structures */
|
|
|
|
+typedef struct sal_log_record_header {
|
|
|
|
+ u64 id; /* Unique monotonically increasing ID */
|
|
|
|
+ sal_log_revision_t revision; /* Major and Minor revision of header */
|
|
|
|
+ u8 severity; /* Error Severity */
|
|
|
|
+ u8 validation_bits; /* 0: platform_guid, 1: !timestamp */
|
|
|
|
+ u32 len; /* Length of this error log in bytes */
|
|
|
|
+ sal_log_timestamp_t timestamp; /* Timestamp */
|
|
|
|
+ efi_guid_t platform_guid; /* Unique OEM Platform ID */
|
|
|
|
+} sal_log_record_header_t;
|
|
|
|
+
|
|
|
|
+#define sal_log_severity_recoverable 0
|
|
|
|
+#define sal_log_severity_fatal 1
|
|
|
|
+#define sal_log_severity_corrected 2
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * Error Recovery Info (ERI) bit decode. From SAL Spec section B.2.2 Table B-3
|
|
|
|
+ * Error Section Error_Recovery_Info Field Definition.
|
|
|
|
+ */
|
|
|
|
+#define ERI_NOT_VALID 0x0 /* Error Recovery Field is not valid */
|
|
|
|
+#define ERI_NOT_ACCESSIBLE 0x30 /* Resource not accessible */
|
|
|
|
+#define ERI_CONTAINMENT_WARN 0x22 /* Corrupt data propagated */
|
|
|
|
+#define ERI_UNCORRECTED_ERROR 0x20 /* Uncorrected error */
|
|
|
|
+#define ERI_COMPONENT_RESET 0x24 /* Component must be reset */
|
|
|
|
+#define ERI_CORR_ERROR_LOG 0x21 /* Corrected error, needs logging */
|
|
|
|
+#define ERI_CORR_ERROR_THRESH 0x29 /* Corrected error threshold exceeded */
|
|
|
|
+
|
|
|
|
+/* Definition of log section header structures */
|
|
|
|
+typedef struct sal_log_sec_header {
|
|
|
|
+ efi_guid_t guid; /* Unique Section ID */
|
|
|
|
+ sal_log_revision_t revision; /* Major and Minor revision of Section */
|
|
|
|
+ u8 error_recovery_info; /* Platform error recovery status */
|
|
|
|
+ u8 reserved;
|
|
|
|
+ u32 len; /* Section length */
|
|
|
|
+} sal_log_section_hdr_t;
|
|
|
|
+
|
|
|
|
+typedef struct sal_log_mod_error_info {
|
|
|
|
+ struct {
|
|
|
|
+ u64 check_info : 1,
|
|
|
|
+ requestor_identifier : 1,
|
|
|
|
+ responder_identifier : 1,
|
|
|
|
+ target_identifier : 1,
|
|
|
|
+ precise_ip : 1,
|
|
|
|
+ reserved : 59;
|
|
|
|
+ } valid;
|
|
|
|
+ u64 check_info;
|
|
|
|
+ u64 requestor_identifier;
|
|
|
|
+ u64 responder_identifier;
|
|
|
|
+ u64 target_identifier;
|
|
|
|
+ u64 precise_ip;
|
|
|
|
+} sal_log_mod_error_info_t;
|
|
|
|
+
|
|
|
|
+typedef struct sal_processor_static_info {
|
|
|
|
+ struct {
|
|
|
|
+ u64 minstate : 1,
|
|
|
|
+ br : 1,
|
|
|
|
+ cr : 1,
|
|
|
|
+ ar : 1,
|
|
|
|
+ rr : 1,
|
|
|
|
+ fr : 1,
|
|
|
|
+ reserved : 58;
|