Commit a272b2cf authored by Avadhut Naik's avatar Avadhut Naik Committed by PrithivishS
Browse files

tracing: Add the ::microcode field to the mce_record tracepoint

mainline inclusion
from mainline-v6.10-rc1
commit 186d7ef52c1f0c41450dedbdf6d6325d0a84e4c5
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/IAYOV8
CVE: NA

Reference: https://github.com/torvalds/linux/commit/186d7ef52c1f0c41450dedbdf6d6325d0a84e4c5



--------------------------------

commit 186d7ef52c1f0c41450dedbdf6d6325d0a84e4c5 upstream

Currently, the microcode field (Microcode Revision) of 'struct mce' is not
exposed to userspace through the mce_record tracepoint.

Knowing the microcode version on which the MCE was received is critical
information for debugging. If the version is not recorded, later attempts
to acquire the version might result in discrepancies since it can be
changed at runtime.

Add microcode version to the tracepoint to prevent ambiguity over
the active version on the system when the MCE was received.

Signed-off-by: default avatarAvadhut Naik <avadhut.naik@amd.com>
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
Reviewed-by: default avatarSohil Mehta <sohil.mehta@intel.com>
Reviewed-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
Reviewed-by: default avatarTony Luck <tony.luck@intel.com>
Link: https://lore.kernel.org/r/20240401171455.1737976-3-avadhut.naik@amd.com


Signed-off-by: default avatarjeevandeepj994 <j.jeevandeep@amd.com>
Signed-off-by: default avatarPrithivishS <sprithiv@amd.com>
parent db1753ad
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ TRACE_EVENT(mce_record,
		__field(	u8,		cs		)
		__field(	u8,		bank		)
		__field(	u8,		cpuvendor	)
		__field(	u32,		microcode	)
	),

	TP_fast_assign(
@@ -63,9 +64,10 @@ TRACE_EVENT(mce_record,
		__entry->cs		= m->cs;
		__entry->bank		= m->bank;
		__entry->cpuvendor	= m->cpuvendor;
		__entry->microcode	= m->microcode;
	),

	TP_printk("CPU: %d, MCGc/s: %llx/%llx, MC%d: %016Lx, IPID: %016Lx, ADDR: %016Lx, MISC: %016Lx, SYND: %016Lx, RIP: %02x:<%016Lx>, TSC: %llx, PPIN: %llx, vendor: %u, CPUID: %x, time: %llu, socket: %u, APIC: %x",
	TP_printk("CPU: %d, MCGc/s: %llx/%llx, MC%d: %016Lx, IPID: %016Lx, ADDR: %016Lx, MISC: %016Lx, SYND: %016Lx, RIP: %02x:<%016Lx>, TSC: %llx, PPIN: %llx, vendor: %u, CPUID: %x, time: %llu, socket: %u, APIC: %x, microcode: %x",
		__entry->cpu,
		__entry->mcgcap, __entry->mcgstatus,
		__entry->bank, __entry->status,
@@ -80,7 +82,8 @@ TRACE_EVENT(mce_record,
		__entry->cpuid,
		__entry->walltime,
		__entry->socketid,
		__entry->apicid)
		__entry->apicid,
		__entry->microcode)
);

#endif /* _TRACE_MCE_H */