From nobody Mon Dec 23 14:14:49 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1518163577105968.2596540200169; Fri, 9 Feb 2018 00:06:17 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 4000122361E49; Fri, 9 Feb 2018 00:00:27 -0800 (PST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id B185B223DB780 for ; Fri, 9 Feb 2018 00:00:25 -0800 (PST) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Feb 2018 00:06:10 -0800 Received: from shwdeopenpsi114.ccr.corp.intel.com ([10.239.157.135]) by fmsmga005.fm.intel.com with ESMTP; 09 Feb 2018 00:06:10 -0800 X-Original-To: edk2-devel@lists.01.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.126; helo=mga18.intel.com; envelope-from=dandan.bi@intel.com; receiver=edk2-devel@lists.01.org X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,482,1511856000"; d="scan'208";a="202604631" From: Dandan Bi To: edk2-devel@lists.01.org Date: Fri, 9 Feb 2018 16:05:21 +0800 Message-Id: <1518163522-23144-7-git-send-email-dandan.bi@intel.com> X-Mailer: git-send-email 1.9.5.msysgit.1 In-Reply-To: <1518163522-23144-1-git-send-email-dandan.bi@intel.com> References: <1518163522-23144-1-git-send-email-dandan.bi@intel.com> Subject: [edk2] [PATCH v2 6/7] IntelFrameworkModulePkg/GenericBdsLib: Remove the useless Perf codes X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Star Zeng , Liming Gao MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" 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 Cc: Star Zeng Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dandan Bi --- .../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/Performan= ce.c diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c b/Inte= lFrameworkModulePkg/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. =20 -Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.
+Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.
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 =20 @@ -17,10 +17,33 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITH= ER EXPRESS OR IMPLIED. =20 BOOLEAN mEnumBootDevice =3D FALSE; EFI_HII_HANDLE gBdsLibStringPackHandle =3D NULL; =20 /** + + 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. =20 It will ASSERT() if that operation fails and it will always return EFI_S= UCCESS.=20 =20 @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 pe= rformance data. // Status =3D EfiCreateEventLegacyBootEx( TPL_NOTIFY, - WriteBootToOsPerformanceData, + BmEndOfBdsPerfCode, NULL,=20 &LegacyBootEvent ); ASSERT_EFI_ERROR (Status); ); @@ -2423,11 +2446,11 @@ BdsLibBootViaBootOption ( =20 // // Write boot to OS performance data for UEFI boot // PERF_CODE ( - WriteBootToOsPerformanceData (NULL, NULL); + BmEndOfBdsPerfCode (NULL, NULL); ); =20 // // Report status code for OS Loader StartImage. // diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.in= f 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 dri= ver including: # 1) BDS boot policy interface; # 2) BDS boot device connect interface; # 3) BDS Misc interfaces for mainting boot variable, ouput string, etc. # =20 -# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.
+# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
# This program and the accompanying materials # are licensed and made available under the terms and conditions of the B= SD License # which accompanies this distribution. The full text of the license may = be found at # http://opensource.org/licenses/bsd-license.php # =20 @@ -33,11 +33,10 @@ # VALID_ARCHITECTURES =3D IA32 X64 IPF EBC # =20 [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 er= ror out device ## SOMETIMES_PRODUCES ## Variable:L"BootCurrent" # The boot option of cu= rrent boot ## SOMETIMES_PRODUCES ## Variable:L"BootNext" # The number of next bo= ot option gEfiGlobalVariableGuid gEfiFileInfoGuid ## SOMETIMES_CONSUMES ## G= UID - gPerformanceProtocolGuid ## SOMETIMES_CONSUMES ## V= ariable:L"PerfDataMemAddr" # The ACPI address of performance data gLastEnumLangGuid ## SOMETIMES_PRODUCES ## V= ariable:L"LastEnumLang" # Platform language at last time enumeration. gHdBootDevicePathVariablGuid ## SOMETIMES_PRODUCES ## V= ariable:L"HDDP" # The device path of Boot file on Hard device. gBdsLibStringPackageGuid ## CONSUMES ## HII # HII S= tring 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 =20 -Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.
+Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.
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 =20 @@ -43,11 +43,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITH= ER EXPRESS OR IMPLIED. =20 #include #include #include #include -#include #include #include #include #include #include @@ -83,26 +82,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITH= ER EXPRESS OR IMPLIED. #error "Can not determine the default boot file name for unknown p= rocessor type!" #endif #endif =20 /** - - 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 =20 @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.
-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 IMPLI= ED. - -**/ - -#include "InternalBdsLib.h" - -PERF_HEADER mPerfHeader; -PERF_DATA mPerfData; -EFI_PHYSICAL_ADDRESS mAcpiLowMemoryBase =3D 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 log= ger. - -**/ -VOID -GetShortPdbFileName ( - IN CONST CHAR8 *PdbFileName, - OUT CHAR8 *GaugeString - ) -{ - UINTN Index; - UINTN Index1; - UINTN StartIndex; - UINTN EndIndex; - - if (PdbFileName =3D=3D NULL) { - AsciiStrCpyS (GaugeString, PERF_TOKEN_SIZE, " "); - } else { - StartIndex =3D 0; - for (EndIndex =3D 0; PdbFileName[EndIndex] !=3D 0; EndIndex++) - ; - - for (Index =3D 0; PdbFileName[Index] !=3D 0; Index++) { - if (PdbFileName[Index] =3D=3D '\\') { - StartIndex =3D Index + 1; - } - - if (PdbFileName[Index] =3D=3D '.') { - EndIndex =3D Index; - } - } - - Index1 =3D 0; - for (Index =3D StartIndex; Index < EndIndex; Index++) { - GaugeString[Index1] =3D PdbFileName[Index]; - Index1++; - if (Index1 =3D=3D PERF_TOKEN_LENGTH) { - break; - } - } - - GaugeString[Index1] =3D 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 log= ger. - -**/ -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 =3D gBS->HandleProtocol ( - Handle, - &gEfiLoadedImageProtocolGuid, - (VOID **) &Image - ); - - if (EFI_ERROR (Status)) { - Status =3D 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 =3D gBS->HandleProtocol ( - DriverBinding->ImageHandle, - &gEfiLoadedImageProtocolGuid, - (VOID **) &Image - ); - } - - PdbFileName =3D PeCoffLoaderGetPdbPointer (Image->ImageBase); - - if (PdbFileName !=3D 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 =3D GetPerformanceCounter (); - - Freq =3D GetPerformanceCounterProperties (&StartValue, &EndValue); - =20 - Freq =3D DivU64x32 (Freq, 1000); - - mPerfHeader.CpuFreq =3D Freq; - - // - // Record BDS raw performance data - // - if (EndValue >=3D StartValue) { - mPerfHeader.BDSRaw =3D Ticker - StartValue; - CountUp =3D TRUE; - } else { - mPerfHeader.BDSRaw =3D StartValue - Ticker; - CountUp =3D FALSE; - } - - // - // Reset the entry count - // - mPerfHeader.Count =3D 0; - - if (mAcpiLowMemoryBase =3D=3D 0x0FFFFFFFF) { - VarSize =3D sizeof (EFI_PHYSICAL_ADDRESS); - Status =3D 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 =3D NULL; - Status =3D gBS->LocateHandleBuffer ( - AllHandles, - NULL, - NULL, - &NoHandles, - &Handles - ); - if (EFI_ERROR (Status)) { - return ; - } - - Ptr =3D (UINT8 *) ((UINT32) mAcpiLowMemoryBase + sizeof (PERF_HEA= DER)); - LimitCount =3D (UINT32) (PERF_DATA_MAX_LENGTH - sizeof (PERF_HEADER)) / = sizeof (PERF_DATA); - - // - // Get performance data - // - LogEntryKey =3D 0; - while ((LogEntryKey =3D GetPerformanceMeasurement ( - LogEntryKey, - &Handle, - &Token, - &Module, - &StartTicker, - &EndTicker)) !=3D 0) { - if (EndTicker !=3D 0) { - if (StartTicker =3D=3D 1) { - StartTicker =3D StartValue; - } - if (EndTicker =3D=3D 1) { - EndTicker =3D StartValue; - } - Ticker =3D CountUp ? (EndTicker - StartTicker) : (StartTicker - EndT= icker); - - Duration =3D (UINT32) DivU64x32 (Ticker, (UINT32) Freq); - if (Duration =3D=3D 0) { - continue; - } - - ZeroMem (&mPerfData, sizeof (PERF_DATA)); - - mPerfData.Duration =3D Duration; - - // - // See if the Handle is in the handle buffer - // - Found =3D FALSE; - for (Index =3D 0; Index < NoHandles; Index++) { - if (Handle =3D=3D Handles[Index]) { - GetNameFromHandle (Handles[Index], GaugeString); - AsciiStrCpyS (mPerfData.Token, PERF_TOKEN_SIZE, GaugeString); - Found =3D TRUE; - break; - } - } - - if (!Found) { - AsciiStrnCpyS (mPerfData.Token, PERF_TOKEN_SIZE, Token, PERF_TOKEN= _LENGTH); - } - - CopyMem (Ptr, &mPerfData, sizeof (PERF_DATA)); - Ptr +=3D sizeof (PERF_DATA); - - mPerfHeader.Count++; - if (mPerfHeader.Count =3D=3D LimitCount) { - goto Done; - } - } - } - -Done: - - FreePool (Handles); - - mPerfHeader.Signiture =3D PERFORMANCE_SIGNATURE; - - // - // Put performance data to Reserved memory - // - CopyMem ( - (UINTN *) (UINTN) mAcpiLowMemoryBase, - &mPerfHeader, - sizeof (PERF_HEADER) - ); - - return ; -} --=20 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel