linux/drivers/firmware/efi
Ard Biesheuvel 161485e827 efi: Implement mandatory locking for UEFI Runtime Services
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.

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.

Some of the assumptions underlying the decision whether locks are
needed or not (e.g., SetVariable() against ResetSystem()) may not
apply universally to all [new] architectures that implement UEFI.
Rather than try to reason our way out of this, let's just implement at
least what the spec requires in terms of locking.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
2014-10-03 18:40:57 +01:00
..
libstub Merge branch 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-08-04 17:13:50 -07:00
cper.c ACPI and power management updates for 3.17-rc1 2014-08-06 20:34:19 -07:00
efi-pstore.c efi-pstore: Fix an overflow on 32-bit builds 2014-06-27 07:30:32 +01:00
efi.c Merge branch 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-08-04 17:13:50 -07:00
efivars.c efi: Autoload efivars 2014-07-18 21:24:01 +01:00
Kconfig efi: efistub: Convert into static library 2014-07-18 21:22:19 +01:00
Makefile efi/reboot: Add generic wrapper around EfiResetSystem() 2014-07-18 21:23:51 +01:00
reboot.c x86/reboot: Add EFI reboot quirk for ACPI Hardware Reduced flag 2014-07-18 21:23:52 +01:00
runtime-map.c kexec: support kexec/kdump on EFI systems 2014-08-08 15:57:33 -07:00
runtime-wrappers.c efi: Implement mandatory locking for UEFI Runtime Services 2014-10-03 18:40:57 +01:00
vars.c efivars: Stop passing a struct argument to efivar_validate() 2014-04-17 13:53:43 +01:00