mirror of https://github.com/acidanthera/audk.git
This patch is to make sure at least VARIABLE_RECLAIM_THRESHOLD (1024) bytes of spaces must be available in NV variable region. This conservative approach is make sure OS loader will have space to save important data.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1697 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
5f5f28c90d
commit
c65c1e1e14
|
@ -1388,6 +1388,23 @@ Returns:
|
|||
|
||||
mVariableModuleGlobal->NonVolatileLastVariableOffset = (UINTN) NextVariable - (UINTN) CurrPtr;
|
||||
|
||||
//
|
||||
// Check if the free area is blow a threshold
|
||||
//
|
||||
if ((((VARIABLE_STORE_HEADER *)((UINTN) CurrPtr))->Size - mVariableModuleGlobal->NonVolatileLastVariableOffset) < VARIABLE_RECLAIM_THRESHOLD) {
|
||||
Status = Reclaim (
|
||||
mVariableModuleGlobal->VariableBase[Physical].NonVolatileVariableBase,
|
||||
&mVariableModuleGlobal->NonVolatileLastVariableOffset,
|
||||
FALSE
|
||||
);
|
||||
}
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
gBS->FreePool (mVariableModuleGlobal);
|
||||
gBS->FreePool (VolatileVariableStore);
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// Check if the free area is really free.
|
||||
//
|
||||
|
|
|
@ -35,6 +35,7 @@ Abstract:
|
|||
#define ALIGNMENT 1
|
||||
#endif
|
||||
|
||||
#define VARIABLE_RECLAIM_THRESHOLD (1024)
|
||||
|
||||
#define VARIABLE_STORE_SIZE (64 * 1024)
|
||||
#define SCRATCH_SIZE (4 * 1024)
|
||||
|
|
Loading…
Reference in New Issue