From nobody Mon Dec 23 09:47: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 151816356081780.06098951268405; Fri, 9 Feb 2018 00:06:00 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 88935223DB79E; Fri, 9 Feb 2018 00:00:13 -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 4BB0C223DB780 for ; Fri, 9 Feb 2018 00:00:11 -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:05:56 -0800 Received: from shwdeopenpsi114.ccr.corp.intel.com ([10.239.157.135]) by fmsmga005.fm.intel.com with ESMTP; 09 Feb 2018 00:05:55 -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="202604561" From: Dandan Bi To: edk2-devel@lists.01.org Date: Fri, 9 Feb 2018 16:05:16 +0800 Message-Id: <1518163522-23144-2-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 1/7] MdeModulePkg/Performance.h: Remove the useless definition 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: Liming Gao , Star Zeng 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" Remove the definitions related to old perf codes. Cc: Star Zeng Cc: Liming Gao Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dandan Bi --- 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. =20 =20 -Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
+Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made availabl= e under=20 the terms and conditions of the BSD License that accompanies this distribu= tion. =20 The full text of the license may be found at http://opensource.org/licenses/bsd-license.php. = =20 =20 @@ -49,35 +49,10 @@ typedef struct { UINT32 NumberOfEntries; ///< The number of all performan= ce log entries. UINT32 Reserved; } PEI_PERFORMANCE_LOG_HEADER; =20 =20 -// -// 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 } } =20 #define PERFORMANCE_EX_PROTOCOL_GUID \ { 0x1ea81bec, 0xf01a, 0x4d98, { 0xa2, 0x1, 0x4a, 0x61, 0xce, 0x2f, 0xc0= , 0x22 } } --=20 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Mon Dec 23 09:47: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 151816356417436.6878728884642; Fri, 9 Feb 2018 00:06:04 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id D70E421E0BA01; Fri, 9 Feb 2018 00:00:16 -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 33615223DB780 for ; Fri, 9 Feb 2018 00:00:15 -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:00 -0800 Received: from shwdeopenpsi114.ccr.corp.intel.com ([10.239.157.135]) by fmsmga005.fm.intel.com with ESMTP; 09 Feb 2018 00:06:00 -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="202604587" From: Dandan Bi To: edk2-devel@lists.01.org Date: Fri, 9 Feb 2018 16:05:17 +0800 Message-Id: <1518163522-23144-3-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 2/7] UefiCpuPkg/S3Resume: Remove useless pref code 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: Laszlo Ersek , Eric Dong , 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" 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 Cc: Laszlo Ersek Cc: Liming Gao Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dandan Bi Reviewed-by: Laszlo Ersek --- 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 @@ =20 #include =20 #include #include -#include #include #include #include #include #include @@ -284,136 +283,10 @@ GLOBAL_REMOVE_IF_UNREFERENCED IA32_GDT mGdtEntries[]= =3D { GLOBAL_REMOVE_IF_UNREFERENCED CONST IA32_DESCRIPTOR mGdt =3D { sizeof (mGdtEntries) - 1, (UINTN) mGdtEntries }; =20 -/** - Performance measure function to get S3 detailed performance data. - - This function will getS3 detailed performance data and saved in pre-rese= rved 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 =3D GetPerformanceCounter (); - - Freq =3D GetPerformanceCounterProperties (&StartValue, &EndValue); - - Freq =3D DivU64x32 (Freq, 1000); - - Status =3D PeiServicesLocatePpi ( - &gEfiPeiReadOnlyVariable2PpiGuid, - 0, - NULL, - (VOID **) &VariableServices - ); - if (EFI_ERROR (Status)) { - return; - } - - VarSize =3D sizeof (EFI_PHYSICAL_ADDRESS); - Status =3D 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 =3D (PERF_HEADER *) (UINTN) mAcpiLowMemoryBase; - - if (PerfHeader->Signiture !=3D PERFORMANCE_SIGNATURE) { - DEBUG ((EFI_D_ERROR, "Performance data in ACPI memory get corrupted! \= n")); - return; - } - - // - // Record total S3 resume time. - // - if (EndValue >=3D StartValue) { - PerfHeader->S3Resume =3D Ticker - StartValue; - CountUp =3D TRUE; - } else { - PerfHeader->S3Resume =3D StartValue - Ticker; - CountUp =3D FALSE; - } - - // - // Get S3 detailed performance data - // - Index =3D 0; - LogEntryKey =3D 0; - while ((LogEntryKey =3D GetPerformanceMeasurement ( - LogEntryKey, - &Handle, - &Token, - &Module, - &StartTicker, - &EndTicker)) !=3D 0) { - if (EndTicker !=3D 0) { - PerfData =3D &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) =3D= =3D 0) && (Handle !=3D NULL)) { - AsciiSPrint (PerfData->Token, PERF_TOKEN_LENGTH, "0x%11p", Handle); - } else { - AsciiStrnCpyS (PerfData->Token, PERF_TOKEN_SIZE, Token, PERF_TOKEN= _LENGTH); - } - if (StartTicker =3D=3D 1) { - StartTicker =3D StartValue; - } - if (EndTicker =3D=3D 1) { - EndTicker =3D StartValue; - } - Ticker =3D CountUp? (EndTicker - StartTicker) : (StartTicker - EndTi= cker); - PerfData->Duration =3D (UINT32) DivU64x32 (Ticker, (UINT32) Freq); - - // - // Only Record > 1ms performance data so that more big performance c= an be recorded. - // - if ((Ticker > Freq) && (++Index >=3D PERF_PEI_ENTRY_MAX_NUM)) { - // - // Reach the maximum number of PEI performance log entries. - // - break; - } - } - } - PerfHeader->S3EntryNum =3D (UINT32) Index; -} =20 /** The function will check if current waking vector is long mode. =20 @param AcpiS3Context a pointer to a structure of ACPI_S= 3_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); =20 - PERF_CODE ( - WriteToOsS3PerformanceData (); - ); - AsmTransferControl =3D (ASM_TRANSFER_CONTROL)(UINTN)PeiS3ResumeState->As= mTransferControl; if (Facs->XFirmwareWakingVector !=3D 0) { // // Switch to native waking vector // diff --git a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf b/Uefi= CpuPkg/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.
+# Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.
# Copyright (c) 2017, AMD Incorporated. All rights reserved.
# # This program and the accompanying materials are # licensed and made available under the terms and conditions of the BSD Li= cense # which accompanies this distribution. The full text of the license may b= e found at @@ -71,11 +71,10 @@ PrintLib =20 [Guids] gEfiBootScriptExecutorVariableGuid ## SOMETIMES_CONSUMES ## U= NDEFINED # LockBox gEfiBootScriptExecutorContextGuid ## SOMETIMES_CONSUMES ## U= NDEFINED # LockBox - gPerformanceProtocolGuid ## SOMETIMES_CONSUMES ## V= ariable:L"PerfDataMemAddr" ## SOMETIMES_CONSUMES ## HOB ## SOMETIMES_CONSUMES ## UNDEFINED # LockBox gEfiAcpiVariableGuid gEfiAcpiS3ContextGuid ## SOMETIMES_CONSUMES ## U= NDEFINED # LockBox gEdkiiEndOfS3ResumeGuid ## SOMETIMES_CONSUMES ## U= NDEFINED # Used to do smm communication --=20 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Mon Dec 23 09:47: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 1518163567306292.2416589765778; Fri, 9 Feb 2018 00:06:07 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 3B923222DE138; Fri, 9 Feb 2018 00:00:20 -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 408B9223DB780 for ; Fri, 9 Feb 2018 00:00:18 -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:04 -0800 Received: from shwdeopenpsi114.ccr.corp.intel.com ([10.239.157.135]) by fmsmga005.fm.intel.com with ESMTP; 09 Feb 2018 00:06: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=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="202604617" From: Dandan Bi To: edk2-devel@lists.01.org Date: Fri, 9 Feb 2018 16:05:18 +0800 Message-Id: <1518163522-23144-4-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 3/7] MdeModulePkg/BdsDxe: Remove useless Pref Code 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" 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 Cc: Ruiyu Ni Cc: Star Zeng Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dandan Bi Reviewed-by: Ruiyu Ni --- 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/B= dsDxe/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 =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 @@ -16,11 +16,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITH= ER EXPRESS OR IMPLIED. #define _BDS_MODULE_H_ =20 #include #include #include -#include #include #include =20 #include #include diff --git a/MdeModulePkg/Universal/BdsDxe/BdsDxe.inf b/MdeModulePkg/Univer= sal/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 archi= tecture protocol=20 # gEfiBdsArchProtocolGuid. After DxeCore finish dispatching, DxeCore will= invoke Entry # interface of protocol gEfiBdsArchProtocolGuid, then BDS phase is entere= d. # =20 -# Copyright (c) 2008 - 2016, Intel Corporation. All rights reserved.
+# Copyright (c) 2008 - 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 # @@ -76,11 +76,10 @@ ## SOMETIMES_CONSUMES ## V= ariable:L"ConIn" (The device path of console in device) ## SOMETIMES_CONSUMES ## V= ariable:L"ConOut" (The device path of console out device) ## SOMETIMES_CONSUMES ## V= ariable:L"ErrOut" (The device path of error out device) gConnectConInEventGuid ## SOMETIMES_CONSUMES ## E= vent gEdkiiStatusCodeDataTypeVariableGuid ## SOMETIMES_CONSUMES ## G= UID - gPerformanceProtocolGuid ## SOMETIMES_PRODUCES ## V= ariable:L"PerfDataMemAddr" (The ACPI address of performance data) gEfiEventReadyToBootGuid ## CONSUMES ## E= vent =20 [Protocols] gEfiBdsArchProtocolGuid ## PRODUCES gEfiSimpleTextInputExProtocolGuid ## CONSUMES diff --git a/MdeModulePkg/Universal/BdsDxe/BdsEntry.c b/MdeModulePkg/Univer= sal/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 b= e invoked to enter BDS phase. =20 -Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.
+Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.
(C) Copyright 2016 Hewlett Packard Enterprise Development LP
(C) Copyright 2015 Hewlett-Packard Development Company, L.P.
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 (); } =20 /** - - 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 =3D 0x0FFFFFFFFULL; - - // - // Allocate a block of memory that will contain performance data to OS. - // - Status =3D 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 =3D 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 t= o 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 =3D gBS->LocateProtocol (&gEdkiiVariableLockProtocolGuid, NULL,= (VOID **) &VariableLock); - if (!EFI_ERROR (Status)) { - Status =3D VariableLock->RequestToLock (VariableLock, L"PerfDataMemA= ddr", &gPerformanceProtocolGuid); - ASSERT_EFI_ERROR (Status); - } - } -} - -/** Enter an infinite loop of calling the Boot Manager Menu. =20 This is a last resort alternative to BdsEntry() giving up for good. This function never returns. =20 @@ -778,14 +727,10 @@ BdsEntry ( // PERF_END (NULL, "DXE", NULL, 0); PERF_START (NULL, "BDS", NULL, 0); DEBUG ((EFI_D_INFO, "[Bds] Entry...\n")); =20 - PERF_CODE ( - BdsAllocateMemoryForPerformanceData (); - ); - // // Fill in FirmwareVendor and FirmwareRevision from PCDs // FirmwareVendor =3D (CHAR16 *) PcdGetPtr (PcdFirmwareVendor); gST->FirmwareVendor =3D AllocateRuntimeCopyPool (StrSize (FirmwareVendor= ), FirmwareVendor); --=20 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Mon Dec 23 09:47: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 1518163569689287.26558936461265; Fri, 9 Feb 2018 00:06:09 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 88CBA222DE15A; Fri, 9 Feb 2018 00:00:22 -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 2F971223DB780 for ; Fri, 9 Feb 2018 00:00:21 -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:06 -0800 Received: from shwdeopenpsi114.ccr.corp.intel.com ([10.239.157.135]) by fmsmga005.fm.intel.com with ESMTP; 09 Feb 2018 00:06:06 -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="202604622" From: Dandan Bi To: edk2-devel@lists.01.org Date: Fri, 9 Feb 2018 16:05:19 +0800 Message-Id: <1518163522-23144-5-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 4/7] MdeModulePkg/UefiBootManagerLib: Remove the 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" 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 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 | 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/MdeModulePk= g/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 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 /** + + 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. =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. **/ @@ -1828,11 +1851,11 @@ EfiBootManagerBoot ( // // Create an event to be signalled when Legacy Boot occurs to writ= e performance data. // Status =3D EfiCreateEventLegacyBootEx( TPL_NOTIFY, - BmWriteBootToOsPerformanceData, + BmEndOfBdsPerfCode, NULL,=20 &LegacyBootEvent ); ASSERT_EFI_ERROR (Status); ); @@ -1869,11 +1892,11 @@ EfiBootManagerBoot ( =20 // // Write boot to OS performance data for UEFI boot // PERF_CODE ( - BmWriteBootToOsPerformanceData (NULL, NULL); + BmEndOfBdsPerfCode (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..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, EITH= ER EXPRESS OR IMPLIED. #include =20 #include #include #include -#include #include =20 #include #include #include @@ -183,26 +182,10 @@ BmGetFreeOptionNumber ( IN EFI_BOOT_MANAGER_LOAD_OPTION_TYPE LoadOptionType, OUT UINT16 *FreeOptionNumber ); =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 -BmWriteBootToOsPerformanceData ( - IN EFI_EVENT Event, - IN VOID *Context - ); - -/** This routine adjust the memory information for different memory type and=20 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 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 From nobody Mon Dec 23 09:47: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 1518163572907380.11146832239785; Fri, 9 Feb 2018 00:06:12 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id DBEA922361E45; Fri, 9 Feb 2018 00:00:23 -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 DFBC3223DB780 for ; Fri, 9 Feb 2018 00:00:22 -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:08 -0800 Received: from shwdeopenpsi114.ccr.corp.intel.com ([10.239.157.135]) by fmsmga005.fm.intel.com with ESMTP; 09 Feb 2018 00:06:08 -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="202604626" From: Dandan Bi To: edk2-devel@lists.01.org Date: Fri, 9 Feb 2018 16:05:20 +0800 Message-Id: <1518163522-23144-6-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 5/7] IntelFrameworkModulePkg/BdsDxe: 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 --- 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/IntelFramewor= kModulePkg/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 =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 @@ -34,11 +34,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITH= ER EXPRESS OR IMPLIED. #include #include #include #include #include -#include #include #include #include #include #include diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf b/IntelFra= meworkModulePkg/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 contr= ol 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. # =20 -# Copyright (c) 2008 - 2015, Intel Corporation. All rights reserved.
+# Copyright (c) 2008 - 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 @@ -155,11 +155,10 @@ ## SOMETIMES_CONSUMES ## Event gConnectConInEventGuid gEfiFmpCapsuleGuid ## SOMETIMES_CONSUMES ## G= UID # FMP Capsule gEdkiiStatusCodeDataTypeVariableGuid ## SOMETIMES_CONSUMES ## G= UID gEfiUartDevicePathGuid ## SOMETIMES_CONSUMES ## G= UID (Identify the device path for UARD device) - gPerformanceProtocolGuid ## SOMETIMES_PRODUCES ## V= ariable:L"PerfDataMemAddr" (The ACPI address of performance data) =20 [Protocols] gEfiSimpleFileSystemProtocolGuid ## SOMETIMES_CONSUMES gEfiLoadFileProtocolGuid ## SOMETIMES_CONSUMES gEfiBdsArchProtocolGuid ## PRODUCES diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c b/IntelFra= meworkModulePkg/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 b= e invoked to enter BDS phase. =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 @@ -443,61 +443,10 @@ BdsFormalizeEfiGlobalVariable ( =20 } =20 /** =20 - 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 =3D 0x0FFFFFFFFULL; - - // - // Allocate a block of memory that will contain performance data to OS. - // - Status =3D 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_VA= RIABLE_RUNTIME_ACCESS, - sizeof (EFI_PHYSICAL_ADDRESS), - &AcpiLowMemoryBase - ); - if (EFI_ERROR (Status)) { - DEBUG ((EFI_D_ERROR, "[Bds] PerfDataMemAddr (%08x) cannot be saved t= o 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 =3D gBS->LocateProtocol (&gEdkiiVariableLockProtocolGuid, NULL,= (VOID **) &VariableLock); - if (!EFI_ERROR (Status)) { - Status =3D VariableLock->RequestToLock (VariableLock, L"PerfDataMemA= ddr", &gPerformanceProtocolGuid); - ASSERT_EFI_ERROR (Status); - } - } -} - -/** - Service routine for BdsInstance->Entry(). Devices are connected, the consoles are initialized, and the boot options are tried. =20 @param This Protocol Instance structure. =20 @@ -521,14 +470,10 @@ BdsEntry ( // Insert the performance probe // PERF_END (NULL, "DXE", NULL, 0); PERF_START (NULL, "BDS", NULL, 0); =20 - PERF_CODE ( - BdsAllocateMemoryForPerformanceData (); - ); - // // Initialize the global system boot option and driver option // InitializeListHead (&DriverOptionList); InitializeListHead (&BootOptionList); --=20 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Mon Dec 23 09:47: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 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 From nobody Mon Dec 23 09:47: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 1518163584162273.8494355987483; Fri, 9 Feb 2018 00:06:24 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id F29A122361E57; Fri, 9 Feb 2018 00:00:32 -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 EC81E223DB7BF for ; Fri, 9 Feb 2018 00:00:29 -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:15 -0800 Received: from shwdeopenpsi114.ccr.corp.intel.com ([10.239.157.135]) by fmsmga005.fm.intel.com with ESMTP; 09 Feb 2018 00:06:14 -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="202604643" From: Dandan Bi To: edk2-devel@lists.01.org Date: Fri, 9 Feb 2018 16:05:22 +0800 Message-Id: <1518163522-23144-8-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 7/7] Vlv2TbltDevicePkg/Override/GenericBdsLib:Remove useless Perf code 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: David Wei 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: David Wei Cc: Mang Guo Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dandan Bi Reviewed-by: zwei4 --- .../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/Libr= ary/GenericBdsLib/Performance.c diff --git a/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/Gen= ericBdsLib/BdsBoot.c b/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/L= ibrary/GenericBdsLib/BdsBoot.c index 6ada862..282ab8e 100644 --- a/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBds= Lib/BdsBoot.c +++ b/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBds= Lib/BdsBoot.c @@ -1,9 +1,9 @@ /** @file BDS Lib functions which relate with create or process the boot option. =20 -Copyright (c) 2004 - 2015, 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 @@ -19,10 +19,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. @@ -1695,11 +1718,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); ); @@ -2434,11 +2457,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/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/Gen= ericBdsLib/GenericBdsLib.inf b/Vlv2TbltDevicePkg/Override/IntelFrameworkMod= ulePkg/Library/GenericBdsLib/GenericBdsLib.inf index 33ca298..95a0023 100644 --- a/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBds= Lib/GenericBdsLib.inf +++ b/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBds= Lib/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 @@ -95,11 +94,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_PRODUCES ## 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/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/Gen= ericBdsLib/InternalBdsLib.h b/Vlv2TbltDevicePkg/Override/IntelFrameworkModu= lePkg/Library/GenericBdsLib/InternalBdsLib.h index c32579b..1feed31 100644 --- a/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBds= Lib/InternalBdsLib.h +++ b/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBds= Lib/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 @@ -44,11 +44,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITH= ER EXPRESS OR IMPLIED. =20 #include #include #include #include -#include #include #include #include #include #include @@ -84,26 +83,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/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/Gen= ericBdsLib/Performance.c b/Vlv2TbltDevicePkg/Override/IntelFrameworkModuleP= kg/Library/GenericBdsLib/Performance.c deleted file mode 100644 index 047d2a7..0000000 --- a/Vlv2TbltDevicePkg/Override/IntelFrameworkModulePkg/Library/GenericBds= Lib/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.
-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) { - AsciiStrCpy (GaugeString, " "); - } 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 - 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. - -**/ -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 =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_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 =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; - } - - 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); - - NumPerfEntries =3D 0; - LogEntryKey =3D 0; - while ((LogEntryKey =3D GetPerformanceMeasurement ( - LogEntryKey, - &Handle, - &Token, - &Module, - &StartTicker, - &EndTicker)) !=3D 0) { - NumPerfEntries++; - } - PerfEntriesAsDxeHandle =3D AllocateZeroPool (NumPerfEntries * sizeof (BO= OLEAN)); - ASSERT (PerfEntriesAsDxeHandle !=3D NULL); - =20 - // - // Get DXE drivers performance - // - for (Index =3D 0; Index < NoHandles; Index++) { - Ticker =3D 0; - LogEntryKey =3D 0; - EntryIndex =3D 0; - while ((LogEntryKey =3D GetPerformanceMeasurement ( - LogEntryKey, - &Handle, - &Token, - &Module, - &StartTicker, - &EndTicker)) !=3D 0) { - if (Handle =3D=3D Handles[Index] && !PerfEntriesAsDxeHandle[EntryInd= ex]) { - PerfEntriesAsDxeHandle[EntryIndex] =3D TRUE; - } - EntryIndex++; - if ((Handle =3D=3D Handles[Index]) && (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 - E= ndTicker); - } - } - - Duration =3D (UINT32) DivU64x32 (Ticker, (UINT32) Freq); - - if (Duration > 0) { - - GetNameFromHandle (Handles[Index], GaugeString); - - AsciiStrCpy (mPerfData.Token, GaugeString); - mPerfData.Duration =3D Duration; - - CopyMem (Ptr, &mPerfData, sizeof (PERF_DATA)); - Ptr +=3D sizeof (PERF_DATA); - - mPerfHeader.Count++; - if (mPerfHeader.Count =3D=3D LimitCount) { - goto Done; - } - } - } - - // - // Get inserted performance data - // - LogEntryKey =3D 0; - EntryIndex =3D 0; - while ((LogEntryKey =3D GetPerformanceMeasurement ( - LogEntryKey, - &Handle, - &Token, - &Module, - &StartTicker, - &EndTicker)) !=3D 0) { - if (!PerfEntriesAsDxeHandle[EntryIndex] && EndTicker !=3D 0) { - - ZeroMem (&mPerfData, sizeof (PERF_DATA)); - - AsciiStrnCpy (mPerfData.Token, Token, PERF_TOKEN_LENGTH); - if (StartTicker =3D=3D 1) { - StartTicker =3D StartValue; - } - if (EndTicker =3D=3D 1) { - EndTicker =3D StartValue; - } - Ticker =3D CountUp ? (EndTicker - StartTicker) : (StartTicker - EndT= icker); - - mPerfData.Duration =3D (UINT32) DivU64x32 (Ticker, (UINT32) Freq); - - CopyMem (Ptr, &mPerfData, sizeof (PERF_DATA)); - Ptr +=3D sizeof (PERF_DATA); - - mPerfHeader.Count++; - if (mPerfHeader.Count =3D=3D LimitCount) { - goto Done; - } - } - EntryIndex++; - } - -Done: - - FreePool (Handles); - FreePool (PerfEntriesAsDxeHandle); - - 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