diff options
Diffstat (limited to 'drivers/firmware/efi/runtime-wrappers.c')
-rw-r--r-- | drivers/firmware/efi/runtime-wrappers.c | 19 |
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 | ||
203 | static efi_status_t | ||
204 | virt_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 | |||
203 | static efi_status_t virt_efi_query_variable_info(u32 attr, | 221 | static 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; |