public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH v2 0/7] Remove the useless pref codes
@ 2018-02-09  8:05 Dandan Bi
  2018-02-09  8:05 ` [PATCH v2 1/7] MdeModulePkg/Performance.h: Remove the useless definition Dandan Bi
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Dandan Bi @ 2018-02-09  8:05 UTC (permalink / raw)
  To: edk2-devel
  Cc: Star Zeng, Liming Gao, Ruiyu Ni, Eric Dong, Laszlo Ersek,
	David Wei, Mang Guo

V2:
a. Remove defintions related to old perf code and clean all
useless perf codes in edk2 code base.
b.Update commit message.

Our new performance infrastructure (edk2 trunk commit hash value:
SHA-1: 73fef64f14d1b97ae9bd4705df3becc022391eba ~
SHA-1: 115eae650bfd2be2c2bc37360f4a755065e774c4) can support to
dump performance date form ACPI table in OS. So we can remove the
old pref code to write performance data to OS and related definitions.

Cc: Star Zeng <star.zeng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: David Wei <david.wei@intel.com>
Cc: Mang Guo <mang.guo@intel.com>
Dandan Bi (7):
  MdeModulePkg/Performance.h: Remove the useless definition
  UefiCpuPkg/S3Resume: Remove useless pref code
  MdeModulePkg/BdsDxe: Remove useless Pref Code
  MdeModulePkg/UefiBootManagerLib: Remove the useless pref codes
  IntelFrameworkModulePkg/BdsDxe: Remove the useless Perf codes
  IntelFrameworkModulePkg/GenericBdsLib: Remove the useless Perf codes
  Vlv2TbltDevicePkg/Override/GenericBdsLib:Remove useless Perf code

 .../Library/GenericBdsLib/BdsBoot.c                |  29 +-
 .../Library/GenericBdsLib/GenericBdsLib.inf        |   4 +-
 .../Library/GenericBdsLib/InternalBdsLib.h         |  19 +-
 .../Library/GenericBdsLib/Performance.c            | 313 ------------------
 IntelFrameworkModulePkg/Universal/BdsDxe/Bds.h     |   3 +-
 .../Universal/BdsDxe/BdsDxe.inf                    |   3 +-
 .../Universal/BdsDxe/BdsEntry.c                    |  57 +---
 MdeModulePkg/Include/Guid/Performance.h            |  27 +-
 MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c   |  27 +-
 .../Library/UefiBootManagerLib/BmPerformance.c     | 317 ------------------
 .../Library/UefiBootManagerLib/InternalBm.h        |  17 -
 .../UefiBootManagerLib/UefiBootManagerLib.inf      |   4 +-
 MdeModulePkg/Universal/BdsDxe/Bds.h                |   3 +-
 MdeModulePkg/Universal/BdsDxe/BdsDxe.inf           |   3 +-
 MdeModulePkg/Universal/BdsDxe/BdsEntry.c           |  57 +---
 UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c  | 131 --------
 .../Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf   |   3 +-
 .../Library/GenericBdsLib/BdsBoot.c                |  29 +-
 .../Library/GenericBdsLib/GenericBdsLib.inf        |   4 +-
 .../Library/GenericBdsLib/InternalBdsLib.h         |  19 +-
 .../Library/GenericBdsLib/Performance.c            | 358 ---------------------
 21 files changed, 90 insertions(+), 1337 deletions(-)
 delete mode 100644 IntelFrameworkModulePkg/Library/GenericBdsLib/Performance.c
 delete mode 100644 MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c
 delete mode 100644 Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/Performance.c

-- 
1.9.5.msysgit.1



^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v2 1/7] MdeModulePkg/Performance.h: Remove the useless definition
  2018-02-09  8:05 [PATCH v2 0/7] Remove the useless pref codes Dandan Bi
@ 2018-02-09  8:05 ` Dandan Bi
  2018-02-09  8:05 ` [PATCH v2 2/7] UefiCpuPkg/S3Resume: Remove useless pref code Dandan Bi
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Dandan Bi @ 2018-02-09  8:05 UTC (permalink / raw)
  To: edk2-devel; +Cc: Star Zeng, Liming Gao

Remove the definitions related to old perf codes.

Cc: Star Zeng <star.zeng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
---
 MdeModulePkg/Include/Guid/Performance.h | 27 +--------------------------
 1 file changed, 1 insertion(+), 26 deletions(-)

diff --git a/MdeModulePkg/Include/Guid/Performance.h b/MdeModulePkg/Include/Guid/Performance.h
index df40c6c..6e21ed0 100644
--- a/MdeModulePkg/Include/Guid/Performance.h
+++ b/MdeModulePkg/Include/Guid/Performance.h
@@ -2,11 +2,11 @@
   This file defines performance-related definitions, including the format of:
   * performance GUID HOB.
   * performance protocol interfaces.
   * performance variables.  
 
-Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2009 - 2018, 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 that accompanies this distribution.  
 The full text of the license may be found at
 http://opensource.org/licenses/bsd-license.php.                                            
 
@@ -49,35 +49,10 @@ typedef struct {
   UINT32                NumberOfEntries;  ///< The number of all performance log entries.
   UINT32                Reserved;
 } PEI_PERFORMANCE_LOG_HEADER;
 
 
-//
-// The data structure for performance data in ACPI memory.
-//
-#define PERFORMANCE_SIGNATURE   SIGNATURE_32 ('P', 'e', 'r', 'f')
-#define PERF_TOKEN_SIZE         28
-#define PERF_TOKEN_LENGTH       (PERF_TOKEN_SIZE - 1)
-#define PERF_PEI_ENTRY_MAX_NUM  50
-#define PERF_DATA_MAX_LENGTH    0x4000
-
-typedef struct {
-  CHAR8   Token[PERF_TOKEN_SIZE];
-  UINT32  Duration;
-} PERF_DATA;
-
-typedef struct {
-  UINT64        BootToOs;
-  UINT64        S3Resume;
-  UINT32        S3EntryNum;
-  PERF_DATA     S3Entry[PERF_PEI_ENTRY_MAX_NUM];
-  UINT64        CpuFreq;
-  UINT64        BDSRaw;
-  UINT32        Count;
-  UINT32        Signiture;
-} PERF_HEADER;
-
 #define PERFORMANCE_PROTOCOL_GUID \
   { 0x76b6bdfa, 0x2acd, 0x4462, { 0x9E, 0x3F, 0xcb, 0x58, 0xC9, 0x69, 0xd9, 0x37 } }
 
 #define PERFORMANCE_EX_PROTOCOL_GUID \
   { 0x1ea81bec, 0xf01a, 0x4d98, { 0xa2, 0x1,  0x4a, 0x61, 0xce, 0x2f, 0xc0, 0x22 } }
-- 
1.9.5.msysgit.1



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v2 2/7] UefiCpuPkg/S3Resume: Remove useless pref code
  2018-02-09  8:05 [PATCH v2 0/7] Remove the useless pref codes Dandan Bi
  2018-02-09  8:05 ` [PATCH v2 1/7] MdeModulePkg/Performance.h: Remove the useless definition Dandan Bi
@ 2018-02-09  8:05 ` Dandan Bi
  2018-02-09  8:05 ` [PATCH v2 3/7] MdeModulePkg/BdsDxe: Remove useless Pref Code Dandan Bi
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Dandan Bi @ 2018-02-09  8:05 UTC (permalink / raw)
  To: edk2-devel; +Cc: Eric Dong, Laszlo Ersek, Liming Gao

V2: Just update the commit message to reference the hash value of
new new performance infrastructure.

Our new performance infrastructure (edk2 trunk commit hash value:
SHA-1: 73fef64f14d1b97ae9bd4705df3becc022391eba ~
SHA-1: 115eae650bfd2be2c2bc37360f4a755065e774c4)can support to
dump performance date form ACPI table in OS. So we can remove
the old pref code to write performance data to OS.

Cc: Eric Dong <eric.dong@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
---
 UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c  | 131 ---------------------
 .../Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf   |   3 +-
 2 files changed, 1 insertion(+), 133 deletions(-)

diff --git a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c b/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c
index d7d2a4d..4d77689 100644
--- a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c
+++ b/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c
@@ -20,11 +20,10 @@
 
 #include <PiPei.h>
 
 #include <Guid/AcpiS3Context.h>
 #include <Guid/BootScriptExecutorVariable.h>
-#include <Guid/Performance.h>
 #include <Guid/ExtendedFirmwarePerformance.h>
 #include <Guid/EndOfS3Resume.h>
 #include <Ppi/ReadOnlyVariable2.h>
 #include <Ppi/S3Resume2.h>
 #include <Ppi/SmmAccess.h>
