]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/PlatformPei/Platform.c
OvmfPkg/PlatformPei: Merge Xen support into MemMapInitialization
[mirror_edk2.git] / OvmfPkg / PlatformPei / Platform.c
index d4df0c60e7895fc92889bdaedc75b88641389d48..c48fe974be71bf059f251466109cfe3ea6c0497b 100644 (file)
@@ -164,7 +164,7 @@ AddUntestedMemoryRangeHob (
 }\r
 \r
 VOID\r
-XenMemMapInitialization (\r
+MemMapInitialization (\r
   VOID\r
   )\r
 {\r
@@ -193,55 +193,29 @@ XenMemMapInitialization (
   //\r
   AddIoMemoryRangeHob (0x0A0000, BASE_1MB);\r
 \r
-  XenPublishRamRegions ();\r
-}\r
-\r
-\r
-VOID\r
-MemMapInitialization (\r
-  EFI_PHYSICAL_ADDRESS  TopOfMemory\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
+  if (!mXen) {\r
+    UINT32  TopOfLowRam;\r
+    TopOfLowRam = GetSystemMemorySizeBelow4gb ();\r
 \r
-  //\r
-  // address       purpose   size\r
-  // ------------  --------  -------------------------\r
-  // max(top, 2g)  PCI MMIO  0xFC000000 - max(top, 2g)\r
-  // 0xFC000000    gap                           44 MB\r
-  // 0xFEC00000    IO-APIC                        4 KB\r
-  // 0xFEC01000    gap                         1020 KB\r
-  // 0xFED00000    HPET                           1 KB\r
-  // 0xFED00400    gap                         1023 KB\r
-  // 0xFEE00000    LAPIC                          1 MB\r
-  //\r
-  AddIoMemoryRangeHob (TopOfMemory < BASE_2GB ? BASE_2GB : TopOfMemory, 0xFC000000);\r
-  AddIoMemoryBaseSizeHob (0xFEC00000, SIZE_4KB);\r
-  AddIoMemoryBaseSizeHob (0xFED00000, SIZE_1KB);\r
-  AddIoMemoryBaseSizeHob (PcdGet32(PcdCpuLocalApicBaseAddress), SIZE_1MB);\r
+    //\r
+    // address       purpose   size\r
+    // ------------  --------  -------------------------\r
+    // max(top, 2g)  PCI MMIO  0xFC000000 - max(top, 2g)\r
+    // 0xFC000000    gap                           44 MB\r
+    // 0xFEC00000    IO-APIC                        4 KB\r
+    // 0xFEC01000    gap                         1020 KB\r
+    // 0xFED00000    HPET                           1 KB\r
+    // 0xFED00400    gap                         1023 KB\r
+    // 0xFEE00000    LAPIC                          1 MB\r
+    //\r
+    AddIoMemoryRangeHob (TopOfLowRam < BASE_2GB ?\r
+                         BASE_2GB : TopOfLowRam, 0xFC000000);\r
+    AddIoMemoryBaseSizeHob (0xFEC00000, SIZE_4KB);\r
+    AddIoMemoryBaseSizeHob (0xFED00000, SIZE_1KB);\r
+    AddIoMemoryBaseSizeHob (PcdGet32(PcdCpuLocalApicBaseAddress), SIZE_1MB);\r
+  } else {\r
+    XenPublishRamRegions ();\r
+  }\r
 }\r
 \r
 \r
@@ -370,10 +344,6 @@ InitializePlatform (
   IN CONST EFI_PEI_SERVICES     **PeiServices\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
@@ -385,7 +355,7 @@ InitializePlatform (
   PublishPeiMemory ();\r
 \r
   if (!mXen) {\r
-    TopOfMemory = MemDetect ();\r
+    MemDetect ();\r
   }\r
 \r
   if (mXen) {\r
@@ -397,11 +367,7 @@ InitializePlatform (
 \r
   PeiFvInitialization ();\r
 \r
-  if (mXen) {\r
-    XenMemMapInitialization ();\r
-  } else {\r
-    MemMapInitialization (TopOfMemory);\r
-  }\r
+  MemMapInitialization ();\r
 \r
   MiscInitialization ();\r
 \r