]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit - sys/x86/x86/cpu_machdep.c
Add initial driver for ACPI Platform Error Interfaces.
authormav <mav@FreeBSD.org>
Mon, 27 Jul 2020 21:19:41 +0000 (21:19 +0000)
committermav <mav@FreeBSD.org>
Mon, 27 Jul 2020 21:19:41 +0000 (21:19 +0000)
commit92d4928dac80c79b4c2f675d0fa3e833f01448a5
tree2653c95a6f33d633cadeefa394f0778ff90c0b8f
parent27ebb118012eeb42d37f477a98c38e371ae1245c
Add initial driver for ACPI Platform Error Interfaces.

APEI allows platform to report different kinds of errors to OS in several
ways.  We've found that Supermicro X10/X11 motherboards report PCIe errors
appearing on hot-unplug via this interface using NMI.  Without respective
driver it ended up in kernel panic without any additional information.

This driver introduces support for the APEI Generic Hardware Error Source
reporting via NMI, SCI or polling.  It decodes the reported errors and
either pass them to pci(4) for processing or just logs otherwise.  Errors
marked as fatal still end up in kernel panic, but some more informative.

When somebody get to native PCIe AER support implementation both of the
reporting mechanisms should get common error recovery code.  Since in our
case errors happen when the device is already gone, there is nothing to
recover, so the code just clears the error statuses, practically ignoring
the otherwise destructive NMIs in nicer way.

MFC after: 2 weeks
Relnotes: yes
Sponsored by: iXsystems, Inc.
sys/arm64/arm64/machdep.c
sys/arm64/include/acpica_machdep.h
sys/conf/files
sys/dev/acpica/acpi.c
sys/dev/acpica/acpi_apei.c [new file with mode: 0644]
sys/dev/pci/pci.c
sys/dev/pci/pcivar.h
sys/x86/include/acpica_machdep.h
sys/x86/x86/cpu_machdep.c