On Mon, 14 Dec, at 11:40:24AM, Ard Biesheuvel wrote: > The UEFI spec does not require interrupts to be disabled when invoking > runtime services. The reason we have been doing so is because EFI pstore > may call SetVariable() from interrupt context, which may result in deadlock > if another runtime services call was in progress on the same cpu. > The EFI pstore has already been updated to use a non-blocking path and fail > gracefully rather than spin forever, so we can update the ordinary blocking > wrappers to run with interrupts enabled instead. This aims to prevent excessive > interrupt latencies on uniprocessor platforms with slow variable stores. > > Changes since v2: > - folded Matt's suggestion for patch #4, to bail rather than try to trigger a > garbage collection in the nonblocking case when there is insufficient space > - rebased onto v4.4-rc5 > > Changes since v1: > - added nonblocking QueryVariableInfo() wrapper variant, and updated > efi_query_variable_store() to use it when called in nonblocking context > - add patch to drop the rtc_lock spinlock > - add patch to drop redundant efi_set_variable_nonblocking_t typedef > - drop BUG_ONs in patch #7 > > Ard Biesheuvel (7): > efi: expose non-blocking set_variable() wrapper to efivars > efi: remove redundant efi_set_variable_nonblocking prototype > efi: runtime-wrappers: add a nonblocking version of QueryVariableInfo > efi: add nonblocking option to efi_query_variable_store() > efi: runtime-wrappers: remove out of date comment regarding in_nmi() > efi: runtime-wrapper: get rid of the rtc_lock spinlock > efi: runtime-wrappers: run UEFI Runtime Services with interrupts > enabled > > arch/x86/platform/efi/quirks.c | 33 +++++- > drivers/firmware/efi/efi.c | 1 + > drivers/firmware/efi/runtime-wrappers.c | 115 +++++++------------- > drivers/firmware/efi/vars.c | 16 ++- > include/linux/efi.h | 21 ++-- > 5 files changed, 100 insertions(+), 86 deletions(-) Thanks Ard, this all looks good to me. I've queued this up. It's a little late for v4.5 now, so this will probably be targeting v4.6. -- 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