|
@@ -61,32 +61,6 @@
|
|
|
*/
|
|
|
static DEFINE_SPINLOCK(efi_runtime_lock);
|
|
|
|
|
|
-/*
|
|
|
- * Some runtime services calls can be reentrant under NMI, even if the table
|
|
|
- * above says they are not. (source: UEFI Specification v2.4A)
|
|
|
- *
|
|
|
- * Table 32. Functions that may be called after Machine Check, INIT and NMI
|
|
|
- * +----------------------------+------------------------------------------+
|
|
|
- * | Function | Called after Machine Check, INIT and NMI |
|
|
|
- * +----------------------------+------------------------------------------+
|
|
|
- * | GetTime() | Yes, even if previously busy. |
|
|
|
- * | GetVariable() | Yes, even if previously busy |
|
|
|
- * | GetNextVariableName() | Yes, even if previously busy |
|
|
|
- * | QueryVariableInfo() | Yes, even if previously busy |
|
|
|
- * | SetVariable() | Yes, even if previously busy |
|
|
|
- * | UpdateCapsule() | Yes, even if previously busy |
|
|
|
- * | QueryCapsuleCapabilities() | Yes, even if previously busy |
|
|
|
- * | ResetSystem() | Yes, even if previously busy |
|
|
|
- * +----------------------------+------------------------------------------+
|
|
|
- *
|
|
|
- * In order to prevent deadlocks under NMI, the wrappers for these functions
|
|
|
- * may only grab the efi_runtime_lock or rtc_lock spinlocks if !efi_in_nmi().
|
|
|
- * However, not all of the services listed are reachable through NMI code paths,
|
|
|
- * so the the special handling as suggested by the UEFI spec is only implemented
|
|
|
- * for QueryVariableInfo() and SetVariable(), as these can be reached in NMI
|
|
|
- * context through efi_pstore_write().
|
|
|
- */
|
|
|
-
|
|
|
/*
|
|
|
* As per commit ef68c8f87ed1 ("x86: Serialize EFI time accesses on rtc_lock"),
|
|
|
* the EFI specification requires that callers of the time related runtime
|