1. Bug fix for "EDK GenericBds WriteBootToOsPerformanceData() uses AcpiReclaimMemory";
[mirror_edk2.git] / EdkNt32Pkg / Library / EdkGenericBdsLib / Performance.c
index c7b6bc9d5d609ba96d176732cdd4c132cfdd7a11..80b98563f067bba215341e813da49b31d6c02ce0 100644 (file)
@@ -232,9 +232,10 @@ Returns:
   //\r
   // Allocate a block of memory that contain performance data to OS\r
   //\r
+  mAcpiLowMemoryBase = 0xFFFFFFFF;\r
   Status = gBS->AllocatePages (\r
-                  AllocateAnyPages,\r
-                  EfiACPIReclaimMemory,\r
+                  AllocateMaxAddress,\r
+                  EfiReservedMemoryType,\r
                   4,\r
                   &mAcpiLowMemoryBase\r
                   );\r
@@ -242,7 +243,7 @@ Returns:
     return ;\r
   }\r
 \r
-  mAcpiLowMemoryLength  = 0x1000;\r
+  mAcpiLowMemoryLength  = EFI_PAGES_TO_SIZE(4);\r
 \r
   Ptr                   = (UINT8 *) ((UINT32) mAcpiLowMemoryBase + sizeof (PERF_HEADER));\r
   LimitCount            = (mAcpiLowMemoryLength - sizeof (PERF_HEADER)) / sizeof (PERF_DATA);\r
@@ -261,7 +262,7 @@ Returns:
                   &Cpu\r
                   );\r
   if (EFI_ERROR (Status)) {\r
-    gBS->FreePages (mAcpiLowMemoryBase, 1);\r
+    gBS->FreePages (mAcpiLowMemoryBase, 4);\r
     return ;\r
   }\r
   //\r
@@ -269,7 +270,7 @@ Returns:
   //\r
   Status = Cpu->GetTimerValue (Cpu, 0, &(CurrentTicker), &TimerPeriod);\r
   if (EFI_ERROR (Status)) {\r
-    gBS->FreePages (mAcpiLowMemoryBase, 1);\r
+    gBS->FreePages (mAcpiLowMemoryBase, 4);\r
     return ;\r
   }\r
 \r
@@ -294,7 +295,7 @@ Returns:
                   &Handles\r
                   );\r
   if (EFI_ERROR (Status)) {\r
-    gBS->FreePages (mAcpiLowMemoryBase, 1);\r
+    gBS->FreePages (mAcpiLowMemoryBase, 4);\r
     return ;\r
   }\r
   //\r