]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg/PlatformPei: Merge Xen support into MemMapInitialization
authorJordan Justen <jordan.l.justen@intel.com>
Sat, 1 Feb 2014 21:22:43 +0000 (21:22 +0000)
committerjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Sat, 1 Feb 2014 21:22:43 +0000 (21:22 +0000)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Wei Liu <wei.liu2@citrix.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15205 6f19259b-4bc3-4df7-8a09-765794883524

OvmfPkg/PlatformPei/MemDetect.c
OvmfPkg/PlatformPei/Platform.c
OvmfPkg/PlatformPei/Platform.h

index dcfe952219f8041b35caaceef2e1f845ee71f14d..851850b50dd47d46835b31c78975be0eb876b646 100644 (file)
@@ -1,7 +1,7 @@
 /**@file\r
   Memory Detection for Virtual Machines.\r
 \r
 /**@file\r
   Memory Detection for Virtual Machines.\r
 \r
-  Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
   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
   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
@@ -35,9 +35,9 @@ Module Name:
 #include "Platform.h"\r
 #include "Cmos.h"\r
 \r
 #include "Platform.h"\r
 #include "Cmos.h"\r
 \r
-STATIC\r
-UINTN\r
+UINT32\r
 GetSystemMemorySizeBelow4gb (\r
 GetSystemMemorySizeBelow4gb (\r
+  VOID\r
   )\r
 {\r
   UINT8 Cmos0x34;\r
   )\r
 {\r
   UINT8 Cmos0x34;\r
index d4df0c60e7895fc92889bdaedc75b88641389d48..c48fe974be71bf059f251466109cfe3ea6c0497b 100644 (file)
@@ -164,7 +164,7 @@ AddUntestedMemoryRangeHob (
 }\r
 \r
 VOID\r
 }\r
 \r
 VOID\r
-XenMemMapInitialization (\r
+MemMapInitialization (\r
   VOID\r
   )\r
 {\r
   VOID\r
   )\r
 {\r
@@ -193,55 +193,29 @@ XenMemMapInitialization (
   //\r
   AddIoMemoryRangeHob (0x0A0000, BASE_1MB);\r
 \r
   //\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
-  //\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
 }\r
 \r
 \r
@@ -370,10 +344,6 @@ InitializePlatform (
   IN CONST EFI_PEI_SERVICES     **PeiServices\r
   )\r
 {\r
   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
   DEBUG ((EFI_D_ERROR, "Platform PEIM Loaded\n"));\r
 \r
   DebugDumpCmos ();\r
@@ -385,7 +355,7 @@ InitializePlatform (
   PublishPeiMemory ();\r
 \r
   if (!mXen) {\r
   PublishPeiMemory ();\r
 \r
   if (!mXen) {\r
-    TopOfMemory = MemDetect ();\r
+    MemDetect ();\r
   }\r
 \r
   if (mXen) {\r
   }\r
 \r
   if (mXen) {\r
@@ -397,11 +367,7 @@ InitializePlatform (
 \r
   PeiFvInitialization ();\r
 \r
 \r
   PeiFvInitialization ();\r
 \r
-  if (mXen) {\r
-    XenMemMapInitialization ();\r
-  } else {\r
-    MemMapInitialization (TopOfMemory);\r
-  }\r
+  MemMapInitialization ();\r
 \r
   MiscInitialization ();\r
 \r
 \r
   MiscInitialization ();\r
 \r
index fa1a4bfe363984bbbee88db9ccec74a680e7b24d..48996ab7ff540b555bee958e1b349cfc90a513c2 100644 (file)
@@ -64,6 +64,11 @@ PublishPeiMemory (
   VOID\r
   );\r
 \r
   VOID\r
   );\r
 \r
+UINT32\r
+GetSystemMemorySizeBelow4gb (\r
+  VOID\r
+  );\r
+\r
 EFI_PHYSICAL_ADDRESS\r
 MemDetect (\r
   VOID\r
 EFI_PHYSICAL_ADDRESS\r
 MemDetect (\r
   VOID\r