Boot mode maybe changed at any point during the PEI phase, therefore, boot
mode should be checked later rather at entry point.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a...@intel.com>
Reviewed-by: Liming Gao <liming....@intel.com>
---
 .../FirmwarePerformancePei.c                       | 78 ++++++++++------------
 1 file changed, 36 insertions(+), 42 deletions(-)

diff --git 
a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.c
 
b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.c
index 70592cb..396462e 100644
--- 
a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.c
+++ 
b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.c
@@ -7,7 +7,7 @@
   This module register report status code listener to collect performance data
   for S3 Resume Performance Record on S3 resume boot path.
 
-  Copyright (c) 2011 - 2013, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.<BR>
   This program and the accompanying materials
   are licensed and made available under the terms and conditions of the BSD 
License
   which accompanies this distribution.  The full text of the license may be 
found at
@@ -156,57 +156,51 @@ FirmwarePerformancePeiEntryPoint (
   )
 {
   EFI_STATUS               Status;
-  EFI_BOOT_MODE            BootMode;
   EFI_PEI_RSC_HANDLER_PPI  *RscHandler;
   PEI_SEC_PERFORMANCE_PPI  *SecPerf;
   FIRMWARE_SEC_PERFORMANCE Performance;
 
-  Status = PeiServicesGetBootMode(&BootMode);
-  ASSERT_EFI_ERROR (Status);
-
-  if (BootMode == BOOT_ON_S3_RESUME) {
-    if (FeaturePcdGet (PcdFirmwarePerformanceDataTableS3Support)) {
-      //
-      // S3 resume - register status code listener for OS wake vector.
-      //
-      Status = PeiServicesLocatePpi (
-                 &gEfiPeiRscHandlerPpiGuid,
-                 0,
-                 NULL,
-                 (VOID **) &RscHandler
-                 );
-      ASSERT_EFI_ERROR (Status);
-
-      Status = RscHandler->Register (FpdtStatusCodeListenerPei);
-      ASSERT_EFI_ERROR (Status);
-    }
-  } else {
+  if (FeaturePcdGet (PcdFirmwarePerformanceDataTableS3Support)) {
     //
-    // Normal boot - build Hob for SEC performance data.
+    // S3 resume - register status code listener for OS wake vector.
     //
     Status = PeiServicesLocatePpi (
-               &gPeiSecPerformancePpiGuid,
+               &gEfiPeiRscHandlerPpiGuid,
                0,
                NULL,
-               (VOID **) &SecPerf
+               (VOID **) &RscHandler
                );
-    if (!EFI_ERROR (Status)) {
-      Status = SecPerf->GetPerformance (PeiServices, SecPerf, &Performance);
-    }
-    if (!EFI_ERROR (Status)) {
-      BuildGuidDataHob (
-        &gEfiFirmwarePerformanceGuid,
-        &Performance,
-        sizeof (FIRMWARE_SEC_PERFORMANCE)
-      );
-      DEBUG ((EFI_D_INFO, "FPDT: SEC Performance Hob ResetEnd = %ld\n", 
Performance.ResetEnd));
-    } else {
-      //
-      // SEC performance PPI is not installed or fail to get performance data
-      // from SEC Performance PPI.
-      //
-      DEBUG ((EFI_D_ERROR, "FPDT: WARNING: SEC Performance PPI not installed 
or failed!\n"));
-    }
+    ASSERT_EFI_ERROR (Status);
+
+    Status = RscHandler->Register (FpdtStatusCodeListenerPei);
+    ASSERT_EFI_ERROR (Status);
+  }
+
+  //
+  // Normal boot - build Hob for SEC performance data.
+  //
+  Status = PeiServicesLocatePpi (
+             &gPeiSecPerformancePpiGuid,
+             0,
+             NULL,
+             (VOID **) &SecPerf
+             );
+  if (!EFI_ERROR (Status)) {
+    Status = SecPerf->GetPerformance (PeiServices, SecPerf, &Performance);
+  }
+  if (!EFI_ERROR (Status)) {
+    BuildGuidDataHob (
+      &gEfiFirmwarePerformanceGuid,
+      &Performance,
+      sizeof (FIRMWARE_SEC_PERFORMANCE)
+    );
+    DEBUG ((EFI_D_INFO, "FPDT: SEC Performance Hob ResetEnd = %ld\n", 
Performance.ResetEnd));
+  } else {
+    //
+    // SEC performance PPI is not installed or fail to get performance data
+    // from SEC Performance PPI.
+    //
+    DEBUG ((EFI_D_ERROR, "FPDT: WARNING: SEC Performance PPI not installed or 
failed!\n"));
   }
 
   return EFI_SUCCESS;
-- 
1.9.5.msysgit.0



------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to