efi_loader: enable UEFI variables at runtime
Enable UEFI variables at runtime. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
		
							parent
							
								
									ab7296c99c
								
							
						
					
					
						commit
						b02a707152
					
				|  | @ -121,6 +121,8 @@ efi_status_t efi_init_runtime_supported(void) | |||
| 	rt_table->version = EFI_RT_PROPERTIES_TABLE_VERSION; | ||||
| 	rt_table->length = sizeof(struct efi_rt_properties_table); | ||||
| 	rt_table->runtime_services_supported = | ||||
| 				EFI_RT_SUPPORTED_GET_VARIABLE | | ||||
| 				EFI_RT_SUPPORTED_GET_NEXT_VARIABLE_NAME | | ||||
| 				EFI_RT_SUPPORTED_SET_VIRTUAL_ADDRESS_MAP | | ||||
| 				EFI_RT_SUPPORTED_CONVERT_POINTER; | ||||
| 
 | ||||
|  |  | |||
|  | @ -183,9 +183,9 @@ static efi_status_t __maybe_unused efi_var_restore(struct efi_var_file *buf) | |||
| 		u16 *data = var->name + u16_strlen(var->name) + 1; | ||||
| 
 | ||||
| 		if (var->attr & EFI_VARIABLE_NON_VOLATILE && var->length) { | ||||
| 			ret = efi_set_variable_int(var->name, &var->guid, | ||||
| 						   var->attr, var->length, | ||||
| 						   data, true); | ||||
| 			ret = efi_var_mem_ins(var->name, &var->guid, var->attr, | ||||
| 					      var->length, data, 0, NULL, | ||||
| 					      var->time); | ||||
| 			if (ret != EFI_SUCCESS) | ||||
| 				log_err("Failed to set EFI variable %ls\n", | ||||
| 					var->name); | ||||
|  |  | |||
|  | @ -668,7 +668,16 @@ static efi_status_t __efi_runtime EFIAPI | |||
| efi_get_variable_runtime(u16 *variable_name, const efi_guid_t *vendor, | ||||
| 			 u32 *attributes, efi_uintn_t *data_size, void *data) | ||||
| { | ||||
| 	return EFI_UNSUPPORTED; | ||||
| 	efi_status_t ret; | ||||
| 
 | ||||
| 	ret = efi_get_variable_int(variable_name, vendor, attributes, | ||||
| 				   data_size, data, NULL); | ||||
| 
 | ||||
| 	/* Remove EFI_VARIABLE_READ_ONLY flag */ | ||||
| 	if (attributes) | ||||
| 		*attributes &= EFI_VARIABLE_MASK; | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|  | @ -684,7 +693,8 @@ static efi_status_t __efi_runtime EFIAPI | |||
| efi_get_next_variable_name_runtime(efi_uintn_t *variable_name_size, | ||||
| 				   u16 *variable_name, efi_guid_t *vendor) | ||||
| { | ||||
| 	return EFI_UNSUPPORTED; | ||||
| 	return efi_get_next_variable_name_int(variable_name_size, variable_name, | ||||
| 					      vendor); | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue