From nobody Mon Dec 23 17:50:22 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 1516781828019197.83669239316828; Wed, 24 Jan 2018 00:17:08 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 5B35F222A3357; Wed, 24 Jan 2018 00:11:37 -0800 (PST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (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 55C58222A3353 for ; Wed, 24 Jan 2018 00:11:36 -0800 (PST) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Jan 2018 00:17:04 -0800 Received: from shwdeopenpsi114.ccr.corp.intel.com ([10.239.157.135]) by orsmga004.jf.intel.com with ESMTP; 24 Jan 2018 00:17:03 -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=192.55.52.93; helo=mga11.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,406,1511856000"; d="scan'208";a="168704536" From: Dandan Bi To: edk2-devel@lists.01.org Date: Wed, 24 Jan 2018 16:01:56 +0800 Message-Id: <1516780916-6364-4-git-send-email-dandan.bi@intel.com> X-Mailer: git-send-email 1.9.5.msysgit.1 In-Reply-To: <1516780916-6364-1-git-send-email-dandan.bi@intel.com> References: <1516780916-6364-1-git-send-email-dandan.bi@intel.com> Subject: [edk2] [patch 3/3] MdeModulePkg/UefiBootManagerLib: Remove useless pref 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: Ruiyu Ni , 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 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: Ruiyu Ni Cc: Star Zeng Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dandan Bi Reviewed-by: Ruiyu Ni --- MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c | 30 +- .../Library/UefiBootManagerLib/BmPerformance.c | 317 -----------------= ---- .../Library/UefiBootManagerLib/InternalBm.h | 1 - .../UefiBootManagerLib/UefiBootManagerLib.inf | 4 +- 4 files changed, 28 insertions(+), 324 deletions(-) delete mode 100644 MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c b/MdeModulePk= g/Library/UefiBootManagerLib/BmBoot.c index d684482..eb8f3b5 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c @@ -1,9 +1,9 @@ /** @file Library functions which relates with booting. =20 -Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.
+Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.
(C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
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 @@ -26,10 +26,34 @@ EFI_BOOT_MANAGER_LEGACY_BOOT mBmLegacyB= oot =3D NULL; /// EFI_GUID mBmHardDriveBootVariableGuid =3D { 0xfab7e9e1, 0x39dd, 0x4f2b, { = 0x84, 0x08, 0xe2, 0x0e, 0x90, 0x6c, 0xb6, 0xde } }; EFI_GUID mBmAutoCreateBootOptionGuid =3D { 0x8108ac4e, 0x9f11, 0x4d59, { = 0x85, 0x0e, 0xe2, 0x1a, 0x52, 0x2c, 0x59, 0xb2 } }; =20 /** + + The end of BDS perf code. + + @param Event The triggered event. + @param Context Context for this event. + +**/ +VOID +EFIAPI +BmEndOfBdsPrefCode ( + 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. =20 @param RefreshLegacyBootOption The function pointer to create all the le= gacy boot options. @param LegacyBoot The function pointer to boot the legacy b= oot option. **/ @@ -1820,11 +1844,11 @@ EfiBootManagerBoot ( // // Create an event to be signalled when Legacy Boot occurs to writ= e performance data. // Status =3D EfiCreateEventLegacyBootEx( TPL_NOTIFY, - BmWriteBootToOsPerformanceData, + BmEndOfBdsPrefCode, NULL,=20 &LegacyBootEvent ); ASSERT_EFI_ERROR (Status); ); @@ -1861,11 +1885,11 @@ EfiBootManagerBoot ( =20 // // Write boot to OS performance data for UEFI boot // PERF_CODE ( - BmWriteBootToOsPerformanceData (NULL, NULL); + BmEndOfBdsPrefCode (NULL, NULL); ); =20 REPORT_STATUS_CODE (EFI_PROGRESS_CODE, PcdGet32 (PcdProgressCodeOsLoader= Start)); =20 Status =3D gBS->StartImage (ImageHandle, &BootOption->ExitDataSize, &Boo= tOption->ExitData); diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c b/MdeM= odulePkg/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.
-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 "InternalBm.h" - -PERF_HEADER mBmPerfHeader; -PERF_DATA mBmPerfData; -EFI_PHYSICAL_ADDRESS mBmAcpiLowMemoryBase =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. - @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 =3D=3D NULL) { - AsciiStrCpyS (GaugeString, StringSize, " "); - } 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 '\\') || (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 StringSize - 1) { - 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. - @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 =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) { - 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 =3D GetPerformanceCounter (); - - Freq =3D GetPerformanceCounterProperties (&StartValue, &EndValue); - =20 - Freq =3D DivU64x32 (Freq, 1000); - - mBmPerfHeader.CpuFreq =3D Freq; - - // - // Record BDS raw performance data - // - if (EndValue >=3D StartValue) { - mBmPerfHeader.BDSRaw =3D Ticker - StartValue; - CountUp =3D TRUE; - } else { - mBmPerfHeader.BDSRaw =3D StartValue - Ticker; - CountUp =3D FALSE; - } - - // - // Reset the entry count - // - mBmPerfHeader.Count =3D 0; - - if (mBmAcpiLowMemoryBase =3D=3D 0x0FFFFFFFF) { - VarSize =3D sizeof (EFI_PHYSICAL_ADDRESS); - Status =3D 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 =3D NULL; - Status =3D gBS->LocateHandleBuffer ( - AllHandles, - NULL, - NULL, - &NoHandles, - &Handles - ); - if (EFI_ERROR (Status)) { - return ; - } - - Ptr =3D (UINT8 *) ((UINT32) mBmAcpiLowMemoryBase + sizeof (PERF_H= EADER)); - 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 (&mBmPerfData, sizeof (PERF_DATA)); - - mBmPerfData.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]) { - BmGetNameFromHandle (Handles[Index], GaugeString, PERF_TOKEN_SIZ= E); - AsciiStrCpyS (mBmPerfData.Token, PERF_TOKEN_SIZE, GaugeString); - Found =3D TRUE; - break; - } - } - - if (!Found) { - AsciiStrnCpyS (mBmPerfData.Token, PERF_TOKEN_SIZE, Token, PERF_TOK= EN_LENGTH); - } - - CopyMem (Ptr, &mBmPerfData, sizeof (PERF_DATA)); - Ptr +=3D sizeof (PERF_DATA); - - mBmPerfHeader.Count++; - if (mBmPerfHeader.Count =3D=3D LimitCount) { - goto Done; - } - } - } - -Done: - - FreePool (Handles); - - mBmPerfHeader.Signiture =3D 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/MdeModu= lePkg/Library/UefiBootManagerLib/InternalBm.h index 0224bd3..64c8d15 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h +++ b/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h @@ -49,11 +49,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITH= ER EXPRESS OR IMPLIED. #include =20 #include #include #include -#include #include =20 #include #include #include 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 o= ption # manipulation, hotkey registration, UEFI boot, connect/disconnect, conso= le # manipulation, driver health checking and etc. # -# Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.
+# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
# (C) Copyright 2016 Hewlett Packard Enterprise Development LP
# 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 @@ -31,11 +31,10 @@ # # VALID_ARCHITECTURES =3D IA32 X64 IPF EBC # =20 [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 i= n device) ## SOMETIMES_CONSUMES ## Variable:L"ConOut" (The device path of console = out device) ## SOMETIMES_CONSUMES ## Variable:L"ErrOut" (The device path of error ou= t device) gEfiGlobalVariableGuid =20 - gPerformanceProtocolGuid ## SOMETIMES_CONSUMES ## V= ariable:L"PerfDataMemAddr" (The ACPI address of performance data) gEdkiiStatusCodeDataTypeVariableGuid ## SOMETIMES_CONSUMES ## G= UID gEfiDiskInfoAhciInterfaceGuid ## SOMETIMES_CONSUMES ## G= UID gEfiDiskInfoIdeInterfaceGuid ## SOMETIMES_CONSUMES ## G= UID gEfiDiskInfoScsiInterfaceGuid ## SOMETIMES_CONSUMES ## G= UID gEfiDiskInfoSdMmcInterfaceGuid ## SOMETIMES_CONSUMES ## G= UID --=20 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel