ACPI, APEI, GHES, printk support for recoverable error via NMI
authorHuang Ying <ying.huang@intel.com>
Wed, 13 Jul 2011 05:14:25 +0000 (13:14 +0800)
committerLen Brown <len.brown@intel.com>
Wed, 3 Aug 2011 15:15:57 +0000 (11:15 -0400)
commit67eb2e99076708cc790019a6a08ca3e0ae130a3a
treedc3863496a4b6c4e30450f1b94d3e1c87b858e7a
parent7f184275aa306046fe7edcbef3229754f0d97402
ACPI, APEI, GHES, printk support for recoverable error via NMI

Some APEI GHES recoverable errors are reported via NMI, but printk is
not safe in NMI context.

To solve the issue, a lock-less memory allocator is used to allocate
memory in NMI handler, save the error record into the allocated
memory, put the error record into a lock-less list.  On the other
hand, an irq_work is used to delay the operation from NMI context to
IRQ context.  The irq_work IRQ handler will remove nodes from
lock-less list, printk the error record and do some further processing
include recovery operation, then free the memory.

Signed-off-by: Huang Ying <ying.huang@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/apei/Kconfig
drivers/acpi/apei/ghes.c