diff options
Diffstat (limited to 'include/linux/cper.h')
| -rw-r--r-- | include/linux/cper.h | 32 | 
1 files changed, 32 insertions, 0 deletions
| diff --git a/include/linux/cper.h b/include/linux/cper.h index 2fc0ec3d89cc..76abba4b238e 100644 --- a/include/linux/cper.h +++ b/include/linux/cper.h @@ -22,6 +22,7 @@  #define LINUX_CPER_H  #include <linux/uuid.h> +#include <linux/trace_seq.h>  /* CPER record signature and the size */  #define CPER_SIG_RECORD				"CPER" @@ -36,6 +37,13 @@  #define CPER_RECORD_REV				0x0100  /* + * CPER record length contains the CPER fields which are relevant for further + * handling of a memory error in userspace (we don't carry all the fields + * defined in the UEFI spec because some of them don't make any sense.) + * Currently, a length of 256 should be more than enough. + */ +#define CPER_REC_LEN					256 +/*   * Severity difinition for error_severity in struct cper_record_header   * and section_severity in struct cper_section_descriptor   */ @@ -356,6 +364,24 @@ struct cper_sec_mem_err {  	__u16	mem_dev_handle;		/* module handle in UEFI 2.4 */  }; +struct cper_mem_err_compact { +	__u64	validation_bits; +	__u16	node; +	__u16	card; +	__u16	module; +	__u16	bank; +	__u16	device; +	__u16	row; +	__u16	column; +	__u16	bit_pos; +	__u64	requestor_id; +	__u64	responder_id; +	__u64	target_id; +	__u16	rank; +	__u16	mem_array_handle; +	__u16	mem_dev_handle; +}; +  struct cper_sec_pcie {  	__u64		validation_bits;  	__u32		port_type; @@ -395,7 +421,13 @@ struct cper_sec_pcie {  #pragma pack()  u64 cper_next_record_id(void); +const char *cper_severity_str(unsigned int); +const char *cper_mem_err_type_str(unsigned int);  void cper_print_bits(const char *prefix, unsigned int bits,  		     const char * const strs[], unsigned int strs_size); +void cper_mem_err_pack(const struct cper_sec_mem_err *, +		       struct cper_mem_err_compact *); +const char *cper_mem_err_unpack(struct trace_seq *, +				struct cper_mem_err_compact *);  #endif | 
