/**@file\r
Platform PEI driver\r
\r
- Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
Copyright (c) 2011, Andrei Warkentin <andreiw@motorola.com>\r
\r
This program and the accompanying materials\r
AddUntestedMemoryBaseSizeHob (MemoryBase, (UINT64)(MemoryLimit - MemoryBase));\r
}\r
\r
+VOID\r
+XenMemMapInitialization (\r
+ VOID\r
+ )\r
+{\r
+ //\r
+ // Create Memory Type Information HOB\r
+ //\r
+ BuildGuidDataHob (\r
+ &gEfiMemoryTypeInformationGuid,\r
+ mDefaultMemoryTypeInformation,\r
+ sizeof(mDefaultMemoryTypeInformation)\r
+ );\r
+\r
+ //\r
+ // Add PCI IO Port space available for PCI resource allocations.\r
+ //\r
+ BuildResourceDescriptorHob (\r
+ EFI_RESOURCE_IO,\r
+ EFI_RESOURCE_ATTRIBUTE_PRESENT |\r
+ EFI_RESOURCE_ATTRIBUTE_INITIALIZED,\r
+ 0xC000,\r
+ 0x4000\r
+ );\r
+\r
+ //\r
+ // Video memory + Legacy BIOS region\r
+ //\r
+ AddIoMemoryRangeHob (0x0A0000, BASE_1MB);\r
+\r
+ XenPublishRamRegions ();\r
+}\r
+\r
\r
VOID\r
MemMapInitialization (\r
//\r
VariableStore =\r
(EFI_PHYSICAL_ADDRESS)(UINTN)\r
- AllocateAlignedPages (\r
+ AllocateAlignedRuntimePages (\r
EFI_SIZE_TO_PAGES (2 * PcdGet32 (PcdFlashNvStorageFtwSpareSize)),\r
PcdGet32 (PcdFlashNvStorageFtwSpareSize)\r
);\r
{\r
EFI_PHYSICAL_ADDRESS TopOfMemory;\r
\r
+ TopOfMemory = 0;\r
+\r
DEBUG ((EFI_D_ERROR, "Platform PEIM Loaded\n"));\r
\r
DebugDumpCmos ();\r
\r
- TopOfMemory = MemDetect ();\r
+ XenDetect ();\r
+\r
+ BootModeInitialization ();\r
+\r
+ PublishPeiMemory ();\r
+\r
+ if (!mXen) {\r
+ TopOfMemory = MemDetect ();\r
+ }\r
\r
- InitializeXen ();\r
+ if (mXen) {\r
+ DEBUG ((EFI_D_INFO, "Xen was detected\n"));\r
+ InitializeXen ();\r
+ }\r
\r
ReserveEmuVariableNvStore ();\r
\r
PeiFvInitialization ();\r
\r
- MemMapInitialization (TopOfMemory);\r
+ if (mXen) {\r
+ XenMemMapInitialization ();\r
+ } else {\r
+ MemMapInitialization (TopOfMemory);\r
+ }\r
\r
MiscInitialization ();\r
\r
- BootModeInitialization ();\r
-\r
return EFI_SUCCESS;\r
}\r