aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firmware/efi/runtime-wrappers.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/firmware/efi/runtime-wrappers.c')
-rw-r--r--drivers/firmware/efi/runtime-wrappers.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/firmware/efi/runtime-wrappers.c b/drivers/firmware/efi/runtime-wrappers.c
index 9694cba665c4..4349206198b2 100644
--- a/drivers/firmware/efi/runtime-wrappers.c
+++ b/drivers/firmware/efi/runtime-wrappers.c
@@ -200,6 +200,24 @@ static efi_status_t virt_efi_set_variable(efi_char16_t *name,
200 return status; 200 return status;
201} 201}
202 202
203static efi_status_t
204virt_efi_set_variable_nonblocking(efi_char16_t *name, efi_guid_t *vendor,
205 u32 attr, unsigned long data_size,
206 void *data)
207{
208 unsigned long flags;
209 efi_status_t status;
210
211 if (!spin_trylock_irqsave(&efi_runtime_lock, flags))
212 return EFI_NOT_READY;
213
214 status = efi_call_virt(set_variable, name, vendor, attr, data_size,
215 data);
216 spin_unlock_irqrestore(&efi_runtime_lock, flags);
217 return status;
218}
219
220
203static efi_status_t virt_efi_query_variable_info(u32 attr, 221static efi_status_t virt_efi_query_variable_info(u32 attr,
204 u64 *storage_space, 222 u64 *storage_space,
205 u64 *remaining_space, 223 u64 *remaining_space,
@@ -287,6 +305,7 @@ void efi_native_runtime_setup(void)
287 efi.get_variable = virt_efi_get_variable; 305 efi.get_variable = virt_efi_get_variable;
288 efi.get_next_variable = virt_efi_get_next_variable; 306 efi.get_next_variable = virt_efi_get_next_variable;
289 efi.set_variable = virt_efi_set_variable; 307 efi.set_variable = virt_efi_set_variable;
308 efi.set_variable_nonblocking = virt_efi_set_variable_nonblocking;
290 efi.get_next_high_mono_count = virt_efi_get_next_high_mono_count; 309 efi.get_next_high_mono_count = virt_efi_get_next_high_mono_count;
291 efi.reset_system = virt_efi_reset_system; 310 efi.reset_system = virt_efi_reset_system;
292 efi.query_variable_info = virt_efi_query_variable_info; 311 efi.query_variable_info = virt_efi_query_variable_info;