linux/drivers/firmware/efi
Matt Fleming 6d80dba1c9 efi: Provide a non-blocking SetVariable() operation
There are some circumstances that call for trying to write an EFI
variable in a non-blocking way. One such scenario is when writing pstore
data in efi_pstore_write() via the pstore_dump() kdump callback.

Now that we have an EFI runtime spinlock we need a way of aborting if
there is contention instead of spinning, since when writing pstore data
from the kdump callback, the runtime lock may already be held by the CPU
that's running the callback if we crashed in the middle of an EFI
variable operation.

The situation is sufficiently special that a new EFI variable operation
is warranted.

Introduce ->set_variable_nonblocking() for this use case. It is an
optional EFI backend operation, and need only be implemented by those
backends that usually acquire locks to serialize access to EFI
variables, as is the case for virt_efi_set_variable() where we now grab
the EFI runtime spinlock.

Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Matthew Garrett <mjg59@srcf.ucam.org>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
2014-10-03 18:41:03 +01:00
..
libstub efi: Add efi= parameter parsing to the EFI boot stub 2014-10-03 18:40:57 +01: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 efi: Introduce efi_md_typeattr_format() 2014-10-03 18:41:00 +01: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: Provide a non-blocking SetVariable() operation 2014-10-03 18:41:03 +01:00
vars.c efi: Provide a non-blocking SetVariable() operation 2014-10-03 18:41:03 +01:00