summaryrefslogtreecommitdiffstats
path: root/MdeModulePkg/Library/DxeCorePerformanceLib
diff options
context:
space:
mode:
authorStar Zeng <star.zeng@intel.com>2016-06-11 23:31:58 -0700
committerMichael Kinney <michael.d.kinney@intel.com>2017-02-23 09:01:17 -0800
commitcfb0aba7934b5dc2c6495139e8e6b0b41f1d50b5 (patch)
treee068e7799bb6ede43d6b7fc6e88f9ab8c975854d /MdeModulePkg/Library/DxeCorePerformanceLib
parentc5c9e7e298ed138b9823ccfba10436d49d1dcc32 (diff)
downloadedk2-cfb0aba7934b5dc2c6495139e8e6b0b41f1d50b5.tar.gz
edk2-cfb0aba7934b5dc2c6495139e8e6b0b41f1d50b5.tar.bz2
edk2-cfb0aba7934b5dc2c6495139e8e6b0b41f1d50b5.zip
MdeModulePkg: Add performance property configuration table
Define PERFORMANCE_PROPERTY, and install performance property configuration table in DxeCorePerformanceLib and SmmCorePerformanceLib. Cc: Andrew Fish <afish@apple.com> Cc: Michael Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Cinnamon Shia <cinnamon.shia@hpe.com> Cc: Jaben Carsey <jaben.carsey@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Andrew Fish <afish@apple.com> Reviewed-by: Jaben Carsey <jaben.carsey@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Diffstat (limited to 'MdeModulePkg/Library/DxeCorePerformanceLib')
-rw-r--r--MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c23
-rw-r--r--MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf2
-rw-r--r--MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLibInternal.h3
3 files changed, 25 insertions, 3 deletions
diff --git a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c
index 4739bb8426..1564514518 100644
--- a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c
+++ b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c
@@ -10,7 +10,7 @@
This library is mainly used by DxeCore to start performance logging to ensure that
Performance Protocol is installed at the very beginning of DXE phase.
-Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -61,6 +61,8 @@ PERFORMANCE_EX_PROTOCOL mPerformanceExInterface = {
GetGaugeEx
};
+PERFORMANCE_PROPERTY mPerformanceProperty;
+
/**
Searches in the gauge array with keyword Handle, Token, Module and Identifier.
@@ -502,6 +504,8 @@ DxeCorePerformanceLibConstructor (
)
{
EFI_STATUS Status;
+ PERFORMANCE_PROPERTY *PerformanceProperty;
+
if (!PerformanceMeasurementEnabled ()) {
//
@@ -531,7 +535,22 @@ DxeCorePerformanceLibConstructor (
InternalGetPeiPerformance ();
- return Status;
+ Status = EfiGetSystemConfigurationTable (&gPerformanceProtocolGuid, &PerformanceProperty);
+ if (EFI_ERROR (Status)) {
+ //
+ // Install configuration table for performance property.
+ //
+ mPerformanceProperty.Revision = PERFORMANCE_PROPERTY_REVISION;
+ mPerformanceProperty.Reserved = 0;
+ mPerformanceProperty.Frequency = GetPerformanceCounterProperties (
+ &mPerformanceProperty.TimerStartValue,
+ &mPerformanceProperty.TimerEndValue
+ );
+ Status = gBS->InstallConfigurationTable (&gPerformanceProtocolGuid, &mPerformanceProperty);
+ ASSERT_EFI_ERROR (Status);
+ }
+
+ return EFI_SUCCESS;
}
/**
diff --git a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
index e091c62714..5b89ce278d 100644
--- a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
+++ b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
@@ -56,11 +56,13 @@
BaseLib
HobLib
DebugLib
+ UefiLib
[Guids]
## SOMETIMES_CONSUMES ## HOB
## PRODUCES ## UNDEFINED # Install protocol
+ ## PRODUCES ## SystemTable
gPerformanceProtocolGuid
## SOMETIMES_CONSUMES ## HOB
## PRODUCES ## UNDEFINED # Install protocol
diff --git a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLibInternal.h b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLibInternal.h
index 2b9ccd2fee..f1540d8c1c 100644
--- a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLibInternal.h
+++ b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLibInternal.h
@@ -4,7 +4,7 @@
This header file holds the prototypes of the Performance and PerformanceEx Protocol published by this
library instance at its constructor.
-Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
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
@@ -32,6 +32,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Library/PcdLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/MemoryAllocationLib.h>
+#include <Library/UefiLib.h>
//
// Interface declarations for PerformanceEx Protocol.