On Mon, Dec 03, 2018 at 06:06:02PM +0000, James Morse wrote: > To split up APEIs in_nmi() path, the caller needs to always be > in_nmi(). Add a helper to do the work and claim the notification. > > When KVM or the arch code takes an exception that might be a RAS > notification, it asks the APEI firmware-first code whether it wants > to claim the exception. A future kernel-first mechanism may be queried > afterwards, and claim the notification, otherwise we fall through > to the existing default behaviour. > > The NOTIFY_SEA code was merged before considering multiple, possibly > interacting, NMI-like notifications and the need to consider kernel > first in the future. Make the 'claiming' behaviour explicit. > > Restructuring the APEI code to allow multiple NMI-like notifications > means any notification that might interrupt interrupts-masked > code must always be wrapped in nmi_enter()/nmi_exit(). This will > allow APEI to use in_nmi() to use the right fixmap entries. > > Mask SError over this window to prevent an asynchronous RAS error > arriving and tripping 'nmi_enter()'s BUG_ON(in_nmi()). > > Signed-off-by: James Morse <james.morse@xxxxxxx> > Acked-by: Marc Zyngier <marc.zyngier@xxxxxxx> > Tested-by: Tyler Baicar <tbaicar@xxxxxxxxxxxxxx> Acked-by: Catalin Marinas <catalin.marinas@xxxxxxx>