On Mon, 04 Aug, at 06:16:00PM, Ard Biesheuvel wrote: > According to section 7.1 of the UEFI spec, Runtime Services are not fully > reentrant, and there are particular combinations of calls that need to be > serialized. Use a spinlock to serialize all Runtime Services with respect > to all others, even if this is more than strictly needed. I think we should include something that explains how we've managed to get away without an explicit runtime lock for so long, We've managed to get away without requiring a runtime services lock until now because most of the interactions with EFI involve EFI variables, and those operations are already serialised with __efivars->lock. and then a little bit of blurb about why that's no longer good enough. > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> > --- > arch/x86/include/asm/efi.h | 2 + > drivers/firmware/efi/runtime-wrappers.c | 154 +++++++++++++++++++++++++++++--- > 2 files changed, 146 insertions(+), 10 deletions(-) > > diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h > index 044a2fd3c5fe..b39ee5f2c02d 100644 > --- a/arch/x86/include/asm/efi.h > +++ b/arch/x86/include/asm/efi.h > @@ -86,6 +86,8 @@ extern void __iomem *efi_ioremap(unsigned long addr, unsigned long size, > > #endif /* CONFIG_X86_32 */ > > +#define efi_in_nmi() in_nmi() > + Remind me why this is needed for x86 but not for arm again? The rest looks good. I'm just running it through some tests now. Thanks Ard. -- Matt Fleming, Intel Open Source Technology Center -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html