From nobody Mon Dec 23 14:12:40 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 1516781826820961.1026453192247; Wed, 24 Jan 2018 00:17:06 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 852BE222A3350; Wed, 24 Jan 2018 00:11:29 -0800 (PST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 3FDFF222A334B for ; Wed, 24 Jan 2018 00:11:28 -0800 (PST) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Jan 2018 00:16:55 -0800 Received: from shwdeopenpsi114.ccr.corp.intel.com ([10.239.157.135]) by orsmga004.jf.intel.com with ESMTP; 24 Jan 2018 00:16:54 -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.120; helo=mga04.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="168704495" From: Dandan Bi To: edk2-devel@lists.01.org Date: Wed, 24 Jan 2018 16:01:54 +0800 Message-Id: <1516780916-6364-2-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 1/3] 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" 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: 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 14:12:40 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 1516781827936927.2067760323038; Wed, 24 Jan 2018 00:17:07 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id EE760222A3355; Wed, 24 Jan 2018 00:11:35 -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 8E063222A3353 for ; Wed, 24 Jan 2018 00:11:34 -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:02 -0800 Received: from shwdeopenpsi114.ccr.corp.intel.com ([10.239.157.135]) by orsmga004.jf.intel.com with ESMTP; 24 Jan 2018 00:17: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=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="168704519" From: Dandan Bi To: edk2-devel@lists.01.org Date: Wed, 24 Jan 2018 16:01:55 +0800 Message-Id: <1516780916-6364-3-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 2/3] 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" 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/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 14:12:40 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