// Check if the Data is Volatile.\r
//\r
if (!Volatile) {\r
+ ASSERT (Fvb != NULL);\r
Status = Fvb->GetPhysicalAddress(Fvb, &FvVolHdr);\r
ASSERT_EFI_ERROR (Status);\r
\r
// CacheVariable points to the variable in the memory copy of Flash area\r
// Now let Variable points to the same variable in Flash area.\r
//\r
- ASSERT ((Attributes & EFI_VARIABLE_NON_VOLATILE) != 0);\r
VariableStoreHeader = (VARIABLE_STORE_HEADER *) ((UINTN) mVariableModuleGlobal->VariableGlobal.NonVolatileVariableBase);\r
Variable = &NvVariable; \r
Variable->StartPtr = GetStartPointer (VariableStoreHeader);\r
VARIABLE_STORE_HEADER *VariableStoreHeader;\r
UINTN Index;\r
UINT8 Data;\r
- EFI_GCD_MEMORY_SPACE_DESCRIPTOR GcdDescriptor;\r
- EFI_PHYSICAL_ADDRESS BaseAddress;\r
- UINT64 Length;\r
EFI_PHYSICAL_ADDRESS VariableStoreBase;\r
UINT64 VariableStoreLength;\r
\r
}\r
}\r
\r
- //\r
- // Mark the variable storage region of the FLASH as RUNTIME.\r
- //\r
- BaseAddress = VariableStoreBase & (~EFI_PAGE_MASK);\r
- Length = VariableStoreLength + (VariableStoreBase - BaseAddress);\r
- Length = (Length + EFI_PAGE_SIZE - 1) & (~EFI_PAGE_MASK);\r
-\r
- Status = gDS->GetMemorySpaceDescriptor (BaseAddress, &GcdDescriptor);\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_WARN, "Variable driver failed to add EFI_MEMORY_RUNTIME attribute to Flash.\n"));\r
- } else {\r
- Status = gDS->SetMemorySpaceAttributes (\r
- BaseAddress,\r
- Length,\r
- GcdDescriptor.Attributes | EFI_MEMORY_RUNTIME\r
- );\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_WARN, "Variable driver failed to add EFI_MEMORY_RUNTIME attribute to Flash.\n"));\r
- }\r
- }\r
return EFI_SUCCESS;\r
}\r
\r