From nobody Mon Sep 16 19:18:56 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; dmarc=fail(p=none dis=none) header.from=intel.com Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1529657811002935.1392025201172; Fri, 22 Jun 2018 01:56:51 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id C1B4E210D226C; Fri, 22 Jun 2018 01:56:49 -0700 (PDT) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (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 DB08F210C4DC7 for ; Fri, 22 Jun 2018 01:56:48 -0700 (PDT) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Jun 2018 01:56:39 -0700 Received: from shwdeopenpsi114.ccr.corp.intel.com ([10.239.157.135]) by fmsmga004.fm.intel.com with ESMTP; 22 Jun 2018 01:56:38 -0700 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.88; helo=mga01.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.51,256,1526367600"; d="scan'208";a="65390299" From: Dandan Bi To: edk2-devel@lists.01.org Date: Fri, 22 Jun 2018 16:56:15 +0800 Message-Id: <20180622085623.154924-2-dandan.bi@intel.com> X-Mailer: git-send-email 2.14.3.windows.1 In-Reply-To: <20180622085623.154924-1-dandan.bi@intel.com> References: <20180622085623.154924-1-dandan.bi@intel.com> Subject: [edk2] [patch V2 1/9] MdeModulePkg: Add PERFORMANCE_MEASUREMENT_PROTOCOL X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 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" Add PerformanceMeasurement protocol to log performance info. Cc: Liming Gao Cc: Star Zeng Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dandan Bi --- MdeModulePkg/Include/Guid/PerformanceMeasurement.h | 91 ++++++++++++++++++= ++++ MdeModulePkg/MdeModulePkg.dec | 3 + 2 files changed, 94 insertions(+) create mode 100644 MdeModulePkg/Include/Guid/PerformanceMeasurement.h diff --git a/MdeModulePkg/Include/Guid/PerformanceMeasurement.h b/MdeModule= Pkg/Include/Guid/PerformanceMeasurement.h new file mode 100644 index 00000000000..f2955c73589 --- /dev/null +++ b/MdeModulePkg/Include/Guid/PerformanceMeasurement.h @@ -0,0 +1,91 @@ +/** @file + +Copyright (c) 2017, Microsoft Corporation +Copyright (c) 2018, Intel Corporation. All rights reserved.
+ +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notic= e, +this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS= " AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPL= IED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS= CLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY D= IRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUD= ING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF U= SE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEO= RY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLI= GENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Performance measurement protocol, allows logging performance data. + +**/ + +#ifndef _PERFORMANCE_MEASUREMENT_H_ +#define _PERFORMANCE_MEASUREMENT_H_ + +// +// GUID for Performance measurement Protocol +// +#define PERFORMANCE_MEASUREMENT_PROTOCOL_GUID \ + { 0xc85d06be, 0x5f75, 0x48ce, {0xa8, 0x0f, 0x12, 0x36, 0xba, 0x3b, 0x87,= 0xb1 } } + +#define SMM_PERFORMANCE_MEASUREMENT_PROTOCOL_GUID \ + { 0xd56b6d73, 0x1a7b, 0x4015, {0x9b, 0xb4, 0x7b, 0x07, 0x17, 0x29, 0xed,= 0x24 } } + +typedef struct _EDKII_PERFORMANCE_MEASUREMENT_PROTOCOL EDKII_PERFORMANCE_M= EASUREMENT_PROTOCOL; + +typedef enum { + PerfStartEntry, // used in StartPerformanceMeasur= ement()/StartPerformanceMeasurementEx() + // (map to PERF_START/PERF_START_= EX) + PerfEndEntry, // used in EndPerformanceMeasurem= ent()/EndPerformanceMeasurementEx() + // (map to PERF_END/PERF_END_EX) + PerfEntry // used in LogPerformanceMeasurem= ent() + // (map to other Perf macros exce= pt above 4 macros) +} PERF_MEASUREMENT_ATTRIBUTE; + +/** + Create performance record with event description and a timestamp. + + @param CallerIdentifier - Image handle or pointer to caller ID GUID. + @param Guid - Pointer to a GUID. + @param String - Pointer to a string describing the measuremen= t. + @param TimeStamp - 64-bit time stamp. + @param Address - Pointer to a location in memory relevant to t= he measurement. + @param Identifier - Performance identifier describing the type of= measurement. + @param Attribute - The attribute of the measurement. According t= o attribute can create a start + record for PERF_START/PERF_START_EX, or a end= record for PERF_END/PERF_END_EX, + or a general record for other Perf macros. + + @retval EFI_SUCCESS - Successfully created performance record. + @retval EFI_OUT_OF_RESOURCES - Ran out of space to store the records. + @retval EFI_INVALID_PARAMETER - Invalid parameter passed to function - N= ULL + pointer or invalid PerfId. + +**/ +typedef +EFI_STATUS +(EFIAPI *CREATE_PERFORMANCE_MEASUREMENT)( + IN CONST VOID *CallerIdentifier, OPTIONAL + IN CONST VOID *Guid, OPTIONAL + IN CONST CHAR8 *String, OPTIONAL + IN UINT64 TimeStamp, OPTIONAL + IN UINT64 Address, OPTIONAL + IN UINT32 Identifier, + IN PERF_MEASUREMENT_ATTRIBUTE Attribute + ); + +struct _EDKII_PERFORMANCE_MEASUREMENT_PROTOCOL { + CREATE_PERFORMANCE_MEASUREMENT CreatePerformanceMeasurement; +}; + +extern EFI_GUID gEdkiiPerformanceMeasurementProtocolGuid; +extern EFI_GUID gEdkiiSmmPerformanceMeasurementProtocolGuid; + +#endif // _PERFORMANCE_MEASUREMENT_H_ diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec index 3802b6e0b86..108accc2c29 100644 --- a/MdeModulePkg/MdeModulePkg.dec +++ b/MdeModulePkg/MdeModulePkg.dec @@ -258,10 +258,13 @@ # Include/Guid/Performance.h gPerformanceProtocolGuid =3D { 0x76B6BDFA, 0x2ACD, 0x4462, { 0x9E,= 0x3F, 0xCB, 0x58, 0xC9, 0x69, 0xD9, 0x37 } } gSmmPerformanceProtocolGuid =3D { 0xf866226a, 0xeaa5, 0x4f5a, { 0xa9,= 0xa, 0x6c, 0xfb, 0xa5, 0x7c, 0x58, 0x8e } } gPerformanceExProtocolGuid =3D { 0x1ea81bec, 0xf01a, 0x4d98, { 0xa2,= 0x1, 0x4a, 0x61, 0xce, 0x2f, 0xc0, 0x22 } } gSmmPerformanceExProtocolGuid =3D { 0x931fc048, 0xc71d, 0x4455, { 0x89,= 0x30, 0x47, 0x6, 0x30, 0xe3, 0xe, 0xe5 } } + # Include/Guid/PerformanceMeasurement.h + gEdkiiPerformanceMeasurementProtocolGuid =3D { 0xc85d06be, 0x5f75, = 0x48ce, { 0xa8, 0x0f, 0x12, 0x36, 0xba, 0x3b, 0x87, 0xb1 } } + gEdkiiSmmPerformanceMeasurementProtocolGuid =3D { 0xd56b6d73, 0x1a7b, = 0x4015, { 0x9b, 0xb4, 0x7b, 0x07, 0x17, 0x29, 0xed, 0x24 } } =20 ## Guid is defined for CRC32 encapsulation scheme. # Include/Guid/Crc32GuidedSectionExtraction.h gEfiCrc32GuidedSectionExtractionGuid =3D { 0xFC1BCDB0, 0x7D31, 0x49aa, {= 0x93, 0x6A, 0xA4, 0x60, 0x0D, 0x9D, 0xD0, 0x83 } } =20 --=20 2.14.3.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel