freebsd-skq/sys/x86
John Baldwin 6d40361585 The changes in r233781 attempted to make logging during a machine check
exception more readable.  In practice they prevented all logging during
a machine check exception on at least some systems.  Specifically, when
an uncorrected ECC error is detected in a DIMM on a Nehalem/Westmere
class machine, all CPUs receive a machine check exception, but only
CPUs on the same package as the memory controller for the erroring DIMM
log an error.  The CPUs on the other package would complete the scan of
their machine check banks and panic before the first set of CPUs could
log an error.  The end result was a clearer display during the panic
(no interleaved messages), but a crashdump without any useful info about
the error that occurred.

To handle this case, make all CPUs spin in the machine check handler
once they have completed their scan of their machine check banks until
at least one machine check error is logged.  I tried using a DELAY()
instead so that the CPUs would not potentially hang forever, but that
was not reliable in testing.

While here, don't clear MCIP from MSR_MCG_STATUS before invoking panic.
Only clear it if the machine check handler does not panic and returns
to the interrupted thread.
2014-01-08 21:04:12 +00:00
..
acpica Fix i386 build. 2013-12-24 14:48:52 +00:00
bios Add missing header needed by free(9). 2012-09-30 15:42:20 +00:00
cpufreq Do not DELAY() for P-state transition unless we want to see the result. 2013-12-10 20:25:43 +00:00
include Retire machine/fdt.h as a header used by MI code, as its function is now 2014-01-05 18:46:58 +00:00
iommu Fix undefined behavior: (1 << 31) is not defined as 1 is an int and this 2013-11-30 22:17:27 +00:00
isa Add support for suspend/resume/migration operations when running as a 2013-09-20 05:06:03 +00:00
pci Trim stray blank line. 2012-04-11 21:00:33 +00:00
x86 The changes in r233781 attempted to make logging during a machine check 2014-01-08 21:04:12 +00:00
xen Formalize the concept of virtual CPU ids by adding a per-cpu vcpu_id 2013-10-05 23:11:01 +00:00