]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/CpuS3DataDxe/CpuS3Data.c
UefiCpuPkg/CpuS3DataDxe: Change Memory Type and address limitation.
[mirror_edk2.git] / UefiCpuPkg / CpuS3DataDxe / CpuS3Data.c
index dccb406b8d2cde5470500a0c84219fa428669628..3e8c8b383c9d08f1ed1804ec1d9a9b80e2a723a1 100644 (file)
@@ -31,6 +31,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/UefiBootServicesTableLib.h>\r
 #include <Library/DebugLib.h>\r
 #include <Library/MtrrLib.h>\r
+#include <Library/MemoryAllocationLib.h>\r
 \r
 #include <Protocol/MpService.h>\r
 #include <Guid/EventGroup.h>\r
@@ -81,6 +82,28 @@ AllocateAcpiNvsMemoryBelow4G (
   return Buffer;\r
 }\r
 \r
+/**\r
+  Allocate memory and clean it with zero.\r
+\r
+  @param[in] Size   Size of memory to allocate.\r
+\r
+  @return       Allocated address for output.\r
+\r
+**/\r
+VOID *\r
+AllocateZeroPages (\r
+  IN UINTN  Size\r
+  )\r
+{\r
+  VOID                  *Buffer;\r
+\r
+  Buffer = AllocatePages (EFI_SIZE_TO_PAGES (Size));\r
+  if (Buffer != NULL) {\r
+    ZeroMem (Buffer, Size);\r
+  }\r
+\r
+  return Buffer;\r
+}\r
 /**\r
   Callback function executed when the EndOfDxe event group is signaled.\r
 \r
@@ -171,10 +194,7 @@ CpuS3DataInitialize (
   //\r
   OldAcpiCpuData = (ACPI_CPU_DATA *) (UINTN) PcdGet64 (PcdCpuS3DataAddress);\r
 \r
-  //\r
-  // Allocate ACPI NVS memory below 4G memory for use on ACPI S3 resume.\r
-  //\r
-  AcpiCpuDataEx = AllocateAcpiNvsMemoryBelow4G (sizeof (ACPI_CPU_DATA_EX));\r
+  AcpiCpuDataEx = AllocateZeroPages (sizeof (ACPI_CPU_DATA_EX));\r
   ASSERT (AcpiCpuDataEx != NULL);\r
   AcpiCpuData = &AcpiCpuDataEx->AcpiCpuData;\r
 \r
@@ -223,11 +243,11 @@ CpuS3DataInitialize (
   AsmReadIdtr (&AcpiCpuDataEx->IdtrProfile);\r
 \r
   //\r
-  // Allocate GDT and IDT in ACPI NVS and copy current GDT and IDT contents\r
+  // Allocate GDT and IDT and copy current GDT and IDT contents\r
   //\r
   GdtSize = AcpiCpuDataEx->GdtrProfile.Limit + 1;\r
   IdtSize = AcpiCpuDataEx->IdtrProfile.Limit + 1;\r
-  Gdt = AllocateAcpiNvsMemoryBelow4G (GdtSize + IdtSize);\r
+  Gdt = AllocateZeroPages (GdtSize + IdtSize);\r
   ASSERT (Gdt != NULL);\r
   Idt = (VOID *)((UINTN)Gdt + GdtSize);\r
   CopyMem (Gdt, (VOID *)AcpiCpuDataEx->GdtrProfile.Base, GdtSize);\r
@@ -243,7 +263,7 @@ CpuS3DataInitialize (
     // Allocate buffer for empty RegisterTable and PreSmmInitRegisterTable for all CPUs\r
     //\r
     TableSize = 2 * NumberOfCpus * sizeof (CPU_REGISTER_TABLE);\r
-    RegisterTable = (CPU_REGISTER_TABLE *)AllocateAcpiNvsMemoryBelow4G (TableSize);\r
+    RegisterTable = (CPU_REGISTER_TABLE *)AllocateZeroPages (TableSize);\r
     ASSERT (RegisterTable != NULL);\r
 \r
     for (Index = 0; Index < NumberOfCpus; Index++) {\r