@@ -284,136 +283,10 @@ GLOBAL_REMOVE_IF_UNREFERENCED IA32_GDT mGdtEntries[] = {
 GLOBAL_REMOVE_IF_UNREFERENCED CONST IA32_DESCRIPTOR mGdt = {
   sizeof (mGdtEntries) - 1,
   (UINTN) mGdtEntries
   };
 
-/**
-  Performance measure function to get S3 detailed performance data.
-
-  This function will getS3 detailed performance data and saved in pre-reserved ACPI memory.
-**/
-VOID
-WriteToOsS3PerformanceData (
-  VOID
-  )
-{
-  EFI_STATUS                                    Status;
-  EFI_PHYSICAL_ADDRESS                          mAcpiLowMemoryBase;
-  PERF_HEADER                                   *PerfHeader;
-  PERF_DATA                                     *PerfData;
-  UINT64                                        Ticker;
-  UINTN                                         Index;
-  EFI_PEI_READ_ONLY_VARIABLE2_PPI               *VariableServices;
-  UINTN                                         VarSize;
-  UINTN                                         LogEntryKey;
-  CONST VOID                                    *Handle;
-  CONST CHAR8                                   *Token;
-  CONST CHAR8                                   *Module;
-  UINT64                                        StartTicker;
-  UINT64                                        EndTicker;
-  UINT64                                        StartValue;
-  UINT64                                        EndValue;
-  BOOLEAN                                       CountUp;
-  UINT64                                        Freq;
-
-  //
-  // Retrieve time stamp count as early as possible
-  //
-  Ticker = GetPerformanceCounter ();
-
-  Freq   = GetPerformanceCounterProperties (&StartValue, &EndValue);
-
-  Freq   = DivU64x32 (Freq, 1000);
-
-  Status = PeiServicesLocatePpi (
-             &gEfiPeiReadOnlyVariable2PpiGuid,
-             0,
-             NULL,
-             (VOID **) &VariableServices
-             );
-  if (EFI_ERROR (Status)) {
-    return;
-  }
-
-  VarSize   = sizeof (EFI_PHYSICAL_ADDRESS);
-  Status = VariableServices->GetVariable (
-                               VariableServices,
-                               L"PerfDataMemAddr",
-                               &gPerformanceProtocolGuid,
-                               NULL,
-                               &VarSize,
-                               &mAcpiLowMemoryBase
-                               );
-  if (EFI_ERROR (Status)) {
-    DEBUG ((EFI_D_ERROR, "Fail to retrieve variable to log S3 performance data \n"));
-    return;
-  }
-
-  PerfHeader = (PERF_HEADER *) (UINTN) mAcpiLowMemoryBase;
-
-  if (PerfHeader->Signiture != PERFORMANCE_SIGNATURE) {
-    DEBUG ((EFI_D_ERROR, "Performance data in ACPI memory get corrupted! \n"));
-    return;
-  }
-
-  //
-  // Record total S3 resume time.
-  //
-  if (EndValue >= StartValue) {
-    PerfHeader->S3Resume = Ticker - StartValue;
-    CountUp              = TRUE;
-  } else {
-    PerfHeader->S3Resume = StartValue - Ticker;
-    CountUp              = FALSE;
-  }
-
-  //
-  // Get S3 detailed performance data
-  //
-  Index = 0;
-  LogEntryKey = 0;
-  while ((LogEntryKey = GetPerformanceMeasurement (
-                          LogEntryKey,
-                          &Handle,
-                          &Token,
-                          &Module,
-                          &StartTicker,
-                          &EndTicker)) != 0) {
-    if (EndTicker != 0) {
-      PerfData = &PerfHeader->S3Entry[Index];
-
-      //
-      // Use File Handle to specify the different performance log for PEIM.
-      // File Handle is the base address of PEIM FFS file.
-      //
-      if ((AsciiStrnCmp (Token, "PEIM", PEI_PERFORMANCE_STRING_SIZE) == 0) && (Handle != NULL)) {
-        AsciiSPrint (PerfData->Token, PERF_TOKEN_LENGTH, "0x%11p", Handle);
-      } else {
-        AsciiStrnCpyS (PerfData->Token, PERF_TOKEN_SIZE, Token, PERF_TOKEN_LENGTH);
-      }
-      if (StartTicker == 1) {
-        StartTicker = StartValue;
-      }
-      if (EndTicker == 1) {
-        EndTicker = StartValue;
-      }
-      Ticker = CountUp? (EndTicker - StartTicker) : (StartTicker - EndTicker);
-      PerfData->Duration = (UINT32) DivU64x32 (Ticker, (UINT32) Freq);
-
-      //
-      // Only Record > 1ms performance data so that more big performance can be recorded.
-      //
-      if ((Ticker > Freq) && (++Index >= PERF_PEI_ENTRY_MAX_NUM)) {
-        //
-        // Reach the maximum number of PEI performance log entries.
-        //
-        break;
-      }
-    }
-  }
-  PerfHeader->S3EntryNum = (UINT32) Index;
-}
 
 /**
   The function will check if current waking vector is long mode.
 
   @param  AcpiS3Context                 a pointer to a structure of ACPI_S3_CONTEXT
@@ -602,14 +475,10 @@ S3ResumeBootOs (
   //
   // report status code on S3 resume
   //
   REPORT_STATUS_CODE (EFI_PROGRESS_CODE, EFI_SOFTWARE_PEI_MODULE | EFI_SW_PEI_PC_OS_WAKE);
 
-  PERF_CODE (
-    WriteToOsS3PerformanceData ();
-    );
-
   AsmTransferControl = (ASM_TRANSFER_CONTROL)(UINTN)PeiS3ResumeState->AsmTransferControl;
   if (Facs->XFirmwareWakingVector != 0) {
     //
     // Switch to native waking vector
     //
diff --git a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf b/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
index 15fa2d1..9522ede 100644
--- a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
+++ b/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
@@ -3,11 +3,11 @@
 #
 # This module works with StandAloneBootScriptExecutor to S3 resume to OS.
 # This module will excute the boot script saved during last boot and after that,
 # control is passed to OS waking up handler.
 #
-# Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
 # Copyright (c) 2017, AMD Incorporated. 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
@@ -71,11 +71,10 @@
   PrintLib
 
 [Guids]
   gEfiBootScriptExecutorVariableGuid            ## SOMETIMES_CONSUMES ## UNDEFINED # LockBox
   gEfiBootScriptExecutorContextGuid             ## SOMETIMES_CONSUMES ## UNDEFINED # LockBox
-  gPerformanceProtocolGuid                      ## SOMETIMES_CONSUMES ## Variable:L"PerfDataMemAddr"
   ## SOMETIMES_CONSUMES ## HOB
   ## SOMETIMES_CONSUMES ## UNDEFINED # LockBox
   gEfiAcpiVariableGuid
   gEfiAcpiS3ContextGuid                         ## SOMETIMES_CONSUMES ## UNDEFINED # LockBox
   gEdkiiEndOfS3ResumeGuid                       ## SOMETIMES_CONSUMES ## UNDEFINED # Used to do smm communication
-- 
1.9.5.msysgit.1



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v2 3/7] MdeModulePkg/BdsDxe: Remove useless Pref Code
  2018-02-09  8:05 [PATCH v2 0/7] Remove the useless pref codes Dandan Bi
  2018-02-09  8:05 ` [PATCH v2 1/7] MdeModulePkg/Performance.h: Remove the useless definition Dandan Bi
  2018-02-09  8:05 ` [PATCH v2 2/7] UefiCpuPkg/S3Resume: Remove useless pref code Dandan Bi
@ 2018-02-09  8:05 ` Dandan Bi
  2018-02-09  8:05 ` [PATCH v2 4/7] MdeModulePkg/UefiBootManagerLib: Remove the useless pref codes Dandan Bi
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Dandan Bi @ 2018-02-09  8:05 UTC (permalink / raw)
  To: edk2-devel; +Cc: Liming Gao, Ruiyu Ni, Star Zeng

V2: Just update the commit message to reference the hash value of
new new performance infrastructure.

Our new performance infrastructure (edk2 trunk commit hash value:
SHA-1: 73fef64f14d1b97ae9bd4705df3becc022391eba ~
SHA-1: 115eae650bfd2be2c2bc37360f4a755065e774c4) can support to
dump performance date form ACPI table in OS. So we can remove
the old pref code to write performance data to OS.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
---
 MdeModulePkg/Universal/BdsDxe/Bds.h      |  3 +-
 MdeModulePkg/Universal/BdsDxe/BdsDxe.inf |  3 +-
 MdeModulePkg/Universal/BdsDxe/BdsEntry.c | 57 +-------------------------------
 3 files changed, 3 insertions(+), 60 deletions(-)

diff --git a/MdeModulePkg/Universal/BdsDxe/Bds.h b/MdeModulePkg/Universal/BdsDxe/Bds.h
index 5658e61..63d961f 100644
--- a/MdeModulePkg/Universal/BdsDxe/Bds.h
+++ b/MdeModulePkg/Universal/BdsDxe/Bds.h
@@ -1,9 +1,9 @@
 /** @file
   Head file for BDS Architectural Protocol implementation
 
-Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2018, 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
 http://opensource.org/licenses/bsd-license.php
 
@@ -16,11 +16,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define _BDS_MODULE_H_
 
 #include <Uefi.h>
 #include <Guid/GlobalVariable.h>
 #include <Guid/ConnectConInEvent.h>
-#include <Guid/Performance.h>
 #include <Guid/StatusCodeDataTypeVariable.h>
 #include <Guid/EventGroup.h>
 
 #include <Protocol/Bds.h>
 #include <Protocol/LoadedImage.h>
diff --git a/MdeModulePkg/Universal/BdsDxe/BdsDxe.inf b/MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
index a00b442..b8c5aa9 100644
--- a/MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
+++ b/MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
@@ -3,11 +3,11 @@
 #
 #  When DxeCore dispatching all DXE driver, this module will produce architecture protocol 
 #  gEfiBdsArchProtocolGuid. After DxeCore finish dispatching, DxeCore will invoke Entry
 #  interface of protocol gEfiBdsArchProtocolGuid, then BDS phase is entered.
 #  
-#  Copyright (c) 2008 - 2016, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2008 - 2018, 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
 #  http://opensource.org/licenses/bsd-license.php
 #
@@ -76,11 +76,10 @@
                                                 ## SOMETIMES_CONSUMES ## Variable:L"ConIn" (The device path of console in device)
                                                 ## SOMETIMES_CONSUMES ## Variable:L"ConOut" (The device path of console out device)
                                                 ## SOMETIMES_CONSUMES ## Variable:L"ErrOut" (The device path of error out device)
   gConnectConInEventGuid                        ## SOMETIMES_CONSUMES ## Event
   gEdkiiStatusCodeDataTypeVariableGuid          ## SOMETIMES_CONSUMES ## GUID
-  gPerformanceProtocolGuid                      ## SOMETIMES_PRODUCES ## Variable:L"PerfDataMemAddr" (The ACPI address of performance data)
   gEfiEventReadyToBootGuid                      ## CONSUMES           ## Event
 
 [Protocols]
   gEfiBdsArchProtocolGuid                       ## PRODUCES
   gEfiSimpleTextInputExProtocolGuid             ## CONSUMES
diff --git a/MdeModulePkg/Universal/BdsDxe/BdsEntry.c b/MdeModulePkg/Universal/BdsDxe/BdsEntry.c
index 2b24755..3191a98 100644
--- a/MdeModulePkg/Universal/BdsDxe/BdsEntry.c
+++ b/MdeModulePkg/Universal/BdsDxe/BdsEntry.c
@@ -3,11 +3,11 @@
   When this module was dispatched by DxeCore, gEfiBdsArchProtocolGuid will be installed
   which contains interface of BdsEntry.
   After DxeCore finish DXE phase, gEfiBdsArchProtocolGuid->BdsEntry will be invoked
   to enter BDS phase.
 
-Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
 (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<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
@@ -633,61 +633,10 @@ BdsFormalizeEfiGlobalVariable (
   //
   BdsFormalizeOSIndicationVariable ();
 }
 
 /**
-
-  Allocate a block of memory that will contain performance data to OS.
-
-**/
-VOID
-BdsAllocateMemoryForPerformanceData (
-  VOID
-  )
-{
-  EFI_STATUS                    Status;
-  EFI_PHYSICAL_ADDRESS          AcpiLowMemoryBase;
-  EDKII_VARIABLE_LOCK_PROTOCOL  *VariableLock;
-
-  AcpiLowMemoryBase = 0x0FFFFFFFFULL;
-
-  //
-  // Allocate a block of memory that will contain performance data to OS.
-  //
-  Status = gBS->AllocatePages (
-                  AllocateMaxAddress,
-                  EfiReservedMemoryType,
-                  EFI_SIZE_TO_PAGES (PERF_DATA_MAX_LENGTH),
-                  &AcpiLowMemoryBase
-                  );
-  if (!EFI_ERROR (Status)) {
-    //
-    // Save the pointer to variable for use in S3 resume.
-    //
-    Status = BdsDxeSetVariableAndReportStatusCodeOnError (
-               L"PerfDataMemAddr",
-               &gPerformanceProtocolGuid,
-               EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
-               sizeof (EFI_PHYSICAL_ADDRESS),
-               &AcpiLowMemoryBase
-               );
-    if (EFI_ERROR (Status)) {
-      DEBUG ((EFI_D_ERROR, "[Bds] PerfDataMemAddr (%08x) cannot be saved to NV storage.\n", AcpiLowMemoryBase));
-    }
-    //
-    // Mark L"PerfDataMemAddr" variable to read-only if the Variable Lock protocol exists
-    // Still lock it even the variable cannot be saved to prevent it's set by 3rd party code.
-    //
-    Status = gBS->LocateProtocol (&gEdkiiVariableLockProtocolGuid, NULL, (VOID **) &VariableLock);
-    if (!EFI_ERROR (Status)) {
-      Status = VariableLock->RequestToLock (VariableLock, L"PerfDataMemAddr", &gPerformanceProtocolGuid);
-      ASSERT_EFI_ERROR (Status);
-    }
-  }
-}
-
-/**
   Enter an infinite loop of calling the Boot Manager Menu.
 
   This is a last resort alternative to BdsEntry() giving up for good. This
   function never returns.
 
@@ -778,14 +727,10 @@ BdsEntry (
   //
   PERF_END (NULL, "DXE", NULL, 0);
   PERF_START (NULL, "BDS", NULL, 0);
   DEBUG ((EFI_D_INFO, "[Bds] Entry...\n"));
 
-  PERF_CODE (
-    BdsAllocateMemoryForPerformanceData ();
-  );
-
   //
   // Fill in FirmwareVendor and FirmwareRevision from PCDs
   //
   FirmwareVendor = (CHAR16 *) PcdGetPtr (PcdFirmwareVendor);
   gST->FirmwareVendor = AllocateRuntimeCopyPool (StrSize (FirmwareVendor), FirmwareVendor);
-- 
1.9.5.msysgit.1



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v2 4/7] MdeModulePkg/UefiBootManagerLib: Remove the useless pref codes
  2018-02-09  8:05 [PATCH v2 0/7] Remove the useless pref codes Dandan Bi
                   ` (2 preceding siblings ...)
  2018-02-09  8:05 ` [PATCH v2 3/7] MdeModulePkg/BdsDxe: Remove useless Pref Code Dandan Bi
@ 2018-02-09  8:05 ` Dandan Bi
  2018-02-09  8:05 ` [PATCH v2 5/7] IntelFrameworkModulePkg/BdsDxe: Remove the useless Perf codes Dandan Bi
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Dandan Bi @ 2018-02-09  8:05 UTC (permalink / raw)
  To: edk2-devel; +Cc: Liming Gao, Ruiyu Ni, Star Zeng

V2: Just update the commit message to reference the hash value of
new new performance infrastructure.

Our new performance infrastructure (edk2 trunk commit hash value:
SHA-1: 73fef64f14d1b97ae9bd4705df3becc022391eba ~
SHA-1: 115eae650bfd2be2c2bc37360f4a755065e774c4) can support to
dump performance date form ACPI table in OS. So we can remove
the old pref code to write performance data to OS.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
---
 MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c   |  27 +-
 .../Library/UefiBootManagerLib/BmPerformance.c     | 317 ---------------------
 .../Library/UefiBootManagerLib/InternalBm.h        |  17 --
 .../UefiBootManagerLib/UefiBootManagerLib.inf      |   4 +-
 4 files changed, 26 insertions(+), 339 deletions(-)
 delete mode 100644 MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c

diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
index 6404233..ce19ae4 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
+++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
@@ -26,10 +26,33 @@ EFI_BOOT_MANAGER_LEGACY_BOOT                 mBmLegacyBoot              = NULL;
 ///
 EFI_GUID mBmHardDriveBootVariableGuid = { 0xfab7e9e1, 0x39dd, 0x4f2b, { 0x84, 0x08, 0xe2, 0x0e, 0x90, 0x6c, 0xb6, 0xde } };
 EFI_GUID mBmAutoCreateBootOptionGuid  = { 0x8108ac4e, 0x9f11, 0x4d59, { 0x85, 0x0e, 0xe2, 0x1a, 0x52, 0x2c, 0x59, 0xb2 } };
 
 /**
+
+  End Perf entry of BDS
+
+  @param  Event                 The triggered event.
+  @param  Context               Context for this event.
+
+**/
+VOID
+EFIAPI
+BmEndOfBdsPerfCode (
+  IN EFI_EVENT  Event,
+  IN VOID       *Context
+  )
+{
+  //
+  // Record the performance data for End of BDS
+  //
+  PERF_END(NULL, "BDS", NULL, 0);
+
+  return ;
+}
+
+/**
   The function registers the legacy boot support capabilities.
 
   @param RefreshLegacyBootOption The function pointer to create all the legacy boot options.
   @param LegacyBoot              The function pointer to boot the legacy boot option.
 **/
@@ -1828,11 +1851,11 @@ EfiBootManagerBoot (
         //
         // Create an event to be signalled when Legacy Boot occurs to write performance data.
         //
         Status = EfiCreateEventLegacyBootEx(
                    TPL_NOTIFY,
-                   BmWriteBootToOsPerformanceData,
+                   BmEndOfBdsPerfCode,
                    NULL, 
                    &LegacyBootEvent
                    );
         ASSERT_EFI_ERROR (Status);
       );
@@ -1869,11 +1892,11 @@ EfiBootManagerBoot (
 
   //
   // Write boot to OS performance data for UEFI boot
   //
   PERF_CODE (
-    BmWriteBootToOsPerformanceData (NULL, NULL);
+    BmEndOfBdsPerfCode (NULL, NULL);
   );
 
   REPORT_STATUS_CODE (EFI_PROGRESS_CODE, PcdGet32 (PcdProgressCodeOsLoaderStart));
 
   Status = gBS->StartImage (ImageHandle, &BootOption->ExitDataSize, &BootOption->ExitData);
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c b/MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c
deleted file mode 100644
index 4d4495b..0000000
--- a/MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c
+++ /dev/null
@@ -1,317 +0,0 @@
-/** @file
-  This file include the file which can help to get the system
-  performance, all the function will only include if the performance
-  switch is set.
-
-Copyright (c) 2004 - 2017, 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
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include "InternalBm.h"
-
-PERF_HEADER               mBmPerfHeader;
-PERF_DATA                 mBmPerfData;
-EFI_PHYSICAL_ADDRESS      mBmAcpiLowMemoryBase = 0x0FFFFFFFFULL;
-
-/**
-  Get the short verion of PDB file name to be
-  used in performance data logging.
-
-  @param PdbFileName     The long PDB file name.
-  @param GaugeString     The output string to be logged by performance logger.
-  @param StringSize      The buffer size of GaugeString in bytes.
-
-**/
-VOID
-BmGetShortPdbFileName (
-  IN  CONST CHAR8  *PdbFileName,
-  OUT       CHAR8  *GaugeString,
-  IN        UINTN   StringSize
-  )
-{
-  UINTN Index;
-  UINTN Index1;
-  UINTN StartIndex;
-  UINTN EndIndex;
-
-  if (PdbFileName == NULL) {
-    AsciiStrCpyS (GaugeString, StringSize, " ");
-  } else {
-    StartIndex = 0;
-    for (EndIndex = 0; PdbFileName[EndIndex] != 0; EndIndex++)
-      ;
-
-    for (Index = 0; PdbFileName[Index] != 0; Index++) {
-      if ((PdbFileName[Index] == '\\') || (PdbFileName[Index] == '/')) {
-        StartIndex = Index + 1;
-      }
-
-      if (PdbFileName[Index] == '.') {
-        EndIndex = Index;
-      }
-    }
-
-    Index1 = 0;
-    for (Index = StartIndex; Index < EndIndex; Index++) {
-      GaugeString[Index1] = PdbFileName[Index];
-      Index1++;
-      if (Index1 == StringSize - 1) {
-        break;
-      }
-    }
-
-    GaugeString[Index1] = 0;
-  }
-
-  return ;
-}
-
-/**
-  Get the name from the Driver handle, which can be a handle with
-  EFI_LOADED_IMAGE_PROTOCOL or EFI_DRIVER_BINDING_PROTOCOL installed.
-  This name can be used in performance data logging.
-
-  @param Handle          Driver handle.
-  @param GaugeString     The output string to be logged by performance logger.
-  @param StringSize      The buffer size of GaugeString in bytes.
-
-**/
-VOID
-BmGetNameFromHandle (
-  IN  EFI_HANDLE     Handle,
-  OUT CHAR8          *GaugeString,
-  IN  UINTN          StringSize
-  )
-{
-  EFI_STATUS                  Status;
-  EFI_LOADED_IMAGE_PROTOCOL   *Image;
-  CHAR8                       *PdbFileName;
-  EFI_DRIVER_BINDING_PROTOCOL *DriverBinding;
-
-  AsciiStrCpyS (GaugeString, StringSize, " ");
-
-  //
-  // Get handle name from image protocol
-  //
-  Status = gBS->HandleProtocol (
-                  Handle,
-                  &gEfiLoadedImageProtocolGuid,
-                  (VOID **) &Image
-                  );
-
-  if (EFI_ERROR (Status)) {
-    Status = gBS->OpenProtocol (
-                    Handle,
-                    &gEfiDriverBindingProtocolGuid,
-                    (VOID **) &DriverBinding,
-                    NULL,
-                    NULL,
-                    EFI_OPEN_PROTOCOL_GET_PROTOCOL
-                    );
-    if (EFI_ERROR (Status)) {
-      return ;
-    }
-    //
-    // Get handle name from image protocol
-    //
-    Status = gBS->HandleProtocol (
-                    DriverBinding->ImageHandle,
-                    &gEfiLoadedImageProtocolGuid,
-                    (VOID **) &Image
-                    );
-  }
-
-  PdbFileName = PeCoffLoaderGetPdbPointer (Image->ImageBase);
-
-  if (PdbFileName != NULL) {
-    BmGetShortPdbFileName (PdbFileName, GaugeString, StringSize);
-  }
-
-  return ;
-}
-
-/**
-
-  Writes performance data of booting into the allocated memory.
-  OS can process these records.
-
-  @param  Event                 The triggered event.
-  @param  Context               Context for this event.
-
-**/
-VOID
-EFIAPI
-BmWriteBootToOsPerformanceData (
-  IN EFI_EVENT  Event,
-  IN VOID       *Context
-  )
-{
-  EFI_STATUS                Status;
-  UINT32                    LimitCount;
-  EFI_HANDLE                *Handles;
-  UINTN                     NoHandles;
-  CHAR8                     GaugeString[PERF_TOKEN_SIZE];
-  UINT8                     *Ptr;
-  UINT32                    Index;
-  UINT64                    Ticker;
-  UINT64                    Freq;
-  UINT32                    Duration;
-  UINTN                     LogEntryKey;
-  CONST VOID                *Handle;
-  CONST CHAR8               *Token;
-  CONST CHAR8               *Module;
-  UINT64                    StartTicker;
-  UINT64                    EndTicker;
-  UINT64                    StartValue;
-  UINT64                    EndValue;
-  BOOLEAN                   CountUp;
-  UINTN                     VarSize;
-  BOOLEAN                   Found;
-
-  //
-  // Record the performance data for End of BDS
-  //
-  PERF_END(NULL, "BDS", NULL, 0);
-
-  //
-  // Retrieve time stamp count as early as possible
-  //
-  Ticker  = GetPerformanceCounter ();
-
-  Freq    = GetPerformanceCounterProperties (&StartValue, &EndValue);
-  
-  Freq    = DivU64x32 (Freq, 1000);
-
-  mBmPerfHeader.CpuFreq = Freq;
-
-  //
-  // Record BDS raw performance data
-  //
-  if (EndValue >= StartValue) {
-    mBmPerfHeader.BDSRaw = Ticker - StartValue;
-    CountUp            = TRUE;
-  } else {
-    mBmPerfHeader.BDSRaw = StartValue - Ticker;
-    CountUp            = FALSE;
-  }
-
-  //
-  // Reset the entry count
-  //
-  mBmPerfHeader.Count = 0;
-
-  if (mBmAcpiLowMemoryBase == 0x0FFFFFFFF) {
-    VarSize = sizeof (EFI_PHYSICAL_ADDRESS);
-    Status = gRT->GetVariable (
-                    L"PerfDataMemAddr",
-                    &gPerformanceProtocolGuid,
-                    NULL,
-                    &VarSize,
-                    &mBmAcpiLowMemoryBase
-                    );
-    if (EFI_ERROR (Status)) {
-      //
-      // Fail to get the variable, return.
-      //
-      return;
-    }
-  }
-
-  //
-  // Put Detailed performance data into memory
-  //
-  Handles = NULL;
-  Status = gBS->LocateHandleBuffer (
-                  AllHandles,
-                  NULL,
-                  NULL,
-                  &NoHandles,
-                  &Handles
-                  );
-  if (EFI_ERROR (Status)) {
-    return ;
-  }
-
-  Ptr        = (UINT8 *) ((UINT32) mBmAcpiLowMemoryBase + sizeof (PERF_HEADER));
-  LimitCount = (UINT32) (PERF_DATA_MAX_LENGTH - sizeof (PERF_HEADER)) / sizeof (PERF_DATA);
-
-  //
-  // Get performance data
-  //
-  LogEntryKey = 0;
-  while ((LogEntryKey = GetPerformanceMeasurement (
-                          LogEntryKey,
-                          &Handle,
-                          &Token,
-                          &Module,
-                          &StartTicker,
-                          &EndTicker)) != 0) {
-    if (EndTicker != 0) {
-      if (StartTicker == 1) {
-        StartTicker = StartValue;
-      }
-      if (EndTicker == 1) {
-        EndTicker = StartValue;
-      }
-      Ticker = CountUp ? (EndTicker - StartTicker) : (StartTicker - EndTicker);
-
-      Duration = (UINT32) DivU64x32 (Ticker, (UINT32) Freq);
-      if (Duration == 0) {
-        continue;
-      }
-
-      ZeroMem (&mBmPerfData, sizeof (PERF_DATA));
-
-      mBmPerfData.Duration = Duration;
-
-      //
-      // See if the Handle is in the handle buffer
-      //
-      Found = FALSE;
-      for (Index = 0; Index < NoHandles; Index++) {
-        if (Handle == Handles[Index]) {
-          BmGetNameFromHandle (Handles[Index], GaugeString, PERF_TOKEN_SIZE);
-          AsciiStrCpyS (mBmPerfData.Token, PERF_TOKEN_SIZE, GaugeString);
-          Found = TRUE;
-          break;
-        }
-      }
-
-      if (!Found) {
-        AsciiStrnCpyS (mBmPerfData.Token, PERF_TOKEN_SIZE, Token, PERF_TOKEN_LENGTH);
-      }
-
-      CopyMem (Ptr, &mBmPerfData, sizeof (PERF_DATA));
-      Ptr += sizeof (PERF_DATA);
-
-      mBmPerfHeader.Count++;
-      if (mBmPerfHeader.Count == LimitCount) {
-        goto Done;
-      }
-    }
-  }
-
-Done:
-
-  FreePool (Handles);
-
-  mBmPerfHeader.Signiture = PERFORMANCE_SIGNATURE;
-
-  //
-  // Put performance data to Reserved memory
-  //
-  CopyMem (
-    (UINTN *) (UINTN) mBmAcpiLowMemoryBase,
-    &mBmPerfHeader,
-    sizeof (PERF_HEADER)
-    );
-
-  return ;
-}
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h b/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h
index 0224bd3..ed0cd16 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h
+++ b/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h
@@ -49,11 +49,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Protocol/DeferredImageLoad.h>
 
 #include <Guid/MemoryTypeInformation.h>
 #include <Guid/FileInfo.h>
 #include <Guid/GlobalVariable.h>
-#include <Guid/Performance.h>
 #include <Guid/StatusCodeDataTypeVariable.h>
 
 #include <Library/PrintLib.h>
 #include <Library/DebugLib.h>
 #include <Library/BaseMemoryLib.h>
@@ -183,26 +182,10 @@ BmGetFreeOptionNumber (
   IN  EFI_BOOT_MANAGER_LOAD_OPTION_TYPE LoadOptionType,
   OUT UINT16                            *FreeOptionNumber
   );
 
 /**
-
-  Writes performance data of booting into the allocated memory.
-  OS can process these records.
-
-  @param  Event                 The triggered event.
-  @param  Context               Context for this event.
-
-**/
-VOID
-EFIAPI
-BmWriteBootToOsPerformanceData (
-  IN EFI_EVENT  Event,
-  IN VOID       *Context
-  );
-
-/**
   This routine adjust the memory information for different memory type and 
   save them into the variables for next boot. It resets the system when
   memory information is updated and the current boot option belongs to
   boot category instead of application category. It doesn't count the
   reserved memory occupied by RAM Disk.
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf b/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
index ad4901d..1adffd7 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
+++ b/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
@@ -3,11 +3,11 @@
 #
 #  The implementation provides richful library functions supporting load option
 #  manipulation, hotkey registration, UEFI boot, connect/disconnect, console
 #  manipulation, driver health checking and etc.
 #
-#  Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
 #  (C) Copyright 2016 Hewlett Packard Enterprise Development LP<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
 #  http://opensource.org/licenses/bsd-license.php
@@ -31,11 +31,10 @@
 #
 #  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
 #
 
 [Sources]
-  BmPerformance.c
   BmConnect.c
   BmMisc.c
   BmConsole.c
   BmBoot.c
   BmBootDescription.c
@@ -84,11 +83,10 @@
   ## SOMETIMES_CONSUMES ## Variable:L"ConIn" (The device path of console in device)
   ## SOMETIMES_CONSUMES ## Variable:L"ConOut" (The device path of console out device)
   ## SOMETIMES_CONSUMES ## Variable:L"ErrOut" (The device path of error out device)
   gEfiGlobalVariableGuid
 
-  gPerformanceProtocolGuid                      ## SOMETIMES_CONSUMES ## Variable:L"PerfDataMemAddr" (The ACPI address of performance data)
   gEdkiiStatusCodeDataTypeVariableGuid          ## SOMETIMES_CONSUMES ## GUID
   gEfiDiskInfoAhciInterfaceGuid                 ## SOMETIMES_CONSUMES ## GUID
   gEfiDiskInfoIdeInterfaceGuid                  ## SOMETIMES_CONSUMES ## GUID
   gEfiDiskInfoScsiInterfaceGuid                 ## SOMETIMES_CONSUMES ## GUID
   gEfiDiskInfoSdMmcInterfaceGuid                ## SOMETIMES_CONSUMES ## GUID
-- 
1.9.5.msysgit.1



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v2 5/7] IntelFrameworkModulePkg/BdsDxe: Remove the useless Perf codes
  2018-02-09  8:05 [PATCH v2 0/7] Remove the useless pref codes Dandan Bi
                   ` (3 preceding siblings ...)
  2018-02-09  8:05 ` [PATCH v2 4/7] MdeModulePkg/UefiBootManagerLib: Remove the useless pref codes Dandan Bi
@ 2018-02-09  8:05 ` Dandan Bi
  2018-02-09  8:05 ` [PATCH v2 6/7] IntelFrameworkModulePkg/GenericBdsLib: " Dandan Bi
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Dandan Bi @ 2018-02-09  8:05 UTC (permalink / raw)
  To: edk2-devel; +Cc: Liming Gao, Star Zeng

Our new performance infrastructure (edk2 trunk commit hash value:
SHA-1: 73fef64f14d1b97ae9bd4705df3becc022391eba ~
SHA-1: 115eae650bfd2be2c2bc37360f4a755065e774c4) can support to
dump performance date form ACPI table in OS. So we can remove
the old pref code to write performance data to OS.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
---
 IntelFrameworkModulePkg/Universal/BdsDxe/Bds.h     |  3 +-
 .../Universal/BdsDxe/BdsDxe.inf                    |  3 +-
 .../Universal/BdsDxe/BdsEntry.c                    | 57 +---------------------
 3 files changed, 3 insertions(+), 60 deletions(-)

diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/Bds.h b/IntelFrameworkModulePkg/Universal/BdsDxe/Bds.h
index 93bafd2..beb9226 100644
--- a/IntelFrameworkModulePkg/Universal/BdsDxe/Bds.h
+++ b/IntelFrameworkModulePkg/Universal/BdsDxe/Bds.h
@@ -1,9 +1,9 @@
 /** @file
   Head file for BDS Architectural Protocol implementation
 
-Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2018, 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
 http://opensource.org/licenses/bsd-license.php
 
@@ -34,11 +34,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Guid/CapsuleVendor.h>
 #include <Guid/StatusCodeDataTypeId.h>
 #include <Guid/LegacyDevOrder.h>
 #include <Guid/BdsHii.h>
 #include <Guid/ConnectConInEvent.h>
-#include <Guid/Performance.h>
 #include <Guid/FmpCapsule.h>
 #include <Protocol/GenericMemoryTest.h>
 #include <Protocol/FormBrowser2.h>
 #include <Protocol/HiiConfigAccess.h>
 #include <Protocol/GraphicsOutput.h>
diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf b/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf
index 95a707c..92a4737 100644
--- a/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf
+++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf
@@ -12,11 +12,11 @@
 #  EFI\BOOT\BOOTIA64.EFI file from selected boot device and transfer control to boot loader.
 #
 #  BDSDxe also maintain the UI for "Boot Manager, Boot Maintaince Manager, Device Manager" which
 #  is used for user to configure boot option or maintain hardware device.
 #  
-#  Copyright (c) 2008 - 2015, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2008 - 2018, 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
 #  http://opensource.org/licenses/bsd-license.php
 #  
@@ -155,11 +155,10 @@
   ## SOMETIMES_CONSUMES ## Event
   gConnectConInEventGuid
   gEfiFmpCapsuleGuid                            ## SOMETIMES_CONSUMES ## GUID # FMP Capsule
   gEdkiiStatusCodeDataTypeVariableGuid          ## SOMETIMES_CONSUMES ## GUID
   gEfiUartDevicePathGuid                        ## SOMETIMES_CONSUMES ## GUID (Identify the device path for UARD device)
-  gPerformanceProtocolGuid                      ## SOMETIMES_PRODUCES ## Variable:L"PerfDataMemAddr" (The ACPI address of performance data)
 
 [Protocols]
   gEfiSimpleFileSystemProtocolGuid              ## SOMETIMES_CONSUMES
   gEfiLoadFileProtocolGuid                      ## SOMETIMES_CONSUMES
   gEfiBdsArchProtocolGuid                       ## PRODUCES
diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c b/IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c
index 6e3e5b0..9c5a91b 100644
--- a/IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c
+++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c
@@ -3,11 +3,11 @@
   When this module was dispatched by DxeCore, gEfiBdsArchProtocolGuid will be installed
   which contains interface of BdsEntry.
   After DxeCore finish DXE phase, gEfiBdsArchProtocolGuid->BdsEntry will be invoked
   to enter BDS phase.
 
-Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2018, 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
 http://opensource.org/licenses/bsd-license.php
 
@@ -443,61 +443,10 @@ BdsFormalizeEfiGlobalVariable (
 
 }
 
 /**
 
-  Allocate a block of memory that will contain performance data to OS.
-
-**/
-VOID
-BdsAllocateMemoryForPerformanceData (
-  VOID
-  )
-{
-  EFI_STATUS                    Status;
-  EFI_PHYSICAL_ADDRESS          AcpiLowMemoryBase;
-  EDKII_VARIABLE_LOCK_PROTOCOL  *VariableLock;
-
-  AcpiLowMemoryBase = 0x0FFFFFFFFULL;
-
-  //
-  // Allocate a block of memory that will contain performance data to OS.
-  //
-  Status = gBS->AllocatePages (
-                  AllocateMaxAddress,
-                  EfiReservedMemoryType,
-                  EFI_SIZE_TO_PAGES (PERF_DATA_MAX_LENGTH),
-                  &AcpiLowMemoryBase
-                  );
-  if (!EFI_ERROR (Status)) {
-    //
-    // Save the pointer to variable for use in S3 resume.
-    //
-    BdsDxeSetVariableAndReportStatusCodeOnError (
-      L"PerfDataMemAddr",
-      &gPerformanceProtocolGuid,
-      EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
-      sizeof (EFI_PHYSICAL_ADDRESS),
-      &AcpiLowMemoryBase
-      );
-    if (EFI_ERROR (Status)) {
-      DEBUG ((EFI_D_ERROR, "[Bds] PerfDataMemAddr (%08x) cannot be saved to NV storage.\n", AcpiLowMemoryBase));
-    }
-    //
-    // Mark L"PerfDataMemAddr" variable to read-only if the Variable Lock protocol exists
-    // Still lock it even the variable cannot be saved to prevent it's set by 3rd party code.
-    //
-    Status = gBS->LocateProtocol (&gEdkiiVariableLockProtocolGuid, NULL, (VOID **) &VariableLock);
-    if (!EFI_ERROR (Status)) {
-      Status = VariableLock->RequestToLock (VariableLock, L"PerfDataMemAddr", &gPerformanceProtocolGuid);
-      ASSERT_EFI_ERROR (Status);
-    }
-  }
-}
-
-/**
-
   Service routine for BdsInstance->Entry(). Devices are connected, the
   consoles are initialized, and the boot options are tried.
 
   @param This             Protocol Instance structure.
 
@@ -521,14 +470,10 @@ BdsEntry (
   // Insert the performance probe
   //
   PERF_END (NULL, "DXE", NULL, 0);
   PERF_START (NULL, "BDS", NULL, 0);
 
-  PERF_CODE (
-    BdsAllocateMemoryForPerformanceData ();
-  );
-
   //
   // Initialize the global system boot option and driver option
   //
   InitializeListHead (&DriverOptionList);
   InitializeListHead (&BootOptionList);
-- 
1.9.5.msysgit.1



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v2 6/7] IntelFrameworkModulePkg/GenericBdsLib: Remove the useless Perf codes
  2018-02-09  8:05 [PATCH v2 0/7] Remove the useless pref codes Dandan Bi
                   ` (4 preceding siblings ...)
  2018-02-09  8:05 ` [PATCH v2 5/7] IntelFrameworkModulePkg/BdsDxe: Remove the useless Perf codes Dandan Bi
@ 2018-02-09  8:05 ` Dandan Bi
  2018-02-09  8:05 ` [PATCH v2 7/7] Vlv2TbltDevicePkg/Override/GenericBdsLib:Remove useless Perf code Dandan Bi
       [not found] ` <0C09AFA07DD0434D9E2A0C6AEB0483103BA3E142@shsmsx102.ccr.corp.intel.com>
  7 siblings, 0 replies; 9+ messages in thread
From: Dandan Bi @ 2018-02-09  8:05 UTC (permalink / raw)
  To: edk2-devel; +Cc: Liming Gao, Star Zeng

Our new performance infrastructure (edk2 trunk commit hash value:
SHA-1: 73fef64f14d1b97ae9bd4705df3becc022391eba ~
SHA-1: 115eae650bfd2be2c2bc37360f4a755065e774c4) can support to
dump performance date form ACPI table in OS. So we can remove
the old pref code to write performance data to OS.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
---
 .../Library/GenericBdsLib/BdsBoot.c                |  29 +-
 .../Library/GenericBdsLib/GenericBdsLib.inf        |   4 +-
 .../Library/GenericBdsLib/InternalBdsLib.h         |  19 +-
 .../Library/GenericBdsLib/Performance.c            | 313 ---------------------
 4 files changed, 28 insertions(+), 337 deletions(-)
 delete mode 100644 IntelFrameworkModulePkg/Library/GenericBdsLib/Performance.c

diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c
index d1da635..9c2d592 100644
--- a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c
+++ b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c
@@ -1,9 +1,9 @@
 /** @file
   BDS Lib functions which relate with create or process the boot option.
 
-Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2018, 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
 http://opensource.org/licenses/bsd-license.php
 
@@ -17,10 +17,33 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 
 BOOLEAN mEnumBootDevice = FALSE;
 EFI_HII_HANDLE gBdsLibStringPackHandle = NULL;
 
 /**
+
+  End Perf entry of BDS
+
+  @param  Event                 The triggered event.
+  @param  Context               Context for this event.
+
+**/
+VOID
+EFIAPI
+BmEndOfBdsPerfCode (
+  IN EFI_EVENT  Event,
+  IN VOID       *Context
+  )
+{
+  //
+  // Record the performance data for End of BDS
+  //
+  PERF_END(NULL, "BDS", NULL, 0);
+
+  return ;
+}
+
+/**
   The constructor function register UNI strings into imageHandle.
   
   It will ASSERT() if that operation fails and it will always return EFI_SUCCESS. 
 
   @param  ImageHandle   The firmware allocated handle for the EFI image.
@@ -1693,11 +1716,11 @@ BdsLibDoLegacyBoot (
     //
     // Create an event to be signalled when Legacy Boot occurs to write performance data.
     //
     Status = EfiCreateEventLegacyBootEx(
                TPL_NOTIFY,
-               WriteBootToOsPerformanceData,
+               BmEndOfBdsPerfCode,
                NULL, 
                &LegacyBootEvent
                );
     ASSERT_EFI_ERROR (Status);
   );
@@ -2423,11 +2446,11 @@ BdsLibBootViaBootOption (
 
   //
   // Write boot to OS performance data for UEFI boot
   //
   PERF_CODE (
-    WriteBootToOsPerformanceData (NULL, NULL);
+    BmEndOfBdsPerfCode (NULL, NULL);
   );
 
   //
   // Report status code for OS Loader StartImage.
   //
diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf b/IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf
index 9d879c2..a9e0f51 100644
--- a/IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf
+++ b/IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf
@@ -4,11 +4,11 @@
 #  General BDS defines and produce general interfaces for platform BDS driver including:
 #  1) BDS boot policy interface;
 #  2) BDS boot device connect interface;
 #  3) BDS Misc interfaces for mainting boot variable, ouput string, etc.
 #  
-#  Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2018, 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
 #  http://opensource.org/licenses/bsd-license.php
 #  
@@ -33,11 +33,10 @@
 #  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
 #
 
 [Sources]
   DevicePath.c
-  Performance.c
   BdsConnect.c
   BdsMisc.c
   BdsConsole.c
   BdsBoot.c
   InternalBdsLib.h
@@ -94,11 +93,10 @@
   ## SOMETIMES_PRODUCES ## Variable:L"ErrOut"      # The device path of error out device
   ## SOMETIMES_PRODUCES ## Variable:L"BootCurrent" # The boot option of current boot
   ## SOMETIMES_PRODUCES ## Variable:L"BootNext"    # The number of next boot option
   gEfiGlobalVariableGuid
   gEfiFileInfoGuid                              ## SOMETIMES_CONSUMES ## GUID
-  gPerformanceProtocolGuid                      ## SOMETIMES_CONSUMES ## Variable:L"PerfDataMemAddr" # The ACPI address of performance data
   gLastEnumLangGuid                             ## SOMETIMES_PRODUCES ## Variable:L"LastEnumLang" # Platform language at last time enumeration.
   gHdBootDevicePathVariablGuid                  ## SOMETIMES_PRODUCES ## Variable:L"HDDP" # The device path of Boot file on Hard device.
   gBdsLibStringPackageGuid                      ## CONSUMES ## HII # HII String PackageList Guid
   ## SOMETIMES_PRODUCES ## Variable:L"LegacyDevOrder"
   ## SOMETIMES_CONSUMES ## Variable:L"LegacyDevOrder"
diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/InternalBdsLib.h b/IntelFrameworkModulePkg/Library/GenericBdsLib/InternalBdsLib.h
index 7201d8a..8c9ab6e 100644
--- a/IntelFrameworkModulePkg/Library/GenericBdsLib/InternalBdsLib.h
+++ b/IntelFrameworkModulePkg/Library/GenericBdsLib/InternalBdsLib.h
@@ -1,9 +1,9 @@
 /** @file
   BDS library definition, include the file and data structure
 
-Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2018, 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
 http://opensource.org/licenses/bsd-license.php
 
@@ -43,11 +43,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 
 #include <Guid/MemoryTypeInformation.h>
 #include <Guid/FileInfo.h>
 #include <Guid/GlobalVariable.h>
 #include <Guid/PcAnsi.h>
-#include <Guid/Performance.h>
 #include <Guid/BdsLibHii.h>
 #include <Guid/HdBootVariable.h>
 #include <Guid/LastEnumLang.h>
 #include <Guid/LegacyDevOrder.h>
 #include <Guid/StatusCodeDataTypeVariable.h>
@@ -83,26 +82,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
         #error "Can not determine the default boot file name for unknown processor type!"
     #endif
 #endif
 
 /**
-
-  Writes performance data of booting into the allocated memory.
-  OS can process these records.
-
-  @param  Event                 The triggered event.
-  @param  Context               Context for this event.
-
-**/
-VOID
-EFIAPI
-WriteBootToOsPerformanceData (
-  IN EFI_EVENT  Event,
-  IN VOID       *Context
-  );
-
-/**
   Get the headers (dos, image, optional header) from an image
 
   @param  Device                SimpleFileSystem device handle
   @param  FileName              File name for the image
   @param  DosHeader             Pointer to dos header
diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/Performance.c b/IntelFrameworkModulePkg/Library/GenericBdsLib/Performance.c
deleted file mode 100644
index e50345a..0000000
--- a/IntelFrameworkModulePkg/Library/GenericBdsLib/Performance.c
+++ /dev/null
@@ -1,313 +0,0 @@
-/** @file
-  This file include the file which can help to get the system
-  performance, all the function will only include if the performance
-  switch is set.
-
-Copyright (c) 2004 - 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
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include "InternalBdsLib.h"
-
-PERF_HEADER               mPerfHeader;
-PERF_DATA                 mPerfData;
-EFI_PHYSICAL_ADDRESS      mAcpiLowMemoryBase = 0x0FFFFFFFFULL;
-
-/**
-  Get the short verion of PDB file name to be
-  used in performance data logging.
-
-  @param PdbFileName     The long PDB file name.
-  @param GaugeString     The output string to be logged by performance logger.
-
-**/
-VOID
-GetShortPdbFileName (
-  IN  CONST CHAR8  *PdbFileName,
-  OUT       CHAR8  *GaugeString
-  )
-{
-  UINTN Index;
-  UINTN Index1;
-  UINTN StartIndex;
-  UINTN EndIndex;
-
-  if (PdbFileName == NULL) {
-    AsciiStrCpyS (GaugeString, PERF_TOKEN_SIZE, " ");
-  } else {
-    StartIndex = 0;
-    for (EndIndex = 0; PdbFileName[EndIndex] != 0; EndIndex++)
-      ;
-
-    for (Index = 0; PdbFileName[Index] != 0; Index++) {
-      if (PdbFileName[Index] == '\\') {
-        StartIndex = Index + 1;
-      }
-
-      if (PdbFileName[Index] == '.') {
-        EndIndex = Index;
-      }
-    }
-
-    Index1 = 0;
-    for (Index = StartIndex; Index < EndIndex; Index++) {
-      GaugeString[Index1] = PdbFileName[Index];
-      Index1++;
-      if (Index1 == PERF_TOKEN_LENGTH) {
-        break;
-      }
-    }
-
-    GaugeString[Index1] = 0;
-  }
-
-  return ;
-}
-
-/**
-  Get the name from the Driver handle, which can be a handle with
-  EFI_LOADED_IMAGE_PROTOCOL or EFI_DRIVER_BINDING_PROTOCOL installed.
-  This name can be used in performance data logging.
-
-  @param Handle          Driver handle.
-  @param GaugeString     The output string to be logged by performance logger.
-
-**/
-VOID
-GetNameFromHandle (
-  IN  EFI_HANDLE     Handle,
-  OUT CHAR8          *GaugeString
-  )
-{
-  EFI_STATUS                  Status;
-  EFI_LOADED_IMAGE_PROTOCOL   *Image;
-  CHAR8                       *PdbFileName;
-  EFI_DRIVER_BINDING_PROTOCOL *DriverBinding;
-
-  AsciiStrCpyS (GaugeString, PERF_TOKEN_SIZE, " ");
-
-  //
-  // Get handle name from image protocol
-  //
-  Status = gBS->HandleProtocol (
-                  Handle,
-                  &gEfiLoadedImageProtocolGuid,
-                  (VOID **) &Image
-                  );
-
-  if (EFI_ERROR (Status)) {
-    Status = gBS->OpenProtocol (
-                    Handle,
-                    &gEfiDriverBindingProtocolGuid,
-                    (VOID **) &DriverBinding,
-                    NULL,
-                    NULL,
-                    EFI_OPEN_PROTOCOL_GET_PROTOCOL
-                    );
-    if (EFI_ERROR (Status)) {
-      return ;
-    }
-    //
-    // Get handle name from image protocol
-    //
-    Status = gBS->HandleProtocol (
-                    DriverBinding->ImageHandle,
-                    &gEfiLoadedImageProtocolGuid,
-                    (VOID **) &Image
-                    );
-  }
-
-  PdbFileName = PeCoffLoaderGetPdbPointer (Image->ImageBase);
-
-  if (PdbFileName != NULL) {
-    GetShortPdbFileName (PdbFileName, GaugeString);
-  }
-
-  return ;
-}
-
-/**
-
-  Writes performance data of booting into the allocated memory.
-  OS can process these records.
-
-  @param  Event                 The triggered event.
-  @param  Context               Context for this event.
-
-**/
-VOID
-EFIAPI
-WriteBootToOsPerformanceData (
-  IN EFI_EVENT  Event,
-  IN VOID       *Context
-  )
-{
-  EFI_STATUS                Status;
-  UINT32                    LimitCount;
-  EFI_HANDLE                *Handles;
-  UINTN                     NoHandles;
-  CHAR8                     GaugeString[PERF_TOKEN_SIZE];
-  UINT8                     *Ptr;
-  UINT32                    Index;
-  UINT64                    Ticker;
-  UINT64                    Freq;
-  UINT32                    Duration;
-  UINTN                     LogEntryKey;
-  CONST VOID                *Handle;
-  CONST CHAR8               *Token;
-  CONST CHAR8               *Module;
-  UINT64                    StartTicker;
-  UINT64                    EndTicker;
-  UINT64                    StartValue;
-  UINT64                    EndValue;
-  BOOLEAN                   CountUp;
-  UINTN                     VarSize;
-  BOOLEAN                   Found;
-
-  //
-  // Record the performance data for End of BDS
-  //
-  PERF_END(NULL, "BDS", NULL, 0);
-
-  //
-  // Retrieve time stamp count as early as possible
-  //
-  Ticker  = GetPerformanceCounter ();
-
-  Freq    = GetPerformanceCounterProperties (&StartValue, &EndValue);
-  
-  Freq    = DivU64x32 (Freq, 1000);
-
-  mPerfHeader.CpuFreq = Freq;
-
-  //
-  // Record BDS raw performance data
-  //
-  if (EndValue >= StartValue) {
-    mPerfHeader.BDSRaw = Ticker - StartValue;
-    CountUp            = TRUE;
-  } else {
-    mPerfHeader.BDSRaw = StartValue - Ticker;
-    CountUp            = FALSE;
-  }
-
-  //
-  // Reset the entry count
-  //
-  mPerfHeader.Count = 0;
-
-  if (mAcpiLowMemoryBase == 0x0FFFFFFFF) {
-    VarSize = sizeof (EFI_PHYSICAL_ADDRESS);
-    Status = gRT->GetVariable (
-                    L"PerfDataMemAddr",
-                    &gPerformanceProtocolGuid,
-                    NULL,
-                    &VarSize,
-                    &mAcpiLowMemoryBase
-                    );
-    if (EFI_ERROR (Status)) {
-      //
-      // Fail to get the variable, return.
-      //
-      return;
-    }
-  }
-
-  //
-  // Put Detailed performance data into memory
-  //
-  Handles = NULL;
-  Status = gBS->LocateHandleBuffer (
-                  AllHandles,
-                  NULL,
-                  NULL,
-                  &NoHandles,
-                  &Handles
-                  );
-  if (EFI_ERROR (Status)) {
-    return ;
-  }
-
-  Ptr        = (UINT8 *) ((UINT32) mAcpiLowMemoryBase + sizeof (PERF_HEADER));
-  LimitCount = (UINT32) (PERF_DATA_MAX_LENGTH - sizeof (PERF_HEADER)) / sizeof (PERF_DATA);
-
-  //
-  // Get performance data
-  //
-  LogEntryKey = 0;
-  while ((LogEntryKey = GetPerformanceMeasurement (
-                          LogEntryKey,
-                          &Handle,
-                          &Token,
-                          &Module,
-                          &StartTicker,
-                          &EndTicker)) != 0) {
-    if (EndTicker != 0) {
-      if (StartTicker == 1) {
-        StartTicker = StartValue;
-      }
-      if (EndTicker == 1) {
-        EndTicker = StartValue;
-      }
-      Ticker = CountUp ? (EndTicker - StartTicker) : (StartTicker - EndTicker);
-
-      Duration = (UINT32) DivU64x32 (Ticker, (UINT32) Freq);
-      if (Duration == 0) {
-        continue;
-      }
-
-      ZeroMem (&mPerfData, sizeof (PERF_DATA));
-
-      mPerfData.Duration = Duration;
-
-      //
-      // See if the Handle is in the handle buffer
-      //
-      Found = FALSE;
-      for (Index = 0; Index < NoHandles; Index++) {
-        if (Handle == Handles[Index]) {
-          GetNameFromHandle (Handles[Index], GaugeString);
-          AsciiStrCpyS (mPerfData.Token, PERF_TOKEN_SIZE, GaugeString);
-          Found = TRUE;
-          break;
-        }
-      }
-
-      if (!Found) {
-        AsciiStrnCpyS (mPerfData.Token, PERF_TOKEN_SIZE, Token, PERF_TOKEN_LENGTH);
-      }
-
-      CopyMem (Ptr, &mPerfData, sizeof (PERF_DATA));
-      Ptr += sizeof (PERF_DATA);
-
-      mPerfHeader.Count++;
-      if (mPerfHeader.Count == LimitCount) {
-        goto Done;
-      }
-    }
-  }
-
-Done:
-
-  FreePool (Handles);
-
-  mPerfHeader.Signiture = PERFORMANCE_SIGNATURE;
-
-  //
-  // Put performance data to Reserved memory
-  //
-  CopyMem (
-    (UINTN *) (UINTN) mAcpiLowMemoryBase,
-    &mPerfHeader,
-    sizeof (PERF_HEADER)
-    );
-
-  return ;
-}
-- 
1.9.5.msysgit.1



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v2 7/7] Vlv2TbltDevicePkg/Override/GenericBdsLib:Remove useless Perf code
  2018-02-09  8:05 [PATCH v2 0/7] Remove the useless pref codes Dandan Bi
                   ` (5 preceding siblings ...)
  2018-02-09  8:05 ` [PATCH v2 6/7] IntelFrameworkModulePkg/GenericBdsLib: " Dandan Bi
@ 2018-02-09  8:05 ` Dandan Bi
       [not found] ` <0C09AFA07DD0434D9E2A0C6AEB0483103BA3E142@shsmsx102.ccr.corp.intel.com>
  7 siblings, 0 replies; 9+ messages in thread
From: Dandan Bi @ 2018-02-09  8:05 UTC (permalink / raw)
  To: edk2-devel; +Cc: David Wei, Mang Guo

Our new performance infrastructure (edk2 trunk commit hash value:
SHA-1: 73fef64f14d1b97ae9bd4705df3becc022391eba ~
SHA-1: 115eae650bfd2be2c2bc37360f4a755065e774c4) can support to
dump performance date form ACPI table in OS. So we can remove
the old pref code to write performance data to OS.

Cc: David Wei <david.wei@intel.com>
Cc: Mang Guo <mang.guo@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
---
 .../Library/GenericBdsLib/BdsBoot.c                |  29 +-
 .../Library/GenericBdsLib/GenericBdsLib.inf        |   4 +-
 .../Library/GenericBdsLib/InternalBdsLib.h         |  19 +-
 .../Library/GenericBdsLib/Performance.c            | 358 ---------------------
 4 files changed, 28 insertions(+), 382 deletions(-)
 delete mode 100644 Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/Performance.c

diff --git a/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c b/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c
index 6ada862..282ab8e 100644
--- a/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c
+++ b/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c
@@ -1,9 +1,9 @@
 /** @file
   BDS Lib functions which relate with create or process the boot option.
 
-Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2018, 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
 http://opensource.org/licenses/bsd-license.php
 
@@ -19,10 +19,33 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 
 BOOLEAN mEnumBootDevice = FALSE;
 EFI_HII_HANDLE gBdsLibStringPackHandle = NULL;
 
 /**
+
+  End Perf entry of BDS
+
+  @param  Event                 The triggered event.
+  @param  Context               Context for this event.
+
+**/
+VOID
+EFIAPI
+BmEndOfBdsPerfCode (
+  IN EFI_EVENT  Event,
+  IN VOID       *Context
+  )
+{
+  //
+  // Record the performance data for End of BDS
+  //
+  PERF_END(NULL, "BDS", NULL, 0);
+
+  return ;
+}
+
+/**
   The constructor function register UNI strings into imageHandle.
   
   It will ASSERT() if that operation fails and it will always return EFI_SUCCESS. 
 
   @param  ImageHandle   The firmware allocated handle for the EFI image.
@@ -1695,11 +1718,11 @@ BdsLibDoLegacyBoot (
     //
     // Create an event to be signalled when Legacy Boot occurs to write performance data.
     //
     Status = EfiCreateEventLegacyBootEx(
                TPL_NOTIFY,
-               WriteBootToOsPerformanceData,
+               BmEndOfBdsPerfCode,
                NULL, 
                &LegacyBootEvent
                );
     ASSERT_EFI_ERROR (Status);
   );
@@ -2434,11 +2457,11 @@ BdsLibBootViaBootOption (
 
   //
   // Write boot to OS performance data for UEFI boot
   //
   PERF_CODE (
-    WriteBootToOsPerformanceData (NULL, NULL);
+    BmEndOfBdsPerfCode (NULL, NULL);
   );
 
   //
   // Report status code for OS Loader StartImage.
   //
diff --git a/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf b/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf
index 33ca298..95a0023 100644
--- a/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf
+++ b/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf
@@ -4,11 +4,11 @@
 #  General BDS defines and produce general interfaces for platform BDS driver including:
 #  1) BDS boot policy interface;
 #  2) BDS boot device connect interface;
 #  3) BDS Misc interfaces for mainting boot variable, ouput string, etc.
 #  
-#  Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2018, 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
 #  http://opensource.org/licenses/bsd-license.php
 #  
@@ -33,11 +33,10 @@
 #  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
 #
 
 [Sources]
   DevicePath.c
-  Performance.c
   BdsConnect.c
   BdsMisc.c
   BdsConsole.c
   BdsBoot.c
   InternalBdsLib.h
@@ -95,11 +94,10 @@
   ## SOMETIMES_PRODUCES ## Variable:L"ErrOut"      # The device path of error out device
   ## SOMETIMES_PRODUCES ## Variable:L"BootCurrent" # The boot option of current boot
   ## SOMETIMES_PRODUCES ## Variable:L"BootNext"    # The number of next boot option
   gEfiGlobalVariableGuid
   gEfiFileInfoGuid                              ## SOMETIMES_CONSUMES ## GUID
-  gPerformanceProtocolGuid                      ## SOMETIMES_PRODUCES ## Variable:L"PerfDataMemAddr" # The ACPI address of performance data
   gLastEnumLangGuid                             ## SOMETIMES_PRODUCES ## Variable:L"LastEnumLang" # Platform language at last time enumeration.
   gHdBootDevicePathVariablGuid                  ## SOMETIMES_PRODUCES ## Variable:L"HDDP" # The device path of Boot file on Hard device.
   gBdsLibStringPackageGuid                      ## CONSUMES ## HII # HII String PackageList Guid
   ## SOMETIMES_PRODUCES ## Variable:L"LegacyDevOrder"
   ## SOMETIMES_CONSUMES ## Variable:L"LegacyDevOrder"
diff --git a/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/InternalBdsLib.h b/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/InternalBdsLib.h
index c32579b..1feed31 100644
--- a/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/InternalBdsLib.h
+++ b/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/InternalBdsLib.h
@@ -1,9 +1,9 @@
 /** @file
   BDS library definition, include the file and data structure
 
-Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2018, 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
 http://opensource.org/licenses/bsd-license.php
 
@@ -44,11 +44,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 
 #include <Guid/MemoryTypeInformation.h>
 #include <Guid/FileInfo.h>
 #include <Guid/GlobalVariable.h>
 #include <Guid/PcAnsi.h>
-#include <Guid/Performance.h>
 #include <Guid/BdsLibHii.h>
 #include <Guid/HdBootVariable.h>
 #include <Guid/LastEnumLang.h>
 #include <Guid/LegacyDevOrder.h>
 #include <Guid/StatusCodeDataTypeVariable.h>
@@ -84,26 +83,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
         #error "Can not determine the default boot file name for unknown processor type!"
     #endif
 #endif
 
 /**
-
-  Writes performance data of booting into the allocated memory.
-  OS can process these records.
-
-  @param  Event                 The triggered event.
-  @param  Context               Context for this event.
-
-**/
-VOID
-EFIAPI
-WriteBootToOsPerformanceData (
-  IN EFI_EVENT  Event,
-  IN VOID       *Context
-  );
-
-/**
   Get the headers (dos, image, optional header) from an image
 
   @param  Device                SimpleFileSystem device handle
   @param  FileName              File name for the image
   @param  DosHeader             Pointer to dos header
diff --git a/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/Performance.c b/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/Performance.c
deleted file mode 100644
index 047d2a7..0000000
--- a/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/Performance.c
+++ /dev/null
@@ -1,358 +0,0 @@
-/** @file
-  This file include the file which can help to get the system
-  performance, all the function will only include if the performance
-  switch is set.
-
-Copyright (c) 2004 - 2013, 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
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include "InternalBdsLib.h"
-
-PERF_HEADER               mPerfHeader;
-PERF_DATA                 mPerfData;
-EFI_PHYSICAL_ADDRESS      mAcpiLowMemoryBase = 0x0FFFFFFFFULL;
-
-/**
-  Get the short verion of PDB file name to be
-  used in performance data logging.
-
-  @param PdbFileName     The long PDB file name.
-  @param GaugeString     The output string to be logged by performance logger.
-
-**/
-VOID
-GetShortPdbFileName (
-  IN  CONST CHAR8  *PdbFileName,
-  OUT       CHAR8  *GaugeString
-  )
-{
-  UINTN Index;
-  UINTN Index1;
-  UINTN StartIndex;
-  UINTN EndIndex;
-
-  if (PdbFileName == NULL) {
-    AsciiStrCpy (GaugeString, " ");
-  } else {
-    StartIndex = 0;
-    for (EndIndex = 0; PdbFileName[EndIndex] != 0; EndIndex++)
-      ;
-
-    for (Index = 0; PdbFileName[Index] != 0; Index++) {
-      if (PdbFileName[Index] == '\\') {
-        StartIndex = Index + 1;
-      }
-
-      if (PdbFileName[Index] == '.') {
-        EndIndex = Index;
-      }
-    }
-
-    Index1 = 0;
-    for (Index = StartIndex; Index < EndIndex; Index++) {
-      GaugeString[Index1] = PdbFileName[Index];
-      Index1++;
-      if (Index1 == PERF_TOKEN_LENGTH - 1) {
-        break;
-      }
-    }
-
-    GaugeString[Index1] = 0;
-  }
-
-  return ;
-}
-
-/**
-  Get the name from the Driver handle, which can be a handle with
-  EFI_LOADED_IMAGE_PROTOCOL or EFI_DRIVER_BINDING_PROTOCOL installed.
-  This name can be used in performance data logging.
-
-  @param Handle          Driver handle.
-  @param GaugeString     The output string to be logged by performance logger.
-
-**/
-VOID
-GetNameFromHandle (
-  IN  EFI_HANDLE     Handle,
-  OUT CHAR8          *GaugeString
-  )
-{
-  EFI_STATUS                  Status;
-  EFI_LOADED_IMAGE_PROTOCOL   *Image;
-  CHAR8                       *PdbFileName;
-  EFI_DRIVER_BINDING_PROTOCOL *DriverBinding;
-
-  AsciiStrCpy (GaugeString, " ");
-
-  //
-  // Get handle name from image protocol
-  //
-  Status = gBS->HandleProtocol (
-                  Handle,
-                  &gEfiLoadedImageProtocolGuid,
-                  (VOID **) &Image
-                  );
-
-  if (EFI_ERROR (Status)) {
-    Status = gBS->OpenProtocol (
-                    Handle,
-                    &gEfiDriverBindingProtocolGuid,
-                    (VOID **) &DriverBinding,
-                    NULL,
-                    NULL,
-                    EFI_OPEN_PROTOCOL_GET_PROTOCOL
-                    );
-    if (EFI_ERROR (Status)) {
-      return ;
-    }
-    //
-    // Get handle name from image protocol
-    //
-    Status = gBS->HandleProtocol (
-                    DriverBinding->ImageHandle,
-                    &gEfiLoadedImageProtocolGuid,
-                    (VOID **) &Image
-                    );
-  }
-
-  PdbFileName = PeCoffLoaderGetPdbPointer (Image->ImageBase);
-
-  if (PdbFileName != NULL) {
-    GetShortPdbFileName (PdbFileName, GaugeString);
-  }
-
-  return ;
-}
-
-/**
-
-  Writes performance data of booting into the allocated memory.
-  OS can process these records.
-
-  @param  Event                 The triggered event.
-  @param  Context               Context for this event.
-
-**/
-VOID
-EFIAPI
-WriteBootToOsPerformanceData (
-  IN EFI_EVENT  Event,
-  IN VOID       *Context
-  )
-{
-  EFI_STATUS                Status;
-  UINT32                    LimitCount;
-  EFI_HANDLE                *Handles;
-  UINTN                     NoHandles;
-  CHAR8                     GaugeString[PERF_TOKEN_LENGTH];
-  UINT8                     *Ptr;
-  UINT32                    Index;
-  UINT64                    Ticker;
-  UINT64                    Freq;
-  UINT32                    Duration;
-  UINTN                     LogEntryKey;
-  CONST VOID                *Handle;
-  CONST CHAR8               *Token;
-  CONST CHAR8               *Module;
-  UINT64                    StartTicker;
-  UINT64                    EndTicker;
-  UINT64                    StartValue;
-  UINT64                    EndValue;
-  BOOLEAN                   CountUp;
-  UINTN                     EntryIndex;
-  UINTN                     NumPerfEntries;
-  //
-  // List of flags indicating PerfEntry contains DXE handle
-  //
-  BOOLEAN                   *PerfEntriesAsDxeHandle;
-  UINTN                     VarSize;
-
-  //
-  // Record the performance data for End of BDS
-  //
-  PERF_END(NULL, "BDS", NULL, 0);
-
-  //
-  // Retrieve time stamp count as early as possible
-  //
-  Ticker  = GetPerformanceCounter ();
-
-  Freq    = GetPerformanceCounterProperties (&StartValue, &EndValue);
-  
-  Freq    = DivU64x32 (Freq, 1000);
-
-  mPerfHeader.CpuFreq = Freq;
-
-  //
-  // Record BDS raw performance data
-  //
-  if (EndValue >= StartValue) {
-    mPerfHeader.BDSRaw = Ticker - StartValue;
-    CountUp            = TRUE;
-  } else {
-    mPerfHeader.BDSRaw = StartValue - Ticker;
-    CountUp            = FALSE;
-  }
-
-  if (mAcpiLowMemoryBase == 0x0FFFFFFFF) {
-    VarSize = sizeof (EFI_PHYSICAL_ADDRESS);
-    Status = gRT->GetVariable (
-                    L"PerfDataMemAddr",
-                    &gPerformanceProtocolGuid,
-                    NULL,
-                    &VarSize,
-                    &mAcpiLowMemoryBase
-                    );
-    if (EFI_ERROR (Status)) {
-      //
-      // Fail to get the variable, return.
-      //
-      return;
-    }
-  }
-
-  //
-  // Put Detailed performance data into memory
-  //
-  Handles = NULL;
-  Status = gBS->LocateHandleBuffer (
-                  AllHandles,
-                  NULL,
-                  NULL,
-                  &NoHandles,
-                  &Handles
-                  );
-  if (EFI_ERROR (Status)) {
-    return ;
-  }
-
-  Ptr        = (UINT8 *) ((UINT32) mAcpiLowMemoryBase + sizeof (PERF_HEADER));
-  LimitCount = (UINT32) (PERF_DATA_MAX_LENGTH - sizeof (PERF_HEADER)) / sizeof (PERF_DATA);
-
-  NumPerfEntries = 0;
-  LogEntryKey    = 0;
-  while ((LogEntryKey = GetPerformanceMeasurement (
-                          LogEntryKey,
-                          &Handle,
-                          &Token,
-                          &Module,
-                          &StartTicker,
-                          &EndTicker)) != 0) {
-    NumPerfEntries++;
-  }
-  PerfEntriesAsDxeHandle = AllocateZeroPool (NumPerfEntries * sizeof (BOOLEAN));
-  ASSERT (PerfEntriesAsDxeHandle != NULL);
-  
-  //
-  // Get DXE drivers performance
-  //
-  for (Index = 0; Index < NoHandles; Index++) {
-    Ticker = 0;
-    LogEntryKey = 0;
-    EntryIndex  = 0;
-    while ((LogEntryKey = GetPerformanceMeasurement (
-                            LogEntryKey,
-                            &Handle,
-                            &Token,
-                            &Module,
-                            &StartTicker,
-                            &EndTicker)) != 0) {
-      if (Handle == Handles[Index] && !PerfEntriesAsDxeHandle[EntryIndex]) {
-        PerfEntriesAsDxeHandle[EntryIndex] = TRUE;
-      }
-      EntryIndex++;
-      if ((Handle == Handles[Index]) && (EndTicker != 0)) {
-        if (StartTicker == 1) {
-          StartTicker = StartValue;
-        }
-        if (EndTicker == 1) {
-          EndTicker = StartValue;
-        }
-        Ticker += CountUp ? (EndTicker - StartTicker) : (StartTicker - EndTicker);
-      }
-    }
-
-    Duration = (UINT32) DivU64x32 (Ticker, (UINT32) Freq);
-
-    if (Duration > 0) {
-
-      GetNameFromHandle (Handles[Index], GaugeString);
-
-      AsciiStrCpy (mPerfData.Token, GaugeString);
-      mPerfData.Duration = Duration;
-
-      CopyMem (Ptr, &mPerfData, sizeof (PERF_DATA));
-      Ptr += sizeof (PERF_DATA);
-
-      mPerfHeader.Count++;
-      if (mPerfHeader.Count == LimitCount) {
-        goto Done;
-      }
-    }
-  }
-
-  //
-  // Get inserted performance data
-  //
-  LogEntryKey = 0;
-  EntryIndex  = 0;
-  while ((LogEntryKey = GetPerformanceMeasurement (
-                          LogEntryKey,
-                          &Handle,
-                          &Token,
-                          &Module,
-                          &StartTicker,
-                          &EndTicker)) != 0) {
-    if (!PerfEntriesAsDxeHandle[EntryIndex] && EndTicker != 0) {
-
-      ZeroMem (&mPerfData, sizeof (PERF_DATA));
-
-      AsciiStrnCpy (mPerfData.Token, Token, PERF_TOKEN_LENGTH);
-      if (StartTicker == 1) {
-        StartTicker = StartValue;
-      }
-      if (EndTicker == 1) {
-        EndTicker = StartValue;
-      }
-      Ticker = CountUp ? (EndTicker - StartTicker) : (StartTicker - EndTicker);
-
-      mPerfData.Duration = (UINT32) DivU64x32 (Ticker, (UINT32) Freq);
-
-      CopyMem (Ptr, &mPerfData, sizeof (PERF_DATA));
-      Ptr += sizeof (PERF_DATA);
-
-      mPerfHeader.Count++;
-      if (mPerfHeader.Count == LimitCount) {
-        goto Done;
-      }
-    }
-    EntryIndex++;
-  }
-
-Done:
-
-  FreePool (Handles);
-  FreePool (PerfEntriesAsDxeHandle);
-
-  mPerfHeader.Signiture = PERFORMANCE_SIGNATURE;
-
-  //
-  // Put performance data to Reserved memory
-  //
-  CopyMem (
-    (UINTN *) (UINTN) mAcpiLowMemoryBase,
-    &mPerfHeader,
-    sizeof (PERF_HEADER)
-    );
-
-  return ;
-}
-- 
1.9.5.msysgit.1



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 0/7] Remove the useless pref codes
       [not found] ` <0C09AFA07DD0434D9E2A0C6AEB0483103BA3E142@shsmsx102.ccr.corp.intel.com>
@ 2018-02-09  8:43   ` Bi, Dandan
  0 siblings, 0 replies; 9+ messages in thread
