arm64: acpi: Make apei_claim_sea() synchronise with APEI's irq work
APEI is unable to do all of its error handling work in nmi-context, so it defers non-fatal work onto the irq_work queue. arch_irq_work_raise() sends an IPI to the calling cpu, but we can't guarantee this will be taken before we return. Unless we interrupted a context with irqs-masked, we can call irq_work_run() to do the work now. Otherwise return -EINPROGRESS to indicate ghes_notify_sea() found some work to do, but it hasn't finished yet. With this we can take apei_claim_sea() returning '0' to mean this external-abort was also notification of a firmware-first RAS error, and that APEI has processed the CPER records. Signed-off-by:James Morse <james.morse@arm.com> Reviewed-by:
Punit Agrawal <punit.agrawal@arm.com> Tested-by:
Tyler Baicar <tbaicar@codeaurora.org> CC: Xie XiuQi <xiexiuqi@huawei.com> CC: gengdongjiu <gengdongjiu@huawei.com> --- Changes since v2: * Removed IS_ENABLED() check, done by the caller unless we have a dummy definition.
Loading
Please register or sign in to comment