linux_dsm_epyc7002/arch/x86/kernel/cpu/mcheck
Tony Luck 95022b8cf6 x86/mce: Avoid reading every machine check bank register twice.
Reading machine check bank registers is slow. There is a trend of
increasing the number of banks, and the number of cores. The main section
of do_machine_check() is a serialized section where each cpu in turn
checks every bank. Even on a little two socket SandyBridge-EP system
that multiplies out as:

	2 sockets * 8 cores * 2 hyperthreads * 20 banks = 640 MSRs

We already scan the banks in parallel in mce_no_way_out() to see if there
is a fatal error anywhere in the system. If we build a cache of VALID
bits during this scan, we can avoid uselessly re-reading banks that have
no data. Note that this cache is only a hint. If the valid bit is set in a
shared bank, all cpus that share that bank will see it during the parallel
scan, but the first to find it in the sequential scan will (usually) clear
the bank.

Acked-by: Borislav Petkov <borislav.petkov@amd.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
2012-04-19 09:12:43 -07:00
..
Makefile ACPI, APEI, Generic Hardware Error Source memory error support 2010-05-19 22:41:16 -04:00
mce_amd.c Two miscellaneous MCE fixes 2012-03-14 07:44:48 +01:00
mce_intel.c locking, x86: mce: Annotate cmci_discover_lock as raw 2011-09-13 11:12:09 +02:00
mce-apei.c x86: Fix files explicitly requiring export.h for EXPORT_SYMBOL/THIS_MODULE 2011-10-31 19:30:35 -04:00
mce-inject.c x86: add IRQ context simulation in module mce-inject 2011-12-16 11:20:02 -08:00
mce-internal.h cpu: convert 'cpu' and 'machinecheck' sysdev_class to a regular subsystem 2011-12-21 14:29:42 -08:00
mce-severity.c x86/mce: Replace hard coded hex constants with symbolic defines 2012-01-26 16:02:22 -08:00
mce.c x86/mce: Avoid reading every machine check bank register twice. 2012-04-19 09:12:43 -07:00
p5.c Disintegrate asm/system.h for X86 2012-03-28 18:11:12 +01:00
therm_throt.c Disintegrate asm/system.h for X86 2012-03-28 18:11:12 +01:00
threshold.c x86: Call idle notifier after irq_enter() 2011-12-11 10:31:38 -08:00
winchip.c Disintegrate asm/system.h for X86 2012-03-28 18:11:12 +01:00