/**@file\r
Platform PEI driver\r
\r
- Copyright (c) 2006 - 2009, Intel Corporation\r
+ Copyright (c) 2006 - 2010, Intel Corporation\r
All rights reserved. This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
#include <Library/DebugLib.h>\r
#include <Library/HobLib.h>\r
#include <Library/IoLib.h>\r
+#include <Library/MemoryAllocationLib.h>\r
+#include <Library/PcdLib.h>\r
#include <Library/PciLib.h>\r
#include <Library/PeimEntryPoint.h>\r
#include <Library/ResourcePublicationLib.h>\r
//\r
// Video memory + Legacy BIOS region\r
//\r
- AddMemoryRangeHob (0x0A0000, 0x0B0000);\r
- AddIoMemoryRangeHob (0x0B0000, 0x100000);\r
+ AddIoMemoryRangeHob (0x0A0000, 0x100000);\r
}\r
\r
\r
}\r
\r
\r
+VOID\r
+ReserveEmuVariableNvStore (\r
+ )\r
+{\r
+ EFI_PHYSICAL_ADDRESS VariableStore;\r
+\r
+ //\r
+ // Allocate storage for NV variables early on so it will be\r
+ // at a consistent address. Since VM memory is preserved\r
+ // across reboots, this allows the NV variable storage to survive\r
+ // a VM reboot.\r
+ //\r
+ VariableStore =\r
+ (EFI_PHYSICAL_ADDRESS)(UINTN)\r
+ AllocateRuntimePool (\r
+ 2 * PcdGet32 (PcdFlashNvStorageFtwSpareSize)\r
+ );\r
+ DEBUG ((EFI_D_INFO,\r
+ "Reserved variable store memory: 0x%lX; size: %dkb\n",\r
+ VariableStore,\r
+ (2 * PcdGet32 (PcdFlashNvStorageFtwSpareSize)) / 1024\r
+ ));\r
+ PcdSet64 (PcdEmuVariableNvStoreReserved, VariableStore);\r
+}\r
+\r
+\r
/**\r
Perform Platform PEI initialization.\r
\r
\r
MemDetect ();\r
\r
+ ReserveEmuVariableNvStore ();\r
+\r
PeiFvInitialization ();\r
\r
MemMapInitialization ();\r