/* * Hardware Events Report * * Those events are generated when hardware detected a corrected or * uncorrected event, and are meant to replace the current API to report * errors defined on both EDAC and MCE subsystems. * * FIXME: Add events for handling memory errors originated from the * MCE subsystem.
*/
/* * Hardware-independent Memory Controller specific events
*/
/* * Default error mechanisms for Memory Controller errors (CE and UE)
*/
TRACE_EVENT(mc_event,
/* * ARM Processor Events Report * * This event is generated when hardware detects an ARM processor error * has occurred. UEFI 2.6 spec section N.2.4.4.
*/
TRACE_EVENT(arm_event,
/* * Non-Standard Section Report * * This event is generated when hardware detected a hardware * error event, which may be of non-standard section as defined * in UEFI spec appendix "Common Platform Error Record", or may * be of sections for which TRACE_EVENT is not defined. *
*/
TRACE_EVENT(non_standard_event,
TP_printk("severity: %d; sec type:%pU; FRU: %pU %s; data len:%d; raw data:%s",
__entry->sev, __entry->sec_type,
__entry->fru_id, __get_str(fru_text),
__entry->len,
__print_hex(__get_dynamic_array(buf), __entry->len))
);
#ifdef CONFIG_PCIEAER /* * PCIe AER Trace event * * These events are generated when hardware detects a corrected or * uncorrected event on a PCIe device. The event report has * the following structure: * * char * dev_name - The name of the slot where the device resides * ([domain:]bus:device.function). * u32 status - Either the correctable or uncorrectable register * indicating what error or errors have been seen * u8 severity - error severity 0:NONFATAL 1:FATAL 2:CORRECTED
*/
/* * memory-failure recovery action result event * * unsigned long pfn - Page Frame Number of the corrupted page * int type - Page types of the corrupted page * int result - Result of recovery action
*/
#ifdef CONFIG_MEMORY_FAILURE #define MF_ACTION_RESULT \
EM ( MF_IGNORED, "Ignored" ) \
EM ( MF_FAILED, "Failed" ) \
EM ( MF_DELAYED, "Delayed" ) \
EMe ( MF_RECOVERED, "Recovered" )
#define MF_PAGE_TYPE \
EM ( MF_MSG_KERNEL, "reserved kernel page" ) \
EM ( MF_MSG_KERNEL_HIGH_ORDER, "high-order kernel page" ) \
EM ( MF_MSG_HUGE, "huge page" ) \
EM ( MF_MSG_FREE_HUGE, "free huge page" ) \
EM ( MF_MSG_GET_HWPOISON, "get hwpoison page" ) \
EM ( MF_MSG_UNMAP_FAILED, "unmapping failed page" ) \
EM ( MF_MSG_DIRTY_SWAPCACHE, "dirty swapcache page" ) \
EM ( MF_MSG_CLEAN_SWAPCACHE, "clean swapcache page" ) \
EM ( MF_MSG_DIRTY_MLOCKED_LRU, "dirty mlocked LRU page" ) \
EM ( MF_MSG_CLEAN_MLOCKED_LRU, "clean mlocked LRU page" ) \
EM ( MF_MSG_DIRTY_UNEVICTABLE_LRU, "dirty unevictable LRU page" ) \
EM ( MF_MSG_CLEAN_UNEVICTABLE_LRU, "clean unevictable LRU page" ) \
EM ( MF_MSG_DIRTY_LRU, "dirty LRU page" ) \
EM ( MF_MSG_CLEAN_LRU, "clean LRU page" ) \
EM ( MF_MSG_TRUNCATED_LRU, "already truncated LRU page" ) \
EM ( MF_MSG_BUDDY, "free buddy page" ) \
EM ( MF_MSG_DAX, "dax page" ) \
EM ( MF_MSG_UNSPLIT_THP, "unsplit thp" ) \
EM ( MF_MSG_ALREADY_POISONED, "already poisoned" ) \
EMe ( MF_MSG_UNKNOWN, "unknown page" )
/* * First define the enums in MM_ACTION_RESULT to be exported to userspace * via TRACE_DEFINE_ENUM().
*/ #undef EM #undef EMe #define EM(a, b) TRACE_DEFINE_ENUM(a); #define EMe(a, b) TRACE_DEFINE_ENUM(a);
MF_ACTION_RESULT
MF_PAGE_TYPE
/* * Now redefine the EM() and EMe() macros to map the enums to the strings * that will be printed in the output.
*/ #undef EM #undef EMe #define EM(a, b) { a, b }, #define EMe(a, b) { a, b }
TRACE_EVENT(memory_failure_event,
TP_PROTO(unsignedlong pfn, int type, int result),
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.