freebsd-dev/sys/i386/include
John Baldwin 9dc0b3d54f Implement simple machine check support for amd64 and i386.
- For CPUs that only support MCE (the machine check exception) but not MCA
  (i.e. Pentium), all this does is print out the value of the machine check
  registers and then panic when a machine check exception occurs.
- For CPUs that support MCA (the machine check architecture), the support is
  a bit more involved.
  - First, there is limited support for decoding the CPU-independent MCA
    error codes in the kernel, and the kernel uses this to output a short
    description of any machine check events that occur.
  - When a machine check exception occurs, all of the MCx banks on the
    current CPU are scanned and any events are reported to the console
    before panic'ing.
  - To catch events for correctable errors, a periodic timer kicks off a
    task which scans the MCx banks on all CPUs.  The frequency of these
    checks is controlled via the "hw.mca.interval" sysctl.
  - Userland can request an immediate scan of the MCx banks by writing
    a non-zero value to "hw.mca.force_scan".
  - If any correctable events are encountered, the appropriate details
    are stored in a 'struct mca_record' (defined in <machine/mca.h>).
    The "hw.mca.count" is a count of such records and each record may
    be queried via the "hw.mca.records" tree by specifying the record
    index (0 .. count - 1) as the next name in the MIB similar to using
    PIDs with the kern.proc.* sysctls.  The idea is to export machine
    check events to userland for more detailed processing.
  - The periodic timer and hw.mca sysctls are only present if the CPU
    supports MCA.

