mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-11-04 03:57:26 +00:00 
			
		
		
		
	
				REF:https://bugzilla.tianocore.org/show_bug.cgi?id=2333 During a SetVariable () invocation, UpdateVariable () is called. UpdateVariable () contains logic to determine whether a volatile or non-volatile UEFI variable was set so the corresponding runtime cache can be updated to reflect the change. The current logic simply evaluates Variable->Volatile to determine which runtime cache should be updated. The problem is Variable->Volatile does not always reflect whether a volatile variable is being set. Variable->Volatile is set to TRUE only in the case a pre-existing variable is found in the volatile variable store. Therefore, the value is FALSE when a new volatile variable is written. This change updates the logic to take this into account. If a new variable is written successfully, the Attributes will accurately reflect whether the variable is non-volatile. If a pre-existing variable is modified, the Volatile field will reflect the type of variable (Attributes are not reliable; e.g. 0x0 indicates deletion). * Observable symptom: A volatile variable that was set successfully might return EFI_NOT_FOUND when the variable should be found. * The issue is a regression introduced to the variable services only when the variable runtime cache is enabled by the following PCD being set to TRUE: gEfiMdeModulePkgTokenSpaceGuid.PcdEnableVariableRuntimeCache * The issue was implemented in commit  | 
			||
|---|---|---|
| .. | ||
| Measurement.c | ||
| PrivilegePolymorphic.h | ||
| Reclaim.c | ||
| SpeculationBarrierDxe.c | ||
| SpeculationBarrierSmm.c | ||
| TcgMorLockDxe.c | ||
| TcgMorLockSmm.c | ||
| VarCheck.c | ||
| Variable.c | ||
| Variable.h | ||
| VariableDxe.c | ||
| VariableExLib.c | ||
| VariableNonVolatile.c | ||
| VariableNonVolatile.h | ||
| VariableParsing.c | ||
| VariableParsing.h | ||
| VariableRuntimeCache.c | ||
| VariableRuntimeCache.h | ||
| VariableRuntimeDxe.inf | ||
| VariableRuntimeDxe.uni | ||
| VariableRuntimeDxeExtra.uni | ||
| VariableSmm.c | ||
| VariableSmm.inf | ||
| VariableSmm.uni | ||
| VariableSmmExtra.uni | ||
| VariableSmmRuntimeDxe.c | ||
| VariableSmmRuntimeDxe.inf | ||
| VariableSmmRuntimeDxe.uni | ||
| VariableSmmRuntimeDxeExtra.uni | ||
| VariableStandaloneMm.c | ||
| VariableStandaloneMm.inf | ||
| VariableTraditionalMm.c | ||