config HAVE_ACPI_APEI
	bool

config HAVE_ACPI_APEI_NMI
	bool

config ACPI_APEI
	bool "ACPI Platform Error Interface (APEI)"
	select MISC_FILESYSTEMS
	select PSTORE
	select UEFI_CPER
	depends on HAVE_ACPI_APEI
	help
	  APEI allows to report errors (for example from the chipset)
	  to the operating system. This improves NMI handling
	  especially. In addition it supports error serialization and
	  error injection.

config ACPI_APEI_GHES
	bool "APEI Generic Hardware Error Source"
	depends on ACPI_APEI
	select ACPI_HED
	select IRQ_WORK
	select GENERIC_ALLOCATOR
	help
	  Generic Hardware Error Source provides a way to report
	  platform hardware errors (such as that from chipset). It
	  works in so called "Firmware First" mode, that is, hardware
	  errors are reported to firmware firstly, then reported to
	  Linux by firmware. This way, some non-standard hardware
	  error registers or non-standard hardware link can be checked
	  by firmware to produce more valuable hardware error
	  information for Linux.

config ACPI_APEI_PCIEAER
	bool "APEI PCIe AER logging/recovering support"
	depends on ACPI_APEI && PCIEAER
	help
	  PCIe AER errors may be reported via APEI firmware first mode.
	  Turn on this option to enable the corresponding support.

config ACPI_APEI_SEA
	bool "APEI Synchronous External Abort logging/recovering support"
	depends on ARM64 && ACPI_APEI_GHES
	default y
	help
	  This option should be enabled if the system supports
	  firmware first handling of SEA (Synchronous External Abort).
	  SEA happens with certain faults of data abort or instruction
	  abort synchronous exceptions on ARMv8 systems. If a system
	  supports firmware first handling of SEA, the platform analyzes
	  and handles hardware error notifications from SEA, and it may then
	  form a HW error record for the OS to parse and handle. This
	  option allows the OS to look for such hardware error record, and
	  take appropriate action.

config ACPI_APEI_MEMORY_FAILURE
	bool "APEI memory error recovering support"
	depends on ACPI_APEI && MEMORY_FAILURE
	help
	  Memory errors may be reported via APEI firmware first mode.
	  Turn on this option to enable the memory recovering support.

config ACPI_APEI_EINJ
	tristate "APEI Error INJection (EINJ)"
	depends on ACPI_APEI && DEBUG_FS
	help
	  EINJ provides a hardware error injection mechanism, it is
	  mainly used for debugging and testing the other parts of
	  APEI and some other RAS features.

config ACPI_APEI_ERST_DEBUG
	tristate "APEI Error Record Serialization Table (ERST) Debug Support"
	depends on ACPI_APEI
	help
	  ERST is a way provided by APEI to save and retrieve hardware
	  error information to and from a persistent store. Enable this
	  if you want to debugging and testing the ERST kernel support
	  and firmware implementation.