From: Bi, Dandan @ 2018-02-09  8:43 UTC (permalink / raw)
  To: Zeng, Star, edk2-devel@lists.01.org
  Cc: Ni, Ruiyu, Dong, Eric, Gao, Liming, Laszlo Ersek, Wei, David

Thank you star. I will update them before committing the patches.

Thanks,
Dandan

-----Original Message-----
From: Zeng, Star 
Sent: Friday, February 9, 2018 4:31 PM
To: Bi, Dandan <dandan.bi@intel.com>; edk2-devel@lists.01.org
Cc: Ni, Ruiyu <ruiyu.ni@intel.com>; Dong, Eric <eric.dong@intel.com>; Gao, Liming <liming.gao@intel.com>; Laszlo Ersek <lersek@redhat.com>; Wei, David <david.wei@intel.com>; Zeng, Star <star.zeng@intel.com>
Subject: RE: [edk2] [PATCH v2 0/7] Remove the useless pref codes

Hi Dandan,

Two minor comments, with them handled, Reviewed-by: Star Zeng <star.zeng@intel.com> to the patch series. :) 1. Put the first patch to the last patch as it is to remove the definition and should be done at last.
2. Fix typo 'pref' to 'perf', and 'new new' to 'new'.


Thanks,
Star
-----Original Message-----
From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Dandan Bi
Sent: Friday, February 9, 2018 4:05 PM
To: edk2-devel@lists.01.org
Cc: Ni, Ruiyu <ruiyu.ni@intel.com>; Dong, Eric <eric.dong@intel.com>; Gao, Liming <liming.gao@intel.com>; Laszlo Ersek <lersek@redhat.com>; Zeng, Star <star.zeng@intel.com>; Wei, David <david.wei@intel.com>
Subject: [edk2] [PATCH v2 0/7] Remove the useless pref codes