Discussed with:	emaste (briefly)
MFC after:	1 month
2009-05-13 17:53:04 +00:00
..
pc A simple rewrite of biossmap.c: 2009-04-15 17:31:22 +00:00
xen Fix the Xen build for i386 PV mode. 2009-04-01 17:06:28 +00:00
_bus.h
_inttypes.h
_limits.h
_stdint.h
_types.h Change float_t and double_t to long double on i386. All floating point 2008-03-05 11:21:14 +00:00
acpica_machdep.h Catch up with ACPI-CA 20070320 import. 2007-03-22 18:16:43 +00:00
apicreg.h Add constants for fields in the local APIC error status register and a 2008-12-11 15:56:30 +00:00
apicvar.h Add support for using i8254 and rtc timers as event sources for i386 SMP 2009-05-02 12:59:47 +00:00
apm_bios.h
apm_segments.h
asm.h Define an END() macro for use in i386 and amd64 assembly code, akin 2007-08-22 04:26:07 +00:00
asmacros.h Integrate support for xen in to i386 common code. 2008-08-15 20:51:31 +00:00
atomic.h Restore memory clobber, to cause mb on the compiler level too. 2008-12-06 21:33:44 +00:00
bootinfo.h Slightly cleanup the 'bootdev' concept on x86 by changing the various 2007-10-24 04:03:25 +00:00
bus_dma.h
bus.h
clock.h Rename statclock_disable variable to atrtcclock_disable that it actually is, 2009-05-03 17:47:21 +00:00
cpu.h
cpufunc.h Simplify in/out functions (for i386 and AMD64). 2009-04-11 14:01:01 +00:00
cputypes.h Introduce cpu_vendor_id and replace a lot of strcmp(cpu_vendor, "..."). 2008-11-26 19:25:13 +00:00
cserial.h
db_machdep.h
elan_mmcr.h
elf.h Add AT_EXECPATH ELF auxinfo entry type. The value's a_ptr is a pointer 2009-03-17 12:50:16 +00:00
endian.h Also remove the unused __word_swap_int*() macros. 2009-04-08 19:10:20 +00:00
exec.h
float.h Oops, back out previous commit since it was to the wrong file. 2008-03-05 11:17:20 +00:00
floatingpoint.h
frame.h
gdb_machdep.h
ieeefp.h MFamd64 (everything possible up to 1.19; mainly the amd64 implementations 2008-01-11 18:59:35 +00:00
if_wl_wavelan.h
in_cksum.h Fold multiple asm statements into one so that the compiler at a certain 2007-10-20 22:18:42 +00:00
intr_machdep.h - Allocate apic vectors on a per-cpu basis. This allows us to allocate 2009-01-29 09:22:56 +00:00
ioctl_bt848.h
ioctl_meteor.h
iodev.h Remove the unused major/minor numbers from iodev and memdev. 2008-06-25 07:45:31 +00:00
kdb.h Add kdb_cpu_sync_icache(), intended to synchronize instruction 2007-06-09 21:55:17 +00:00
legacyvar.h Make the PCI code aware of PCI domains (aka PCI segments) so we can 2007-09-30 11:05:18 +00:00
limits.h
mca.h Implement simple machine check support for amd64 and i386. 2009-05-13 17:53:04 +00:00
md_var.h Introduce cpu_vendor_id and replace a lot of strcmp(cpu_vendor, "..."). 2008-11-26 19:25:13 +00:00
memdev.h Remove the unused M_MEMDEV from the kernel. 2008-06-25 07:52:10 +00:00
metadata.h A simple rewrite of biossmap.c: 2009-04-15 17:31:22 +00:00
minidump.h
mp_watchdog.h
mptable.h
mutex.h
nexusvar.h Rework how the nexus(4) device works on x86 to better handle the idea of 2008-03-13 20:39:04 +00:00
npx.h Some cleanups to the i386 FPU support: 2009-03-05 18:32:43 +00:00
param.h Don't conditionally define CACHE_LINE_SHIFT, as we anticipate sizing 2009-04-20 12:59:23 +00:00
pcaudioio.h
pcb_ext.h
pcb.h A better fix for handling different FPU initial control words for different 2009-03-05 19:42:11 +00:00
pci_cfgreg.h Extend the support for PCI-e memory mapped configuration space access: 2008-08-22 02:14:23 +00:00
pcpu.h Fix IPI support 2008-10-23 07:20:43 +00:00
perfmon.h
pmap.h Update stale comments. The alternate address space mapping was eliminated 2009-03-22 18:56:26 +00:00
pmc_mdep.h - Add support for PMCs in Intel CPUs of Family 6, model 0xE (Core Solo 2008-11-27 09:00:47 +00:00
ppireg.h
privatespace.h
proc.h When doing rfork(0), i.e. separating curproc VM from any other user of 2008-09-12 09:53:29 +00:00
profile.h Unbreak cc -pg support on i386. In gcc 4.2, %ecx is used as the arg pointer 2008-07-23 11:37:20 +00:00
psl.h
ptrace.h
reg.h - Add macro constants for the various fields in %dr7 and use them in place 2006-11-17 19:20:32 +00:00
reloc.h
resource.h
runq.h
segments.h Integrate support for xen in to i386 common code. 2008-08-15 20:51:31 +00:00
setjmp.h Remove 3rd clause, renumber, ok per email 2007-01-12 07:26:21 +00:00
sf_buf.h
sigframe.h
signal.h Sync definitions for struct sigcontext for i386 and amd64 architectures 2009-04-01 13:44:28 +00:00
smapi.h
smp.h - Add support for cpuid leaf 0xb. This allows us to determine the 2009-04-29 06:54:40 +00:00
speaker.h
specialreg.h Implement simple machine check support for amd64 and i386. 2009-05-13 17:53:04 +00:00
stack.h Break out stack(9) from ddb(4): 2007-12-02 20:40:35 +00:00
stdarg.h
sysarch.h
timerreg.h The "free-lance" timer in the i8254 is only used for the speaker 2008-03-26 20:09:21 +00:00
trap.h GC unused values 2008-10-19 01:23:30 +00:00
tss.h
ucontext.h Add all segment registers for the amd64 CPU to struct reg and mcontext. 2009-04-01 12:44:17 +00:00
varargs.h
vm86.h
vmparam.h Retire VM_PROT_READ_IS_EXEC. It was intended to be a micro-optimization, 2009-04-04 23:12:14 +00:00
xbox.h