trace, ras: add ARM processor error trace event
[sfrench/cifs-2.6.git] / include / ras / ras_event.h
index 4f79ba94fa6bd69ce3d229e9823f73f4d73f4b1f..429f46fb61e455776b85a3166044d45a419649d3 100644 (file)
@@ -161,6 +161,51 @@ TRACE_EVENT(mc_event,
                  __get_str(driver_detail))
 );
 
+/*
+ * 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,
+
+       TP_PROTO(const struct cper_sec_proc_arm *proc),
+
+       TP_ARGS(proc),
+
+       TP_STRUCT__entry(
+               __field(u64, mpidr)
+               __field(u64, midr)
+               __field(u32, running_state)
+               __field(u32, psci_state)
+               __field(u8, affinity)
+       ),
+
+       TP_fast_assign(
+               if (proc->validation_bits & CPER_ARM_VALID_AFFINITY_LEVEL)
+                       __entry->affinity = proc->affinity_level;
+               else
+                       __entry->affinity = ~0;
+               if (proc->validation_bits & CPER_ARM_VALID_MPIDR)
+                       __entry->mpidr = proc->mpidr;
+               else
+                       __entry->mpidr = 0ULL;
+               __entry->midr = proc->midr;
+               if (proc->validation_bits & CPER_ARM_VALID_RUNNING_STATE) {
+                       __entry->running_state = proc->running_state;
+                       __entry->psci_state = proc->psci_state;
+               } else {
+                       __entry->running_state = ~0;
+                       __entry->psci_state = ~0;
+               }
+       ),
+
+       TP_printk("affinity level: %d; MPIDR: %016llx; MIDR: %016llx; "
+                 "running state: %d; PSCI state: %d",
+                 __entry->affinity, __entry->mpidr, __entry->midr,
+                 __entry->running_state, __entry->psci_state)
+);
+
 /*
  * Non-Standard Section Report
  *