xen/x86: introduce MCE_NONFATAL

Today, checking for non-fatal MCE errors on AMD is very invasive: it
involves a periodic timer interrupting the physical CPU execution at
regular intervals. Moreover, when the timer fires, the handler sends an
IPI to all physical CPUs.

Both these actions are disruptive in terms of latency and deterministic
execution times for real-time workloads. They might miss a deadline due
to one of these IPIs. Make it possible to disable non-fatal MCE errors
checking with a new Kconfig option (MCE_NONFATAL).

Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
Reviewed-by: Alejandro Vallejo <alejandro.garciavallejo@amd.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
Stefano Stabellini committed 2025-07-09 18:21:27 -07:00
1 parent 62b4701646
commit 4c1cd02acb
2 files changed
+17 -3

No files matched your search

+14
View File
@@ -248,6 +248,20 @@ config X2APIC_MIXED
endchoice
config MCE_NONFATAL
bool "Check for non-fatal MCEs" if EXPERT
default y
help
Check for non-fatal MCE errors.
When this option is on (default), Xen regularly checks for
non-fatal MCEs potentially occurring on all physical CPUs. The
checking is done via timers and IPI interrupts, which is
acceptable in most configurations, but not for real-time.
Turn this option off if you plan on deploying real-time workloads
on Xen.
config GUEST
bool
+3 -3
View File
@@ -1,12 +1,12 @@
obj-$(CONFIG_AMD) += amd_nonfatal.o
obj-$(filter $(CONFIG_AMD),$(CONFIG_MCE_NONFATAL)) += amd_nonfatal.o
obj-$(CONFIG_AMD) += mce_amd.o
obj-y += mcaction.o
obj-y += barrier.o
obj-$(CONFIG_INTEL) += intel-nonfatal.o
obj-$(filter $(CONFIG_INTEL),$(CONFIG_MCE_NONFATAL)) += intel-nonfatal.o
obj-y += mctelem.o
obj-y += mce.o
obj-y += mce-apei.o
obj-$(CONFIG_INTEL) += mce_intel.o
obj-y += non-fatal.o
obj-$(CONFIG_MCE_NONFATAL) += non-fatal.o
obj-y += util.o
obj-y += vmce.o
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.