V2:
a. Remove defintions related to old perf code and clean all useless perf codes in edk2 code base.
b.Update commit message.

Our new performance infrastructure (edk2 trunk commit hash value:
SHA-1: 73fef64f14d1b97ae9bd4705df3becc022391eba ~
SHA-1: 115eae650bfd2be2c2bc37360f4a755065e774c4) can support to dump performance date form ACPI table in OS. So we can remove the old pref code to write performance data to OS and related definitions.

Cc: Star Zeng <star.zeng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: David Wei <david.wei@intel.com>
Cc: Mang Guo <mang.guo@intel.com>
Dandan Bi (7):
  MdeModulePkg/Performance.h: Remove the useless definition
  UefiCpuPkg/S3Resume: Remove useless pref code
  MdeModulePkg/BdsDxe: Remove useless Pref Code
  MdeModulePkg/UefiBootManagerLib: Remove the useless pref codes
  IntelFrameworkModulePkg/BdsDxe: Remove the useless Perf codes
  IntelFrameworkModulePkg/GenericBdsLib: Remove the useless Perf codes
  Vlv2TbltDevicePkg/Override/GenericBdsLib:Remove useless Perf code

 .../Library/GenericBdsLib/BdsBoot.c                |  29 +-
 .../Library/GenericBdsLib/GenericBdsLib.inf        |   4 +-
 .../Library/GenericBdsLib/InternalBdsLib.h         |  19 +-
 .../Library/GenericBdsLib/Performance.c            | 313 ------------------
 IntelFrameworkModulePkg/Universal/BdsDxe/Bds.h     |   3 +-
 .../Universal/BdsDxe/BdsDxe.inf                    |   3 +-
 .../Universal/BdsDxe/BdsEntry.c                    |  57 +---
 MdeModulePkg/Include/Guid/Performance.h            |  27 +-
 MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c   |  27 +-
 .../Library/UefiBootManagerLib/BmPerformance.c     | 317 ------------------
 .../Library/UefiBootManagerLib/InternalBm.h        |  17 -
 .../UefiBootManagerLib/UefiBootManagerLib.inf      |   4 +-
 MdeModulePkg/Universal/BdsDxe/Bds.h                |   3 +-
 MdeModulePkg/Universal/BdsDxe/BdsDxe.inf           |   3 +-
 MdeModulePkg/Universal/BdsDxe/BdsEntry.c           |  57 +---
 UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c  | 131 --------
 .../Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf   |   3 +-
 .../Library/GenericBdsLib/BdsBoot.c                |  29 +-
 .../Library/GenericBdsLib/GenericBdsLib.inf        |   4 +-
 .../Library/GenericBdsLib/InternalBdsLib.h         |  19 +-
 .../Library/GenericBdsLib/Performance.c            | 358 ---------------------
 21 files changed, 90 insertions(+), 1337 deletions(-)  delete mode 100644 IntelFrameworkModulePkg/Library/GenericBdsLib/Performance.c
 delete mode 100644 MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c
 delete mode 100644 Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBdsLib/Performance.c

--
1.9.5.msysgit.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-02-09  8:37 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-09  8:05 [PATCH v2 0/7] Remove the useless pref codes Dandan Bi
2018-02-09  8:05 ` [PATCH v2 1/7] MdeModulePkg/Performance.h: Remove the useless definition Dandan Bi
2018-02-09  8:05 ` [PATCH v2 2/7] UefiCpuPkg/S3Resume: Remove useless pref code Dandan Bi
2018-02-09  8:05 ` [PATCH v2 3/7] MdeModulePkg/BdsDxe: Remove useless Pref Code Dandan Bi
2018-02-09  8:05 ` [PATCH v2 4/7] MdeModulePkg/UefiBootManagerLib: Remove the useless pref codes Dandan Bi
2018-02-09  8:05 ` [PATCH v2 5/7] IntelFrameworkModulePkg/BdsDxe: Remove the useless Perf codes Dandan Bi
2018-02-09  8:05 ` [PATCH v2 6/7] IntelFrameworkModulePkg/GenericBdsLib: " Dandan Bi
2018-02-09  8:05 ` [PATCH v2 7/7] Vlv2TbltDevicePkg/Override/GenericBdsLib:Remove useless Perf code Dandan Bi
     [not found] ` <0C09AFA07DD0434D9E2A0C6AEB0483103BA3E142@shsmsx102.ccr.corp.intel.com>
2018-02-09  8:43   ` [PATCH v2 0/7] Remove the useless pref codes Bi, Dandan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox